Artikel weiterleiten
Artikel editieren
Druckansicht
FAQ #441

So prüfen Sie die Sicherheit Ihres Linux- oder Windows-Servers

Besonders Server geraten immer wieder ins Visier von Angreifern, da sie genug Power haben, um damit im Verbund andere Ziele im Internet anzugreifen. Sind Sie sich nicht sicher, ob Sie bereits angegriffen wurden und Ihr Server kompromittiert ist, können Sie das mit dem folgenden Leitfaden selbst leicht nachprüfen. Wenn Sie die Sicherheitstipps beherzigen und die Prüfungen immer wieder mal ausführen, sind Sie auf der sicheren Seite. Noch ein Hinweis für Nutzer von Linux-Servern: in der Szene wird Linux als sichere Burg angesehen, bei der Schädlinge keine Chance haben. Für den Kern stimmt das. Aber aufgrund von Sicherheitslücken gab es in der Vergangenheit auch immer wieder Angriffe auf Linux-Systeme. Dazu kommt, dass viele Linux-Server auch als Datei-Server dienen. Gibt es dann verseuchte Windows-Dateien, schädigen diese zwar nicht das System, aber sie werden an andere Windows-Maschinen ausgeliefert. Gerade dieses falsche Verständnis sorgt dafür, dass die meisten unentdeckten Server, die Schädlinge ausliefern, mit Linux arbeiten.


Damit Sie immer auf dem Laufenden sind, informiert STRATO zu aktuellen Sicherheitslücken oder Angriffswellen. Auch Hinweise zu Lücken und Updates für Content Management Systeme (CMS) bekommen Sie regelmäßig. Durch das ständige Anlegen von Backups haben Sie immer einen Trumpf in der Hinterhand, mit dem Sie schnell und ohne viel Aufwand reagieren können. Wenn Sie einen V-Server nutzen, steuern Sie über den Server-Login unter dem Menüpunkt Serverkonfiguration / BackupControl alle Ihre Backups und haben sie auch online bereit für ein eventuelles Recovery. Für dedizierte Server erstellen Sie komfortabel und flexibel Backuppläne mit dem optionalen Produkt STRATO Managed Backup oder Sie nutzen den optional angebotenen FTP-Speicher zur Datensicherung.


Verdächtige Prozesse prüfen

Nicht jeder Angriff fügt eine direkt sichtbar schädliche Komponente in den Server ein. Manchmal wird nur versucht einen Prozess fernzusteuern. Daher können die auf dem Server laufenden Prozesse ein Indiz dafür sein, dass etwas nicht stimmt. So prüfen Sie Ihre Prozesse:


Bei Linux-Servern

Unter Linux lassen sich die laufenden Prozesse am besten auf der Kommandozeile überprüfen. Öffnen Sie dazu eine SSH-Kommandozeile auf Ihrem Server und rufen Sie dort die Liste der laufenden Prozesse mit dem Kommando


sudo ps aux


ab. Das vorangestellte Schlüsselwort ‚sudo’ bewirkt, dass in den Administrator-Modus gewechselt wird, aus dem heraus auch mit Systemrechten laufende Prozesse in der Übersicht dargestellt werden, die normalen Benutzerkonten verborgen bleiben. Da speziell bei neueren Kernel-Versionen die angezeigte Liste recht lang werden kann, ist es hilfreich, sie in eine Datei umzuleiten. Diese kann dann mit einem Dateibetrachter wie zum Beispiel ‚less’ in Ruhe untersucht werden:


sudo ps aux > prozesse.txt
less prozesse.txt


Achten Sie bei der Untersuchung vor allem auf Programme, die aus ungewöhnlichen Pfaden wie etwa aus dem Verzeichnis Ihres Webauftritts heraus gestartet wurden. Den Aufrufpfad sehen Sie als letzten Parameter in jeder Zeile der Ausgabe. Kernelprozesse sind hier in eckigen Klammern ([]) eingeschlossen, normale Prozesse hingegen mit ihrem kompletten Pfad aufgeführt. Normalerweise finden sich Linux-Anwendungen in den Pfaden ‚/bin’, ‚/sbin’, ‚/usr/bin’ und ‚/usr/sbin’. Programme, die beispielsweise mit führenden Pfaden wie ‚/usr/local/bin’, ‚/var/www’ oder ‚/tmp’ erscheinen, sind hingegen eindeutig Kandidaten für eine genauere Untersuchung.


