Sichern von Ubuntu-Servern: Ein praktischer Ansatz zum Schutz von Containern und Bereitstellungen
13:43, 17.08.2026
Es gibt einige hilfreiche Ansätze, mit denen Sie Ihren Ubuntu-Server absichern können. Aus diesem Grund haben wir uns entschlossen, einige praktische Empfehlungen zu diesem Thema zu geben.
Schon durch einen Blick in Ihr „logwatch“-Protokoll können Sie feststellen, wie viele Zugriffsversuche auf Ihr System stattgefunden haben und um welche es sich dabei handelt. In der allgemeinen Übersicht, die wir Ihnen in diesem Artikel vorstellen, gehen wir näher auf die Absicherung von Servern ein, die als Docker-Hosts genutzt werden sollen.
Erste Einrichtungsschritte
Der allererste und zugleich entscheidende Schritt ist die Wahl des Passworts für den Root-Benutzer. Hier sollten Sie ein komplexeres Passwort wählen; ein Passwortgenerator kann in solchen Situationen eine gute Wahl sein. Mithilfe des Passwortgenerators können Sie das benötigte Passwort in nur wenigen Sekunden automatisch erstellen und zusätzlich mit dem Master-Passwort verschlüsseln. Unabhängig davon, welches Tool Sie zur Passwortgenerierung verwenden, sollten Sie auch über eine weitere Form der Verschlüsselung nachdenken. Das Root-Passwort könnte erforderlich sein, falls Probleme mit dem sudo-Passwort auftreten.
Ein weiterer wichtiger Schritt ist das Upgrade und die Aktualisierung, um die neuesten Patches auf dem System zu installieren. So geht’s:
apt-get update
apt-get upgrade
Einen neuen Benutzer anlegen
Ein weiterer wichtiger Punkt, den Sie aus Sicherheitsgründen beachten sollten, ist, sich niemals als Root auf dem Server anzumelden. In einem kleinen Team von Benutzern kann beispielsweise ein einziger Login verwendet werden, um den Prozess zu vereinfachen und dennoch die Sicherheit zu gewährleisten. Bei einer größeren Anzahl von Benutzern im Team ist es am sinnvollsten, bestimmte Berechtigungen ausschließlich über den `sudo`-Zugriff zu vergeben.
# Den Benutzer „deploy“ anlegen
useradd deploy
# Das Home-Verzeichnis für den Benutzer „deploy“ anlegen
mkdir -p /home/deploy
# Erstellen des Verzeichnisses „.ssh“ im Home-Verzeichnis des Benutzers „deploy“
mkdir -p /home/deploy/.ssh
# Legen Sie die entsprechenden Berechtigungen für das Verzeichnis „.ssh“ fest
chmod 700 /home/deploy/.ssh
# Optional können Sie die Eigentumsrechte des Home-Verzeichnisses und des Verzeichnisses „.ssh“ auf den Benutzer „deploy“ ändern
chown -R deploy:deploy /home/deploy
Der nächste Schritt ist die Einrichtung der erforderlichen Shell mit:
usermod -s /bin/bash deploy
SSH-Schlüsselauthentifizierung aktivieren
Eine weitere gute Empfehlung ist, Passwörter für den Zugriff auf die Server zu vermeiden. Hier sind einige Punkte zu diesem Thema:
- SSH-Schlüssel sind nahezu unmöglich zu erraten, weshalb ein Zugriff auf das System mittels Brute-Force-Angriffen – anders als bei herkömmlichen Passwörtern – nicht möglich ist.
- Schlüssel sind zudem besser als herkömmliche Passwörter, da sie mehr Informationen erfordern.
- Sollte ein Gerät verloren gehen oder sogar gestohlen werden, können Sie Ihren Schlüssel schützen, indem Sie den öffentlichen Schlüssel aus der Datei `authorized_keys` entfernen. Eine zusätzliche Schutzebene erhalten Sie durch die Verwendung einer langen Passphrase.
- Eine sichere Passphrase ist von entscheidender Bedeutung.
Kopieren wir nun id_rsa.pub1:
vim /home/deploy/.ssh/authorized_keys
So sollten die richtigen Berechtigungen eingerichtet werden:
chmod 400 /home/deploy/.ssh/authorized_keys
chown deploy:deploy /home/deploy -R
Deploy-Benutzer überprüfen und Sudo konfigurieren
Während dieses Vorgangs bleiben wir als root in der SSH-Verbindung und versuchen, den Deploy-Benutzer zu überprüfen. Anschließend legen wir ein Passwort für „deploy“ fest. Um ein sichereres Passwort zu erstellen, verwenden wir einen speziellen Manager, der zudem eine gewisse Verschlüsselung hinzufügt.
passwd deploy
Öffnen Sie anschließend sudo mit:
visudo
Nun fügen wir den „sudo“-Benutzer unterhalb des Root-Benutzers hinzu:
root ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Fügen Sie den Benutzer „deploy“ mit folgendem Befehl hinzu:
usermod -aG sudo deploy
Nach diesen Schritten erhält der Benutzer „deploy“ sudo-Berechtigungen. Nun können Sie sich entweder erneut bei der Shell anmelden oder den folgenden Befehl verwenden, um auf diese Berechtigungen zuzugreifen:
exec su -l deploy
Anmeldungen auf SSH-Schlüssel beschränken
Die Konfiguration finden Sie hier:
vim /etc/ssh/sshd_config
In der Datei müssen Sie die IP-Adresse hinzufügen; der folgende Befehl ist recht einfach. Sie sollten mit Ihrem VPN verbunden und wie folgt authentifiziert sein:
PermitRootLogin no
PasswordAuthentication no
AllowUsers deploy@(Ihre-VPN-oder-statische-IP)
Anschließend müssen Sie den SSH-Dienst neu starten:
service ssh restart
Konfiguration einer Firewall
Die Konfiguration der Firewall kann mit Iptables erfolgen, oder Sie können eine vereinfachte Alternative zu Iptables namens ufw verwenden. Auf dem Ubuntu-System ist ufw standardmäßig installiert, während es auf dem Debian-System zusätzlich mit folgendem Befehl installiert werden muss:
apt-get install ufw
Öffnen Sie zunächst die Konfigurationsdatei:
vim /etc/default/ufw
Ändern Sie den folgenden Wert auf „yes“:
IPV6=yes
Nun können Sie alles über die Befehlszeile mit ufw wie folgt einrichten:
sudo ufw allow from {IP-Adresse angeben} to any port 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw disable
sudo ufw enable
Bevor Sie diese Regeln einrichten, sollten Sie unbedingt über eine statische IP-Adresse verfügen. Dieser Faktor ist entscheidend, da Sie bei einer dynamischen IP-Adresse möglicherweise ausgesperrt werden.
Sicherheitsupdates automatisieren
Automatisierung ist sehr wichtig, da Sie sonst möglicherweise einige Sicherheitsupdates in Ihrem System verpassen. Hier sind einige Schritte, die Sie zur Verbesserung der Sicherheit befolgen sollten:
apt-get install unattended-upgrades
vim /etc/apt/apt.conf.d/10periodic
Nehmen Sie folgende Änderungen an der Datei vor:
APT::Periodic::Update-Package-Lists "2";
APT::Periodic::Download-Upgradeable-Packages "2";
APT::Periodic::AutocleanInterval "14";
APT::Periodic::Unattended-Upgrade "1";
Eine weitere grundlegende Empfehlung ist, nur Sicherheitsupdates zu aktivieren, da normale Updates dazu führen können, dass die Anwendung während der Aktualisierung ausfällt, was in den meisten Fällen nicht ideal ist.
vim /etc/apt/apt.conf.d/50unattended-upgrades
Nehmen Sie folgende Änderungen an der Datei vor:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}:${distro_codename}-updates";
"${distro_id}:${distro_codename}-backports";
};
Implementierung von Fail2Ban
Die Implementierung von Fail2Ban ist eine hervorragende Wahl, um zahlreiche verdächtige Aktivitäten zu blockieren. Dieses Paket fügt Regeln zu iptables hinzu und sperrt verdächtige IP-Adressen, die ungewöhnliche Aktivitäten aufweisen.
Das Paket nutzt einige hilfreiche Filterprotokolle und bietet eine hervorragende Integration mit anderen Diensten, um einen besseren Schutz vor Brute-Force- oder DDoS-Angriffen zu gewährleisten. Sie sollten Fail2Ban regelmäßig überprüfen, da es möglicherweise auch einige echte Nutzer blockiert. Um den Vorgang zu vereinfachen, können Sie das Tool in SendMail integrieren und werden sofort benachrichtigt, sobald eine bestimmte IP-Adresse gesperrt wird.
Verwenden Sie für die Installation:
apt-get install fail2ban
Zwei-Faktor-Authentifizierung aktivieren
Wenn Sie einen vollständig gesicherten Server mit geringeren Risiken und einer geringeren Anfälligkeit für Cyberangriffe wünschen, ist die Zwei-Faktor-Authentifizierung ein Muss. Der Zugriff auf Ihren Server wird dadurch erheblich erschwert, da Hacker Folgendes tun müssten:
- Auf das VPN zugreifen, indem sie den Schlüssel/das Zertifikat beschaffen
- Auf Ihren Rechner zugreifen, um den privaten Schlüssel zu erhalten
- Irgendwie die Passphrase beschaffen
- Und schließlich ist für die Zwei-Faktor-Authentifizierung der Zugriff auf Ihr Smartphone erforderlich
Selbst wenn dies möglich wäre, müssten sie Root-Zugriff über `sudo` erlangen, da diese Hacker irgendwie das verschlüsselte Passwort des Deploys beschaffen müssten – und das ist eine enorme Herausforderung.
Verwenden Sie für die Installation:
apt-get install libpam-google-authenticator
Zur Einrichtung benötigen Sie die folgenden Befehle:
su deploy
google-authenticator
Einrichtung von Logwatch
Logwatch ist ein weiteres hilfreiches Tool, das für die Überprüfung der Logdateien erforderlich ist. Täglich erhalten Sie Daten zu allen Zugriffsversuchen, die in diesem Zeitraum stattgefunden haben, sodass Sie einen klaren Überblick darüber haben, was auf Ihrem Server vor sich geht. Dies kann als Überwachungswerkzeug genutzt werden, und die Installation ist ganz einfach:
apt-get install logwatch
Fügen Sie anschließend den folgenden Eintrag hinzu:
vim /etc/cron.daily/00logwatch
Fügen Sie der geöffneten Datei die folgende Zeile hinzu:
/usr/sbin/logwatch --output mail --mailto admin@example.com --detail high
Abschluss der Einrichtung
Hier finden Sie alles, was Sie über die Sicherheit Ihres Ubuntu-Servers wissen müssen. Allein durch die Befolgung unserer praktischen Empfehlungen können Sie virtuelle Angriffe auf Ihr System erheblich minimieren. Wenn Sie noch einen Schritt weiter gehen möchten, sollten Sie auch andere mögliche Schwachstellen überprüfen, die mit dem Dienst und Ihren Anwendungen zusammenhängen. Dies ist jedoch ein ganz anderes Thema!