Top
Přejít na hlavní obsah
Služby
Návody > Seznam návodů > Jak zvýšit úroveň zabezpečení SSH na Ubuntu 18.04

Jak zvýšit úroveň zabezpečení SSH na Ubuntu 18.04

04 května 2020

Security SSH Ubuntu

SSH je hlavním přístupovým bodem k vašemu cloudovému serveru. Proto však také nejvíce bývá vystaven různým útokům. V tomto návodu vám ukážeme, jak zvýšit úroveň zabezpečení SSH.

Změna portu

U SSH je výchozím portem pro naslouchání port 22. Změna tohoto portu zvýší zabezpečení serveru.

Aby nedošlo k narušení funkčnosti jiných existující služeb na serveru, doporučujeme pomocí příkazu netstat zkontrolovat, které porty jsou aktuálně využívány:

$ netstat -n -l
    
Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address State
tcp        0 0 127.0.0.1:3306          0.0.0.0:* LISTEN
tcp        0 0 127.0.0.53:53           0.0.0.0:* LISTEN
tcp        0 0 0.0.0.0:22              0.0.0.0:* LISTEN
tcp6       0 0 :::80                   :::* LISTEN
tcp6       0 0 :::22                   :::* LISTEN
udp        0 0 127.0.0.53:53           0.0.0.0:*

Pomocí parametru -l v netstat příkazu dostaneme seznam všech spojení, která jsou ve stavu LISTEN. V našem případě byly využívány následující porty:

  • •   3306 MySQL service

  • •   22 SSH

  • •   80 Apache2 / HTTP

  • •   53 DNS

Chcete-li změnit port, upravte konfigurační soubor / etc / ssh / sshd_config. Odstraňte komentář smazáním znaku #:

#Port 22

Poté nastavte novou hodnotu, ideálně vysokou, abyste zabránili jejímu odhalení různými softwary pro automatické skenování portů (např. 2200, 5574, 1022):

Port 5574

Pro potvrzení a propsání změn použijte příkaz:

$ sudo service sshd reload

Neodpojujte již navázané SSH spojení. V případě problému můžete navrátit změny v původním již navázaném spojení.

Po provedení změn se připojte k serveru a zadejte nový port. Pokud například používáte klienta SSH z příkazového řádku, použijte příkaz:

$ ssh 

Použití klíčů pro autentizaci

Hojně používaným přístupem je přístup přes RSA klíče. Je tomu tak hlavně kvůli tomu, že je bezpečnější alternativou k přihlášení založeném na hesle. V tomto typu autentizace klient generuje soukromý klíč a související veřejný klíč, který je nainstalován na serveru, aby s určitostí identifikoval klienta.

Chcete-li nainstalovat veřejný klíč, klient musí nejdříve vygenerovat pár klíčů použitím příkazu ssh-keygen:

$ ssh-keygen
Generating public/private rsa key pair.
Enter file where to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

Před vygenerováním klíčů si ssh-keygen vyžádá volitelnou přístupovou frázi, kterou lze využít pro autentizaci. V tomto příkladu byl pro zjednodušení tento řádek ponechán prázdný.

Po dokončení software uloží dva soubory v cílové destinaci:

  • •   id_rsa: the client's private key, not to be shared with anyone.

  • •   id_rsa.pub: the shareable public key .

Pro přípravu prostředí serveru vytvořte ve složce .ssh soubor s názvem authorized_keys. Soubor musí být umístěn v domovském adresáři uživatele, který bude klíč používat k přihlášení:

$ sudo mkdir ~/.ssh
$ sudo touch ~/.ssh/authorized_keys
$ sudo chmod 600 ~/.ssh/authorized_keys

Ujistěte se, že soubor má výše uvedená oprávnění.

Poté pokračujte vložením veřejného klíče vygenerovaného v jednom z předchozích kroků:

Soubor uložte a znovu načtěte SSH:

$ sudo service sshd reload

Nyní byste měli mít možnost přístupu na server bez nutnosti zadávání hesla:

$ ssh [email protected]<SERVER.IP>

Pokud vše funguje správně, zakažte přístup k serveru heslem úpravou soboru / etc / ssh / sshd_config s následujícími parametry:

ChallengeResponseAuthentication no
    PasswordAuthentication no

Pamatujte, že máte možnost přidat další veřejné klíče tak, že je přidáte na konec souboru ~ / .ssh / authorized_keys na serveru.

Omezení doby dostupnosti služby

Další možností, jak se bránit proti neoprávněným přístupům a brute force útokům, je úprava doby dostupnosti SSH. Pokud víte, že k serveru nepotřebujete přístup v určitých hodinách (například od 23:00 do 8:00 následujícího dne), nastavte automatický plán blokování portu pro připojení.

Toho lze docílit použitím firewallu iptables. Před použitím této konfigurace mějte na paměti, že iptables ze své podstaty automaticky neukládá vytvořená nastavení.

Chcete-li uložit a načíst konfiguraci iptables při spuštění systému, použijte balíček iptables-persistent.

Nainstalujte balíček iptables-persistent:

$ sudo apt-get install iptables-persistent

Configuring Iptables

Po dokončení instalace vytvořte chain pro SSH:

$ sudo iptables -N chain-ssh
$ sudo iptables -A INPUT -p tcp --dport 22 -j chain-ssh

Tímto způsobem budou všechna příchozí připojení na port 22 (pokud používáte pro SSH jiný port, změňte tuto hodnotu v příkazu) přiřazena nově vytvořenému chainu „chain-ssh“.

Uložte aktuální nastavení (které bude načteno pomocí iptables-perstitent) pomocí příkazu:

$ sudo iptables-save > /etc/iptables/rules.v4

Poté vytvořte časový plán pro zadávání a odstraňování pravidla v řetězci úpravou crontab takto:

$ sudo crontab -e
    
# m h  dom mon dow   command
0 23   * * *   iptables -A chain-ssh -j DROP
0 8    * * *   iptables -F chain-ssh

Jak můžete vidět, při první operaci je přidáno pravidlo DROP ve 23:00. Druhá operace naopak v 8:00 řetězec vyprázdní a tím obnoví službu.

Pro použití změn soubor uložte.

Začněte používat FORPSI Cloud

 ZAČÍT HNED POŽÁDAT O VOUCHER*

(*) FORPSI vám poskytne voucher s kreditem v hodnotě 160 Kč pro cloudové služby

TECHNOLOGIČTÍ PARTNEŘI: