Sicherheitsmanagement
Die Sicherung Ihres Debian-Systems ist eine Kernaufgabe der Systemadministration. Dieser Leitfaden behandelt mehrere Schlüsselbereiche, um Ihnen zu helfen, Ihr System zu härten und potenzielle Bedrohungen abzuwehren.
🔐 Benutzer und Zugriffskontrolle
Der Zugriff auf das System einzuschränken ist die erste Verteidigungslinie für die Sicherheit.
Starke Passwortrichtlinien durchsetzen
Mit dem libpam-pwquality-Modul können Sie Benutzer zwingen, sicherere Passwörter zu erstellen.
Modul installieren:
bashsudo apt update sudo apt install libpam-pwqualityRichtlinie konfigurieren: Bearbeiten Sie die Datei
/etc/security/pwquality.conf, um Passwortregeln zu definieren.ini# Beispielkonfiguration: minlen = 10 # Minimale Länge ist 10 dcredit = -1 # Mindestens 1 Ziffer enthalten ucredit = -1 # Mindestens 1 Großbuchstabe enthalten lcredit = -1 # Mindestens 1 Kleinbuchstabe enthalten ocredit = -1 # Mindestens 1 Sonderzeichen enthalten difok = 3 # Mindestens 3 Zeichen im neuen Passwort müssen sich vom alten unterscheiden
SSH-Sicherheit härten
Der gebräuchlichste Weg, um remote auf einen Server zuzugreifen, ist SSH. Hier sind einige Härtungsempfehlungen:
SSH-Konfigurationsdatei bearbeiten:
bashsudo nano /etc/ssh/sshd_configEmpfohlene Konfiguration:
- Root-Login deaktivieren:
PermitRootLogin no - Passwortauthentifizierung deaktivieren (Schlüssel empfohlen):
PasswordAuthentication no - Public-Key-Authentifizierung aktivieren:
PubkeyAuthentication yes - Standardport ändern (optional):
Port 2222
- Root-Login deaktivieren:
SSH-Dienst neu starten:
bashsudo systemctl restart sshd
🔥 Firewall-Konfiguration (UFW)
Debian hat standardmäßig keine aktivierte Firewall. UFW (Uncomplicated Firewall) ist ein benutzerfreundliches Frontend-Tool. In Debian 13 verwendet UFW im Hintergrund das nftables-Framework (kompatibel mit der alten iptables-Syntax).
UFW installieren:
bashsudo apt install ufwGrundlegende Regeln konfigurieren:
bashsudo ufw default deny incoming # Alle eingehenden Verbindungen ablehnen sudo ufw default allow outgoing # Alle ausgehenden Verbindungen erlauben sudo ufw allow ssh # SSH-Verbindungen erlauben (oder Ihren geänderten Port) sudo ufw allow http # Wenn Webserver, HTTP erlauben sudo ufw allow https # HTTPS erlaubenUFW aktivieren:
bashsudo ufw enableDas System warnt Sie, dass dies bestehende SSH-Verbindungen unterbrechen könnte. Bestätigen Sie dies.
Status überprüfen:
bashsudo ufw status verbose
🔄 Automatische Sicherheitsupdates
Die zeitnahe Anwendung von Sicherheitspatches ist entscheidend. unattended-upgrades kann Sicherheitsupdates automatisch installieren.
Installieren:
bashsudo apt install unattended-upgradesAktivieren: Führen Sie den Konfigurationsassistenten aus, der eine grundlegende Konfigurationsdatei erstellt.
bashsudo dpkg-reconfigure -plow unattended-upgradesWählen Sie im Dialogfeld "Ja".
Konfiguration feinabstimmen (optional): Sie können die Datei
/etc/apt/apt.conf.d/50unattended-upgradesbearbeiten, um das Update-Verhalten anzupassen, z. B. automatische Neustarts zu aktivieren.
🛡️ Eindringlingsschutz (Fail2Ban)
Fail2Ban kann Logdateien überwachen und basierend auf verdächtigem Verhalten (wie mehrfach fehlgeschlagenen Login-Versuchen) automatisch Firewall-Regeln aktualisieren, um IP-Adressen zu blockieren.
Fail2Ban installieren:
bashsudo apt install fail2banLokale Konfigurationsdatei erstellen: Ändern Sie nicht direkt die
.conf-Datei, sondern erstellen Sie eine.local-Datei zur Überschreibung.bashsudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.localSSH-Schutz konfigurieren: Suchen Sie im
jail.localden Abschnitt[sshd]und stellen Sie sicher, dassenabled = true. Sie könnenmaxretry(maximale Versuche) undbantime(Blockierdauer) anpassen.ini[sshd] enabled = true port = ssh maxretry = 3 bantime = 3600 # Für 1 Stunde blockierenDienst neu starten:
bashsudo systemctl restart fail2ban
📝 Logverwaltung und Überwachung
Die regelmäßige Überprüfung der Systemprotokolle ist entscheidend, um anomale Aktivitäten zu erkennen.
- Logs mit
journalctlanzeigen:bash# Alle Logs anzeigen (von alt nach neu) journalctl # Logs in Echtzeit überwachen journalctl -f # Logs eines bestimmten Dienstes anzeigen, z. B. sshd journalctl -u sshd.service # Kernel-Logs anzeigen journalctl -k