Zum Inhalt springen

vServer: Linux Sicherheitstipps

Entdecke, wie du die Sicherheit deines Linux Servers mit wichtigen Tipps verbesserst, um unbefugten Zugriff zu verhindern und deine Services zu schützen → Jetzt mehr erfahren

26. Oktober 202611 Min. Lesezeit0 Aufrufe0 hilfreich

Einführung

Diese Anleitung enthält einige Tipps und Ratschläge, wie du deinen Linux Server sicherer machen kannst. Gerade weil (virtuelle) Server von außen erreichbar sein müssen, ist ein Basisschutz gegen unerwünschten Zugriff auf jeden Fall empfehlenswert und sollte nicht vernachlässigt werden.

Info

Bitte beachte, dass diese Anweisungen nicht abschließend sind und detailliertere Informationen in anderen Bereichen der ZAP-Dokumentation zu finden sind. (z.B. 2FA (SSH))

Tipp

Der einfachste Weg, deinen Server zu schützen, ist immer derselbe, egal welcher Server: Nutze sichere Passwörter, aktualisiere deine Services regelmäßig und achte generell darauf, welche Services du installierst und welchen Anleitungen du folgst.

Port-Konfiguration deiner Services

ServicePort
SSH22
FTP21
Mail25
DNS53
HTTP80
HTTPS443

Services wie SSH oder FTP verwenden standardmäßig immer dieselben Ports (einige davon sind in der Tabelle oben aufgeführt). Wenn ein externer Angreifer versucht, deinen SSH-Service per Brute Force anzugreifen, muss er zuerst wissen, welcher Port für SSH genutzt wird. Wenn du diese Ports nicht anders konfigurierst, sind die Ports 22 und 21 meist die Treffer, um direkt Befehle auf dem Server auszuführen oder Dateien per FTP zuzugreifen.

Um das zu verhindern, empfehlen wir, die Ports der Standardservices benutzerdefiniert einzurichten. Im nächsten Abschnitt erfährst du, wie das geht:

Achtung

Dein gewünschter Port muss zwischen 1024 und 65535 liegen und darf kein bereits genutzter Port sein!

Mit cat /etc/services kannst du dir einige Standardports anzeigen lassen, damit du keinen bereits belegten Port auswählst.

SSH-Port

Um den SSH-Port zu ändern, musst du die Konfigurationsdatei anpassen. Diese befindet sich normalerweise unter /etc/ssh/sshd_config, falls nicht, kannst du sie mit folgendem Befehl suchen:

Code
find / -name "sshd_config" 2>/dev/null

Öffne die Datei jetzt mit nano (als root oder mit sudo).

Code
sudo nano /etc/ssh/sshd_config

