Kategorien
Linux security

OpenSSH Schützen…

OpenSSH abschalten

Auf vielen Systemen wird kein SSH Server benötigt, da der sicherste Dienst ist der ist, der nicht läuft schalten wir start des SSH Servers auf solchen Systemen am besten ab.
unter Fedora via:

chkconfig sshd off

unter Debian und Ubuntu via:

sudo update-rc.d -f ssh remove

Ausschließlich SSH Protocol Version 2 verwenden

in der Konfigurationsdatei /etc/ssh/sshd_config sollte die Verwendung des SSH Protokolls 2 erzwungen werden. Die Version 1 ist stark veraltet und sollte aus Sicherheitsgründen deaktiviert werden.

Protocol 2

SSH nur bestimmten Benutzern erlauben

Zur Übersichtlichkeit sollte immer via AllowUsers direktive in der Konfigurationsdatei /etc/ssh/sshd_config aufgezählt werden wer zugriff erhält. Ausschließlich bei zu vielen Benutzern oder sehr häufigen wechseln sollte mit der DenyUsers direktive eine Liste mit verbotenen Benutzern angegeben werden.

AllowUsers root vivek jerry

Idle Log Out Timeout festlegen

SSH Sitzungen von Benutzern die längere Zeit inaktiv sind sollten aus der SSH Sitzung geworfen werden. So kann keine SSH Sitzung missbraucht werden weil sie vergessen wurde.

ClientAliveInterval 300
ClientAliveCountMax 0

.rhosts Dateien der Benutzer ignorieren.

SSH kann den veralteten rsh Befehl emulieren, dies sollte, da es selten verwendet und häufig misbraucht wird, unterbunden werden.

IgnoreRhosts yes

Host basierende Authentifizierung abschalten

HostbasedAuthentication no

root-Login abschalten

Der root-Login sollte verboten werden, da automatische Passwort such Scripte zumeist Passwörter für den Benutzer root suchen.

PermitRootLogin no

Ein Banner einbinden

Ein Banner ist kein direkter Schutz Ihres SSH Servers. Das Banner zeigt einem eventuellen Angreifern das dies ein Konfigurierter SSH Server ist, es also vermutlich nicht lohnt es überhaupt zu versuchen.
Hierzu wird in der SSH Konfigurationsdatei /etc/ssh/sshd_config ein Banner angegeben.

Banner /etc/issue

Die Datei /etc/issue enthält das Banner, welches vor dem Login angezeigt werden soll.

Ändere den SSH Port und

Lege in der SSH Konfiguration, unter /etc/ssh/sshd_config, fest auf welche IP-Adressen SSH hört und unter welchen Port der SSH Server erreichbar sein soll.

Port 300
ListenAddress 192.168.1.5
ListenAddress 202.54.1.5

Nutze die Public Key basierte Authentifizierung

SSH Key erstellen

ssh-keygen -t rsa

zum erstellen eines SSH Schlüssels verwenden.

SSH Public Key übertragen

mit dem folgendem Befehl den Public-Key auf den Server übertragen:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

wenn ssh-copy-id nicht verfügbar ist kann der Public-Key

cat ~/.ssh/id_rsa.pub | ssh user@server 'umask 077; cat >> .ssh/authorized_keys'

SSH-Server konfigurieren

In der Konfiguration /etc/ssh/sshd_config, die Publick-Key Authentifizierung aktivieren.

PubkeyAuthentication yes

Key automatisch laden

Auf den Clients, den Computer die sich via SSH zum Server verbinden sollen ist es schön, wenn die Keys beim Laden schon im RAM sind. Hierzu gibt es je nach Betriebssystem verschiedene Tools.:

  • unter Windows: Pageant
  • unter Linux: ssh-agent
  • unter MacOS: ssh-agent (seit Version 10.5 Leopard teil des Systems)

Unter Linux kann in der ~/.bashrc mit einem kurzen Script der ssh-agent beim Login geladen werden.:

test "$SSH_AUTH_SOCK" || exec ssh-agent $SHELL -c "ssh-add; exec $SHELL -login"

Chroot SSHD

In der Konfiguration /etc/ssh/sshd_config kann seit SSH 4.8p1 die Funktion chroot() zum Einrichten eines Changeroot Gefängnisses verwendet werden. Der Benutzer wird nach dem Login in sein Heimatverzeichnis einzusperren.

Subsystem sftp internal-sftp

Match group sftponly
   ChrootDirectory /home/%u
   X11Forwarding no
   AllowTcpForwarding no
   ForceCommand internal-sftp

Das Verzeichnis in das via chroot() gewechselt werden soll muss dem Benutzer root gehören. Nach dem chroot() Aufruf wechselt die SSH Sitzung in ein Verzeichnis relativ zum neuen root-Verzeichnis, aus diesem Grund wechseln wir das Heimatverzeichnis auf „/“.

# chown root:root /home/user
# usermod -d / user
# adduser user sftponly

Von der_metzger

Hi, ich bin Jan Kuehnel - Fachinformatiker für Systemintegration ,Linux-Benutzer und Blogger. Seit 2019 arbeite ich als Systemadministrator bei einem beliebten deutschen Fahrradverleih und zuvor über 10 Jahren bei einem großen deutschen Provider. Ich folge seit meiner Kindheit dem Hobby, technische Rätsel zu lösen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.