🔧 Guide: Så gör du SSH säkrare

OpenSSHAtt är en otroligt använd tjänst råder ingen tvekan om. Nästan alla som har någon form av server använder sig av .

Denna guide börjar med klientsäkerhet för att sedan ge rekommendationer för server-sidans konfiguration. Vi kommer främst att fokusera på de algoritmer som används.

SSH klientsäkerhet

Först och främst ska du se till att du har en relativt ny SSH-klient som du ansluter med. Den som följer med Mac OS X är gammal och stödjer bara gamla krypton, så därför är det lämpligt att uppgradera till en nyare version med hjälp av brew.

Denna följer med Mac OS X Yosemite:

$ ssh -V
_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

Och för att installera en nyare version:

$ brew install openssh --with-brewed-openssl --with-keychain-support

Sedan så kontrollerar vi versionen igen:

$ ssh -V
OpenSSH_6.8p1, OpenSSL 1.0.2a 19 Mar 2015

Nu ser det betydligt bättre ut. Nästa steg är att generera nya Ed25519 nycklar som vi kan använda:

$ ssh-keygen -t  -C "[email protected]" -a 100 -o

Om du i ovan steg får ett felmeddelande om att algoritmen inte stöds så har du fel sökväg till ssh-keygen binären. Testa då /usr/local/bin/ssh-keygen istället.

Glöm framförallt inte att använda ett lösenord för att skydda din privata nyckel.

Vi ska även ändra i vår klient-konfigurationsfil så vi enbart stödjer SSH version 2 samt ett antal algoritmer som vi litar mer på:

Host *
    PubkeyAuthentication yes
    Protocol 2
    HostKeyAlgorithms [email protected],[email protected],[email protected],ssh-ed25519,ssh-rsa
    Ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
    MACs [email protected],[email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,[email protected]

Du hittar SSH-konfigurationsfilen i din hemkatalog och sedan .ssh/config

SSH serversäkerhet

Först och främst måste du se till att ha en relativt ny version av OpenSSH. Du bör ha minst version 6.5 som släpptes i  Januari, 2014.

Lägg in följande i /etc/ssh/sshd_config på rätt ställe:

MACs [email protected],[email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,[email protected]
Ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
KexAlgorithms [email protected],diffie-hellman-group-exchange-sha256

Samt se till att Protocol 2 enbart stöds. Samt kommentera bort stödet för HostKeys som ej är RSA eller ed25519:

HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

Du bör även se till att just ovan hostnycklar verkligen finns. Om någon ej skulle finnas så kan du skapa en ny med ssh-keygen:

$ ssh-keygen -t ed25519 -f ssh_host_ed25519_key

När det fungerar med inloggning via nycklar bör du ändra följande förutsatt att du inte använder någon funktion som de tillhandahåller:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

Givetvis ska även root-logins stängas av med PermitRootLogin no. En annan bra sak är att ta bort kortare Diffie-Hellmanparameterar, följande kommando gör detta åt dig:

awk '$5 > 2000' /etc/ssh/moduli > "${HOME}/moduli"
wc -l "${HOME}/moduli" # se till att du har något kvar i filen
mv "${HOME}/moduli" /etc/ssh/moduli

Glöm inte att starta om openssh samt genomför tester så du inte stänger ute dig själv.

Givetvis finns det mängder med andra inställningar du kan göra för att höja säkerheten. Lämna gärna en kommentar med dina tips.

Uppdatering: För att försvåra brute-force attacker så bör du använda fail2ban eller sshguard. Tipstack till Jonas Thambert!

Tack till stribika

2 comments

  1. Joachim Strömbergson

    Installerade OSX 10.11 (El Capitan) i går. Testar jag versionen med den blir det spännande:

    >ssh -V
    OpenSSH_6.7p1, LibreSSL 2.1.3

    Så Apple har plötsligt börjat köra med libreSSL(!)

Skriv en kommentar

Du kan använda följande HTML HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>