Gehaxelts Blog

IT-Security & Hacking

Server absichern - Teil 1

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