Härten eines OpenSSH Servers

Als Erstes, ein gut abgesicherter SSH-Server bringt nichts, wenn die Passwörter, der User, die sich einloggen zu schwach sind. Dies gilt für jeden Dienst der Authentifizierung erfodert. Vielen ist es zu umständlich sich ein kompliziertes Passwort zu merken, aber bedenkt, dass ab 8 Zeichen, Groß- und Kleinschreibung und Zahlen, das Passwort schon so komplex ist, dass ein Bruteforce einige Zeit, und damit meine ich mehrere Monate, dauert.

Nun aber zum SSH-Server.

1. IP-Adresse auf der SSH-Server lauscht
Überlegt euch von welcher Adresse aus euer SSH-Server konnektiert werden muss, das lauschen eines Dienstes auf allen verfügbaren Adressen ist nie empfehlenswert.
ListenAddress 192.168.0.1

2. Port auf dem der SSH-Server lauscht
Um ca. 80% der Attacken auf euren SSH-Server zu blocken reicht bereits nur das ändern des SSH-Ports. Die meisten Angriffe auf SSH-Server kommen aus Botnetzen, die einfach mal ins Blaue versuchen auf Port 22 einen SSH-Server zu konnektieren. Ändert diesen Port, am besten auf einen hohen Port über 20000, und die Bots seit ihr zum Großteil los.
Port 23425

3. SSH-Server Prozess mit den Privilegien des authentifizierten Benutzers laufen lassen
Wenn diese Option eingeschaltet ist, erstellt der SSH-Server bei einer Authentifizierung einen unpreviligierten Child Prozess, der nach erfolgreicher Authentifizierung die Rechte des authentifizierten Benutzers annimmt. Anmachen!
UsePrivilegeSeparation yes

4. Der SSH-Server prüft ob die Zugriffsrechte auf die Konfigurationsdateien und Verzeichnisse korrekt sind, bevor er startet. Einschalten.
StrcitModes yes

5. Root Login nicht erlauben
Der Login über einen normalen Benutzer erschwert dem Eindringling die Arbeit. Um auf das System einzudringen braucht der Eindringling 2 Passwörter, nur eins von beidem bringen ihm nichts, oder nur wenig. Zusätzlich kennt der Angreifer den richtigen Benutzernamen nicht, der sich einloggen darf. Was einen Bruteforce erheblich verlangsamt, da nicht nur das Passwort sondern auch der Benutzername erlangt werden müssen.
PermitRootLogin no

6. Ignoriere .rhosts und .shosts
Die beiden Dateien .rhosts und .shosts liegen, wenn sie existieren, im Homeverzeichnis eines Benutzers. In dieser Datei werden Hosts angegeben, die als vertrauenswürdig gelten und ohne Passwort Authentifizierung auf das System gelangen dürfen. Große Sicherheitslücke, auf jedenfall ignorieren diese Dateien!
IgnoreRhosts yes

7. Host basierte Authentifizierung daektivieren
Im Prinzip ähnlich wie Punkt 6. Es wird sich ohne Passwort nur mit dem Hostnamen authentifiziert. Abschalten.
HostbasedAuthentication no

8. Leere Passwörter verbieten
Das authentifizieren eines Benutzers mit leerem Passwort nicht erlauben.
PermitEmptyPasswords no

Diese 8 Punkte sind einfach zu konfigurierende Paramter, die eurem SSH-Server deutlich mehr Sicherheit bieten. Wer statt der Passwortauthentifizierung lieber die Zertifikats basierte Authentifizierung nutzen möchte kann sich hier darüber informieren.

Bei 5. soll das wohl PermitRootLogin no heißen, oder?

jap soll es, danke das du mich drauf aufmerksam gemacht hast!

Post new comment

  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockcode>
  • Lines and paragraphs break automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options