Ich habe mir heute (wieder einmal) ein VServer gemietet, und mir ein Ubuntu Server Image aufspielen lassen.
In Teil 1 möchte ich zeigen, wie man den SSH-Dienst ein wenig absichert.
Die erste Anmeldung
Nachdem Ihr von eurem Anbieter die root-Logindaten zu eurem Server bekommen habt, solltet ihr euch zunächst einmail einloggen.
ssh root@host.com
Ihr solltet nun nach dem Passwort gefragt werden, welches ihr eingebt.
1. Das Root-Passwort ändern
Da häufig die Zugangsdaten per Email verschickt werden, und diese selten verschlüsselt sind, gilt es zunächst das root Passwort zu ändern, falls die Email in falsche Hände geraten sollte.
passwd root
Ihr werdet daraufhin zwei Mal nach einem Passwort gefragt, welches Ihr wieder eingebt.
2. Der zweite Benutzer
Man sollte sich nicht immer direkt als root-user auf dem Server anmelden, weswegen wir uns nun ein Nutzaccount erstellen. Unter Ubuntu kann man den Befehl “adduser” nutzen.
adduser gehaxelt
Ihr werdet nach einigen Daten gefragt, die Ihr aber freilassen könnt, und wie immer das Passwort zwei Mal richtig eingeben.
Danach ermöglichen wir dem neuen Nutzer noch die Nutzung des “sudo”-Befehls, in dem wir ihn in die Gruppe “sudo” hinzufügen.
adduser gehaxelt sudo
Es sollte daraufhin möglich sein, sich mit dem Benutzer per SSH anzumelden.
ssh gehaxelt@host
3. RSA-Keypair erstellen
Auf unserem lokalen PC erstellen wir uns zunächst ein Schlüsselpaar, mit dem wir uns später auf dem Server anmelden werden, da wir den Passwortlogin abschalten werden.
cd ~/.ssh
ssh-keygen -t rsa
Zunächst müsst ihr einen Dateinamen angeben - ich nehme mal gehaxelt_key als Beispiel - und ihr könnt nun noch ein extra Passwort angeben, müsst dies aber nicht. Nun muss der public-Teil des Schlüsselpaares noch auf den Server hochgeladen werden.
ssh-copy-id -i ~/.ssh/gehaxelt_key.pub gehaxelt@host
Das Programm nimmt uns die Arbeit ab, den Pub-Key auszulesen, und dann in der Datei “authorized_keys” im Ordner “~/.ssh” auf dem Server einzufügen.
4. SSHD-Conf bearbeiten
Nun möchten wir folgende drei Sachen noch ändern:
SSH-Port ändern
Root-Login deaktivieren
Passwortlogin dekativieren
Pubkey-Login aktivieren
Dazu bearbeiten wir als root die folgende Datei
nano /etc/ssh/sshd_config
und ändern folgende Einträge:
Port 22
zu
Port xxxx #zufällige 4 stellige Portnummer welche man sich merken muss
dann
PermitRootLogin yes
zu
PermitRootLogin no
dann
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys
zu
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
dann
ChallengeResponseAuthentication yes
zu
ChallengeResponseAuthentication no
dann
PasswordAuthentication yes
zu
PasswordAuthentication no
dann
UsePAM yes
zu
UsePAM no
Jetzt muss nur noch der ssh-Dienst neugestartet werden.
reload ssh
5. Das Finale
Wenn nun alles funktioniert hat, so sollte man sich nun per Pubkey-Authentifizierung auf dem Server anmelden können. Der Passwortlogin bzw. die Portänderung wurde vorgenommen, um Brute-Force-Attacken bzw. Portscans zu verhindern bzw. zu erschweren.
Hilfreich kann es sein, die aktive Verbindung, in der man die Änderungen durchgeführt hat, offen zu lassen, um im Falle eines “Ausschlusses” die Änderungen rückgängig zu machen. Man öffnet nun also einen neuen Terminal ;)
Der Login erfolgt dan folgedermaßen:
ssh -p PORTNUMMER -i ~/.ssh/gehaxelt_key gehaxelt@host
Ein Login als Root-User sollte nicht mehr möglich sein.
Ich hoffe Teil 1 war soweit verständlich, und ich hoffe, dass ich noch ein paar weitere Teile schreiben werde.
Konstruktive Kritik bzw. Vorschläge und Verbesserungen gerne gesehen :)
Gruß
gehaxelt