.

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

Nápověda > Cloud Server Linux > Zabezpečení SSH přihlašováním

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ší 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 fungování přihlášení z klíči, přečtete si článek na portále Interval.cz a zejména odstavec Jak SSH autentizuje uživatele.

SSH

Vygenerování klíčů

    1. Před bezpečným připojením na server je nutné si vygenerovat dvojici klíčů: ssh-keygen -t ecdsa
    2. Použili jsme moderní ECDSA algoritmus, který používá kratší klíč, než RSA. Algoritmus ECDSA je v OpenSSH již dlouho podporovaný.
    3. 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 sssh-copy-id, který je součástí balíku OpenSSH.
    4. SSH keys

    5. 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).
    6. Zkopírování potvrďte a 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.
    7. Úspěšný import si na serveru můžete zkontrolovat pohledem na obsah souboru ~/.ssh/authorized_keys
    8. 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

    Connection

    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.

    SSH key

    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.