Bei Windows-Servern

Loggen Sie sich über RDP (Remote Desktop) in Ihren Server ein, starten Sie den Server Manager und klicken Sie auf Lokaler Server. Dort haben Sie den ersten Überblick über laufende Dienste, Ereignisse, Leistung und den Best Practice Analyzer. Auffälliges oder erste Hinweise finden sich hier. Etwas übersichtlicher wird das Ganze mit dem kostenlosen Process Explorer aus den Windows Sysinternals, den Sie im Microsoft Technet bekommen. Dort erkennen Sie gleich voneinander abhängige Prozesse, die das Windows-Server-System gestartet hat und fremde Prozesse. Fällt ein Prozess auf, dann klicken Sie ihn mit der rechten Maustaste an und wählen im Kontextmenü Check VirusTotal. Der Hash-Wert wird online geprüft und danach ein kleiner Hyperlink angezeigt. Ein Klick bringt Sie zur Auswertung des Prozesses und dessen Gefährlichkeit – oder Harmlosigkeit.


Monitoring als Frühwarnsystem

Den im Server-Paket verfügbaren Monitoring-Service können Sie auch als Frühwarnsystem nutzen. Benötigt ein Dienst oder Prozess sehr viele Ressourcen, dann meldet Ihnen dies das Monitoring. Natürlich steckt noch viel mehr in dem Service, da er etwa auch über alle Fehler per SMS oder Mail informiert.


Sie meinen der Server ist kompromittiert?

Ein kurzer Check Ihres Servers zeigt Ihnen schnell, ob er von einem Schädling befallen ist. Meist ist dem nicht so, aber zur Sicherheit können Sie folgende Schritte ausführen.


Bei Linux-Servern

Auch für Linux gibt es Virenscanner, die sich kostenlos von den bekannten Herstellern beziehen lassen. Die meisten Distributionen haben aber auch die Freeware-Lösung ClamAV im Paket – allerdings wird diese Software in der Regel nicht automatisch installiert. Um sie einzurichten, ist jedoch meist nur ein Befehl auf der SSH-Kommandozeile notwendig:


RedHat/CentOS:
yum install clamav clamd


Debian/Ubuntu:
apt-get install clamav clamav-freshclam


Um mit der so installierten Version einen Scan der gesamten Festplatte durchzuführen, geben Sie den folgenden Befehl ein:


clamscan –ri /


Bei Windows-Servern

Ein Schnellcheck funktioniert am besten über einen unkomplizierten, aber guten Online-Virenscanner, wie etwa von F-Secure. Damit der Check funktioniert, müssen Sie lediglich einen kleinen Webloader herunterladen. Sobald Sie den Link anklicken, fordert Sie der Internet Explorer auf, die F-Secure-Webadresse als vertrauenswürdig einzustufen. Nachdem Sie das getan haben, müssen Sie den Download des Webloaders erneut starten und das Programm ausführen. Der restliche Sicherheitsscan funktioniert dann automatisch. Der Scanner wird dabei nicht installiert, sondern nur lokal ausgeführt.


Wollen Sie einen Virenscanner auf dem Server installieren, dann müssen Sie normalerweise eine passende Lösung dafür kaufen. Die bekannten Free-Antivirus-Pakete funktionieren nicht mit dem Windows-Server-Betriebssystem. Seit neuestem bietet aber Avast einen Business-Dienst, mit dem Sie kostenlos eine Sicherheitslösung auf Ihrem Windows-Server installieren können. Sie müssen sich dazu lediglich ein Konto bei Avast anlegen. Danach steht Ihnen das Dashboard einer Cloud-Lösung zur Verfügung. Auf der Oberfläche wählen Sie dann „Neues Gerät“ und schicken sich den Installations-Link per Mail zum Server. Oder Sie laden sich die Installationsdatei herunter und kopieren sie per Hand auf den Server. Nach einer kurzen Installation steht Ihnen der Avast Basisschutz zur Seite. Die Windows-Firewall bleibt natürlich weiterhin aktiv und versieht ihren Dienst.


