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