Zum Hauptinhalt springen
Zurück zur Kategorie

10 grundlegende Schritte für die Serversicherheit

10 grundlegende Schritte zur Sicherung eines Linux-Servers: SSH-Schlüsselauthentifizierung, Firewall, Fail2ban, automatische Updates, DDoS-Schutz und mehr. Ein Leitfaden mit Befehlen und Erklärungen.

Lesezeit: 12 Min Sicherheit
serversicherheitlinux-sicherheitsshfirewallfail2banddos-schutz

Inhaltsverzeichnis

10 grundlegende Schritte für die Serversicherheit

Wenn Sie einen neuen Linux-Server einrichten, ist die Standardkonfiguration nicht für die Sicherheit optimiert. Jeder Server, der dem Internet ausgesetzt ist, wird innerhalb von Minuten zum Ziel automatisierter Scan-Tools. Dieser Leitfaden erklärt die 10 grundlegenden Schritte, die Sie implementieren müssen, um Ihren Server zu sichern, komplett mit Befehlen.

Achten Sie darauf, den Zugang zu Ihrem Server beim Anwenden dieser Schritte nicht zu verlieren. Besonders beim Ändern der SSH-Konfiguration halten Sie Ihre aktuelle Sitzung offen und testen Sie mit einem neuen Terminalfenster.

Schritt 1: SSH-Schlüsselauthentifizierung und Deaktivierung der Passwort-Anmeldung

Passwortbasierte SSH-Anmeldung ist anfällig für Brute-Force-Angriffe. Die Verwendung eines SSH-Schlüsselpaars ist viel sicherer.

SSH-Schlüsselpaar erstellen (auf lokalem Rechner)

hljs bash
# Ed25519-Schlüssel erstellen
ssh-keygen -t ed25519 -C "server-name@rexe"

# Oder wenn Sie RSA verwenden möchten
ssh-keygen -t rsa -b 4096 -C "server-name@rexe"

Öffentlichen Schlüssel auf den Server kopieren

hljs bash
# Vom lokalen Rechner ausführen
ssh-copy-id -i ~/.ssh/id_ed25519.pub benutzer@server-ip

Passwort-Anmeldung deaktivieren

hljs bash
# /etc/ssh/sshd_config bearbeiten
sudo nano /etc/ssh/sshd_config

# Diese Zeilen ändern:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no

# SSH-Dienst neu starten
sudo systemctl restart sshd

Schritt 2: Firewall-Konfiguration (UFW)

hljs bash
# UFW installieren
sudo apt install ufw -y

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

# SSH erlauben
sudo ufw allow 22/tcp

# Webserver-Ports
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# UFW aktivieren
sudo ufw enable

Schritt 3: Fail2ban-Installation und -Konfiguration

hljs bash
# Fail2ban installieren
sudo apt install fail2ban -y

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

[sshd]
enabled = true
maxretry = 3
bantime  = 86400

Schritt 4: Automatische Sicherheitsupdates

hljs bash
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades

Schritt 5: Deaktivierung ungenutzter Dienste

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

# Offene Ports prüfen
sudo ss -tlnp

# Unnötige Dienste stoppen
sudo systemctl stop bluetooth
sudo systemctl disable bluetooth

Schritt 6: Starke Passwörter und Zwei-Faktor-Authentifizierung

hljs bash
sudo apt install libpam-pwquality -y
minlen = 12
ucredit = -1
lcredit = -1
dcredit = -1
ocredit = -1

Schritt 7: Regelmäßige Backups

hljs bash
# Lokales Backup mit rsync
rsync -avz --delete /var/www/ /backup/www/

# Cron-Job für automatisches Backup
0 2 * * * rsync -avz /var/www/ /backup/www/

# Datenbank-Backup
mysqldump -u root -p --all-databases | gzip > /backup/db_$(date +%Y%m%d).sql.gz

Wenden Sie die 3-2-1-Backup-Regel an: 3 Kopien, 2 verschiedene Medien, 1 anderer Standort.

Schritt 8: Log-Überwachung

hljs bash
tail -f /var/log/auth.log
tail -f /var/log/syslog
grep "Failed password" /var/log/auth.log | tail -20

Schritt 9: DDoS-Schutz

hljs bash
# SYN-Flood-Schutz
sudo iptables -A INPUT -p tcp --syn -m limit \
  --limit 1/s --limit-burst 3 -j ACCEPT
sudo iptables -A INPUT -p tcp --syn -j DROP

# Verbindungsanzahl-Limit (pro IP)
sudo iptables -A INPUT -p tcp --dport 80 -m connlimit \
  --connlimit-above 50 -j REJECT

Softwarebasierter DDoS-Schutz kann bei großangelegten Angriffen unzureichend sein. Die Path.net-Infrastruktur von REXE bietet DDoS-Filterung auf Netzwerkebene und bereinigt Angriffsdatenverkehr, bevor er Ihren Server erreicht.

Schritt 10: SSL/TLS-Konfiguration

hljs bash
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
hljs nginx
server {
    listen 443 ssl http2;
    ssl_protocols TLSv1.2 TLSv1.3;
    add_header Strict-Transport-Security "max-age=63072000" always;
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
}

Sicherheits-Checkliste

  • SSH-Schlüsselauthentifizierung aktiv, Passwort-Anmeldung deaktiviert
  • Root-SSH-Anmeldung deaktiviert
  • Firewall konfiguriert
  • Fail2ban installiert und läuft
  • Automatische Sicherheitsupdates aktiv
  • Ungenutzte Dienste deaktiviert
  • Starke Passwortrichtlinie angewendet
  • 2FA aktiviert
  • Regelmäßiger Backup-Plan erstellt
  • Log-Überwachung konfiguriert
  • DDoS-Schutz aktiv
  • SSL/TLS-Zertifikat installiert