Website-Suche

Wie man einen Ubuntu-Server für die Produktion absichert


Beim Einrichten eines Ubuntu-Servers für die Produktion ist die Sicherung des Systems entscheidend, um seine Stabilität, Sicherheit und Zugänglichkeit zu gewährleisten. Obwohl Ubuntu mit vielen integrierten Sicherheitsfunktionen ausgestattet ist, ist es wichtig, zusätzliche Maßnahmen zu ergreifen, um Ihr System vor unbefugtem Zugriff und Angriffen zu schützen.

In diesem Leitfaden behandeln wir drei wesentliche Werkzeuge zur Verbesserung der Sicherheit Ihres Ubuntu-Servers: UFW (Uncomplicated Firewall), Fail2ban und AppArmor. Diese Werkzeuge helfen dabei, Ihren Server zu sichern, indem sie den Netzwerkzugang kontrollieren, Brute-Force-Anmeldeversuche verhindern und Anwendungen schützen.

1. Sicherung des Netzwerkzugangs mit UFW (Unkomplizierte Firewall)

Ubuntu wird mit einem benutzerfreundlichen Firewall-Konfigurationstool namens UFW (Uncomplicated Firewall) geliefert, das eine einfache Schnittstelle zur Verwaltung von Firewall-Regeln basierend auf iptables bietet.

UFW installieren und aktivieren

In den meisten Ubuntu-Installationen ist UFW vorinstalliert, aber falls es nicht installiert und aktiviert ist, können Sie es mit den folgenden Befehlen installieren und aktivieren.

sudo apt update && sudo apt install ufw -y
sudo ufw enable

Ungewollte Dienste verweigern

Um standardmäßig den gesamten eingehenden Datenverkehr zu blockieren und nur bestimmte Ports zuzulassen, konfigurieren Sie UFW so, dass der gesamte eingehende Datenverkehr abgelehnt wird, außer für die Dienste, die Sie ausdrücklich zulassen:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Erlaube wichtige Dienste

Um wesentliche Dienste wie SSH (für die Fernverwaltung), HTTP und HTTPS (für den Zugriff auf den Webserver) zuzulassen, können Sie die folgenden Befehle verwenden:

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

Ratenbegrenzung (Schutz vor Brute-Force-Angriffen)

Um Ihren Server weiter vor Brute-Force-Angriffen zu schützen, können Sie die Ratenbegrenzungsfunktion von UFW verwenden, die die Anzahl der SSH-Verbindungsversuche begrenzt, die ein Client in einem bestimmten Zeitraum durchführen kann.

sudo ufw limit ssh

Dieser Befehl erlaubt SSH-Verbindungen, begrenzt jedoch die Anzahl der Versuche auf 6 pro Minute und blockiert alle IP-Adressen, die dieses Limit überschreiten.

2. Blockieren von Brute-Force-Angriffen mit Fail2ban

Fail2ban ist ein unverzichtbares Werkzeug, um Ihren Server vor Brute-Force-Angriffen zu schützen, indem es Protokolldateien auf wiederholte fehlgeschlagene Anmeldeversuche überwacht und die angreifenden IP-Adressen sperrt.

Fail2ban kann aus den standardmäßigen Ubuntu-Repositories installiert werden:

sudo apt install fail2ban

Die Standardkonfigurationsdatei für Fail2ban befindet sich in /etc/fail2ban/jail.conf. Es wird jedoch empfohlen, diese Datei nicht direkt zu ändern. Erstellen Sie stattdessen eine Kopie der Konfiguration, um Ihre Einstellungen anzupassen:

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

Öffnen Sie nun die Datei jail.local zur Bearbeitung:

sudo nano /etc/fail2ban/jail.local

Stellen Sie sicher, dass der [sshd]-Abschnitt aktiviert ist (entkommentieren Sie die Zeilen), um Ihren SSH-Dienst zu schützen, und ändern Sie die folgenden Optionen:

  • enabled: Setzen Sie dies auf true, um den SSH-Schutz zu aktivieren.
  • port: Geben Sie den Port an, auf dem SSH läuft (Standard ist 22).
  • maxretry: Definieren Sie die maximale Anzahl fehlgeschlagener Anmeldeversuche, bevor eine IP-Adresse gesperrt wird.
  • bantime: Definiert die Dauer des Banns (in Sekunden).
  • findtime: Legen Sie den Zeitraum fest, in dem die fehlgeschlagenen Versuche gezählt werden.

Zum Beispiel:

[sshd]
enabled = true
port = ssh
maxretry = 5
bantime = 3600  # Ban IP for 1 hour
findtime = 600  # Count attempts within 10 minutes

Sobald Sie Ihre Änderungen gespeichert haben, starten Sie Fail2ban neu, um die neuen Konfigurationen anzuwenden.

sudo systemctl restart fail2ban

Um den Status von Fail2ban zu überprüfen und die aktiven Jails zu sehen:

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

Fail2ban schützt Ihren Server jetzt aktiv vor Brute-Force-SSH-Anmeldeversuchen.

3. Verwendung von AppArmor für die Anwendungssicherheit

