[Debian] Absichern von SSH

SSH ist ein kritischer Dienst, wird dieser geknackt haben Angreifer volle Kontrolle über Ihren
dann kompromittierten Server. Daher ist es ratsam diesen Dienst vernünftig abzusichern.
In diesem Artikel lege ich Ihnen einige Tipps nahe an welchen Sie sich bei der Konfiguration orientieren können.

SSH

SSH-Server

sshd_config anpassen

nano /etc/ssh/sshd_config
# direkten root login nicht ermöglichen
PermitRootLogin no
# niemals auf yes setzen, da andernfalls ein login auch mit Konten ohne Passwort möglich ist
PermitEmptyPasswords no
# sollten NUR Private-Keys zur Authentifizierung am SSH-Daemon verwendet werden, ist das Deaktivieren von Passwort-Logins eine gute Sache
PasswordAuthentication no
# Keine Informationen über die Distribution im Port-Banner vom SSH-Dienst anzeigen
DebianBanner no

Cracklib installieren

Cracklib ist eine Library die es ermöglicht, eine mindestlänge für Kennwörter einzelner Benutzer festzulegen.
Dies ist sehr ratsam gerade bei Servern, um das verwenden von schwachen Kennwörtern zu vermeiden.

apt-get install libpam-cracklib
nano /etc/pam.d/common-password
password        requisite                       pam_cracklib.so retry=3 difok=3 minlen=16

Diese Zeile verrät uns 3 Informationen.
retry = Anzahl der maximalen Loginversuche
difok = Wieviele Zeichen müssen sich zum letzten Kennwort unterscheiden, damit bei einem
Passwortwechsel das neue Kennwort akzeptiert wird.
minlen = Mindestlänge des Passworts

Anschließend nach der Änderung der angegebenen Parameter auf die gewünschte Konfiguration muss
das Dokument anschließend gespeichert werden.

Begrenzung von SSH auf einzelne IP-Adressen oder Netze

Sollten statische IP-Adressen oder Netze zur Verfügung stehen, ist es
ratsam den Login über SSH auf einzelne Adressen zu begrenzen.

Dazu sollten zuerst die IP-Adressen von denen ein Zugriff ermöglich werden soll whitelisted werden:

nano /etc/hosts.allow
sshd : localhost : allow # localhost whitelisten
sshd: 192.168.0.0/255.255.255.192 # netz whitelisten
sshd : 1.2.3.4 # sonstige ip-adresse whitelisten

Anschließend müssen alle anderen Adressen die nicht in der hosts.allow aufgeführt sind
blacklisted werden:

nano /etc/hosts.deny
sshd: ALL EXCEPT LOCAL

Diese Zeile sagt aus, dass ein Login via SSH nur mit den lokalen Benutzern möglich ist,
alle anderen Anfragen werden verweigert, außer denen die in der hosts.allow zusätzlich dazu stehen.

Weiterführende Links

http://www.rz.uni-wuerzburg.de/dienste/it_sicherheit/sshlinux/absichern_des_zugangs/

Leave a Reply