Securing openSSH (ssh-audit)
Dank einem Kollegen habe ich das nette Python Script „ssh-audit“ zum Auditing des SSH Daemons auf GitHub gefunden. Das Tool prüft Host Keys und Ciphers einer SSH Instanz und gibt direkt sinnvolle Empfehlungen zur Absicherung aus.
Die Absicherung von openSSH ist tatsächlich etwas, mit dem man sich im Normalfall recht wenig beschäftigt. Dennoch macht es massiv Sinn die paar Minuten Zeit zu investieren.
Ich hatte bereits einige Ciphers in meiner SSH Config hinterlegt, dennoch war etwas Raum für Verbesserung. Mit meiner ursprünglichen Konfiguration hatte ich in Sachen versuchter SSH Angriffsversuche bereits merklich Besserung gegenüber der CentOS Default Konfiguration gespürt (in Verbindung mit fail2ban). Statt fast 1000 Angriffen und Blocks pro Tag hatte ich mit meiner Cipher Konfiguration nur noch rund 100 Einträge im fail2ban Log. Mit der neuen Konfiguration (und dem deaktivieren von DSA und ECDSA) konnte ich die Anzahl nochmal auf ca. 10 pro Tag minimieren.
Das liegt insbesondere daran, das meist ältere (nicht mit Sicherheitsupdates versorgte) Systeme gehackt und für derartige SSH Scans und Angriffe verwendet werden. Die dort installierten SSH Clients unterstützen jedoch in der Regel nicht die aktuellsten SSH Sicherheitsstandards und kommen somit gar nicht zum Verbindungsaufbau.
Eine mögliche Konfiguration für ein CentOS 7 System sieht folgendermaßen aus.
# disable DSA and ECDSA host keys #HostKey /etc/ssh/ssh_host_dsa_key #HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ed25519_key # force strong ciphers Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr KexAlgorithms curve25519-sha256@libssh.org MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com
Das ganze setzt einen aktuellen SSH Client voraus. Ältere Putty Installationen müssen u.U. geupdated werden.