Project: Secure Automated IT Laboratory (SAIL)

Eine vollautomatisierte und gehärtete Linux-Server-Umgebung mit Fokus auf Sicherheit, Überwachung und Disaster Recovery.

Ubuntu Server 24.04 SSH Hardening Fail2Ban & UFW Cockpit Bash Scripting

1. Infrastruktur & Konzept

Ziel dieses Projekts war der Aufbau einer Production-Grade-Umgebung in einem lokalen Netzwerk. Der Server fungiert als zentraler Knotenpunkt für Web-Deployment und Sicherheitsüberwachung.

  • OS: Ubuntu Server 24.04 LTS (Virtualisiert auf VMware).
  • Networking: Statische IP-Konfiguration und Port-Weiterleitung für dedizierte Dienste.
  • Ziel: Maximale Sicherheit nach dem "Zero Trust"-Prinzip.
Server Terminal View Server Terminal & Status

2. SSH Härtung & Zugriffskontrolle

Um Brute-Force-Angriffe zu verhindern, wurde der SSH-Zugriff massiv eingeschränkt. Standard-Ports wurden geändert und die Passwort-Authentifizierung vollständig deaktiviert.

/etc/ssh/sshd_config

Port 2006
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no

Zugriff nur via Ed25519 SSH-Key möglich.

SSH Configuration File

3. Intrusion Prevention (IPS)

Ein mehrschichtiges Verteidigungssystem schützt den Server vor unbefugten Zugriffen. Fail2Ban überwacht Log-Dateien in Echtzeit und sperrt Angreifer automatisch via UFW Firewall.

  • UFW: "Default Deny Incoming" Policy. Nur Ports 2006 (SSH), 80/443 (Web) und 9090 (Cockpit) sind offen.
  • Fail2Ban: Ban nach 3 fehlgeschlagenen Versuchen.
UFW and Fail2Ban Status

4. Visuelle Administration (Cockpit)

Für eine effiziente Ressourcenverwaltung wurde Cockpit implementiert. Dies ermöglicht die Echtzeit-Überwachung von CPU, RAM und Netzwerk-Traffic direkt im Browser.

Das Dashboard zeigt zudem Sicherheitswarnungen und fehlgeschlagene Login-Versuche sofort an.

Cockpit Dashboard Interface

5. Automatisierung & Alerting

Ein selbstentwickeltes Bash-Skript prüft täglich den Gesundheitszustand des Systems und sendet einen verschlüsselten Bericht via Gmail API (TLS).

security_check.sh (Auszug)

# System Health Check
if [ "$UFW_STATUS" == "active" ]; then
  echo "Security: SAFE"
else
  echo "Security: CRITICAL"
fi
# Send Email via ssmtp...
Automated Email Report