SSH-Daemon (sshd) 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.

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 claus martin hans

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. Wie ein solches aussieht, darüber gibt es seitenlange Abhandlungen. In aller Kürze:

– Verwenden Sie keine Eigennamen und keine Wörter aus dem Wörterbuch, egal in welcher Sprache

– Wenn es schon ein leicht zu merkender Begriff sein muß, ergänzen Sie ihn wenigstens mit ein bis zwei Ziffern und variieren Sie die Groß- und Kleinschreibung

– Mindestens acht Zeichen

[ch]

Ähnliche Beiträge