Zabezpečení SSH přihlašování

Protokol SSH může kromě jména a hesla používat k přihlašování RSA/DSA/ECDSA klíče. Identita uživatele je prokázána kryptograficky a použití privátního klíče je navíc chráněno heslem. Serveru potom své jméno a heslo neposíláte.

Zabezpečení přihlášení na server je výjimečně důležité, protože při prolomení přihlášení bude vás server kompromitován a pravděpodobně zavirován, přidán do botnetu nebo zneužit k rozesílání spamu. Přihlášení na SSH portu 22 zkoušení roboti na prakticky všech IP adresách v internetu a dojde k němu určitě i na vašem serveru. Dokážete si potom představit, jaké následky bude mít použití slabého hesla.

Chcete-li vědět více o principu fingování přihlášení z klíči, přečtete si článek https://www.interval.cz/clanky/serial-ssh-zaklady-prace-s-ssh-servery-klienty-a-klici/ a zejména odstavec Jak SSH autentizuje uživatele.

Vygenerování klíčů

Před bezpečným připojením na server je nutné si vygenerovat dvojici klíčů: ssh-keygen -t ecdsa
Použili jsme moderní ECDSA algoritmus, který používá kratší klíč, než RSA. Algoritmus ECDSA je v OpenSSH již dlouho podporovaný.

Po vygenerování páru klíčů (které jsou uloženy ve vaší domovské složce a podložce .ssh) je potřeba veřejný (pouze veřejný) klíč zkopírovat na cílový server. K tomu využijeme nástroj ssh-copy-id, který je součástí balíku OpenSSH.

Do terminálu zadejte ssh-copy-id root@adresa-serveru. Pokud se k serveru připojujete poprvé, uvidíte hlášku, že je host neznámý (viz další odstavec). Zkopírování potvrďte. Pak uvidíte potvrzení:

Number of key(s) added: 1
Now try logging into the machine, with:   "ssh 'root@adresa-serveru'"
and check to make sure that only the key(s) you wanted were added.

Úspěšný import si na serveru můžete zkontrolovat pohledem na obsah souboru ~/.ssh/authorized_keys
Váš nový veřejný klíč zde bude uložen.

Připojení na server se SSH klíčem

S novým klíčem se teď připojte na server: server@server:~$ ssh root@domena.eu

Když se připojujete poprvé, uvidíte toto varování o neznámém hostu:
The authenticity of host 'domena .eu (217.198.117.xx)' can't be established.
ECDSA key fingerprint is 3a:22:8a:22:11:6f:37:b3:66:78:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? Yes

Znamená to, že se na server přihlašujete poprvé. Zapiště si fingerprint a přihlaste se podruhé.
Po potvrzení se host přidá do seznamu známých a už byste toto varování neměli vidět.
Pokud ho vidíte i při druhém přihlášení spolu s chybou níže, nepovedlo se přidání hostu do seznamu známých.

Failed to add the host to the list of known hosts (/home/user/.ssh/known_hosts).
Enter passphrase for key '/home/user/.ssh/id_ecdsa':

Potom stačí připojit se na ssh s právy roota, tedy sudo ssh root@domena.eu
Problém se zápisem do known_hosts tím bude vyřešen.

Druhou možností, kdy můžete toto varování vidět, je MITM útok. Je lepší server přidat do seznamu známých
a nepotvrzovat při každém připojení, že host je neznámý. Pokud se vám to stane po přidání do seznamu,
mějte se na pozoru, že se na serveru klíč změnil a můžete být cílem útoku. 

Zakázání přihlašování heslem

Posledním krokem k zabezpečení přihlášení je zakázání přihlašování heslem. Důležité je si nejprve zazálohovat
dvojici SSH klíčů, protože po jejich ztrátě se na server nepřihlásíte.

Zkopírujte soubor s nastavením SSH do záložního souboru:
cd /etc/ssh
cp sshd_config sshd_config.orig

Otevřete konfiguraci SSH: nano sshd_config. Ve všech třech řádcích změňte Yes na NO. Položky nejsou
v konfiguraci u sebe, proto je můžete vyhledat po stisku Ctrl+W a napsání textu.

PasswordAuthentication        yes
UsePAM                                     yes

Potom službu restartujte: service ssh restart. Nyní je přihlášení SSH klíči zabezpečeno.

Nad rámec tohoto nastavení můžete ještě zvážit zakázání použití účtu Root (PermitRootLogin nastavit na no) a naslouchání SSH protokolu na jiném portu (lze snadno změnit v konfiguraci sshd_config). Pokud změníte SSH port z 22 na jiný, musíte ho definovat při přihlašování jako parametr - ssh username@hostname.com -p 50683.   

Tým ZonerCloud
Web: www.zonercloud.cz
E-mail: admin@zoner.cz