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 = max. logindauer... danach wird die verbindung getrennt. 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).
Da wird sicher noch einiges unklar sein aber ich werde bei gelegenheit noch mehr auf die einzelnen optionen eingehen und auch auf nicht genannte.
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...

