První spuštění serveru 2: Používej klíče místo hesel

Vytvořeno: 
18. 8. 2024
25. 8. 2024
Autor: 
Jacob Korec
Když se snažím připojit k serveru přes SSH, musím prokázat svou totožnost. Tradiční způsob, jak to udělat, je zadáním hesla. Avšak hesla mohou být uhodnuta, ukradena nebo vystavena různým útokům.

Úvod

Co to znamená používat klíče místo hesel pro SSH?

SSH (Secure SHell) je protokol, který umožňuje bezpečnou komunikaci mezi dvěma systémy. Když se snažím připojit k serveru přes SSH, musím prokázat svou totožnost. Tradiční způsob, jak to udělat, je zadáním hesla.

Avšak hesla mohou být uhodnuta, ukradena nebo vystavena různým útokům. Klíčová autentizace je alternativní metoda, která je mnohem bezpečnější. Místo toho, abych zadával heslo, použijiji soukromý a veřejný klíč k ověření své identity.

Jak to funguje?

  1. Generování klíčového páru: Nejprve vytvořím klíčový pár, který se skládá z veřejného klíče a soukromého klíče.

    • Veřejný klíč mohu bezpečně sdílet s kýmkoli (v tomto případě se uloží na server, ke kterému se chci připojit).
    • Soukromý klíč by měl být dobře chráněn a nikdy nesdílen.
  2. Přenos veřejného klíče na server: Jakmile mám klíčový pár, přenesu svůj veřejný klíč na server do souboru nazývaného ~/.ssh/authorized_keys. Tímto krokem říkám serveru: Pokud se někdo pokusí připojit s odpovídajícím soukromým klíčem, povolte mu přístup.

  3. Připojení k serveru: Když se pokusím připojit k serveru, SSH klient na mém počítači použije soukromý klíč k ověření své identity. Pokud klíč odpovídá veřejnému klíči uloženému na serveru, budu připojen.


Postup

Vytvoření klíčového páru v lokálním PC

  1. Vygenerování Páru Klíčů (Veřejný a Soukromý Klíč)

    Na mém lokálním počítači vygeneruji pár SSH klíčů (veřejný a soukromý klíč). To mohu udělat pomocí příkazu:

    ssh-keygen -t ed25519

    Během generování budu moci nastavit heslo (frázi) pro soukromý klíč pro další zabezpečení.

  2. Kopírování Veřejného Klíče na Server

    Kopírování veřejného klíče na server. To mohu udělat pomocí příkazu:

    ssh-copy-id UzivatelskeJmeno@IpAdresaServeru

    Tento příkaz vloží můj veřejný klíč do souboru ~/.ssh/authorized_keys na serveru.
    Soubor ~/.ssh/authorized_keys je seznam veřejných klíčů, které jsou povoleny pro autentizaci přes SSH.
    Když se snažím připojit k serveru pomocí klíčové autentizace, server zkontroluje tento soubor a porovná jej se soukromým klíčem. Pokud se shoduje, budu autentizován.


Konfigurace ssh

Pro úspěšné použití autorizace pomocí rsa klíče je nutné upravit pravidla v konfiguraci ssh.

Upozornění

Neprováděj tento krok, pokud nebylo úspěšně splněno kopírování veřejného klíče na server!

Ověření úspěšnost zkopírovaného ssh-id

V následujících krocích

  1. Zkontroluji veřejný klíč (nadále pubkey) svého lokálního pc

    cat ~/.ssh/id_ed25519.pub
  2. Přihlásím se pomocí ssh na server a nechám si vypsat authorized_keys.

    cat ~/.ssh/authorized_keys

    Pokud je ssh-id úspěšně nakopírováno, jeden z řádků authorized_keys bude obsahovat ssh-id mého lokálního PC.

V případě neúspěšného kopírovaní ssh-id

Pokud z nějakého důvodu ssh-id není nakopírováno, lze upravit soubor authorized_keys tak, že na nový řádek vložím veřejný klíč svého lokálního PC.

Např. pomocí

nano ~/.ssh/authorized_keys

Konfigurace ssh autorizace

Na serveru otevřu v editoru config soubor:

sudo nano /etc/ssh/sshd_config
  1. Odkomentuji PubkeyAuthentication yes pro spuštění autentifikace pomocí pubkey.
  2. Upravím PasswordAuthentication no pro zrušení autorizace pomocí hesla.

Doplňková ssh nastavení

  • Nastavení UsePAM yes může obcházet některá nastavení SSH, včetně PasswordAuthentication. Přepíšeme tedy řádek na UsePAM no.
  • PermitRootLogin prohibit-password umožňuje root uživateli přihlášení pouze pomocí klíčové autentizace. Je to dobrá praxe, ale pokud chcete být ještě bezpečnější, můžete nastavit PermitRootLogin no, což zcela zakáže přihlašování root uživatele přes SSH.
  • Pokud nepotřebuji X11 forwarding, doporučuje se pro zvýšení bezpečnosti zakázat změněním řádku X11Forwarding yes na X11Forwarding no.

Spuštění změn

Pokud celý postup proběhl v pořádku, restartuji ssh pro zapsání změn:

sudo systemctl restart ssh

Před tímto příkazem je vhodné prověřit, že byly všechny body postupu úspěšně splněny. V opačném případě hrozí, že se na server již nedostanu a budu muset provést novou instalaci serveru.

Nyní se lze na server přihlásit je z autorizovaného PC pomocí veřejného klíče, bez nutnosti zadávat heslo.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *