Die meisten erfolgreichen Angriffe auf Linux-Server nutzen keine Zero-Day-Exploits. Sie nutzen Fehlkonfigurationen, schwache Passwörter und fehlende Updates. Mit den richtigen Maßnahmen schützen Sie sich gegen 90% aller Angriffe.
Wichtig: Server-Härtung ist keine einmalige Aktion. Es ist ein kontinuierlicher Prozess aus Updates, Monitoring und regelmäßiger Überprüfung.
1. SSH absichern - Der wichtigste Schritt
SSH ist das primäre Einfallstor für Angreifer. Ein falsch konfigurierter SSH-Dienst ist eine offene Einladung. Hier sind die essentiellen Einstellungen:
# /etc/ssh/sshd_config # Root-Login verbieten PermitRootLogin no # Nur Key-Authentifizierung erlauben PasswordAuthentication no PubkeyAuthentication yes # SSH-Port ändern (optional, aber effektiv) Port 2222 # Nur bestimmte Benutzer erlauben AllowUsers admin deploy # Idle-Timeout setzen ClientAliveInterval 300 ClientAliveCountMax 2
Wichtig: Bevor Sie PasswordAuthentication deaktivieren, stellen Sie sicher, dass Ihr SSH-Key korrekt hinterlegt ist und funktioniert. Sonst sperren Sie sich selbst aus!
2. Firewall konfigurieren
Eine Firewall ist Pflicht. UFW (Uncomplicated Firewall) macht die Konfiguration einfach:
# UFW installieren und aktivieren apt install ufw # Default-Policies setzen ufw default deny incoming ufw default allow outgoing # Notwendige Ports öffnen ufw allow 2222/tcp # SSH (angepasster Port) ufw allow 80/tcp # HTTP ufw allow 443/tcp # HTTPS # Firewall aktivieren ufw enable # Status prüfen ufw status verbose
Für komplexere Setups empfehlen wir nftables oder iptables direkt. Aber für die meisten Server ist UFW ausreichend und weniger fehleranfällig.
3. Fail2Ban gegen Brute-Force
Fail2Ban blockiert IP-Adressen nach mehreren fehlgeschlagenen Login-Versuchen automatisch:
# Installation apt install fail2ban # Konfiguration kopieren cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # /etc/fail2ban/jail.local anpassen [sshd] enabled = true port = 2222 filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 3600 findtime = 600 # Dienst starten systemctl enable fail2ban systemctl start fail2ban
4. Updates automatisieren
Ungepatchte Systeme sind das größte Sicherheitsrisiko. Automatische Sicherheitsupdates sind ein Muss:
# Unattended-upgrades installieren apt install unattended-upgrades # Automatische Updates aktivieren dpkg-reconfigure -plow 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";
Tipp: Setzen Sie Automatic-Reboot auf "false" für Produktionssysteme und planen Sie Reboots nach Kernel-Updates manuell ein.
5. Benutzer und Rechte
Das Prinzip der minimalen Rechte ist fundamental für Sicherheit:
- Kein Root-Login: Arbeiten Sie immer mit einem normalen Benutzer und sudo
- Starke Passwörter: Minimum 16 Zeichen, Passphrasen sind ideal
- Sudo mit Logging: Alle sudo-Befehle werden protokolliert
- Keine Shared Accounts: Jeder Admin hat seinen eigenen Benutzer
- SSH-Keys rotieren: Regelmäßiger Austausch der Schlüssel
# Neuen Admin-Benutzer anlegen adduser adminuser usermod -aG sudo adminuser # Passwort-Policy verschärfen apt install libpam-pwquality # /etc/security/pwquality.conf minlen = 16 dcredit = -1 ucredit = -1 lcredit = -1 ocredit = -1
6. Dienste minimieren
Jeder laufende Dienst ist eine potentielle Angriffsfläche. Deaktivieren Sie alles, was nicht benötigt wird:
# Alle laufenden Dienste anzeigen systemctl list-units --type=service --state=running # Unbenötigte Dienste deaktivieren systemctl disable --now cups.service systemctl disable --now avahi-daemon.service systemctl disable --now bluetooth.service # Offene Ports prüfen ss -tlnp # Nur benötigte Pakete behalten apt autoremove
7. Kernel-Parameter härten
Sysctl-Einstellungen verbessern die Sicherheit auf Kernel-Ebene:
# /etc/sysctl.d/99-security.conf # IP Spoofing Protection net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # ICMP Redirects ignorieren net.ipv4.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 # Source Routing deaktivieren net.ipv4.conf.all.accept_source_route = 0 net.ipv6.conf.all.accept_source_route = 0 # SYN Flood Protection net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 2048 net.ipv4.tcp_synack_retries = 2 # Log Martians (impossible addresses) net.ipv4.conf.all.log_martians = 1 # Einstellungen anwenden sysctl -p /etc/sysctl.d/99-security.conf
8. Logging und Monitoring
Ohne Logs können Sie Angriffe nicht erkennen. Zentrales Logging ist essentiell:
- Auditd: Kernel-Level Auditing für kritische Aktionen
- Rsyslog: Zentrales Logging auf externen Server
- Logwatch: Tägliche Zusammenfassung per E-Mail
- OSSEC/Wazuh: Host-basierte Intrusion Detection
# Auditd installieren apt install auditd # Wichtige Audit-Regeln auditctl -w /etc/passwd -p wa -k passwd_changes auditctl -w /etc/shadow -p wa -k shadow_changes auditctl -w /etc/sudoers -p wa -k sudoers_changes auditctl -w /var/log/auth.log -p wa -k auth_log
Fazit: Härtung ist ein Prozess
Server-Härtung ist keine einmalige Aktion, sondern ein kontinuierlicher Prozess. Die hier gezeigten Maßnahmen sind die Grundlage - aber regelmäßige Überprüfung, Updates und Anpassungen sind genauso wichtig.
Nutzen Sie Tools wie Lynis oder OpenSCAP für regelmäßige Security-Audits. Dokumentieren Sie Ihre Konfigurationen und automatisieren Sie, was Sie können - mit Ansible, Puppet oder Chef.
Security Audit anfordern
Lassen Sie uns Ihre Server prüfen und konkrete Verbesserungsvorschläge erarbeiten.
Security Audit anfragen