Už delší dobu používám místo klasického jména a hesla k přihlašování na server SSH klíč. Abych se vyhnul odhadnutí snadného hesla přes bruteforce útok, používal jsem opravdu silné heslo. Navíc heslo bylo dobré čas od času měnit a když jste se dlouho někde nepřihlašovali, tak jste pak prostě hádali, které heslo by to tak mohlo být.

Hesla obecně jsou pak náchylná na to, že je někdo odposlechne, stáhne jejich databázi, nebo hashe, zkrátka používat jen heslo dnes nestačí.

Přešel jsem tedy na ověřování pomocí SSH klíče.

Jak to funguje

Funguje to tak, že server vygeneruje náhodná data, která vám pošle. Vy je svým privátním klíčem podepíšete a pošlete mu je zpátky. Na serveru máte uložen veřejný klíč, kterým on ověří pravost vašeho podpisu a pustí vás dovnitř.

Největší výhodou pak je, že vlastně nedochází k odeslání privátního klíče na server – vše probíhá na vaší bezpečné stanici a kdyby byl server kompromitovaný či nedůvěryhodný, je vám to jedno.

Veřejný klíč tedy můžete nahrát na libovolný počet serverů a všude se přihlašovat svým jediným unikátním privátním klíčem.

Jak na to

Nejprve si vygenerujeme pár klíčů. Ty pak zkopírujeme do domovského adresáře na serveru.

ssh-keygen -t rsa
#Generating public/private rsa key pair.
#Enter file in which to save the key (/home/spajk/.ssh/id_rsa):

Program se zeptá kam klíče uložit, stačí zmáčknout ENTER pro uložení do výchozího umístění.

Pro vyšší bezpečnost nedoporučuji používat pro přihlašování váš hlavní/admin účet (v mém případě spajk), ale vytvořit si pro přihlášení jedinečnou identitu.

Nyní je potřeba zadat frázi, neboli heslo k certifikátu, kterým bude certifikát zašifrován. Lze jej sice nechat bez hesla, ale to nedoporučuji. Pokud by se k certifikátu někdo dostal, mohl by jej zneužít. A to nechcete.

Klíče jsou tedy vygenerovány a uložily se do vašeho domovského adresáře do složky .ssh.

Klíče jsou dva id_rsa a id_rsa.pub. Přípona *.pub znamená public, neboli veřejný – toto je tedy část, kterou nahrajete na server. Oproti tomu klíč id_rsa je teď něco jako klíč od vašeho bytu – bezpečně jej uložte na místo, kde se k němu nikdo nedostane.

Osobně doporučuji změnit jeho název a přidat mu příponu *. privat, aby bylo jasné, o jak důležitý soubor se jedná.

Veřejný klíč je nyní potřeba nahrát na servery, kam se chceme přihlašovat a to konkrétně do složky .ssh/authorized_keys. K tomu slouží příkaz:

cat /home/spajk/.ssh/id_rsa.pub >> .ssh/authorized_keys

Jakmile je tam klíč nahrán, doporučuji přesunout id_rsa do bezpečného umístění. Tím je klientská část hotová.

Nastavení na serveru

Pokud chcete zapnout/vynutit používání SSH klíčů na serveru, je potřeba upravit konfiguraci.

nano /etc/ssh/sshd_config

Zde pak hledejte volby:

RSAAuthentication yes
PubkeyAuthentication yes

Pokud byste chtěli přihlašování přes SSH klíče vyloženě vynutit, (doporučuji) pak přidejte ještě tyto řádky a ještě zakažte přihlašování roota přes SSH:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
PermitRootLogin no

Tímto způsobem se vyhnete nejen bruteforce útokům, ale i naučíte další uživatele více dbát na bezpečnost. Jakmile je hotovo, jen restartujeme službu SSH serveru:

/etc/init.d/ssh reload

A tím je hotovo. Nyní se můžete bezpečně přihlašovat na vše linuxové servery.

PS: Někomu možná přijde nepohodlné používat dva faktory – klíč a heslo (passphrase). Možná Vás potěší, že klíč i frázi umí uložit klienti jako Putty či Termius do své keše a vše pak probíhá na jedno kliknutí. V případě použití aplikace Termius je vše chráněno pomocí biometriky na vašem tabletu/telefonu, což se dá pokládat za slušnou multifaktorovou autentizaci.

‎Termius - SSH client
‎Termius - SSH client
  • ‎Termius - SSH client Screenshot
  • ‎Termius - SSH client Screenshot
  • ‎Termius - SSH client Screenshot
  • ‎Termius - SSH client Screenshot
  • ‎Termius - SSH client Screenshot
  • ‎Termius - SSH client Screenshot
  • ‎Termius - SSH client Screenshot
Facebook komentáře