Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: KarelBP 15. 05. 2020, 22:06:13
-
Přátelé Linuxáci,
prosím pomozte. Jsem trotl, který neumí vyhledávat, protože už jsem pročetl hromady článků a nenašel odpověď. Předpokládám ale, že to pro vás nebude nic nového.
1) Chci mít skript, který občas běží na místním serveru jako uživatel X a připojuje se na vzdálený server jako uživatel Y.
2) Nechci mít nikde přímo viditelné heslo uživatele Y, ani ve skriptu, ani v dokumentaci.
3) Rád bych heslo Y zašifroval a uložil do souboru. K zašifrování bych použil OpenSSL (k dispozici na místním serveru) a heslem by bylo moje vlastní heslo, tedy uživatele X.
4) Za běhu skriptu bych soubor načetl, heslo rozšifroval a připojil se na vzdálený server jako uživatel Y.
5) Nemůžu si doinstalovat žádný doplňující software, support by se na mě pak mohl zvesela vykašlat.
Jde nějak říct OpenSSL "použij moje vlastní heslo ze systému" pro rozšifrování? Jistě chápete, že jak jsem nechtěl nikde napsat heslo Y, tak nechci psát ani svoje vlastní heslo, tedy X.
Díky moc,
KarelBP
-
Řeší se to hned ve vedlejším vlákně. https://forum.root.cz/index.php?topic=22993.msg329963;topicseen
A jinak pro přihlašování na jiné počítače se typicky používají SSH klíče, nikoli hesla.
-
Aha, hloupého trkni. Děkuji!
Teď se budu muset podívat, jestli mi přijímající strana může a umí dát certifikát a jak já ho použiju s cURL. Jedná se o REST API call: chci poslat event do ServiceNow skrz MID server, tudíž musím nějak říct co jsem, kdo jsem, aby se to se mnou bavilo. Certifikát je samozřejmě elegantnější řešení než basic authentication, jen jestli to budeme umět udělat a jak rychle.
-
Jde nějak říct OpenSSL "použij moje vlastní heslo ze systému" pro rozšifrování?
Nejde, protože systém vaše heslo nezná. Systém zná pouze otisk (hash) vašeho hesla, ze kterého nejde heslo zpětně získat.
Teď se budu muset podívat, jestli mi přijímající strana může a umí dát certifikát a jak já ho použiju s cURL. Jedná se o REST API call: chci poslat event do ServiceNow skrz MID server, tudíž musím nějak říct co jsem, kdo jsem, aby se to se mnou bavilo. Certifikát je samozřejmě elegantnější řešení než basic authentication, jen jestli to budeme umět udělat a jak rychle.
Na 95 % protistrana nebude umět použít přihlášení privátním klíčem – není to úplně jednoduché na správu a provoz, musíte řešit certifikační autority, a hlavně je to ve webových prohlížečích implementováno uživatelsky dost nepřívětivě, takže se to moc nepoužívá. Maximálně někde v intranetech. Znám jedinou internetovou aplikaci, která podporuje i přihlášení privátním klíčem, a to je Informační systém datových schránek. Takže vlastně takový český intranet…
Navíc kdybyste použil přihlášení privátním klíčem, tak buď budete mít ten klíč uložený bez hesla – a každý, kdo se k tomu souboru dostane, ho může použít. Nebo ho budete mít uložený s heslem – a řešíte zase stejný problém.
Máte jenom dvě možnosti. Buď budete heslo při každém spuštění skriptu zadávat z venku – ručně, přihlásíte se a předáte přihlašovací údaje přes SSH agenta, přihlásí se nějaký váš automat, který heslo předá a bude ho mít uložený někde u vás bezpečně. Jenže pokud ten vzdálený počítač nemáte pod svou správou, může zákeřný správce pozměnit třeba váš skript a to tajemství, které předáváte (třeba heslo) získat.
Druhá možnost je, že se vykašlete na takovéhle zabezpečování, které stejně bezpečnost zvyšuje jen o malinko, a to heslo bude někde na počítači uložené v dešifrovatelné podobě. Pak máte v podstatě dvě možnosti – buď ho napíšete v otevřeném tvaru přímo do skriptu, nebo ho uložíte zašifrované do skriptu nebo lépe do vedlejšího souboru a heslo k dešifrování bude zase přímo v tom skriptu. Samozřejmě, kdo bude chtít a bude mít přístup k tomu skriptu, během chvilky to heslo získá. Ta ochrana je spíš symbolická, pokud někdo zobrazí ten skript, ať tam na první pohled nevidí to heslo (pokud by bylo jednoduché, může si ho zapamatovat i nechtěně). Nebo třeba skript někde bude nechtěně zobrazen při prezentaci apod. To symbolické zašifrování tedy slouží k tomu, aby to heslo neuniklo nechtěně, omylem – k získání hesla je potřeba určité, i když minimální, úsilí, jeho získání musí být záměr.
Ale na linuxovém systému se uživatel nemůže bránit útoku ze strany roota – prostě root to vaše heslo bude vždy moci získat, vy mu to různým schováváním můžete akorát více či méně zkomplikovat.
TL;DR: Pokud je to něco nedůležitého a nepředpokládám, že si ten skript bude někdo prohlížet nebo ho někam kopírovat nebo vystavovat, nechal bych heslo v otevřeném tvaru v tom skriptu. Jinak bych heslo uložil zašifrované do vedlejšího souboru a v samotném skriptu by bylo heslo k rozšifrování toho souboru.
-
aby v skripte nebolo to heslo hned na prvy pohlad vidiet, mozes ho tam dat jednoducho zasifrovane a odsifrovat ho napr.:
heslo=$(echo 'ZbwrUrfyb' | tr 'A-Za-z' 'N-ZA-Mn-za-m')
-
Na to existuje program rot13 a to už radši base64.
-
Přihlašování certifikátem přes ssh je celkem standardní metoda, pokud ji admin cílového serveru nezakáže.
ssh-keygen # vygenerovat
ssh-copy-ic USERNAME@server.cz # autentizovat a autorizovat verejny klic
ssh USERNAME@server.cz # prihlasit
# Pokud to má být script, který něco vykoná na vzdáleném počítači, tak
ssh USERNAME@server.cz 'bash -s' < local_script.sh
-
Přihlašování certifikátem přes ssh je celkem standardní metoda, pokud ji admin cílového serveru nezakáže.
Jenže tady jde o volání služby přes HTTP(S).
-
proč si neudělat proměnou heslo?
read -p "give me password" password
a pak jen tu proměnou dosazovat kde je potřeba
-
Na to existuje program rot13 a to už radši base64.
Preco by mal byt nejaky program rot13 lepsi, ako urobit si to sam pomocou tr, ked OP pise:
"5) Nemůžu si doinstalovat žádný doplňující software"
Okrem toho rot cez tr si moze lubovolne rozsirit aj o pismena s diakritikou a ine znaky
-
Preco by mal byt nejaky program rot13 lepsi, ako urobit si to sam pomocou tr
Například proto, že rot13 funguje správně a je to otestované.