Tools für den Notfall

Ist Ihr Server befallen und Sie wollen versuchen ihn zu bereinigen, dann können Ihnen folgende Tools nützlich sein. Alle diese Tools unterstützen das Betriebssystem Microsoft Server.
1. Malicious Software Removal Tool von Microsoft
2. Kaspersky Virus Removal Tool
3. Bitdefender Rootkit Remover


Mögliche Sicherheitslücken


Die auf dem Windows- oder Linux-Server installierten Software-Pakete und Dienste (qmail, Apache, FTP, MySQL, etc.) weisen leider immer wieder Sicherheitslücken auf. Bei besonders wichtigen Lücken informiert Sie STRATO immer umgehend. Dennoch sollten Sie auch Sorgfalt walten lassen und selbst regelmäßig updaten.


1. Betriebssystem aktuell halten

Für Linux- und Windows-Server gibt es immer wieder wichtige Betriebssystem-Updates, die Sie ausführen sollten. Sie müssen dazu wenig unternehmen: STRATO bietet Ihnen die für Ihren Server-Typ verfügbaren Updates an.


Bei Linux-Servern

Einen Linux-Server aktuell zu halten, ist relativ einfach, da die Anbieter der diversen Distributionen (RedHat, Debian, Ubuntu) auf Sicherheitslücken rasch reagieren und entsprechend aktualisierte Pakete zeitnah anbieten. Im Gegensatz zu Windows erfolgen das Herunterladen und die Installation jedoch nicht automatisch, sondern nur bei manuellem Aufruf durch den Anwender.


RedHat/CentOS:
yum update


Debian/Ubuntu:
apt-get update && apt-get upgrade


Achtung: Beim Einsatz von Plesk oder anderen Management-Lösungen für Ihren Web-Server kann es vorkommen, dass bei der Aktualisierung des Betriebssystems Komponenten ausgetauscht werden, die für den Betrieb der Verwaltungssoftware notwendig sind. Prüfen Sie daher vorab, ob zuerst ein Update Ihres Verwaltungspakets durchgeführt werden muss, bevor Sie die Aktualisierung des Betriebssystems starten.


Bei Windows-Servern

Admins empfehlen ihren Kollegen gerne den Windows Server Update Services. Der ist aber bei STRATO-Servern nicht nötig, denn Sie bekommen die wichtigen und vor allem passenden Updates angeboten und müssen nichts extra suchen. Sobald Sie sich in Ihren Server einloggen, teilt Ihnen das System automatisch mit, wenn der Windows-Update-Service wichtige Updates hat. Sie werden bereitgestellt und können dann von Ihnen installiert werden. Eventuell sind dabei Neustarts des Systems nötig.


2. Aktuelle Dienste checken & updaten

Der Server ist nur Mittel zum Zweck. Es sind die wichtigen Dienste wie PHP oder MySQL, die Webseiten am Laufen halten. Sie waren aber in der Vergangenheit auch immer wieder Ziel von Angriffen, da sie Schwachstellen hatten oder schlecht konfiguriert waren. Hier ein paar Tipps:


Bei Linux-Servern

