Navigation



Über mich

Jens Rautenstrauch
Rietberg, Nordrhein-Westfalen


Projekte

Tutorien


Link(s)


Tutorial: openSSH & SFTP - Einrichtungen

Stand: 04.03.2008 12:00, V1.01 ~ Jens Rautenstrauch

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.

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