Administrationsaufgaben für Sicherheit unter Linux – Ein Leitfaden
Einleitung
Die Sicherheit von Linux-Systemen ist ein zentraler Aspekt der Systemadministration. Obwohl Linux oft als sichereres Betriebssystem gilt, erfordert auch ein Linux-Server oder -Desktop regelmäßige Wartung und Sicherheitsmaßnahmen, um Angriffe zu verhindern und sensible Daten zu schützen. In diesem Blogbeitrag zeige ich dir einige der wichtigsten Administrationsaufgaben, um die Sicherheit deines Linux-Systems zu gewährleisten. Dazu gehören Benutzerverwaltung, Dateisystemrechte, Firewalls, Updates und mehr.
1. Regelmäßige System-Updates und Patching
Ein wesentliches Element der Systemsicherheit ist das regelmäßige Einspielen von Sicherheitsupdates und Patches. Schwachstellen in Software und Betriebssystem können von Angreifern ausgenutzt werden, wenn sie nicht rechtzeitig behoben werden.
Update-Management auf Debian-basierten Systemen (z.B. Ubuntu):
sudo apt update
sudo apt upgrade
apt update
: Aktualisiert die Paketlisten, damit das System über die neuesten verfügbaren Updates informiert wird.apt upgrade
: Installiert alle verfügbaren Updates für installierte Pakete.
Update-Management auf Red Hat-basierten Systemen (z.B. CentOS, Fedora):
sudo dnf update
Zusätzlich zu regelmäßigen Updates solltest du langfristig überlegen, ob du automatisierte Updates einrichtest, um sicherzustellen, dass dein System auch ohne ständige manuelle Eingriffe aktuell bleibt.
2. Benutzer- und Gruppenverwaltung
Die richtige Verwaltung von Benutzern und Gruppen ist entscheidend, um unbefugten Zugriff auf das System zu verhindern. Du solltest sicherstellen, dass nur autorisierte Benutzer Zugang zu deinem System haben und jeder Benutzer über die minimal erforderlichen Rechte verfügt.
2.1 Erstellen und Verwalten von Benutzern
Einen neuen Benutzer hinzufügen:
sudo adduser username
Einem Benutzer Root-Rechte gewähren (Hinzufügen zur sudo
-Gruppe):
sudo usermod -aG sudo username
2.2 Nicht benötigte Benutzerkonten deaktivieren
Wenn du Benutzerkonten auf deinem System hast, die nicht mehr verwendet werden, solltest du diese deaktivieren oder entfernen.
Einen Benutzer deaktivieren:
sudo usermod -L username
Benutzer komplett löschen:
sudo deluser username
3. SSH-Sicherheit
SSH (Secure Shell) ist ein zentraler Dienst für die Fernverwaltung von Linux-Systemen. Unsichere SSH-Konfigurationen können jedoch Angreifern die Tür zu deinem System öffnen. Hier sind einige Best Practices, um SSH sicherer zu gestalten:
3.1 Passwortlose Authentifizierung einrichten
Anstelle von Passwort-Authentifizierung solltest du auf die Nutzung von SSH-Schlüsseln setzen. Dies macht es Angreifern deutlich schwerer, durch Brute-Force-Angriffe Zugriff zu erlangen.
Öffentlichen SSH-Schlüssel auf den Server kopieren:
ssh-copy-id username@server-ip
3.2 SSH auf nicht-standardmäßigen Port ändern
Um automatisierte Angriffe zu reduzieren, kannst du den Standard-SSH-Port (22) ändern. Bearbeite die SSH-Konfigurationsdatei /etc/ssh/sshd_config
und ändere den Port
-Eintrag:
sudo nano /etc/ssh/sshd_config
Beispiel:
Port 2222
Nach der Änderung den SSH-Dienst neu starten:
sudo systemctl restart sshd
3.3 SSH-Zugang auf bestimmte IP-Adressen beschränken
Wenn nur bestimmte IP-Adressen auf dein System zugreifen sollen, kannst du die SSH-Zugriffe mit einer Firewall oder in der Datei /etc/hosts.allow
und /etc/hosts.deny
einschränken.
Beispiel für /etc/hosts.allow
:
sshd: 192.168.1.0/24
4. Dateisystem- und Berechtigungen
Sichere Dateiberechtigungen sind ein grundlegender Aspekt der Linux-Sicherheit. Du solltest sicherstellen, dass Dateien und Verzeichnisse den richtigen Besitzern und Gruppen zugeordnet sind und nur die minimal erforderlichen Berechtigungen haben.
4.1 Überprüfen und Festlegen von Dateiberechtigungen
Verwende den Befehl ls -l
, um die Berechtigungen von Dateien und Verzeichnissen anzuzeigen:
ls -l /path/to/file
Um Berechtigungen zu ändern, kannst du den Befehl chmod
verwenden:
sudo chmod 700 /path/to/file
- 700 bedeutet, dass nur der Besitzer die Datei lesen, schreiben und ausführen kann.
Den Besitz einer Datei kannst du mit chown
ändern:
sudo chown username:groupname /path/to/file
4.2 SUID und SGID-Bits kontrollieren
Programme mit gesetztem SUID-Bit (setuid
) oder SGID-Bit (setgid
) führen bestimmte Aktionen mit den Rechten des Dateieigentümers bzw. der Gruppe aus. Angreifer könnten dies ausnutzen, um höhere Berechtigungen zu erlangen. Daher solltest du regelmäßig nach Dateien mit SUID- und SGID-Bits suchen und diese auf Notwendigkeit prüfen:
Suche nach SUID-Dateien:
find / -perm /4000
Suche nach SGID-Dateien:
find / -perm /2000
5. Firewall einrichten
Eine Firewall ist ein zentraler Bestandteil der Netzwerksicherheit. Mit einer Firewall kannst du eingehenden und ausgehenden Datenverkehr kontrollieren und potenziell gefährliche Verbindungen blockieren.
5.1 UFW – Die einfache Firewall
UFW (Uncomplicated Firewall) ist ein benutzerfreundliches Frontend für iptables, das sich besonders für einfache Firewall-Regeln eignet.
UFW installieren (falls nicht bereits vorhanden):
sudo apt install ufw
UFW aktivieren:
sudo ufw enable
SSH-Verbindungen zulassen:
sudo ufw allow ssh
Eine Firewallregel hinzufügen (z.B. HTTP-Verkehr auf Port 80 erlauben):
sudo ufw allow 80/tcp
Den Status der Firewall anzeigen:
sudo ufw status
5.2 Erweiterte Firewall-Konfiguration mit iptables
Für komplexere Konfigurationen kannst du iptables verwenden, um detaillierte Regeln für den Netzwerkverkehr zu erstellen.
Einfaches Beispiel: SSH-Zugriff nur von einer bestimmten IP-Adresse zulassen:
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
6. Überwachung von Logdateien
Die Überwachung von Logdateien ist entscheidend, um sicherzustellen, dass du Sicherheitsvorfälle frühzeitig erkennst. Linux speichert wichtige Systemereignisse in /var/log/
. Eine regelmäßige Durchsicht dieser Logs kann dabei helfen, unbefugte Aktivitäten oder Systemfehler zu entdecken.
6.1 Wichtige Logdateien
- /var/log/auth.log (Debian/Ubuntu): Enthält Anmeldeinformationen, z.B. erfolgreiche und fehlgeschlagene SSH-Anmeldungen.
- /var/log/secure (RHEL/CentOS): Protokolliert sicherheitsrelevante Ereignisse, einschließlich Anmeldungen.
- /var/log/syslog: Protokolliert allgemeine Systemereignisse und Fehlermeldungen.
6.2 Logüberwachung mit journalctl
Systemd-basierte Systeme verwenden das Journal, um Logs zu speichern. Du kannst mit journalctl
die System-Logs durchsuchen.
Aktuelle Logs anzeigen:
journalctl -xe
7. Intrusion Detection Systeme (IDS)
Ein Intrusion Detection System (IDS) kann helfen, unberechtigte Zugriffe oder verdächtige Aktivitäten auf dem System zu erkennen. Zwei bekannte IDS-Lösungen für Linux sind Fail2ban und AIDE.
7.1 Fail2ban
Fail2ban überwacht Logdateien und blockiert verdächtige IP-Adressen, die z.B. wiederholt fehlgeschlagene Login-Versuche verzeichnen.
Fail2ban installieren:
sudo apt install fail2ban
Konfigurationsdatei anpassen:
sudo nano /etc/fail2ban/jail.local
Fail2ban für SSH absichern:
[sshd]
enabled = true
maxretry = 3
7.2 AIDE
AIDE (Advanced Intrusion Detection Environment) erstellt eine Datenbank über den Zustand deines Dateisystems und kann später Änderungen erkennen.
AIDE installieren:
sudo apt install aide
Initialisiere die AIDE-Datenbank:
sudo aideinit
Um spätere Änderungen zu erkennen:
sudo aide --check
Fazit
Die Sicherheit eines Linux-Systems erfordert eine regelmäßige und proaktive Wartung durch den Administrator.