Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
cs:sw:03-3rd-party:nodered:securing-nodered-hidden [2020/06/12 13:18]
avsetula [Dashboard]
cs:sw:03-3rd-party:nodered:securing-nodered-hidden [2021/08/06 07:06] (current)
avsetula
Line 6: Line 6:
 ---- ----
  
-Jelikož se budeme ​PLC připojovat pomocí **SSH** protokolu, je nutné [[cs:​files:​software:​tools:​advanced-ip-scan-hidden|znát IP adresu ​PLC]] a mít na PC nainstalovaného SSH klienta. Mezi nejoblíbenější pro OS Windows patří software **PuTTy**. Pokud jej v PC nemáte, či tento SW vůbec neznáte, postupujte dle [[cs:​files:​software:​tools:​putty-hidden|tohoto návodu]].+Jelikož se budete ​jednotce ​připojovat pomocí **SSH** protokolu, je nutné [[cs:​files:​software:​tools:​advanced-ip-scan-hidden|znát IP adresu ​jednotky]] a mít na PC nainstalovaného SSH klienta ​na PC. Mezi nejoblíbenější pro OS Windows patří software **PuTTy**. Pokud jej v PC nemáte, či tento SW vůbec neznáte, postupujte dle [[cs:​files:​software:​tools:​putty-hidden|tohoto návodu]].
  
