sobota 29. ledna 2022

SSH Login pomocí certifikátu

Jak zlepšit zabezpečení autorizace SSH?


Vytvoříme si obyčejného uživatele a vygeneruje si rsa klíčový pár:

useradd -m obycelny_uzivatel
ssh-keygen

Klíče se uchovávají v /home/obycejny_uzivatel/.ssh/

Pro případ serveru se zde nachází soubor authorized_keys, který obsahuje seznam certifikátů, které server akceptuje (sem uložíme obsah obycejny_uzivatel.pub).

cat obycejny_uzivatel.pub >> ~/.ssh/authorized_keys

Pomocí scp je možné klíč na klienta přenést a nastavit oprávnění.

scp  ~/.ssh/obycejny_uzivatel.key uzivatel@192.168.1.12:~/.ssh/
chmod 600 ~/.ssh/obycejny_uzivatel.key
  
Pak už stačí jen nastavit ssh clienta aby používat pro doménu xy privátní klíč obycejny_uzivatel.key, obsah souboru ~/.ssh/config:
 
Host muj_pc
     HostName muj.server.cz
     User     muj_uzivatel
     IdentityFile       ~/.ssh/obycejny_uzivatel.key
Teď je dobré na serveru zakázat přihlášení superuživatele (root) a přihlašování heslem.
PermitRootLogin no
PasswordAuthentication no

Nyní by útočník musel získat certifikát (+heslo k němu), vědět uživatelské jméno a pokud by chtěl práva roota, tak i jeho heslo. Tak uvidíme, kdo mě vezme za slovo... :-)