Hetzner - DokuWiki

Sshd

Inhaltsverzeichnis

Vorwort

In diesem kleinen Artikel werde ich versuchen ein bisschen tiefer in den sshd einzugreifen um ihn ein wenig mehr abzusichern.

In diesem Tutorial verwende ich Gentoo! Es kann bei anderen Distributionen möglicherweise etwas anders sein!

Testet solche Dinge bitte erst lokal! Wenn ihr Fehler macht, sperrt ihr euch gegebenenfalls von eurem Server aus!

Jeder Mensch macht mal Fehler. Auch ich. Sollte ich hier irgendwo einen gemacht haben, ist das allein euer Ding, also lest euch alles genau durch und kontrolliert alles genau!

Konfiguration

Wir editieren nun unsere sshd_config die sich in /etc/ssh befinden sollte. In der config ändern wir nun ein paar dinge bzw aktivieren sie falls sie es nicht sind.

Port 22
Protocol 2
AllowUsers user1 user2
LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 1
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
RhostsRSAAuthentication no
PasswordAuthentication no
PermitEmptyPasswords no
UsePAM yes

Erklärung dazu:

Port = Port auf dem der sshd lauschen soll...
Protocol = akzeptiertest protokoll (ich verwende nur 2)
AllowUsers = hier die user hinzufügen die sich via ssh einloggen dürfen.
LoginGraceTime = Wie lange sshd die Verbindung aufrecht wenn ein User sich noch nicht vollständig eingeloggt hat
PermitRootLogin = root login NICHT erlauben (siehe hinweis PAM).

StrictMode = Es ist für die Gesamtsicherheit rund um OpenSSH wichtig, dass einige bestimmte Dateien die benötigten bzw. nur die notwendigsten Rechte besitzen. Beispielsweise könnten lasche Dateirechte bei essenziellen Dateien wie der authorized_keys die Sicherheitsmechanismen aushebeln.

MaxAuthTries = nach einem versuch (falsches pw) wird die verbindung getrennt.
PubKeyAuthentication = erlaubt die benutzung von pub keys.
AuthorizedKeysFile = die datei mit den gültigen keys.
RhostsRSAAuthentication = sollte schon standardmaessig auf no sein (siehe man sshd_config o.ä.)
PasswordAuthentication = password login nicht erlauben (siehe hinweis PAM).
PermitEmptyPasswords = verbiete leere passwörter (siehe hinweis PAM).

UsePam = pam zu athentification benutzten (Hinweis: umgeht PermitRootLogin, PasswordAuthentication und PermitEmptyPasswords... diese einstellungen werden dann möglicherweise erfolglos sein).

Pub Key

Nun müssen wir uns für user1 und user2 einen pubkey erstellen. Wir erstellen nun den key auf unserem Rechner zuhause:

ssh-keygen -t dsa

Dort legen wir nun ein passwort fest für den key.

Den Key müssen wir jetzt auf den Server laden:

scp .ssh/id_dsa.pub user@host:

Danach machen wir folgendes als userX:

cat id_dsa.pub >> .ssh/authorized_keys

Checkt auch einmal die rechte... Ansonsten:

chmod 700 .ssh
chmod 600 .ssh/authorized_keys

Nicht vergessen den Key zu löschen:

rm id_dsa.pub

SSH CONFIG

Auf unserem Rechner zuhause müssen wir den Key auch noch adden. Dazu editieren wir unsere config file ~/.ssh/config

Host tld.de
IdentityFile /home/<user>/.ssh/id_rsa

Testen

Nun restarten wir den SSHD auf unserem Server und testen ob alles klappt.

(Loggt euch nicht aus!!! andernfalls kommt ihr eventuell nicht mehr so schnell rein)

Unter Gentoo machen wir dazu einfach folgendes:

/etc/init.d/sshd restart

Zuhause machen wir dann:

ssh user@host

Nun sollte sowas hier kommen:

Enter passphrase for key '/home/<user>/.ssh/id_rsa':

Wenn alles geklappt hat und ihr euch einloggen könnt braucht ihr keine angst mehr zu haben das ihr euch aussperrt. Sichert euch gut den key da ihr ohne ihn nicht mehr reinkommen solltet.

Schlusswort

Lest euch genau durch was man noch ändern könnte...
SSH ist mächtig und bietet einige funktionen die einen grossen teil zu sicherheit beitragen.
Schaut euch mal das knockd und iptables Tut an wenn ihr probleme mit ssh scans habt etc...

Links

knockd
iptables

--idle 16:55, 27. Nov 2006 (CET)



© 2018. Hetzner Online GmbH. Alle Rechte vorbehalten.