🔒 Debian Server Absicherung
Sichere deinen Debian-Server mit SSH-Key-Authentifizierung, Firewall (UFW) und CrowdSec. In diesem Tutorial richten wir Schritt für Schritt einen sicheren Zugang ein und schützen den Server vor Angriffen.
1. Erste Verbindung zum Server
Verbindung via PuTTY / SSH
Unter Hostname tragt ihr die IP-Adresse eures Servers ein. Port 22 bleibt erstmal, dann klickt auf Open.
Die Einblendung für den Fingerprint einmal bestätigen.
Loggt euch als root ein. Das Passwort habt ihr beim Bestellen des Servers bekommen bzw. festgelegt.
2. SSH User Erstellen & Login Absichern
System aktualisieren
Sobald ihr euch das erste Mal angemeldet habt, bringt das System auf den neusten Stand:
apt update && apt upgrade -y
Neuen Benutzer erstellen
Wir erstellen einen neuen Benutzer mit SSH- und Sudo-Rechten. Für diesen Benutzer erstellen wir zusätzlich einen SSH-Schlüssel und blockieren den Root-Login via SSH.
[username = beliebiger Name für den Benutzer, z.B. hans – muss kleingeschrieben sein]
adduser --shell /bin/bash username
Anschließend den User den benötigten Gruppen zuweisen. Auf Debian 12/13 heißt die SSH-Gruppe _ssh – adduser --ingroup lehnt Namen mit Unterstrich ab, daher via usermod:
# Debian 12 / 13:
usermod -aG _ssh,sudo username
# Debian 10 / 11:
# usermod -aG ssh,sudo username
SSH-Konfiguration anpassen
Wir bearbeiten die SSH-Konfigurations-Datei, um den Port zu ändern, Root-Login zu blockieren und nur SSH-Key-Login zuzulassen.
⚠️ Vorsicht beim Eingeben! Sollte ein # vor der jeweiligen Zeile sein, entfernt das #.
nano /etc/ssh/sshd_config
Folgende Einstellungen anpassen:
Port→ Zahl zwischen 30000 und 65535 (z.B.40822)PermitRootLogin→ vonyesaufnoändernAllowUsers username→ unter MaxSessions eintragen (muss man selbst hinzufügen)PubkeyAuthentication→yesPasswordAuthentication→no
Speichern mit STRG + O → Enter zum Bestätigen → STRG + X zum Schließen.
3. ED25519 – SSH-Schlüssel
Warum ED25519 statt RSA?
ED25519 ist ein modernes kryptografisches Verfahren, das auf der Edwards-Kurve basiert. Es bietet bei kürzerer Schlüssellänge (256 Bit) eine höhere Sicherheit als ein 4096-Bit RSA-Schlüssel – und ist dabei schneller zu generieren und zu validieren.
- Sicherheit — stärkere Sicherheit bei kürzeren Schlüsseln
- Leistung — schnellere Generierung und Validierung
- Einfachheit — weniger Speicher und Bandbreite nötig
Quellen: Wikipedia zu ED25519 · UnixTutorial
SSH-Key erstellen
Zum neuen Benutzer wechseln und ED25519-Schlüssel generieren:
su username
ssh-keygen -t ed25519 -C "Kommentar oder E-Mail"
Den Dateinamen bestätigen: /home/username/.ssh/ed25519 → Enter. Passphrase aktivieren (zusätzliches Passwort für den Schlüssel).
Schlüssel einbinden
Den öffentlichen Schlüssel in die authorized_keys umbenennen und Berechtigungen setzen:
mv /home/username/.ssh/id_ed25519.pub /home/username/.ssh/authorized_keys
chmod 700 /home/username/.ssh
chmod 600 /home/username/.ssh/authorized_keys
Privaten Schlüssel sichern
Den privaten Schlüssel anzeigen und kopieren:
cat /home/username/.ssh/id_ed25519
Markiert die komplette Ausgabe von -----BEGIN OPENSSH PRIVATE KEY----- bis -----END OPENSSH PRIVATE KEY-----.
Erstellt eine Textdatei auf dem Desktop, benennt sie sshkey (ohne .txt!) und fügt den kopierten Schlüssel ein.
4. SSH-Key in PuTTY einrichten
Key konvertieren
Öffnet PuTTYgen (wird zusammen mit PuTTY geliefert):
- Klickt auf Load und wählt unter Alle Dateien (*.*) eure gespeicherte
sshkey-Datei aus - Gebt das Passwort ein, das bei der Erstellung verwendet wurde
- Klickt auf Save private Key und vergebt einen Namen (z.B.
DebianKey)
Ihr habt nun eine DebianKey.ppk-Datei. ⚠️ Dieser Schlüssel darf niemals verloren gehen! Er ist vergleichbar mit einem Wohnungsschlüssel.
5. SSH – Sudo Konfiguration
Sudoers prüfen
Wechselt zurück zum Root-User und öffnet die Sudoers-Datei:
su -
visudo
Überprüft, ob folgender Abschnitt vorhanden ist:
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
Sollte der Eintrag nicht vorhanden sein, fügt ihn unter #User privilege specification ein.
Speichern mit STRG + O → Enter → STRG + X.
SSH-Dienst neu starten
service sshd restart
6. SSH-Verbindung testen
Neue Verbindung aufbauen
⚠️ Lasst das aktuelle Terminalfenster geöffnet! Falls ihr einen Fehler gemacht habt, könnt ihr eure Änderungen noch rückgängig machen.
Startet PuTTY erneut und konfiguriert:
- Unter Connection → SSH → Auth den SSH-Key einbinden (Browse →
DebianKey.ppkauswählen) - Zur Session zurückkehren
- IP-Adresse eintragen und den neuen SSH-Port (z.B.
40822) angeben - Unter Saved Sessions einen Namen eingeben und Save klicken
Per Doppelklick verbinden → Benutzernamen eingeben → SSH-Key wird automatisch erkannt → Key-Passwort eingeben.
Wenn die Verbindung funktioniert, habt ihr alles richtig gemacht! ✅
7. CrowdSec & Firewall
Was ist CrowdSec?
CrowdSec ist ein modernes Sicherheitsprojekt zum Schutz von Servern, Diensten, Containern oder VMs. Es wurde als kollaborative und modernisierte Version von Fail2ban entwickelt.
Die Hauptaufgabe: Überwachung von Serveranfragen, Erkennung von auffälligen Verbindungsversuchen und automatische Sperrung bei DDoS, Brute-Force und mehr.
Firewall installieren (UFW)
UFW (Uncomplicated Firewall) ist ein einfaches Frontend zur Firewall-Verwaltung. Ab Debian 11 (und Ubuntu 20.04+) läuft UFW automatisch auf nftables als Backend – dem modernen Nachfolger von iptables. Ihr müsst nftables nicht extra installieren, es ist Bestandteil des Kernels.
- Debian 10
- iptables (klassisch)
- Debian 11
- nftables (Übergang)
- Debian 12 / 13
- ● nftables (Standard)
apt install ufw -y
Die Abfrage mit JA bestätigen.
⚠️ Wichtig – Plesk oder andere Firewall-Lösungen:
UFW ist eine eigenständige Firewall. Wer bereits Plesk Firewall, CSF oder eine andere Host-Firewall betreibt, sollte nicht zusätzlich UFW aktivieren – zwei Firewalls gleichzeitig führen zu Konflikten.
Entscheidet euch für eine Lösung: UFW oder Plesk-Firewall – nicht beide.
Firewall konfigurieren
Bevor UFW aktiviert wird, zuerst alle benötigten Ports freigeben. Sobald UFW eingeschaltet wird, werden alle nicht explizit erlaubten Ports sofort gesperrt – einschließlich eurer SSH-Verbindung!
🚨 Achtung – Aussperrgefahr!
Stellt sicher, dass euer neuer SSH-Port freigegeben ist, bevor ihr ufw enable ausführt. Wer das vergisst, verliert die SSH-Verbindung und kommt nur noch über den Provider-Notfallzugang (z.B. KVM/VNC-Konsole) rein.
Schritt für Schritt:
# 1. Neuen SSH-Port freigeben (VOR dem Aktivieren!)
ufw allow 40822
# 2. Alten SSH-Port schließen
ufw delete allow 22
# 3. Logging aktivieren
ufw logging on
# 4. Firewall aktivieren – ab jetzt alle anderen Ports geschlossen
ufw enable
⚠️ Wenn ihr einen anderen SSH-Port gewählt habt, tragt diesen entsprechend ein!
CrowdSec Security Engine installieren
Die Security Engine überwacht Logs und analysiert verdächtige Aktivitäten:
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | bash
apt install crowdsec
CrowdSec konfigurieren
API-Port anpassen (um Konflikte mit z.B. Pterodactyl zu vermeiden) und Datenbank optimieren:
nano /etc/crowdsec/config.yaml
Folgende Einstellungen anpassen:
db_config:→use_wal: truelisten_uri:→ von127.0.0.1:8080auf127.0.0.1:8081ändern
Lokale API-Credentials ebenfalls anpassen:
nano /etc/crowdsec/local_api_credentials.yaml
uri:→ vonhttp://127.0.0.1:8080aufhttp://127.0.0.1:8081ändern
systemctl restart crowdsec
CrowdSec Bouncer installieren
Der Bouncer setzt die Entscheidungen der Security Engine um und blockiert verdächtige IP-Adressen. CrowdSec liefert einen einzigen universellen Bouncer, der automatisch erkennt ob nftables oder iptables genutzt wird:
apt install crowdsec-firewall-bouncer
💡 Trotz des Namens ohne „-nftables": auf Debian 11/12/13 wird automatisch nftables verwendet – das Paket erkennt das Backend selbstständig.
Bouncer-Konfiguration anpassen:
nano /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml
api_url:→ vonhttp://127.0.0.1:8080aufhttp://127.0.0.1:8081ändern
Pterodactyl-Kollektion (optional)
Falls ihr Pterodactyl nutzt, installiert die SFTP-Überwachung:
cscli collections install lourys/pterodactyl
Abschluss & Neustart
Port für CrowdSec freigeben und alle Dienste neu starten:
ufw allow 8081
systemctl restart ufw
systemctl restart crowdsec
✅ Geschafft!
Durch diese sicherheitsrelevanten Einstellungen und Installationen habt ihr einen robusten Schutzmechanismus aufgebaut. Euer Server ist nun deutlich besser vor DDoS, Brute-Force und anderen Angriffen geschützt.