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.