Někdo se dnes večer potřebuje dostat na server a přihlašovací údaje mu musí dorazit hned. Láká to vložit soukromý klíč nebo heslo uživatele root do Slacku. Jenže každá zpráva, kterou klíč projde, si nechá kopii. Lepší cestou je proto jednorázový odkaz s omezenou platností: důvěrný údaj se získá jednou a pak zmizí.
Odkaz je ale jen způsob doručení. Než ho vytvoříte, vyberte správné přihlašovací údaje, omezte je na konkrétní úkol a rozmyslete si, jak je později odstraníte. Návod probírá všechny tyto kroky včetně otázky, co patří do jednorázového odkazu pro sdílení přístupových údajů k serveru a co ne.
Jaké přihlašovací údaje SSH vlastně sdílíte?
Přístup přes SSH může stát na čtyřech různých věcech a každá se sdílí podle jiných pravidel.
| Údaj | Co to je | Smí se vůbec přenášet? |
|---|---|---|
| Veřejný klíč | Polovina, kterou má uloženou server | Ano, volně. Není tajný. |
| Soukromý klíč | Polovina, kterou má uživatel | Jen pokud byl vygenerován pro příjemce, a jen jednou |
| Heslo | Sdílený řetězec, který ověřuje server | Jednou, jako dočasná hodnota, kterou změníte |
| Certifikát SSH | Klíč podepsaný vaší certifikační autoritou s dobou platnosti | Certifikát tajný není, klíč za ním ano |
Nejlepší předání je takové, při kterém se nic tajného nepřenáší.
Pokud příjemce už pár klíčů SSH má, požádejte ho o veřejný klíč,
přidejte ho do ~/.ssh/authorized_keys u správného účtu a řekněte mu,
ať se připojí. Když ten jeden řádek později odstraníte, jeho přístup
skončí.
Vygenerujte pro něj samostatný klíč, pokud žádný nemá a nemůže si ho vytvořit. Nikdy neposílejte svůj vlastní soukromý klíč, který běžně používáte. Klíč vytvořený pro příjemce lze omezit, logovat a smazat, aniž byste sáhli na cokoli jiného.
Pro opakované potřeby dejte přednost certifikátům nebo spravovanému přístupu. Pokud bude stejný člověk potřebovat přístup opakovaně, opakovaná jednorázová předání jsou špatný nástroj. Certifikát SSH s krátkou platností nebo nástroj pro řízení přístupu, jako je Teleport nebo Tailscale SSH, má vypršení platnosti zabudované přímo v přihlašovacích údajích, ne přidané až k doručení.
Než přihlašovací údaje pošlete, omezte je
Ať posíláte cokoli, omezte to na nejmenší rozsah, který úkol dovolí:
- Jeden účet, jeden server. Přidejte klíč k servisnímu účtu, který tu práci vykonává, ne k uživateli root, a jen na tom stroji, o který jde.
- Omezte, co klíč smí dělat, pomocí voleb v
authorized_keys, jako jefrom="203.0.113.5",no-port-forwardingnebo obálkacommand=, pokud práce spočívá v jediném skriptu. - Dejte heslu omezenou životnost. Pokud sdílíte heslo, použijte
passwd -enebo obdobu na vaší platformě, aby ho příjemce musel při prvním přihlášení změnit, a naplánujte si zakázání účtu ke konkrétnímu datu. - Datum konce si zapište dřív, než cokoli pošlete. „Až bude práce hotová“ není datum.
Jak sdílet přihlašovací údaje SSH odkazem, který vyprší
- Ověřte si příjemce kanálem, kterému už důvěřujete: v tiketu, ve známém e-mailovém vlákně nebo telefonem. Většina přihlašovacích údajů, které skončí u nesprávného člověka, se tam dostane kvůli podobně vypadající adrese nebo automaticky doplněnému jménu.
- Do nástroje pro jednorázové tajné odkazy vložte jen důvěrný údaj. U soukromého klíče to znamená celý blok PEM a nic jiného. LinkPilot text zašifruje ve vašem prohlížeči ještě před uložením, takže služba má vždy jen šifrový text a klíč k jeho dešifrování je v části adresy URL, kterou prohlížeče serverům neposílají.
- Nastavte platnost podle skutečné lhůty. Hodinu, pokud na údaje příjemce čeká, 24 hodin, pokud je v jiném časovém pásmu, sedm dní jen ze skutečného důvodu. Odkaz se navíc zničí při prvním otevření, takže platnost je záchranná síť, ne hlavní ochrana.
- U citlivých přihlašovacích údajů přidejte v tarifu Pro heslovou frázi a tu předejte jiným kanálem. Časová osa auditu v tarifu Pro vám navíc ukáže, kdy k zobrazení došlo.
- Odkaz pošlete s poznámkou o účelu na jeden řádek a bez údajů pro připojení.
- Údaje pro připojení pošlete v samostatné zprávě: server nebo adresu, port, uživatelské jméno a způsob ověření. Nic z toho samo o sobě tajné není, ale spolu s klíčem je to kompletní přihlášení.
Pokud odkaz hlásí, že už byl otevřen, a příjemce tvrdí, že ho neotevřel, nedohadujte se. Považujte přihlašovací údaje za vyzrazené, odstraňte klíč nebo změňte heslo a vygenerujte nové.
Jednorázový odkaz pro sdílení přístupových údajů k serveru
Otázka, co do tajné zprávy patří, přichází pokaždé. Dobré pravidlo: odkaz nese to, co by útočník neuhodl, a běžná zpráva to, co uhodnout může.
V jednorázovém odkazu:
- Soukromý klíč, nebo dočasné heslo
- Heslová fráze ke klíči, pokud byla nastavena při generování
- Nic dalšího
V běžné zprávě, poslané zvlášť:
- Název serveru nebo IP adresa a port
- Účet, ke kterému se přihlásit
- Zda použít klíč, nebo heslo
- Otisk klíče serveru, aby příjemce mohl server při prvním připojení ověřit
- Krátká poznámka, k čemu přístup slouží a kdy končí
Snímky obrazovky a logy z terminálu nepatří ani do jednoho. Snímek běžící relace často obsahuje tokeny, interní adresy a další uživatelská jména, která nikdy neměla nikam putovat.
Pomozte příjemci klíč bezpečně uložit
Bezpečné předání stejně selže, pokud klíč skončí ve Stažených souborech s oprávněním ke čtení pro všechny. Spolu s údaji pro připojení pošlete tyto pokyny:
# save the key, then lock it down
chmod 600 ~/.ssh/acme_deploy
ssh-add ~/.ssh/acme_deploy
# verify the host key fingerprint against the one you were sent
ssh -i ~/.ssh/acme_deploy deploy@203.0.113.5
Požádejte příjemce, ať tajný odkaz otevře, až když je připravený ho použít, na zařízení, které má pod kontrolou, a přes připojení, kterému důvěřuje. Kdo ho otevře na sdíleném počítači, „jen aby zkusil, jestli funguje“, nechá kopii v historii schránky toho počítače.
Ověřte přístup a pak lhůtu uzavřete
Dokud je přístup otevřený, ať příjemce vyzkouší přesně to připojení, které bude používat, a potvrdí, že úkol funguje. Nerozšiřujte oprávnění jen proto, aby test prošel; opravte raději rozsah.
Když je práce hotová:
- Odstraňte veřejný klíč z
authorized_keys, zakažte účet, nebo nechte certifikát vypršet podle plánu. - Vyměňte vše, co putovalo spolu s přihlašovacími údaji, včetně dočasného hesla, které se mělo změnit při prvním přihlášení a nezměnilo se.
- Projděte
auth.lognebo jiný zdroj auditu SSH a hledejte připojení mimo dohodnutou dobu nebo z nečekaných adres. - Zapište si, kdo měl co a od kdy do kdy. Záznam zůstane, přihlašovací údaje ne.
Platnost odkazu omezuje, jak dlouho šlo důvěrný údaj získat. Platnost přihlašovacích údajů omezuje, jak dlouho je lze používat. Potřebujete obojí a lidé zapomínají právě na to druhé.
