Systeme grundlegend absichern
Workshop: Linux-Hardening
Secure Shell (SSH)
Die Secure Shell ist mittlerweile der De-facto-Standard, wenn es um Remote-Logins , Port-Weiterleitung, secure-ftp und Tunneling geht. Von daher sollte SSH gegenüber telnet, rlogin und ftp bevorzugt werden.
Die Konfiguration erfolgt über die Dateien im Verzeichnis /etc/ssh/:
-
für den Serverprozess: /etc/ssh/sshd_config
-
für den Client: /etc/ssh/ssh_config
Die eigenen Keys finden sich dann im Home-Verzeichnis $HOME/.ssh und heißen normalerweise je nach Schlüssel-Type id_rsa* und id_dsa* für die privaten Schlüssel und tragen die Endung ".pub" für die öffentlichen Schlüssel.
Über die Konfigurationsdatei config kann jeder Benutzer noch individuelle Einstellungen vornehmen. In der Datei known_hosts merkt sich der Client-SSH die kontaktierten Systeme in Form des öffentlichen Systemschlüssels aus /etc/ssh/ssh_host*.pub. Der SSH-Client würde also bemerken, wenn sich ein Host-Schlüssel verändert hat, und somit eine Man-in-the-Middle-Attacke erkennen.
Ist der Zugriff für ein oder mehrere Systeme auf einen IP-Port über die IP-Adresse oder die Host-Namen per tcpwrapper, xinetd-Konfiguration oder die iptables-Firewall freigeschaltet, sollte man auf jeden Fall die Applikation und die Services individuell für die notwendigen Zugriffsarten konfigurieren. Für die Secure-Shell (SSH) empfiehlt es sich, nur den Zugriff über die vorher generierten Schlüssel (Public/ Private Keys) zu erlauben und die interaktive Passwort-Authentifizierung zu verbieten:
PasswordAuthentication no
UsePAM no
Die Verzeichnisrechte auf $HOME/.ssh sollten restriktiv gesetzt werden, ansonsten verweigert der SSH-Daemon schon mal den erwarteten Login über den öffentlichen Key (Option "StrictModes yes").