Tutorial: openSSH & SFTP - Einrichtungen
In diesem Tutorial (oder HowTo) wird beschrieben, wie Sie einen Linux openSSH- Server einrichten. Es wird ein Augenmerk auf Sicherheit gelegt.
Hinweis: Der Autor übernimmt keinerlei Verantwortung für eventuelle Schäden, welche durch das Anwenden dieses Tutorials auftreten könnten. Das Anwenden Jener geschiet auf eigene Gefahr und der Autor kann nicht zur Verantwortung gezogen werden.
Betriebssystem: | Linux |
Distribution: | Debian 4.0 (Etch) |
Paketinstallation
Die folgenden Pakete werden mit Hilfe von aptitude in der Standardkonfiguration installiert, falls diese nicht schon vorhanden sind:
ssh | Open SSH- Server |
openssh-client | SSH- Client inklusive SFTP |
Interaktive Installation mit aptitude:
?#> aptitude |
Erfahrene Anwender können natürlich auch direkt installieren:
?#> aptitude install ssh openssh-client |
Zum Editieren von Konfigurationsdateien nutze ich gerne den Editor mcedit vom Midnight Commander (mc).
Installation:
?#> aptitude install mc |
Aufruf:
?#> mcedit DATEI |
Konfiguration
Anpassungen an der Server- Konfigurationsdatei /etc/ssh/sshd_config:
- Port von 22 auf 1024 - 65536 umlegen. Auf Port 22 laufen die meisten Angriffe. Diese Verschleierung dient als Schutz vor Kiddyhackern & Co..
- Standardgemäß lauscht der SSH- Server auf allen Schnittstellen. SSH sollte auf nur eine Schnittstelle (IP) beschränkt werden.
- Protokoll 1 sollte deaktiviert werden, da das Protokoll 1 sehr unsicher ist.
- Compression auf yes setzen. Die Übertragungsdaten werden dann zusätzlich noch komprimiert.
- Die Maximale Zeit für die Authentifizierung sollte auf 150 Sekunden (oder niedriger) gesetzt werden. Andernfalls bleibt die Verbindung offen.
- Das Einloggen als root kann „und sollte“ verboten werden.
- Alternativ kann zumindestens ein entsprechend langes Rootpasswort gewählt werden. (20 Zeichen oder länger)
- Das Programm zum Passwort neu setzen lautet: /usr/bin/passwd
- Eine weitere komfortable Alternative ist die Public- Key Authentifizierung.
- * Zur leichteren Pflege kann der Pfad für die Key- Autorisationsdateien auf /etc/ssh/keys/%u gesetzt werden.
- Alternativ kann zumindestens ein entsprechend langes Rootpasswort gewählt werden. (20 Zeichen oder länger)
Ansicht der Konfiguration /etc/ssh/sshd_config:
Port NUMMER #Zum Beispiel 12457 ListenAddress 0.0.0.0 #Alle oder einzelne IP Protocol 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key UsePrivilegeSeparation yes KeyRegenerationInterval 3600 ServerKeyBits 768 SyslogFacility AUTH LogLevel INFO LoginGraceTime 150 PermitRootLogin yes StrictModes yes RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile /etc/ssh/keys/%u #*Falls genutzt IgnoreRhosts yes RhostsRSAAuthentication no HostbasedAuthentication no PermitEmptyPasswords no PasswordAuthentication yes X11Forwarding no X11DisplayOffset 10 PrintMotd no KeepAlive yes Subsystem sftp /usr/lib/openssh/sftp-server UsePAM yes Compression yes |
Direktes Rootlogin verbieten
Als Sicherheitsmaßnahme soll root sich nicht direkt per SSH anmelden dürfen. Um den root- Loginvorgang aber trotzdem recht komfortabel zu gestalten, kann ein Benutzer eingerichtet werden, der als Login-vor-root fungiert.
Konfigurationsänderung in /etc/ssh/sshd_config:
PermitRootLogin no |
Benutzer hinzufügen:
(Der BENUTZERNAME kann frei gewählt werden.)
?#> useradd -m BENUTZERNAME |
Profildatei /home/BENUTZERNAME/.bash_profile anpassen:
if [ -f ~/.bashrc ]; then . ~/.bashrc fi echo echo "Rootlogin..." su - logout |
Den SSH- Server neu starten:
?#> /etc/init.d/ssh restart |
Zugriff mittels Public- Key- Authentifizierung
Nun einen Ordner Namens keys in /etc/ssh anlegen.
Der Ordner erhält das Dateirecht 0701 und soll dem Benutzer root und der Gruppe root gehören:
?#> mkdir -p /etc/ssh/keys ?#> chmod 0701 /etc/ssh/keys ?#> chown root:root /etc/ssh/keys |
Die Public-/ Privatekey Erstellung:
Mittels PuTTYgen einen Schlüssel mit 2048 Bit Verschlüsselung generieren. Es kann auch eine höhere oder niedrigere Verschlüsselung gewählt werden.
PuTTYgen kann von folgender Seite bezogen werden:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
(Komplettpaket als Windows- Binary)
Den privaten Schlüssel lokal zugriffsgeschützt ablegen. Am besten den Schlüssel mit einer Passphrase sichern. Er kann in PuTTY und in WinSCP zur Authentifizierung anstatt des Passwortes genutzt werden. (Hat man eine eigene Passphrase verwendet, wird man vor jedem Verbindungsaufbau nach dieser gefragt.)
Der angezeigte Public- Key wird in die Zwischenablage kopiert.
Auf dem entfernten Rechner wird die Datei BENUTZERNAME im Verzeichnis /etc/ssh/keys/ angelegt.
Hier zum Beispiel für den Benutzer paul /etc/ssh/keys/paul:
Die Datei erhält das Dateirecht 0600 und gehört dem Benutzer BENUTZERNAME (hier paul) und der Gruppe root.
?#> touch /etc/ssh/keys/paul ?#> chmod 0600 /etc/ssh/keys/paul ?#> chown paul:root /etc/ssh/keys/paul |
Der Public- Key wird nun aus der Zwischenablage in die Datei eingefügt.
Den SSH- Server neu starten:
?#> /etc/init.d/ssh restart |
EOT