Zum Hauptinhalt springen
Zurück zur Kategorie

Server-Sicherheitshärtung: Umfassende Checkliste

Linux-Server-Sicherheitshärtung: SSH-Härtung, Root-Login deaktivieren, Fail2Ban, automatische Updates, Firewall-Regeln, unnötige Dienste und Dateiberechtigungen.

Lesezeit: 16 min Serververwaltung
sicherheithärtunghardeningsshfail2banfirewalllinuxcheckliste

Inhaltsverzeichnis

Server-Sicherheitshärtung: Umfassende Checkliste

Bei der Einrichtung eines neuen Linux-Servers ist die Standardkonfiguration nicht sicherheitsoptimiert. Server-Härtung umfasst systematische Konfigurationsänderungen zur Reduzierung der Angriffsfläche und zum Schließen von Sicherheitslücken. Diese Anleitung bietet eine umfassende Sicherheitscheckliste für Ihre REXE-Server.

Warum Server-Härtung?

Standard-Linux-Installationen können haben:

  • Unnötige laufende Dienste
  • SSH offen für Passwort-Authentifizierung
  • Root-Login aktiviert
  • Minimale Firewall-Regeln
  • Automatische Updates deaktiviert

Schließen Sie Ihre bestehende SSH-Verbindung während der Härtung nicht. Testen Sie nach jedem Schritt die Verbindung von einem neuen Terminal.

✅ Checkliste 1: Systemupdates

hljs bash
# System aktualisieren
sudo apt update && sudo apt upgrade -y

# Automatische Sicherheitsupdates installieren
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
# /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";

✅ Checkliste 2: SSH-Härtung

hljs bash
sudo nano /etc/ssh/sshd_config
# SSH-Sicherheitseinstellungen

# Root-Login deaktivieren
PermitRootLogin no

# Passwort-Authentifizierung deaktivieren (nach SSH-Schlüssel-Einrichtung)
PasswordAuthentication no

# Leere Passwörter nicht erlauben
PermitEmptyPasswords no

# X11-Weiterleitung deaktivieren
X11Forwarding no

# Maximale Login-Versuche
MaxAuthTries 3

# Maximale gleichzeitige Sitzungen
MaxSessions 5

# Login-Timeout (Sekunden)
LoginGraceTime 30

# Protokollversion
Protocol 2

# Nur bestimmte Benutzer erlauben
AllowUsers admin deploy

# SSH-Port ändern (optional)
# Port 2222

# Starke Verschlüsselungsalgorithmen
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
KexAlgorithms curve25519-sha256,diffie-hellman-group14-sha256
hljs bash
# SSH-Konfiguration testen
sudo sshd -t

# SSH-Dienst neu starten
sudo systemctl restart sshd

✅ Checkliste 3: Firewall-Konfiguration

hljs bash
# UFW installieren und konfigurieren
sudo apt install ufw -y

# Standardrichtlinien
sudo ufw default deny incoming
sudo ufw default allow outgoing

# SSH zuerst erlauben!
sudo ufw allow ssh

# Webdienste
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Zugriff von bestimmter IP erlauben
sudo ufw allow from 192.168.1.0/24 to any port 3306

# UFW aktivieren
sudo ufw enable

# Status prüfen
sudo ufw status verbose

Erweiterte UFW-Regeln

hljs bash
# Rate-Limiting für Brute-Force-Schutz
sudo ufw limit ssh

# Bestimmte IP blockieren
sudo ufw deny from 1.2.3.4

# Regel löschen
sudo ufw delete allow 80/tcp

✅ Checkliste 4: Fail2Ban-Einrichtung

hljs bash
# Fail2Ban installieren
sudo apt install fail2ban -y

# Lokale Konfiguration erstellen
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
hljs ini
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400

[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
hljs bash
# Fail2Ban starten
sudo systemctl start fail2ban
sudo systemctl enable fail2ban

# Status prüfen
sudo fail2ban-client status
sudo fail2ban-client status sshd

# Gesperrte IPs anzeigen
sudo fail2ban-client status sshd | grep "Banned IP"

# IP entsperren
sudo fail2ban-client set sshd unbanip 1.2.3.4

✅ Checkliste 5: Unnötige Dienste deaktivieren

hljs bash
# Laufende Dienste auflisten
sudo systemctl list-units --type=service --state=running

# Unnötige Dienste deaktivieren
sudo systemctl disable --now avahi-daemon
sudo systemctl disable --now cups
sudo systemctl disable --now bluetooth
sudo systemctl disable --now rpcbind

# Offene Ports prüfen
sudo ss -tlnp

✅ Checkliste 6: Dateisystem-Sicherheit

hljs bash
# SUID/SGID-Dateien finden
find / -perm /4000 -type f 2>/dev/null
find / -perm /2000 -type f 2>/dev/null

# Weltschreibbare Dateien finden
find / -perm -0002 -type f 2>/dev/null

# Kritische Dateien unveränderlich machen
sudo chattr +i /etc/passwd
sudo chattr +i /etc/shadow

✅ Checkliste 7: Kernel-Sicherheitsparameter

hljs bash
sudo nano /etc/sysctl.d/99-security.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
kernel.randomize_va_space = 2
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
fs.suid_dumpable = 0
hljs bash
sudo sysctl -p /etc/sysctl.d/99-security.conf

✅ Checkliste 8: Log-Überwachung

hljs bash
tail -f /var/log/auth.log
tail -f /var/log/fail2ban.log
tail -f /var/log/ufw.log

# Fehlgeschlagene SSH-Logins zählen
grep "Failed password" /var/log/auth.log | wc -l

# Logwatch installieren
sudo apt install logwatch -y
sudo logwatch --output stdout --format text --range today

✅ Checkliste 9: Sicherheitsscan

hljs bash
# Sicherheitsaudit mit Lynis
sudo apt install lynis -y
sudo lynis audit system

# Rootkit-Scan mit rkhunter
sudo apt install rkhunter -y
sudo rkhunter --update
sudo rkhunter --check

Der Lynis-Sicherheitsscore sollte 70+ betragen. Führen Sie es regelmäßig (monatlich) aus.

Schnellreferenz-Checkliste

  • Systemupdates angewendet
  • Automatische Sicherheitsupdates aktiviert
  • SSH Root-Login deaktiviert
  • SSH Passwort-Login deaktiviert (Schlüssel installiert)
  • SSH MaxAuthTries auf 3 gesetzt
  • UFW-Firewall aktiviert und konfiguriert
  • Fail2Ban installiert und läuft
  • Unnötige Dienste deaktiviert
  • Kernel-Sicherheitsparameter konfiguriert
  • Log-Überwachung konfiguriert
  • Lynis-Sicherheitsaudit abgeschlossen

Fazit

Server-Härtung ist kein einmaliger Vorgang, sondern ein kontinuierlicher Prozess. Wenden Sie diese Checkliste bei neuen Server-Einrichtungen an und führen Sie regelmäßige Sicherheitsaudits durch. Diese Schritte verbessern die Sicherheit Ihrer REXE-Server erheblich.