AppArmor ist ein Mandatory Access Control (MAC)-System, das eine zusätzliche Sicherheitsschicht bietet, indem es Richtlinien für einzelne Anwendungen durchsetzt.

In den meisten Ubuntu-Installationen ist AppArmor vorinstalliert und aktiviert. Wenn es nicht aktiviert ist, können Sie es starten und so einstellen, dass es beim Booten ausgeführt wird:

sudo systemctl enable apparmor
sudo systemctl start apparmor

Erstellen Sie benutzerdefinierte AppArmor-Profile

AppArmor-Profile definieren, auf welche Systemressourcen eine Anwendung zugreifen kann; standardmäßig werden AppArmor-Profile auf viele Anwendungen in Ubuntu angewendet, und Sie können die Profile im Verzeichnis /etc/apparmor.d/ finden.

Sie können anzeigen, welche Profile derzeit geladen sind, indem Sie Folgendes ausführen:

sudo apparmor_status

Wenn Sie eine benutzerdefinierte Anwendung haben, die ein bestimmtes Profil benötigt, können Sie ein neues erstellen oder ein vorhandenes ändern.

sudo aa-genprof /path/to/application

Sobald das Profil erstellt wurde, können Sie das Profil durchsetzen:

sudo aa-enforce /path/to/profile

Durchsetzungs- oder Beschwerdemodus

AppArmor arbeitet in zwei Modi: durchsetzen und melden.

  • Im Durchsetzungsmodus wird das Profil streng durchgesetzt, und jede Verletzung führt dazu, dass die Anwendung blockiert wird.
  • Im Beschwerde-Modus werden Verstöße protokolliert, aber nicht durchgesetzt, was ihn zu einem nützlichen Modus für das Testen von Profilen macht.

Um den Modus eines Profils zu ändern:

sudo aa-enforce /path/to/profile  # Enforce mode
sudo aa-complain /path/to/profile  # Complain mode

Auditieren mit AppArmor

AppArmor erstellt Protokolle, die Einblicke in seine Durchsetzungsmaßnahmen geben; diese Protokolle sind in `/var/log/syslog` zu finden, und Tools wie `journalctl` können verwendet werden, um sie anzusehen.

sudo journalctl -xe | grep apparmor

4. Zusätzliche Sicherheits-Best Practices

Über die Verwendung von UFW, Fail2ban und AppArmor hinaus gibt es weitere wichtige Schritte, die Sie unternehmen können, um Ihren Server weiter abzusichern:

Aktualisieren Sie regelmäßig Ihr Ubuntu

Stellen Sie sicher, dass Ihr System und alle installierten Pakete auf dem neuesten Stand sind, um sich vor Sicherheitslücken zu schützen:

sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y

Aktivieren Sie automatische Sicherheitsupdates, um Ihren Server geschützt zu halten:

sudo apt install unattended-upgrades

Nicht verwendete Dienste deaktivieren

Jeder Dienst oder jede Anwendung, die Sie nicht benötigen, sollte deaktiviert werden, um die Angriffsfläche zu reduzieren. Es ist jedoch wichtig, vor dem Deaktivieren von Diensten zu identifizieren, welche auf Ihrem Server mit dem Befehl systemctl ausgeführt werden:

sudo systemctl list-units --type=service

Sobald Sie die unnötigen Dienste identifiziert haben, können Sie sie deaktivieren, um zu verhindern, dass der Dienst beim Booten automatisch gestartet wird, und dadurch die Angriffsfläche zu reduzieren.

sudo systemctl disable service-name

SSH-Schlüssel-Authentifizierung verwenden

Für eine verbesserte SSH-Sicherheit verwenden Sie SSH-Schlüsselpaar zur Authentifizierung und deaktivieren Sie die passwortbasierte Anmeldung.

ssh-keygen -t rsa -b 4096
ssh-copy-id user@your-server-ip

Als Nächstes bearbeiten Sie die SSH-Konfigurationsdatei, um passwortbasierte Anmeldungen zu deaktivieren:

sudo nano /etc/ssh/sshd_config

Setzen Sie PasswordAuthentication no und starten Sie dann SSH neu:

sudo systemctl restart ssh

Jetzt wird nur noch die SSH-Schlüsselauthentifizierung erlaubt, wodurch die Sicherheit Ihres Servers erhöht wird.

Fazit

Die Absicherung Ihres Ubuntu-Produktionsservers ist ein wichtiger Schritt, um Ihre Umgebung vor verschiedenen Angriffen zu schützen. Durch die Konfiguration von UFW für die Firewall-Verwaltung, die Verwendung von Fail2ban zur Eindämmung von Brute-Force-Angriffen und die Nutzung von AppArmor zur Kontrolle des Anwendungsverhaltens können Sie das Risiko unbefugten Zugriffs und von Angriffen erheblich reduzieren.

Überwachen Sie stets Ihre Protokolle, wenden Sie Sicherheitsupdates umgehend an und überprüfen Sie regelmäßig Ihre Sicherheitskonfigurationen, um potenziellen Bedrohungen zuvorzukommen. Die Härtung Ihres Systems heute wird seine Stabilität, Sicherheit und Zuverlässigkeit langfristig gewährleisten.