Zum Hauptinhalt springen
Background Image

Eine frische Debian-Installation absichern (2025 Anleitung)

·736 Wörter·4 min
Inhaltsverzeichnis

Beim Einrichten eines neuen Debian-Servers ist es entscheidend, das System abzusichern, bevor du Dienste darauf installierst.
Diese Anleitung führt dich durch die grundlegenden Schritte zur Härtung deines Systems — von Systemaktualisierungen und Benutzerverwaltung bis hin zu SSH-Härtung, Firewall-Konfiguration und optionalen Schutzwerkzeugen.

Hinweis: Einige Befehle müssen als root oder mit sudo ausgeführt werden.
Passe Pfade oder Befehle je nach Debian-Version leicht an.


1. System vorbereiten
#

Beginne damit, das System zu aktualisieren, um sicherzustellen, dass alle Pakete auf dem neuesten Stand sind:

sudo apt-get update && sudo apt-get upgrade -y

Wenn du Vim als Editor bevorzugst:

sudo apt-get install vim -y

(Optional) Backup-Tools installieren: Restic & Rclone
#

Diese Tools ermöglichen automatisierte, verschlüsselte Backups auf lokalen oder Cloud-Speichern.

sudo apt-get install restic -y
sudo restic self-update
curl -fsSL https://rclone.org/install.sh | sudo bash

2. Richtige Zeitzone setzen
#

Die richtige Zeitzone ist wichtig für Logs, Cronjobs und Zertifikatsprüfungen.

sudo timedatectl set-timezone Europe/Berlin
sudo timedatectl

Ersetze Europe/Berlin durch deine Zeitzone. Alle verfügbaren Zeitzonen kannst du mit folgendem Befehl anzeigen:

timedatectl list-timezones

3. Sicheren Admin-Benutzer erstellen
#

Anstatt direkt mit dem Root-Account zu arbeiten, lege einen dedizierten Benutzer mit sudo-Rechten an:

sudo useradd -m -U -s /bin/bash -G sudo sysadmin
sudo passwd sysadmin

Jetzt kannst du dich als sysadmin statt als root anmelden.


4. SSH-Zugang absichern
#

SSH ist dein Hauptzugang zu entfernten Servern — daher besonders wichtig, ihn abzusichern.

Öffne die SSH-Konfigurationsdatei:

sudo vim /etc/ssh/sshd_config

Ersetze den Inhalt durch:

Include /etc/ssh/sshd_config.d/*.conf

Port 29

LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 3
MaxSessions 4

AllowUsers sysadmin

PubkeyAuthentication no
AuthorizedKeysFile .ssh/authorized_keys

PasswordAuthentication yes
PermitEmptyPasswords no

ChallengeResponseAuthentication no
UsePAM yes

AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
PrintMotd no
PrintLastLog no
ClientAliveInterval 300
ClientAliveCountMax 1

AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

Dann testen und SSH neu starten:

sudo sshd -t
sudo systemctl restart sshd
sudo systemctl status sshd

Tipp: Ein nicht-standardmäßiger Port wie 29 reduziert automatisierte Angriffe auf Port 22.


5. SSH-Schlüssel-Authentifizierung einrichten (empfohlen)
#

Passwort-Login funktioniert, aber schlüsselbasierte Authentifizierung ist deutlich sicherer.

Auf deinem lokalen Rechner
#

Erstelle einen Ed25519 SSH-Schlüssel:

ssh-keygen -t ed25519 -f ~/.ssh/server

Optional kannst du den Kommentar anpassen:

ssh-keygen -c -C "server.example.com" -f ~/.ssh/server

Bearbeite deine lokale SSH-Konfiguration:

vim ~/.ssh/config

Füge hinzu:

Host server
    HostName 0.0.0.0
    User sysadmin
    IdentityFile ~/.ssh/server
    Port 29

Ersetze 0.0.0.0 durch die IP-Adresse oder Domain deines Servers.

Kopiere den Schlüssel auf den Server:

ssh-copy-id -i ~/.ssh/server.pub server

Zurück auf dem Server
#

Öffne erneut die SSH-Konfiguration:

sudo vim /etc/ssh/sshd_config

Ersetze den Inhalt mit dieser (Unterschiede beachten):

Include /etc/ssh/sshd_config.d/*.conf

Port 29

LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 3
MaxSessions 4

AllowUsers sysadmin

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

PasswordAuthentication no
PermitEmptyPasswords no

ChallengeResponseAuthentication no
UsePAM yes

AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
PrintMotd no
PrintLastLog no
ClientAliveInterval 300
ClientAliveCountMax 1

AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

Dann:

sudo sshd -t
sudo systemctl restart sshd
sudo systemctl status sshd

Passwort-Login ist jetzt deaktiviert — nur SSH-Schlüssel werden akzeptiert.


6. (Optional) Schutz mit Fail2Ban
#

Fail2Ban blockiert IPs nach wiederholten fehlgeschlagenen Login-Versuchen.

Installieren und aktivieren:

sudo apt-get install fail2ban -y
sudo systemctl enable fail2ban

Backup und Konfiguration bearbeiten:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vim /etc/fail2ban/jail.local

Füge Folgendes hinzu bzw. passe es an:

bantime.increment = true
bantime.multipliers = 1 2 4 8 16 32 64
bantime  = 300m
findtime  = 10m
maxretry = 3

[sshd]
enabled = true
port    = 29
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Dann neu starten und prüfen:

sudo systemctl restart fail2ban
sudo systemctl status fail2ban
sudo fail2ban-client status sshd

7. (Optional) Firewall mit UFW einrichten
#

UFW (Uncomplicated Firewall) ist eine einfache und effektive Firewall für Debian.

Installieren und aktivieren:

sudo apt-get install ufw -y

SSH (bzw. deinen benutzerdefinierten Port) erlauben:

sudo ufw allow 29/tcp

Prüfen und aktivieren:

sudo ufw status verbose
sudo ufw enable
sudo ufw status verbose

Jetzt sind nur noch freigegebene Ports von außen erreichbar.


8. Automatische Sicherheitsupdates aktivieren
#

Regelmäßige Sicherheitsupdates sind entscheidend für langfristige Stabilität und Sicherheit.

sudo apt-get install unattended-upgrades apt-listchanges -y
sudo dpkg-reconfigure --priority=low unattended-upgrades

Damit werden tägliche automatische Sicherheitsupdates aktiviert.


9. (Optional) Systemintegrität prüfen
#

Installiere ein einfaches Tool zur Integritätsprüfung:

sudo apt-get install debsums -y
sudo debsums -s

Damit prüfst du, ob Systemdateien verändert oder beschädigt wurden.


Zusammenfassung
#

Dein Debian-System ist jetzt deutlich besser abgesichert:

  • Aktualisierte Systempakete
  • Nicht-root Benutzer mit sudo
  • Gehärtete SSH-Konfiguration
  • SSH-Schlüssel-Authentifizierung
  • Fail2Ban-Schutz
  • UFW-Firewall
  • Automatische Sicherheitsupdates

Diese grundlegenden Maßnahmen bilden eine solide Basis für jeden Debian-basierten Server. Für noch mehr Sicherheit kannst du Tools wie Lynis, rkhunter oder System-Auditing mit auditd hinzufügen.

Florian Hoss
Autor
Florian Hoss