Die zentralen Dienste wie Web-Server (Apache, Nginx) oder die zum Erzeugen der Webseiten genutzten Programmiersprachen (PHP, Python, Ruby) weisen selbst auch immer wieder Sicherheitslücken auf, die Angreifern einen Hebel zum Eindringen ins System bieten. Auch hier greifen die oben genannten Paket-Aktualisierungen der Distributionen in der Regel recht schnell. Anders sieht es jedoch aus, wenn ein Generationswechsel stattfindet, wie beispielsweise von PHP 5.6 zu PHP 7.0 oder von Apache 2.2 zu Apache 2.4. Hier ziehen die Distributionen in der Regel nicht so schnell oder gar nicht nach, da insbesondere bei Versionen mit „Long Term Support“ (LTS) die Kompatibilität zu der ursprünglich ausgelieferten Variante erhalten bleiben soll oder muss.


Hier hilft dann nur das Ausweichen auf alternative Paketquellen, wie etwa www.dotdeb.org für Debian/Ubuntu oder die EPEL-Repositories für RedHat/CentOS.


Bei Windows-Servern

Ein Update von PHP ist auf einem Windows-Server schnell gemacht mit Hilfe des Webplattform-Installers. Sobald Sie nach „PHP“ suchen, bekommen Sie die installierte Version angezeigt und alle Versionen, die noch verfügbar sind. Wollen Sie etwa von einem PHP 5.3.x auf 5.6.x updaten, dann wählen Sie einfach die Schaltfläche Hinzufügen. Eventuell fehlende Erweiterungspakete, die aber unerlässlich sind, fügt der Webplattform-Installer in den Installations- „Einkaufswagen“ automatisch hinzu. Genauso gehen Sie bei MySQL vor, allerdings sollten Sie zuvor unbedingt die Datenbanken sichern. Eventuell müssen Sie die vorhandene MySQL-Version erst deinstallieren, bevor Sie die neue Version aufspielen können.


3. Installierte Software checken

Auf den meisten Webservern ist recht wenig zusätzliche Software installiert. Meist arbeiten aber verschiedene Content-Management-Systeme (kurz CMS) darauf, wie Wordpress, Joomla oder Typo3. Da sie mit ihren Services die Webseiten abbilden, werden eventuell vorhandene Sicherheitslücken oft als erstes angegriffen. Das wissen natürlich auch die CMS-Entwickler und bieten immer wieder gefixte Updates an. Das Update eines CMS funktioniert ohne Fachkenntnisse – Sie müssen es nur regelmäßig machen.


Egal, welches CMS Sie auf einem Windows- oder Linux-Server nutzen, das Verfahren ist bei allen fast identisch. Loggen Sie sich einfach in die Verwaltungsoberfläche von Wordpress, Joomla oder Typo3 ein. Gleich auf der ersten Seite mit der Zusammenfassung (Dashboard) bekommen Sie die Updates angeboten. Meist reicht es, einen angebotenen Link anzuklicken und ein Update-Assistent leitet Sie durch den Vorgang. Danach müssen Sie im seltensten Fall den Server neu starten. Aber auch hier gilt: vor dem Update sollte ein zeitnahes Backup gemacht worden sein.


4. Offene Ports prüfen

Sowohl Linux- wie auch Windows-Server arbeiten in der Standard-Konfiguration mit einer Reihe von aktivierten Diensten und Einstellungen, die in einem lokalen Netzwerk durchaus sinnvoll sind – beim Betrieb als Webserver jedoch vollkommen überflüssig und teilweise sogar gefährlich. Diese Dienste kommunizieren über so genannte Ports mit Gegenstellen im LAN oder Internet. Bekannte Ports für im Internet notwendige Dienste sind beispielsweise Port 80 für HTTP, 443 für HTTPS, 21 für FTP und 22 für SSH. Andere Ports wie beispielsweise 25 (SMTP – Mailversand) oder 111 (RPCBIND) sollten aus dem Internet heraus nicht zugänglich sein, um deren missbräuchliche Nutzung zu unterbinden.


Prüfen Sie daher, ob Ihr Server unnötig offene Ports hat. Wenn Sie das manuell machen wollen, dann empfiehlt sich das Tool NMAP für Linux und Zenmap (NMAP mit grafischer Oberfläche) für Windows. Hinweise dazu, wie Sie Zugriffsmöglichkeiten auf Ihren Server über bestimmte Ports verwalten können, finden Sie unter anderem in folgendem FAQ-Artikel: Hinweise zur Einrichtung einer Firewall.


