HOWTOS

Linux Server absichern – Teil 1: SSH – Login via Zertifikat einrichten und via root sperren

How-To: Linux Server absichern – Teil 1: SSH – Login via Zertifikat einrichten und via root sperren

In der heutigen Welt wird Computersicherheit immer wie wichtiger. Heutzutage kann ein unzureichend abgesichertes System bereits in wenigen Minuten angegriffen worden sein, umso wichtiger ist es schnellstmöglichst einen Grundschutz herzustellen. Denn wenn das eigene System z.B. als Spamschleuder missbraucht wird, kann das schnell zu hohen Kosten führen, falls die IP-Adresse geblacklistet wurde.

Im ersten Teil dieser mehrteiligen Serie, werden wir den SSH-Zugang eines Linux-Servers so absichern, dass es sehr schwierig wird, sich unbefugt einzuloggen.

Für dieses Tutorial sind folgende Dinge und Kenntnisse notwendig:

  • Server mit root Zugriff (z.B. günstig bei DigitalOcean)
  • Linux Grundkenntnisse
  • Editor verwenden
  • Dienste unter Linux

Getestet unter Ubuntu Linux > 12.04

Schritt 1: SSH-Port ändern

Um zu beginnen, logge dich zuerst als root auf deinem Server ein:

$ ssh root@example.com

Danach erstelle ein Backup deiner SSH-Konfiguration und öffne sie mit dem Editor deiner Wahl. (Anfängern empfehle ich nano)

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
# nano /etc/ssh/sshd_config

Nun kann man sich eine Zahl zwischen 1024 und 65535 ausdenken, dies wird unser neuer SSH-Port, so können wir uns vor Portscannern schützen, da diese meist nur die Standardports (SSH: 22) abscannen. Im weiteren Tutorial verwende ich 12345. Ihr könnt diese Zahl einfach durch eure eigene ersetzen.

Wir werden nun die Zeile

Port 22

durch

Port 12345

ersetzen. Wer möchte kann noch mit

ListenAdress X.X.X.X

die IP-Adresse festlegen auf der SSH lauschen soll. Nützlich, wenn man mehrere IPs hat. Nun startet man den SSH-Dienst mit folgendem Befehl neu: (ACHTUNG! Auf keinen Fall das aktuelle Fenster schliessen, damit im Notfall die Änderungen rückgängig gemacht werden können.)

# service ssh restart

Danach öffnet man auf seiner lokalen Maschine ein neues Fenster und versucht sich mit folgendem Befehl zu verbinden:

$ ssh -p12345 ssh@example.com

Wenn du nun verbunden bist, kannst du das alte Fenster schliessen und dich ab sofort über den neuen Port verbinden.

Schritt 2: Unpriviligierten Benutzer erstellen

Falls du bereits einen Benutzer ohne root-Rechte erstellt hast, kannst du diesen Schritt überspringen.

Wir werden nun auf dem Server einen Benutzer ohne root-Rechte erstellen, und uns zukünftig mit diesem einloggen. Rootrechte erhalten wir anschliessend via sudo.

Als erstes musst du als root auf dem Server folgenden Befehl ausführen (simu durch den gewünschten Benutzernamen ersetzen!):

# adduser simu

Nun sollte dich ein Assistent führen, was in etwa so aussehen sollte:

Adding user `simu' ...
Adding new group `simu' (1000) ...
Adding new user `simu' (1000) with group `simu' ...
Creating home directory `/home/simu' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for simu
Enter the new value, or press ENTER for the default
    Full Name []: Simon Erhardt
    Room Number []:
    Work Phone []:
    Home Phone []:
    Other []:
Is the information correct? [Y/n]

Nun kannst du den Benutzer der Gruppe admin hinzufügen.

# adduser simu admin

Falls du folgende Fehlermeldung kriegst,

adduser: The group `admin' does not exist.

musst du die Gruppe erst mit folgendem Befehl noch anlegen.

# addgroup --system admin

Anschliessend kannst du es nochmals probieren. Wenn alles geklappt hat kannst du nun zu deinem neu angelegten Benutzer wechseln und testen ob du root-Rechte kriegst.

# su simu
$ sudo whoami

Wenn alles geklappt hat sollte es so aussehen:

$ sudo whoami
[sudo] password for simu:
root

Schritt 3: Login als root und mit Passwort verbieten

Im letzen Schritt werden wir ein SSH-Zertifikat erstellen und das Einloggen als root und mittels Passwort verbieten. Du musst dich ab dann mit deinem neuen Benutzer einloggen und kannst per sudo root-Rechte erreichen.

Zuerst musst du auf deiner lokalen Maschine ein SSH-Zertifikat erstellen, falls du das bereits hast, gehe zum nächsten Schritt.

$ ssh-keygen -b 4096 -t rsa

Um das erstellte Zertifikat zu aktivieren, gebe folgenden Befehl ein:

$ ssh-copy-id "simu@example.com -p12345"

Anschliessend kannst du dich mit

$ ssh -p12345 simu@example.com

auf deinem Server einloggen. Anschliessend öffnest du deinen Editor wieder (dieses mal mit sudo) und machst noch ein paar letzte Änderungen an der SSH-Konfiguration:

$ sudo nano /etc/ssh/sshd_config

Dort änderst du folgende Zeilen:

PermitRootLogin yes
PasswordAuthentication yes

in

PermitRootLogin no
PasswordAuthentication no

Und startest den SSH-Dienst nochmals neu:

$ sudo service ssh restart

Wenn nun alles geklappt hat, solltest du dich weiterhin per Benutzer einloggen können, aber nicht mehr als root. Dein SSH-Dienst ist nun gesichert und von hier her sollten keine ungewünschten Personen mehr Zugriff erhalten.