Pages

SSH - Daemon gegen Attacken sichern

Immer wieder sehr beliebt bei pubertären Script-Kiddies scheinen Attacken auf den Secure-Shell-Daemon sshd zu sein. Dabei werden innerhalb von Sekunden hunderte von Login-Versuchen mit Standard-Usernamen wie root, ftp, admin etc. und Passworten aus dem Wörterbuch ausprobiert - frei nach dem Motto: Irgendwo wird's schon klappen.

Solche Attacken sind nicht nur lästig, sie kosten durch die schiere Menge der Anfragen auch Netzwerk-Bandbreite und Rechenkapazitäten. Mit einfachen Mitteln kann man die eigene Secure Shell gegen solchen und ähnlichen Unfug sichern. Alle Einstellungen gehören in das sshd-Configfile, das normalerweise sshd_config heißt und im Verzeichnis /etc/ssh liegt.

Wir müssen bevor wir loslegen ein neuen User anlegen, bevor wir es losgeht.

adduser zwerg


Wir öffnen die Config Datei und bearbeiten sie.

nano /etc/sshd_config


1. Das ursprüngliche SSH-Protokoll Version 1 ist veraltet und hat einige bekannte Sicherheitsmängel. Deswegen sollte Ihr Server nur Protokoll-Version 2 zulassen. Die Zeile

Protocol 2


sorgt dafür.

2. Lange nicht alle Benutzer eines Servers müssen sich per SSH anmelden können. Der Parameter AllowUsers definiert, welche Nutzer erlaubt sind. Alle nicht genannten bleiben ausgesperrt. Beispiel:

AllowUsers root zwerg crew


Ob man den root-Login per SSH überhaupt zulässt, ist Glaubensfrage. Meiner Meinung nach spricht nichts dagegen, solange man ein solides Passwort für root definiert hat.

3. Kein Benutzer braucht ewig, um sich einzuloggen, also Benutzername und Passwort einzugeben. Jeder gestartete sshd-Task braucht aber Speicher und Rechenzeit. Also gibt man mit

LoginGraceTime 60


eine Minute Timeout vor. Hat sich 60 Sekunden nach Verbindungsstart noch niemand korrekt eingeloggt, wird der Task beendet.

Vorsicht: Natürlich ist hier auch ein noch kürzerer Wert möglich. Aber berücksichtigen Sie immer, daß Ihr Server auch einmal überlastet sein kann und die Kommunikation mit dem sshd deshalb verzögert wird. Da kann es äußerst lästig werden, wenn der Timeout zu schnell zuschlägt.

4. Um zu verhindern, daß durch einen Hackversuch hunderte sshd-Tasks gleichzeitig gestartet werden, gibt es einen sehr nützlichen Parameter. Fügen Sie dazu die Zeile

MaxStartups 3:30:10


in das Configfile ein.

Diese Beschränkung ist äußerst effektiv, aber etwas kompliziert zu verstehen: Die Werte im Beispiel bedeuten, daß 2 (= 1. Wert minus 1) "unauthenticated" (also im Login-Stadium befindliche) sshd-Verbindungen immer erlaubt sind. Ab der 3. (= 1. Wert) Verbindung wird mit einer Wahrscheinlichkeit von 30% (2. Wert) die Verbindung abgelehnt. Diese Wahrscheinlichkeit steigt linear an, bis bei 10 (3. Wert) offenen Verbindungen jeder weitere Verbindungsversuch zu 100% abgelehnt wird.

Achtung: Bereits eingeloggte Nutzer zählen nicht zu diesen Werten! Die angegebenen Beispielwerte sollten also für jeden kleineren bis mittleren Server ausreichend sein. Haben Sie sehr viele SSH-Nutzer, können höhere Werte angebracht sein, etwa

MaxStartups 10:30:50


Jenseits dieser Config-Parameter ist das A und O der Server-Sicherheit natürlich ein sicheres Passwort.