NMap/Zenmap

Wollen Sie selbst einen Test auf offene Ports durchführen, verwenden Sie am besten das auf NMAP.org erhältliche Standardtool NMap (Linux/Mac OS) oder sein Windows-Pendant Zenmap. Bei letzterem handelt es sich um eine mit einer grafischen Benutzeroberfläche versehene Version von NMap. Die Ausführung von NMap oder Zenmap sollte immer auf einem anderen Rechner als dem Server, idealerweise einem PC in Ihrem Unternehmen oder bei Ihnen zuhause stattfinden. So stellen Sie sicher, dass das Tool Ihren Server so sieht, wie er sich auch einem Angreifer aus dem Internet präsentiert.


Linux/Mac OS

Nach der Installation über den integrierten Paketmanager (Linux) oder über Homebrew (Mac OS) erfolgt der Aufruf von NMap einfach über die Kommandozeile. Ein einfaches Beispiel wäre etwa:


sudo nmap –v <ip-adresse ihres Servers>


Sie erhalten nach einer Weile eine Liste mit den von NMap gefundenen Ports, wobei zwischen „open“, also aus dem Internet erreichbar, und „filtered“ – also erreichbar aber vom Server verworfen – unterschieden wird. Von Interesse sind hier vor allem Ports, die als „open“ markiert sind, denen Sie aber keinen von Ihnen genutzten Dienst zuordnen können.


Windows

Besorgen Sie sich bei NMAP.org das Software-Paket Zenmap und installieren Sie es auf einem Windows-PC – nicht auf dem Server. Das Tool ist das normale NMAP, allerding inklusive einer komfortablen Benutzeroberfläche. Danach benötigen Sie nur noch die IP-Adresse Ihres Servers und können so alle Ports von „außen“ prüfen. Ist alles gut eingestellt, so ergibt sich nach einem intensiven Scan, dass etwa Port 80 und 3389 offen sind. Das sind einmal der Port für HTTP und einmal der Port für den Windows Remotedesktop. Zenmap stellt die gefundenen Ports in grüner Schrift dar, damit man sieht, dass diese offen sind. Gleichzeitig bekommen Sie Zusatzinfos, welche Applikation oder welcher Dienst den Port benutzt. Eine Liste von standardisierten Ports und wozu sie genutzt werden bietet auch Wikipedia. Ist ein Port unnötig geöffnet, dann müssen Sie einfach die Windows-Firewall-Regeln überprüfen und die entsprechende Ein- oder Ausgangsregel anpassen oder deaktivieren.


5. Kurze Profi-Tipps für noch mehr Sicherheit

Mit ein paar einfachen Tipps erhöhen Sie die Sicherheit bei der Nutzung Ihres Webservers.


1) Nur lange Passworte sind sicher


Nicht alle Programme und Online-Zugänge erlauben den Einsatz von kryptographischen Schlüsseln, sondern viele sind nach wie vor auf das gute alte Passwort angewiesen. Viele Anwender glauben immer noch, dass es bei der Wahl eines Passworts darauf ankommt, eine möglichst kryptische Zeichenkombination zu wählen. Dies mag zu Zeiten berechtigt gewesen sein, in denen ein Passwort auf sechs oder acht Stellen beschränkt war, da ein Angreifer durch den Einsatz von Sonderzeichen gezwungen war, wesentlich mehr mögliche Kombinationen zu probieren.


Mittlerweile unterstützen fast alle Systeme Passwörter mit 128 oder 256 Zeichen. Da jedes zusätzliche Zeichen eine Vervielfachung der möglichen Kombinationen bedeutet, ist ein vorgeblich einfaches aber längeres Passwort deutlich sicherer als ein kurzes, komplexes Passwort. Es empfiehlt sich daher, statt des kryptischen Passworts ‚xz&%Af5!’, das vermutlich sowieso schnell auf einer Haftnotiz unter der Tastatur landet, lieber einen einfach zu merkenden Satz wie ‚DerTagistschön,ichkannimRegengehn!’ zu verwenden. Gegebenenfalls erweitern Sie ihn um ein beliebiges Datum, um die Anforderung „muss eine Zahl enthalten“ vieler Passwort-Prüfroutinen zu erfüllen.


