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").