Windows Server absichern - ECS
Transcrição
Windows Server absichern - ECS
Windows Server absichern Frage: Ich möchte meinen Microsoft Windows Server gegen Hacker absichern, was kann ich sinnvolles tun? Antwort: 1. Abschalten / Deinstallation unbenötiger Dienste Gerade Plesk installiert jede Menge Software auf dem Server, welche Sie unter Umständen gar nicht benötigen z.B. Sie verwenden MSSQL - wozu muss dann MySQL Server laufen? Sie verwenden die DNS-Server vom Provider - warum muss dann ein eigener DNS-Server laufen? Sie verwenden den Mailserver vom Provider - wozu dann ein POP3, IMAP Dienst (der SMTP für Mail-Versand könnte durchaus sinnvoll sein)? Weiterhin können Sie einige Windows Dienste abschalten, wenn Sie diese nicht benötigen. Wir haben bei uns deaktiviert bei Windows 2003: Ablagemappe Anwendungskompatiblitäts-Suchdienst Designs Drahtloskonfiguration Druckerwarteschlangen Eingabegerätezugang Fehlerberichterstattungsdienst Hilfe und Support IMAPI-CD-Brenn-COM-Dienste Indexdienst IPSEC-Dienste (wenn in keiner Domain) Kerberos-Schlüsselverteilungscenter (wenn in keiner Domain) Lizenzprotokollierung Nachrichtendienst Windows Server absichern Net.Tcp Port Sharing Service NetMeeting-Remotedesktop-Freigabe Netzwerk-DDE-Dienst Netzwerk-DDE-Serverdienst Remoteregistrierung Routing und RAS Sekundäre Anmeldung Standortübergreifendes Messagingdienst Telnet Terminaldienste-Sitzungsverzeichnis Überwachung verteilter Verknüpfungen (Client) Überwachung verteilter Verknüpfungen (Server) Warndienst WebClient Windows Audio Windows Remote Management (WS-Management) Windows-Bilderfassung (WIA) IIS 7 Ab Windows 2008 ist der IIS in viele kleine Module unterteilt worden. Ist Ihre Webseite z.B. ausschließlich in ASP.NET, dann können Sie andere Programmierschnittstellen wie CGI und ASP wieder DEINSTALLIEREN. "Ein Hacker kann sein PHP-Rootkit zwar durch eine Sicherheitslücke hochladen, aber mangels Programmiersprache PHP nicht starten". IIS 6 Im IIS 6 kann man im Internetinformationsdienste-Manager unter "Webdiensteerweiterungen" nicht benötigte Programmiersprachen z.B. "Active Server Pages" deaktivieren. Anwendungserweiterungen: Windows Server absichern Sollte der IIS mehrere Programmiersprachen installiert haben, so sollten pro Webseite nur die Programmiersprachen aktiviert sein, welche auch tatsächlich benötigt werden. IIS 6: Eigenschaften von Websites / Lasche Basisverzeichnis / <Konfiguration> -> Alle nicht benötigten Dateiendungen wie .asp entfernen! IIS 7: Scripthandlerzuordnungen -> Alle nicht benötigten Dateiendungen entfernen! 2. Firewall Nur die benötigten Ports öffnen, z.B. ein typischer Webserver: - Port 80 TCP (IIS / Apache) - Port 443 TCP (IIS / Apache SSL - nur wenn ein SSL-gesicherte Webseite mit https:// vorhanden ist!) - Port 3389 TCP (Remotedesktop) -> Wir empfehlen den Remotedesktop auf die statischen IP-Adressen zu beschränken, von denen ausschließlich auf den Server zugegriffen wird. Bei dynamischen IP-Adressen empfiehlt sich ggf. den Remotedesktop-Port auf einen anderen Port zu verändern, z.B. 33389 -> Alternativ empfehlen wir einen VPN-Server zu installieren (so machen wir das bei ECS-Webhosting) und Remotedesktop nur auf der privaten IP-Adresse des VPN-Netzwerks zu erlauben - Programm FTP-Server z.B. C:\Program Files (x86)\Filezilla-Daemon.exe -> Wir empfehlen nicht die Freigabe auf Port-Ebene, da durch Passive-Transfer der Bereich relativ groß ist. Dieser kann zwar bei den meisten FTP-Servern eingeschränkt werden, aber es sind dennoch (zu)viele offene Ports. -> Bei normalen FTP wird das Kennwort im Klartext übertragen, was natürlich ein Trojaner auf Ihrem PC mitschneiden kann! FileZilla Server und viele anderen FTP-Server unterstützen Secure-FTP, verwenden Sie besser dieses sichere Protokoll. "Brauche ich eine Hardware-Firewall?" Windows Server absichern Intelligente Firewalls, egal ob Hardware-Firewall oder Personal-Firewall erkennen Angriffe (IDS = Intrusion Detection System), z.B. Portscans oder Hackversuche auf bestimmten Ports (z.B. X Verbindungsversuche zu Port 3389). Insofern haben solche Firewalls durchaus ihre Berechtigung. Letztendlich kann aber keine (normale) Firewall verhindern, dass ein Hacker über einen geöffneten Port 80 (bei einem Webserver immer offen) eindringt - dafür würde man eine spezielle Art von Firewall: "WAF" oder "Web Application Firewall" benötigen. Eine normale Firewall kann nur durch eine ausgehende Regel "Verbiete jede ausgehende Verbindung" verhindern, dass der Hacker sich mit seinem installierten Programm auf dem gehackten Server nach außen verbinden kann, um z.B. die ausspionierten Daten an einen anderen Server zu übermitteln. Nutzlos ist das Ganze, wenn die Firewall ausgehende Regeln wie "Erlaube alle ausgehenden Verbindungen zu Port 80" hat - nur ist das bei einer Provider-Firewall meistens der Fall. 3. Versions-Header abschalten: IIS 7 Internetinformationsmanager (IIS)-Manager / SERVER / HTTP-Antwortheader -> Einträge "X-Powered-By" löschen! PHP In der php.ini die Einstellung expose_php = Off (Standard On) einstellen. Auf PHP selbst hat das keine Auswirkung. TRACE abschalten: In der Registry unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters einen neuen DWORD namens "EnableTraceMethod" anlegen. Der Standardwert ist 0 = abgeschaltet. 4. Startseite neutral oder Domain einstellen Sinnvoll wäre in diesem Zusammenhang auch die Default Startseite sich mal anzuschauen. Der IIS 7 liefert hier ein wunderschönes Bild mit IIS 7 aus - welcher Webserver läuft dann wohl? ;-) Wir empfehlen die Startseite durch eine leere HTML-Seite auszutauschen und alle nicht benötigten Dateien zu löschen. Wenn ohnehin nur 1 Domain auf dem Server läuft, dann sollte die Startseite auf diese eingestellt werden. Windows Server absichern 5. Dienste auf nur benötigte IP-Adressen (öffentlich / localhost) binden Plesk ist so ein negatives Beispiel dafür: Es installiert 1001 Dienste wie DNS-Server, Mailenable oder MySQL, welche entweder gar nicht benötigt werden oder nicht nach außen kommunizieren müssen. Nicht benötigte Dienste kann man ggf. deaktivieren. Wenn Dienste aber laufen müssen, z.B. MySQL, aber von außen nicht erreichbar sein sollen, dann hilft 1. eine Firewall und 2. kann man MySQL auf nur bestimmte IP-Adressen z.B. 127.0.0.1 binden. Dummerweise hat jedes Programm eine andere Art und Weise, wie man die Bindung einstellt. -> Wir empfehlen hier das Programm tcpview.exe von Sysinternals, hier sieht man sehr schön, welches Programm auf welchen IP-Adressen gebunden ist. 6. Unnötige Netzwerk Protokolle entfernen Ein Standalone Windows Webserver z.B. braucht weder die Computer der Netzwerkumgebung, noch das Microsoft Netzwerk, Datei- und Druckerfreigabe. Insofern können Sie unter der Netzwerkkarte "Microsoft Netzwerk" und "Datei- und Druckerfreigabe" deaktivieren. 7. Unnötige Webseiten-Software entfernen oder zumindest umbenennen Hacker scannen dumm nach bestimmten Unterverzeichnissen, z.B. /phpmyadmin wird das Script des Hackers fündig, probiert er alle Sicherheitslücken dieser Software aus. Es würde als ersten Schritt schon genügen, solche bekannten Unterverzeichnisse umzubenennen, z.B. /mein-phpmyadmin - wenn Sie diese Software gar nicht benötigen, dann löschen Sie diese besser! 8. Markante Unterverzeichnisse schützen Läßt sich das Unterverzeichnis nicht umbenennen, weil es z.B. so heißen muss/sollte (z.B. bei Typo3 das Adminverzeichnis /typo3 oder /administrator bei Joomla), dann kann man via .htaccess (z.B. IISPassword) oder Windows Verzeichnisrechten zumindest das Verzeichnis schützen / den Zugriff verbieten. Das Hacker-Scantool dürfte hier normalerweise den Server als "Software nicht gefunden" abhaken. 9. Programmiersprachen absichern Letztendlich kann man einen Server nur hacken, indem Programme nach außen kommunizieren. Eine Firewall bringt rein gar nichts, wenn der Webserver nach außen offen ist und der Hacker über eine Webseite einbricht! Die Chance, dass ein Hacker Windows Server absichern es gezielt auf Ihren Server abgesehen hat und z.B. mittels Portscan Ihren Server von 0 bis 65535 scannt ist äußerst unwahrscheinlich - dies wird nur bei einem gezielten Angriff gemacht. 99% aller Angriffe laufen eher nach Schema F ab: "Scanne IP-Adressen Liste und Port X z.B. Webserver (Port 80) oder MSSQL (Port 1433)". Unserer Meinung ist es daher am wichtigsten, dass die Webseiten selbst keinen Einbruch erlauben. Wenn Ihre Webseite z.B. mit PHP, safe_mode=off und open_basedir="" läuft, dann kann ein Hacker durch eine Sicherheitslücke Ihrer Webseiten-Software (Open-Source wie Joomla haben davon 1001) sein Hackerscript hochladen und anschließend sich per Shell-Befehl wie exec() einen neuen Adminaccount anlegen / alle Webseiten des Servers mit einer neuen Startseite überschreiben usw. PHP open_basedir Der Parameter open_basedir darf ausschließlich das Upload-Verzeichnis und das Verzeichnis der Domain auf der Festplatte enthalten z.B. open_basedir="D:\web\meinedomain.de\httpdocs;C:\temp" safe_mode safe_mode=OFF unter Windows bedeutet, dass Shell-Befehle wie exec() erlaubt sind. Da Windows keine Dateieigentümer wie Linux verwaltet, ist safe_mode=ON oder safe_mode=OFF absolut egal. Shell-Befehle benötigen die wenigsten PHP-Programme. Wir kennen einzig Typo3 mit Imagemagick, welches Gebrauch davon macht - hier könnte man aber auf die GDLib umschalten und benötigt ImageMagick nicht mehr. Wir empfehlen als sinnvolle Einstellung für PHP: ; ab PHP 5.4 nicht mehr nötig safe_mode=On ; PHP gibt sich nicht zu erkennen expose_php = OFF ; bestimmte PHP Befehle verbieten disable_functions = show_source, system, shell_exec, passthru, exec, popen, proc_open Windows Server absichern ; Keine Fehler auf der Webseite anzeigen display_errors = OFF ; GET/POST nur über $_GET[variable] anstatt $variable erlauben register_globals = OFF ; Keine include() Befehle mit externen Webseiten allow_url_include = OFF .NET - Wir empfehlen hier den Trustlevel soweit herunterzusetzen, soweit Ihre .NET Anwendung das zuläßt. Der unsicherste Modus (= meisten Rechte) heißt FULL, danach folgt HIGH und MEDIUM, womit die meisten Webseiten noch laufen sollten. Hier hilft nur ausprobieren! Der Trustlevel muss für jede .NET Version (z.B. 2.0, 4.0) und jede Sprachversion (x64 und x86) jeweils einzeln eingestellt werden in der web.config z.B. C:\WINDOWS\Microsoft.NET\framework\v2.0.50727\CONFIG\web.config Zeile <trust level="Full" originUrl=""/> ändern in <trust level="High" originUrl=""/> - Im IIS ab Version 7 können Sie die integrierte Sicherheit beim Application Pool einstellen, der User "Netwerk Service" unter IIS 6 hat meistens auf viele Verzeichnisse Zugriff und ist somit potenziell unsicherer. - IIS 7 ist wegen seinem neuen Sicherheitsmodell somit dem IIS 6 vorzuziehen 10. Updates einspielen Da wie gesagt man nur durch nach außen kommunizierende Dienste / Software vorrangig angreifbar ist, ist es unbedingt nötig, die eingesetzte Software z.B. Joomla und natürlich das Betriebssystem aktuell zu halten! Updates sollten mindestens 1* pro Monat kontrolliert und eingespielt werden! 11. Administrator umbenennen + sicheres Kennwort Ein Hacker kennt Ihre Webseite und damit die IP-Adresse von Remotedesktop. Er weiß, dass der Administrator "Administrator" bei Windows heißt - jetzt muss er nur Windows Server absichern noch das Kennwort hacken - mit einer Attacke dauert das vielleicht je nach Kennwort 1-2 Tage, aber es könnte irgendwann gehackt sein. Machen Sie dem Hacker das Leben schwer und benennen zumindest den Administrator um - dann muss er den Benutzer UND das Kennwort kennen! Verwenden Sie auch keine Nachnamen für Administratoren, denn die Mitarbeiter stehen auf vielen Webseiten. Ein sicheres Kennwort ist ebenso ein unbedingtes MUSS für einen Administrator! Es sollte mindestens 10 Zeichen lang sein, Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen enthalten. Schlecht: meier1 Gut: Me1er$dbA! Tipp: Bilden Sie leicht merkbare Sätze, hier z.B. denkbar wäre "Meier, der beste Admin!". Ersetzen Sie Buchstaben wie i durch Zahlen (hier i = 1), Leerzeichen durch Sonderzeichen (hier Leerzeichen = $). So schwer zu merken ist dann obiges Kennwort nicht mehr oder? ;-) ECS-Webhosting Support http://support.ecs-webhosting.de/FragenundAntworten/Windows-Server-absichern