Füge deinen gewünschten Port hinter Port ein. Wenn Port auskommentiert ist (also #Port 22), entferne das "#" und ersetze die 22 durch deinen gewünschten Port. Speichere die Datei (in Nano mit Ctrl + o) und schließe sie (Nano: Ctrl + x).

Der SSH-Service muss nun neu gestartet werden, damit die Änderungen wirksam werden.

Code
# Unter Ubuntu/Debian/CentOS z.B.
sudo systemctl restart sshd

FTP-Port

Wenn du einen FTP-Service wie proFTPd installiert hast, kannst du den Port ebenfalls einfach durch Bearbeiten der Konfigurationsdatei ändern. Die Vorgehensweise ist ähnlich wie beim SSH-Service.

Finde die Konfigurationsdatei proftpd.conf

Code
find / -name "proftpd.conf" 2>/dev/null

Die Datei befindet sich normalerweise unter /etc/proftpd.conf (CentOS) oder /etc/proftpd/proftpd.conf (Ubuntu, Debian). Öffne die Datei mit nano, entferne das "#" vor port und trage deinen gewünschten Port dahinter ein. Beachte die Hinweise oben, damit du keinen ungültigen Port einträgst.

Tipp

Nutze Ctrl + W, um in nano zu suchen.

Code
nano /etc/proftpd/proftpd.conf

Zusätzliche Schutzmaßnahmen mit Fail2Ban

Fail2Ban ist ein Service, der IP-Adressen blockiert, die sich mit wahrscheinlich böswilligen Absichten am Server anmelden wollen. Fail2Ban überwacht Logdateien auf Auffälligkeiten und sichert dein System so relativ einfach und effektiv ab.

Nach der Installation bringt Fail2Ban bereits vorkonfigurierte Einstellungen für einige häufig genutzte Services mit, darunter:

  • apache
  • lighttpd
  • sshd
  • qmail
  • postfix
  • Courier Mail Server Weitere Services können einfach per regulärem Ausdruck (RegEx) und Angabe der gewünschten Logdatei hinzugefügt werden.
Als Beispiel schauen wir uns einen Eintrag in /var/log/auth.log an. Diese Datei enthält alle SSH-Login-Versuche, egal ob erfolgreich oder fehlgeschlagen.

Hier siehst du den Eintrag:

Code
Dec 2 12:59:19 vps-zap515723-2 sshd[364126]: Failed password for root from 92.117.xxx.xxx port 52504 ssh2

Fail2Ban nutzt diese Logdatei und überwacht sie auf fehlgeschlagene Authentifizierungen. Da die Logdatei direkt die IP-Adresse des Angreifers enthält, kann Fail2Ban diese IP-Adresse nach einigen Fehlversuchen blockieren.

Installation von Fail2Ban

Melde dich zuerst auf deinem Linux Server an. Falls du Hilfe brauchst, folge unserer Anleitung Erstzugang (SSH). Du solltest die Befehle als root oder mit sudo ausführen.

Code
sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban

Nach der Installation kannst du den Status direkt mit systemctl prüfen: (Mit Ctrl+C verlässt du systemctl)

Code
systemctl status fail2ban.service
* fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor pres>
     Active: active (running) since Sat 2023-12-02 13:10:33 UTC; 24s ago
       Docs: man:fail2ban(1)
    Process: 23988 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, statu>
   Main PID: 23989 (fail2ban-server)
        CPU: 409ms
     CGroup: /system.slice/fail2ban.service
             `-23989 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

Dec 02 13:10:33 vps-zap515723-1 systemd[1]: Starting Fail2Ban Service...
Dec 02 13:10:33 vps-zap515723-1 systemd[1]: Started Fail2Ban Service.
Dec 02 13:10:34 vps-zap515723-1 fail2ban-server[23989]: Server ready

Konfiguration von Fail2Ban

Fail2Ban ist jetzt installiert, aber noch nicht aktiv oder konfiguriert. Schau dir /etc/fail2ban an, dort sollten aktuell folgende Dateien liegen:

Code
action.d fail2ban.d jail.conf paths-arch.conf paths-debian.conf
fail2ban.conf filter.d jail.d paths-common.conf paths-opensuse.conf

Um ein aktives „Jail“ zu erstellen, muss eine Datei namens jail.local angelegt werden. Kopiere einfach den Inhalt von jail.conf in die neue Datei und öffne sie:

Code
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Alle Einstellungen kannst du jetzt in der jail.local Datei vornehmen, inklusive der zu überwachenden Services. Du solltest dich nur auf den Teil nach [Default] konzentrieren. Der Default-Abschnitt dient für allgemeine Grundeinstellungen.

Scroll ein Stück runter, bis du diesen Abschnitt findest, und passe ihn z.B. so an:

AttributErklärungWert
ignoreipIP-Adressen, die nicht blockiert werden sollen127.0.0.1/8
ignorecommandNicht relevant.
bantimeWie lange eine IP-Adresse gesperrt bleibt1h
findtimeZeitraum, in dem fehlgeschlagene Logins gezählt werden10m
maxretryAnzahl der Fehlversuche, die zu einer Sperre führen5
Code
# kann mit Leerzeichen (und/oder Komma) getrennt definiert werden.
#ignoreip = 127.0.0.1/8 ::1

# ignorecommand = /path/to/command <ip>
ignorecommand =

# "bantime" ist die Anzahl der Sekunden, die ein Host gesperrt ist.
bantime  = 1h

# Ein Host wird gesperrt, wenn er "maxretry" Fehler innerhalb von "findtime"
# Sekunden erzeugt hat.
findtime  = 10m

# "maxretry" ist die Anzahl der Fehler, bevor ein Host gesperrt wird.
maxretry = 5

Du hast jetzt die Grundeinstellungen abgeschlossen. Um z.B. den SSH-Service zu überwachen, scrollst du weiter runter zum Tag [sshd]. Wenn du deinen Port geändert hast, solltest du ihn unter port eintragen.

Der [sshd]-Abschnitt sieht dann so aus:

Code
[sshd]

enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 4
Tipp

Wie du siehst, sind auch individuelle Einstellungen für einzelne Services möglich (hier z.B. maxretry, das niedriger als die Standard-Einstellung ist). Obwohl du vorher allgemeine Einstellungen gemacht hast, kannst du die meisten Einstellungen für jeden Service nochmal separat konfigurieren. Wenn du das nicht machst, wird die allgemeine Einstellung genutzt.

Jetzt musst du Fail2Ban nur noch neu starten, damit die Überwachung startet.

Code
sudo systemctl restart fail2ban.service

Funktionalität von Fail2Ban überprüfen

Wenn du Zugriff auf ein VPN oder einen zweiten Server hast, kannst du versuchen, dich selbst von Fail2Ban blockieren zu lassen, um zu testen, ob der Service funktioniert. Mit einem VPN oder Hotspot über dein Handy solltest du eine andere IP-Adresse bekommen, mit der du Fail2Ban testen kannst.

Achtung

Teste das nicht in deinem normalen Netzwerk, da deine eigene IP-Adresse blockiert werden könnte und du dich aussperrst.

Versuche, eine SSH-Verbindung zu deinem Server (mit anderer IP-Adresse!) herzustellen und gib jedes Mal das falsche Passwort ein. Das Ergebnis sollte ungefähr so aussehen:

Code
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
root@185.223.29.xxx: Permission denied (publickey,password).
root@vps-zap515723-2:/var/log# ssh root@185.223.29.179
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
^C
root@vps-zap515723-2:/var/log# ssh root@185.223.29.xxx
ssh: connect to host 185.223.29.xxx port 22: Connection refused

Wie du siehst, wird die Verbindung von deinem Fail2Ban-geschützten Server jetzt abgelehnt (Connection refused statt Permission denied).

Zeige nun den Status von Fail2Ban an. Hier siehst du, dass eine IP-Adresse blockiert wurde.

Code
fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 4
|  |- Total failed:     8
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   xxx

Wenn du die IP wieder freigeben möchtest, kannst du das mit folgendem Befehl tun: fail2ban-client set sshd unbanip {deine IP}.

Info

Wenn du ungewöhnlich viele IP-Sperren hast, empfiehlt es sich, die Sperrzeit mit jedem Fehlversuch zu verlängern, um die Anzahl der möglichen Login-Versuche zu reduzieren.

Code
[sshd]

enabled = true
port    = 22
filter  = sshd
logpath = /var/log/auth.log
maxretry = 4

bantime = 1h
# Bantime sollte mit jeder Sperre dieser IP steigen
bantime.increment = true
# Skalierungsfaktor von 24 Stunden (1h,24h,48h,3d,4d....)
bantime.factor = 24
# Maximale Sperrzeit = 5 Wochen
bantime.maxtime = 5w

FAQ

Häufig gestellte Fragen

Sichere Passwörter nutzen, Services regelmäßig aktualisieren und generell darauf achten, welche Services du installierst und welchen Anleitungen du folgst.
Aktiviere die Authentifizierung ausschließlich über SSH-Schlüssel und deaktiviere den Passwort-Login - siehe dazu die SSH-Key-Anleitung.
Port 22. Angreifer, die SSH per Brute Force attackieren wollen, müssen zunächst wissen, welcher Port genutzt wird.

Feedback

War dieser Artikel hilfreich?

Deine Rückmeldung hilft uns, Inhalte besser zu priorisieren und zu überarbeiten.

0 von 0 Rückmeldungen fanden diesen Artikel hilfreich.

Persönliche Hilfe

Die Anleitung reicht nicht?

Unser ZAP-Support kennt dein Produkt — beschreib kurz dein Anliegen und wir helfen dir persönlich weiter.