Der Wunsch viele Webseitenbetreiber ist ein eigener Root-Server. Hierbei kann es sich um virtuelle Server oder um physische Server in einem Rechenzentrum handeln. Ohne weitere Schutzmechanismen können Unberechtigte problemlos auf einen solchen Server zugreifen und diesen manipulieren. Natürlich können alle Ports eines solchen Linux Servers mithilfe einer Firewall gesperrt werden. Jedoch ist danach auch der Server kaum mehr in der Lage, mit der Außenwelt zu kommunizieren. Er kann dann seine Internetdienste folglich nicht mehr zur Verfügung stellen. Die nachfolgenden Tipps sollen dabei helfen, einen Linux Server richtig abzusichern.
Die richtige Erstinstallation
Wer einen Linux Server angemietet hat, der sollte nicht unbedingt alle angebotenen Pakete installieren. Es sollten nur die Features Verwendung finden, die auch für den eigenen Einsatzzweck vonnöten sind. In vielen Fällen wird ein vorinstallierter
Der Wunsch viele Webseitenbetreiber ist ein eigener Root-Server. Hierbei kann es sich um virtuelle Server oder um physische Server in einem Rechenzentrum handeln. Ohne weitere Schutzmechanismen können Unberechtigte problemlos auf einen solchen Server zugreifen und diesen manipulieren. Natürlich können alle Ports eines solchen Linux Servers mithilfe einer Firewall gesperrt werden. Jedoch ist danach auch der Server kaum mehr in der Lage, mit der Außenwelt zu kommunizieren. Er kann dann seine Internetdienste folglich nicht mehr zur Verfügung stellen. Die nachfolgenden Tipps sollen dabei helfen, einen Linux Server richtig abzusichern.
Die richtige Erstinstallation
Wer einen Linux Server angemietet hat, der sollte nicht unbedingt alle angebotenen Pakete installieren. Es sollten nur die Features Verwendung finden, die auch für den eigenen Einsatzzweck vonnöten sind. In vielen Fällen wird ein vorinstallierter Server angeboten. Der Hoster sendet in diesem Fall per Email meist die Zugangsdaten zu. Wichtig ist, dass das übermittelte Root-Passwort sofort geändert wird. Am sichersten sind Passwörter mit einer willkürlichen Kombination aus großen und kleine Buchstaben, Ziffern und Sonderzeichen.
Den SSH-Port verändern
Mittel SSH-Protokoll lässt sich eine verschlüsselte Netzwerkverbindung herstellen. Standardmäßig wird hier der Port 22 verwendet, der jedoch auch das Angriffsziel von Kriminellen ist. Mithilfe automatisierter Log-in-Versuche wird meist der Port 22 abgefragt. Sicherer ist es, wenn anstelle des Port 22 ein anderer Port genutzt wird. Diesbezüglich muss in der Datei sshd_config der Port 22 gegen einen anderen ersetzt werden. Um unter Linux diese Datei zu öffnen, muss lediglich der Befehl nano /etc/ssh/sshd_config verwendet werden. Anschließend muss der SSH-Dienst erneut gestartet werden. Dies gelingt mit den Befehlen service ssh restart oder /etc/init.d/ssh restart.
Root-Login per SSH unterbinden
Der Root-Login per SSH kann aber auch vollständig unterbunden werden. In diesem Fall wird in der Datei sshd_config der Befehl PermitRootLogin no eingetragen. Darüber hinaus wird ein neuer Nutzer angelegt, der ausschließlich für die Systemarbeiten verantwortlich ist. Hierbei kann es sich um einen Nutzer mit Namen admin handeln. Diesem sollten dann natürlich umfassende Rechte gewährt werden. Um die Sicherheit noch weiter zu erhöhen, ist es ratsam, vollständig auf Passwort-Logins zu verzichten. Stattdessen sollte eine Public-Key-Authentifizierung vorgenommen werden.
Nicht genutzte Ports sperren
Viele Ports sind nicht sonderlich geschützt. Sie stellen im Grunde kein Sicherheitsrisiko dar. Hierzu gehören beispielsweise die bekannten Ports 80 und 443, welche für http- oder HTTPS-Verbindungen zuständig sind. Problematisch kann dies nur werden, wenn antwortende Programme verwendet werden, welche selbst Sicherheitslücken aufweisen. In diesem Fall können sich Kriminelle Zugang zum Serversystem verschaffen.
In den meisten Server-Betriebssystemen steht die Paketfilter-Software iptables zur Verfügung. Damit lassen sich bestimmte Regeln für den Datenverkehr und die Nutzung von Programmen aufstellen. Insoweit ist es auch möglich, nicht genutzte Ports dauerhaft zu blockieren.
Der TCP-Wrapper
Eine weitere Möglichkeit einen Linux Server abzusichern stellt die Einrichtung eines TCP-Wrappers dar. Dieser wacht als sogenannte Zwischenschicht vor dem inetd. In diesem Fall startet der inetd-Daemon nach einer Verbindungsanfrage seinen Dienst.
Entsprechend der Einstellungen in den Dateien
- /etc/hosts.allow und
- /etc/hosts.deny
wird geprüft, ob eine bestimmte IP-Adresse den eigentlichen SSH-Dienst nutzen darf. Mit host.allow kann der Bereich der IP-Adressen genau oder per Wildcards weiträumiger eingegrenzt werden, welche einen Zugriff erhalten dürfen. Mit hosts.deny kann zum Beispiel mit der Option All ein vollständiger Zugriff unterbunden werden.
Das Python-Programm fail2ban
Mit dem Programm fail2ban lassen sich unterschiedliche Serverdienste, wie zum Beispiel Apache2 oder SSH, vor unbefugtem Zugriff schützen. Hierbei werden die Logfile-Einträge ausgewertet und nach Authentifizierungsfehlern untersucht. Sollte zum Beispiel ein Login über eine entsprechende IP mehrfach fehlschlagen, so wird diese Adresse gesperrt. Die Anzahl der Fehlversuche kann in fail2ban festgelegt werden.
Wichtige Updates nutzen
Updates halten ein Serversystem auf den neuesten Stand und sorgen für entsprechende Sicherheit. Ein ungepatchtes System bietet dagegen Angriffspunkte. Häufig werden wichtige Updates im Alltag übersehen oder vergessen. Aus diesem Grund ist es wichtig, dass diese Updates automatisch installiert werden können. Dies gelingt unter Linux mit dem Befehl
sudo apt-get install unattended-upgrades
Ebenso ist es aber auch möglich, sich per Email an ein wichtiges Update erinnern zu lassen. Diesbezüglich wird die Installation des Shellskriptes apticron empfohlen. Sobald ein neues Update erhältlich ist, erfolgt eine Email-Benachrichtigung, sodass dieses dann manuell installiert werden kann.
Die Zwei-Faktor-Authentifizierung
Die Passwort-Cracking-Tools werden leider immer besser und sind in Verbindung mit schneller Hardware immer leistungsfähiger. Brute-Force-Angriffe stellen daher keine Besonderheit mehr dar. Hilfreich kann in diesem Fall eine Zwei-Faktor-Authentifizierung sein. Zunächst wird das normale Passwort abgefragt. Im zweiten Schritt kann über Tokens, wie zum Beispiel Yubikey oder Google Authenticator ein weiteres Einmal-Passwort abgefragt werden. Dies macht den Zugang zu einem Linux Server für Unberechtigte noch schwerer.
Die Verwendung von Monitoring-Tools
Mit den vorgenannten Maßnahmen lässt sich ein Linux-Server gut absichern. Jedoch sollte immer auch auf ein korrektes Zusammenspiel zwischen Soft- und Hardware geachtet werden. Viele Routinen auf einem Server laufen automatisch ab und lassen sich nur schwer kontrollieren. Aus diesem Grund gibt es sogenannte Monitoring-Tools, die sämtliche Vorgänge kontrollieren, analysieren und protokollieren. Bei auffälligem Serververhalten wird sofort ein Alarm ausgegeben. Zu den bekannten Lösungen gehört das Programm Monit, welches insbesondere für Linux-Server konzipiert ist. Es handelt sich verständlicherweise um eine Open-Source-Anwendung, welche Dateien, Clouds, Prozesse, Hosts, Programme und Scripts, aber auch die CPU, den Arbeitsspeicher und angeschlossene Systemkomponenten überwacht. Ebenfalls ein Monitoring-Tool stellt das Programm Nagios dar. Dieses Hilfstool ist etwas komplexer gehalten.
Fazit:
Eine vollumfängliche Absicherung eines Linux-Servers ist zu 100 % nicht möglich. Dennoch gibt es diverse Einstellungen und Tools, mit denen sich die Sicherheit erhöhen und mögliche Angriffe von außen abwehren lassen. All diejenigen, die sich erstmals einen virtuellen oder physischen Server anmieten, sollten auf alle Fälle von Anfang an diese Punkte berücksichtigen.
angeboten. Der Hoster sendet in diesem Fall per Email meist die Zugangsdaten zu. Wichtig ist, dass das übermittelte Root-Passwort sofort geändert wird. Am sichersten sind Passwörter mit einer willkürlichen Kombination aus großen und kleine Buchstaben, Ziffern und Sonderzeichen.
Den SSH-Port verändern
Mittel SSH-Protokoll lässt sich eine verschlüsselte Netzwerkverbindung herstellen. Standardmäßig wird hier der Port 22 verwendet, der jedoch auch das Angriffsziel von Kriminellen ist. Mithilfe automatisierter Log-in-Versuche wird meist der Port 22 abgefragt. Sicherer ist es, wenn anstelle des Port 22 ein anderer Port genutzt wird. Diesbezüglich muss in der Datei sshd_config der Port 22 gegen einen anderen ersetzt werden. Um unter Linux diese Datei zu öffnen, muss lediglich der Befehl nano /etc/ssh/sshd_config verwendet werden. Anschließend muss der SSH-Dienst erneut gestartet werden. Dies gelingt mit den Befehlen service ssh restart oder /etc/init.d/ssh restart.
Root-Login per SSH unterbinden
Der Root-Login per SSH kann aber auch vollständig unterbunden werden. In diesem Fall wird in der Datei sshd_config der Befehl PermitRootLogin no eingetragen. Darüber hinaus wird ein neuer Nutzer angelegt, der ausschließlich für die Systemarbeiten verantwortlich ist. Hierbei kann es sich um einen Nutzer mit Namen admin handeln. Diesem sollten dann natürlich umfassende Rechte gewährt werden. Um die Sicherheit noch weiter zu erhöhen, ist es ratsam, vollständig auf Passwort-Logins zu verzichten. Stattdessen sollte eine Public-Key-Authentifizierung vorgenommen werden.
Nicht genutzte Ports sperren
Viele Ports sind nicht sonderlich geschützt. Sie stellen im Grunde kein Sicherheitsrisiko dar. Hierzu gehören beispielsweise die bekannten Ports 80 und 443, welche für http- oder HTTPS-Verbindungen zuständig sind. Problematisch kann dies nur werden, wenn antwortende Programme verwendet werden, welche selbst Sicherheitslücken aufweisen. In diesem Fall können sich Kriminelle Zugang zum Serversystem verschaffen.
In den meisten Server-Betriebssystemen steht die Paketfilter-Software iptables zur Verfügung. Damit lassen sich bestimmte Regeln für den Datenverkehr und die Nutzung von Programmen aufstellen. Insoweit ist es auch möglich, nicht genutzte Ports dauerhaft zu blockieren.
Der TCP-Wrapper
Eine weitere Möglichkeit einen Linux Server abzusichern stellt die Einrichtung eines TCP-Wrappers dar. Dieser wacht als sogenannte Zwischenschicht vor dem inetd. In diesem Fall startet der inetd-Daemon nach einer Verbindungsanfrage seinen Dienst.
Entsprechend der Einstellungen in den Dateien:
- /etc/hosts.allow und
- /etc/hosts.deny
wird geprüft, ob eine bestimmte IP-Adresse den eigentlichen SSH-Dienst nutzen darf. Mit host.allow kann der Bereich der IP-Adressen genau oder per Wildcards weiträumiger eingegrenzt werden, welche einen Zugriff erhalten dürfen. Mit hosts.deny kann zum Beispiel mit der Option All ein vollständiger Zugriff unterbunden werden.
Das Python-Programm fail2ban
Mit dem Programm fail2ban lassen sich unterschiedliche Serverdienste, wie zum Beispiel Apache2 oder SSH, vor unbefugtem Zugriff schützen. Hierbei werden die Logfile-Einträge ausgewertet und nach Authentifizierungsfehlern untersucht. Sollte zum Beispiel ein Login über eine entsprechende IP mehrfach fehlschlagen, so wird diese Adresse gesperrt. Die Anzahl der Fehlversuche kann in fail2ban festgelegt werden.
Wichtige Updates nutzen
Updates halten ein Serversystem auf den neuesten Stand und sorgen für entsprechende Sicherheit. Ein ungepatchtes System bietet dagegen Angriffspunkte. Häufig werden wichtige Updates im Alltag übersehen oder vergessen. Aus diesem Grund ist es wichtig, dass diese Updates automatisch installiert werden können. Dies gelingt unter Linux mit dem Befehl
sudo apt-get install unattended-upgrades
Ebenso ist es möglich, sich per Email an ein wichtiges Update erinnern zu lassen. Diesbezüglich wird die Installation des Shellskriptes apticron empfohlen. Sobald ein neues Update erhältlich ist, erfolgt eine Email-Benachrichtigung, sodass dieses dann manuell installiert werden kann.
Die Zwei-Faktor-Authentifizierung
Die Passwort-Cracking-Tools werden leider immer besser und sind in Verbindung mit schneller Hardware immer leistungsfähiger. Brute-Force-Angriffe stellen daher keine Besonderheit mehr dar. Hilfreich kann in diesem Fall eine Zwei-Faktor-Authentifizierung sein. Zunächst wird das normale Passwort abgefragt. Im zweiten Schritt kann über Tokens, wie zum Beispiel Yubikey oder Google Authenticator ein weiteres Einmal-Passwort abgefragt werden. Dies macht den Zugang zu einem Linux Server für Unberechtigte noch schwerer.
Die Verwendung von Monitoring-Tools
Mit den vorgenannten Maßnahmen lässt sich ein Linux-Server gut absichern. Jedoch sollte immer auch auf ein korrektes Zusammenspiel zwischen Soft- und Hardware geachtet werden. Viele Routinen auf einem Server laufen automatisch ab und lassen sich nur schwer kontrollieren. Aus diesem Grund gibt es sogenannte Monitoring-Tools, die sämtliche Vorgänge kontrollieren, analysieren und protokollieren.
Bei auffälligem Serververhalten wird sofort ein Alarm ausgegeben. Zu den bekannten Lösungen gehört das Programm Monit, welches insbesondere für Linux-Server konzipiert ist. Es handelt sich verständlicherweise um eine Open-Source-Anwendung, welche Dateien, Clouds, Prozesse, Hosts, Programme und Scripts, aber auch die CPU, den Arbeitsspeicher und angeschlossene Systemkomponenten überwacht. Ebenfalls ein Monitoring-Tool stellt das Programm Nagios dar. Dieses Hilfstool ist etwas komplexer gehalten.
Fazit:
Eine vollumfängliche Absicherung eines Linux-Servers ist zu 100 % nicht möglich. Dennoch gibt es diverse Einstellungen und Tools, mit denen sich die Sicherheit erhöhen und mögliche Angriffe von außen abwehren lassen. All diejenigen, die sich erstmals einen virtuellen oder physischen Server anmieten, sollten auf alle Fälle von Anfang an diese Punkte berücksichtigen.