-Jakmile jste ipojeni ​přihlášení,​ máte před sebou terminálové okno s přístupem do jednotkyNásledující příkaz zkopírujte a vložte do terminálu, vkládání do PuTTy se provádí za pomoci právého tlačítka myši.+<WRAP center round info 95%> 
 +Pro enos souborů mezi PC jednotkou Unipi můžete použít SW [[https://​winscp.net/​eng/​download.php|WinSCP]]. Přihlašovací údaje jsou stejné jako pro SSH. 
 +</​WRAP>​
  
-<​code>​ +Dále již postupujte dle [[https://​nodered.org/​docs/​user-guide/runtime/securing-node-red|tohoto návodu]] na oficiálních stránkách NodeRED.
-sudo npm install -g --unsafe-perm node-red-admin +
-</​code>​ +
- +
-Po dokončení instalace ''​node-red-admin''​ balíčku, si již můžete vygenerovat šifrovanou podobu Vašeho hesla, které budete následně vkládat do konfiguračního souboru ''​settings.js''​. Pro vygenerování hesla zadejte příkaz: +
- +
-<​code>​ +
-node-red-admin hash-pw +
-</​code>​ +
- +
-Nyní budete vyzváni k napsání hesla, psané znaky se nebudou nijak zobrazovat a není možné si heslo následně překontrolovat,​ jelikož výstup z programu je již šifrované heslo. Dbejte na to, aby jste heslo zadali bezchybně. +
- +
-Heslo si zkopírujte,​ budete jej dále používat. +
- +
- +
-===== Admin API ===== +
-Toto rozhraní je velmi důležité zabezpečit,​ jelikož zde máte logiku vašeho programu a lze přes něj ovládat celé PLC bez omezení. Existuje však varianta uživatele "Pouze pro čtení",​ takovýto uživatel se může připojit, sledovat, ale nemá oprávnění zasahovat do programu, ani měnit hodnoty. Ve výchozím nastavení je požadavek k autorizaci vypnut. +
- +
-Pro zapnutí autorizace je třeba přejít do skryté složky ''​.node-red''​. Zadejte příkaz: +
- +
-<​code>​ +
-cd ~/​.node-red +
-</​code>​ +
- +
-Nyní jste se přepnuli do skryté složky Node-RED. Nyní spusťtě terminálový program **Midnight Commander**,​ zadejte do terminálu:​ +
- +
-<​code>​ +
-mc +
-</​code>​ +
- +
-Tím se Vám otevře modré okno Midnight Commanderu, zde pomocí šipek vyberte soubor ''​settings.js''​a klávesou **F4** ho otevřete pro úpravy. +
- +
-V tomto souboru vyhledejte položku ''​adminAuth'',​ ve výchozím stavu je zakomentována pomocí značky ''​⁄⁄'',​ vše od této značky až po zalomení řádku je v kódu ignorováno. Proto je nutné tyto značky u adminAuth odebrat. Nyní kód vypadá takto +
- +
-<​code>​ +
-    // Securing Node-RED +
-    // ----------------- +
-    // To password protect the Node-RED editor and admin API, the following +
-    // property can be used. See http://​nodered.org/​docs/​security.html for details. +
-    //​adminAuth:​ { +
-    //    type: "​credentials",​ +
-    //    users: ​[+
-    //        username: "​admin",​ +
-    //        password: "​$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",​ +
-    //        permissions:​ "​*"​ +
-    //    }] +
-    //}, +
-</​code>​ +
- +
-Po odkomentování takto:  +
- +
-<​code>​ +
-    // Securing Node-RED +
-    // ----------------- +
-    // To password protect the Node-RED editor and admin API, the following +
-    // property can be used. See http://​nodered.org/​docs/​security.html for details. +
-    adminAuth: { +
-        type: "​credentials",​ +
-        users: [{ +
-            username: "​admin",​ +
-            password: "​$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",​ +
-            permissions:​ "​*"​ +
-        }] +
-    }, +
-</​code>​ +
- +
-Pokud by jste nyní soubor uložili, odpojili a znovu připojili nápájení,​ popř. restartovali PLC, bude již Admin API pro vstup požadovat heslo. Výchozí jméno je: ''​admin''​ a heslo: ''​password''​. Můžete si ale všimnout, že vaše heslo generované v úvodu článku má stejný formát jako výchozí heslo uživatele, pokud jej tedy nahradíte, nastavíte tím své heslo k danému uživatelskému účtu. +
- +
-V případě, že chcete nastavit více uživatelů,​ tak do hranatých závorek ''​users:​ []''​ vložte další blok složených závorek (záznam uživatele) a jednotlivé bloky oddělte čárkou: +
- +
-<​code>​ +
-    // Securing Node-RED +
-    ​// ----------------- +
-    // To password protect the Node-RED editor and admin API, the following +
-    // property can be used. See http://​nodered.org/​docs/​security.html for details. +
-    adminAuth: { +
-        type: "​credentials",​ +
-        users: [ +
-            { +
-                username: "​admin",​ +
-                password: "​$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",​ +
-                permissions:​ "​*"​ +
-            }, +
-            { +
-                username: "​user_rd",​ +
-                password: "​$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",​ +
-                permissions:​ "​read"​ +
-            } +
-        ​] +
-    }, +
-</​code>​ +
- +
-Všimněte si, že druhý uživatel má oprávnění pouze pro čtení, můžete tedy nastavovat dva druhy oprávnění:​ +
-  * čtení/​zápis -> ''​*''​ +
-  * jen čtení -> ''​read''​ +
- +
-==== Výchozí uživatel ==== +
-Pro nastavení výchozího uživatele je třeba vytvořit další položku v ''​adminAuth''​ konkrétně položku ''​default''​. +
- +
-<​code>​ +
-    adminAuth: { +
-        type: "​credentials",​ +
-        users: [ /* seznam uživatelů */ ]+
-        default: { +
-            permissions:​ "​read"​ +
-        } +
-    } +
-</​code>​ +
-===== Dashboard ===== +
-Uživatelské webové rozhraní v systému Node-RED nazýváme **Dashboard**,​ toto uživatelské rozhraní je také vhodné chránit heslem proti neoprávněným zásahům, ale již to není zcela nezbytné, tak jako u **Admin API**. +
- +
-Pro zapnutí autorizace dashboardu vyhledejte v souboru ''​settings.js''​ záznam ''​httpNodeAuth:'',​ odkomentujte jej a upravte název uživatele podle potřeby (bez diakritiky). Dále změňte heslo, to musí být vytvořeno generátorem,​ který je popsán v úvodu článku. Meníte pouze hodnoty v uvozovkách. +
- +
-<​code>​ +
-httpNodeAuth:​ {user:"​user",​pass:"​$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."​},​ +
-</​code>​+