Bei Linux-Servern


2) SSH-Zugang nur per Key


Die bevorzugte Verwaltungsmethode eines Linux-Servers ist über die Kommandozeile mittels des Protokolls SSH. Die meisten Anwender verwenden hier das voreingestellte Passwort, wie es bei der Erstinstallation des Systems vorgegeben wird. Dies hat den Nachteil, dass dank steigender Rechenleistung und so genannter Rainbow-Tables (Tabellen mit den verschlüsselten Werten für bereits geknackte Passwörter) ein Brute-Force-Angriff gute Aussicht auf Erfolg hat – genügend Ausdauer beim Angreifer vorausgesetzt.


Moderne Linux-Distributionen verhindern daher zumindest den Login des Root-Users per Kombination aus Username und Passwort komplett und erwarten stattdessen, dass sich der Admin per kryptographischer Schlüsseldatei (SSH-Key) identifiziert. Diese Methode können Sie auch für normale Benutzerkonten übernehmen. Wie das geht, ist in diesem Artikel näher beschrieben.


3) Angriffsversuche erkennen


Die meisten Linux-Distributionen bieten im Umfang ihrer Paket-Quellen einige Tools, mit deren Hilfe sich Angriffe nicht nur erkennen, sondern oft auch gleich unterbinden lassen. Allerdings erfordern diese Werkzeuge manuelle Konfiguration, weshalb sie nicht automatisch installiert werden. Ein nützlicher Helfer ist ‚psad’. Es ist in der Lage, Angriffe anhand von Zugriffen auf die Ports Ihres Servers und der dabei verwendeten Muster zu erkennen. Seine Konfiguration ist unter diesem Link in englischer Sprache ausführlich beschrieben (ab „Configure psad to Detect Scans).


4) Manipulierte Dateien erkennen


Ebenfalls Bestandteil der meisten Linux-Distributionen ist das Hilfsprogramm ‚tripwire’. Mit seiner Hilfe lassen sich die Inhalte von wichtigen Verzeichnissen auf Veränderungen überwachen und bei einer festgestellten Manipulation eine Nachricht an beliebige Email-Adressen versenden. Die Konfiguration von Tripwire ist allerdings ein wenig aufwändig. Unter diesem Link finden Sie ein englisches Tutorial, welches die Konfiguration gut beschreibt.


Bei Windows-Servern


5) Anzahl der Anfragen pro IP-Adresse festlegen: Sie können den Zugriff für Webserver-Hacker erschweren. Nutzen Sie das Microsoft IIS Modul Dynamische IP-Einschränkungen, welches Sie über den Webplattform-Installer einspielen. Mit Hilfe dieses Tools können Sie festlegen, wie viele Anfragen von einer IP-Adresse gleichzeitig an Ihren Server gestellt werden dürfen. Außerdem können Sie angeben, wie viele Anfragen maximal von einer IP-Adresse in einem gewissen Zeitraum erfolgen dürfen. So verhindern Sie etwa massenhafte Versuche bei der Passwort-Eingabe. Zumindest dann, wenn der Angriff von einzelnen oder wenigen IP-Adressen und nicht über ein größeres Botnet geschieht.


6) Nutzername für Server-Login ändern: Es ist der Klassiker, dass der Anmeldename am Server „Administrator“ ist und dann folgt oft ein gutes, kompliziertes Passwort. Angreifer müssen sich dann nur auf das Passwort konzentrieren, da sie ja die Hälfte des Logins bereits kennen. Ändern Sie daher den Nutzernamen des Administratorkontos! Das erhöht die Schwierigkeit für Hacker ungemein.

 

 

×
War dieser Artikel hilfreich?    Ja / Nein