Abhärten eines Windows 2000 Servers
Windows 2000 Server hat in der Standardinstallation schon jede Menge Dienste die, auch wenn sie nicht gebraucht werden sollten, mitlaufen.
Außerdem sind mittlerweile einige Bugs von Microsoft gefixt worden. Allerdings nicht bei einer Standardinstallation des Betriebssystems. Daher ist ein wenig Handarbeit nötig um einen Windows 2000 basierten Server abzuhärten.
Angemerkt sei hier, dass aus sicherheitstechnischer Sicht der Server NICHT an ein Netzwerk angeschlossen werden sollte, ehe er nicht ausreichend abgehärtet ist.
Abschalten unnötiger Dienste
Getreu der Devise: "Dienste die nicht laufen, können nicht angegriffen werden." sollte man sein Augenmerk zuerst auf die laufenden Dienste richten und alle Dienste die für einen reibungslosen Betrieb nicht nötig sind deaktivieren!!!
Mit dem Befehl:
netstat -an
bekommt man eine Liste mit den laufenden Diensten. Bei einer Standardinstallation mit IIS sieht die Ausgabe in etwa folgendermaßen aus:
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:25 0.0.0.0:0 LISTENING
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1027 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3372 0.0.0.0:0 LISTENING
TCP 0.0.0.0:4983 0.0.0.0:0 LISTENING
TCP 192.70.106.143:139 0.0.0.0:0 LISTENING
UDP 0.0.0.0:135 *:*
UDP 0.0.0.0:445 *:*
UDP 0.0.0.0:1028 *:*
UDP 0.0.0.0:1029 *:*
UDP 0.0.0.0:3456 *:*
UDP 192.70.106.143:137 *:*
UDP 192.70.106.143:138 *:*
UDP 192.70.106.143:500 *:*
Anzumerken ist hier, dass der netstat Befehl die TCP und UDP Werte nicht exakt meldet. Satt dessen werden die TDI Endpunkte gelistet, die nicht unbedingt Equivalent zu den TCP und UDP Ports sein müssen.
Sollte eine Verbindung vom Server zu einem anderen System (Server) aufgebaut worden sein (aus welchen Gründen auch immer) so wird diese bei der Auflistung mit angegeben.
Beispiel:
Eine ssh Verbindung zum Server 192.70.106.100 mit Quellport 1023 würde folgende Zeilen in der Liste hinzufügen:
TCP 0.0.0.0:1023 0.0.0.0:0 LISTENING
TCP 192.70.106.143:1023 192.70.106.100:22 LISTENING
Die erste Zeile ist nicht Korrekt, da sie Port 1023 im Listening-Modus meldet, obgleich kein Serverdienst auf diesem Port läuft.
Nachdem nun alle laufenden Dienste identifiziert sind, gilt es jetzt der Reihe nach allen Diensten die nicht gebraucht werden, den Hahn abzudrehen.
Mit dem net stop Kommando (Eingabeaufforderung) kann man nicht benötigte Dienste einfach abschalten. Um jedoch sicherzustellen, dass nach einem Neustart des Systems die einmal abgeschalteten Dienste nicht wieder gestartet werden, muss der Startmodus dieser Dienste auf Manuell oder Disabled gesetzt werden. Da einige Dienste vom System gestartet werden
können selbst wenn der Startmodus auf Manuell gesetzt wird, empfiehlt sich die nicht benötigten Dienste auf Disabled zu setzen. Mit Hilfe des Windows 2000 Resource Kit kann man dies mit dem Befehl:
sc config Dienst_Name start= disabled
Das Leerzeichen zwischen start= und disabled ist zwingend.
sc config Dienst_Name start= manual
setzt den Dienst auf Manuell.
Hat man kein Ressource Kit, so kann man diese Aufgabe über die grafische Bedienungsoberfläche erledigen. Hierfür wählt man aus dem Start-Menü:
Programme -> Verwaltung -> Dienste.
Nun kann man die Dienste der Reihe nach auswählen, mit der rechten Maustaste das Kontextmenü öffnen und Eigenschaften selektieren. In dem sich daraufhin öffnenden Fenster stellt man nun den Starttyp auf Manuell oder Deaktiviert und wählt bei Dienststatus Beenden.
Um zu überprüfen, ob der entsprechende Dienst erfolgreich abgeschaltet wurde kann man mit dem netstat Befehl nachschauen, ob der zugehörige Port noch gelistet wird.
Schließen der IIS Dienste:
Das Schließen der IIS Dienste erfolgt über den Aufruf von
net stop iisadmin
Das hat zur Folge das die IIS Ports geschlossen werden. Um ein erneutes Starten der IIS Dienste zu verhindern ist es am einfachsten, die IIS Komponenten über die ADD/REMOVE Software Option in der Systemsteuerung zu entfernen. Leider ist dies nicht immer machbar, da einige Dienste IIS benötigen. In diesem Fall muss man die nicht benötigten Dienste anderweitig abmelden.
In der Standardinstallation werden der Webserver sowie der Mailserver installiert. Beide können einzeln deaktiviert werden.
Stoppen des Mailservers (Simple Mail-Transportprotokoll):
Zum Schließen des Mailservers an der Eingabeaufforderung
net stop smtpsvc
sc config smtpsvc start= disabled
eingeben.
Stoppen des Webservers (WWW-Publishingdienste):
An der Eingabeaufforderung folgendes eingeben:
net stop w3svc
sc config w3svc start= disabled
Stoppen des IPSec Dienstes
Der UDP Port 500 der vom IKE Protokoll (Internet Key Exchange) benötigt wird, kann durch Abschalten des IPSec Dienstes geschlossen werden. Befehl:
net stop policyagent
sc config policyagent start= disabled
Schließen des Distributed Transaction Coordinators
Der DTC Service, der standardmäßig aktiviert ist, öffnet 2 TCP Ports: 3372 und einen Port über 1023. (In unserem Beispiel Port 1025). Deswegen werden durch das Stoppen dieses Services 2 Ports geschlossen. Befehl:
net stop msdtc
sc config msdtc start= disabled
Stoppen der NetBios over TCP/IP (NetBT) Dienste
Eine Unart von Microsoft ist es die NetBios Dienste immer mit zu installieren. Für reine Internetserver sind diese aber eher unbrauchbar und zudem gefährlich. Ähnlich wie beim DTC werden durch Beenden dieses Dienstes mehrere Ports geschlossen. Hierzu muss für jede Netzwerkkarte in den Erweiterten TCP/IP Einstellungen (Karteikartenreiter "WINS")
"Disable NetBIOS over TCP/IP" gewählt werden. Dies schließt die UDP Ports 137, 138 und TCP Port 139.
Bei dieser Gelegenheit sollte man den lmhosts Dienst (TCP/IP-NetBIOS-Hilfsprogramme) schließen, da er dazu gedacht ist die NetBIOS Namensauflösung zu realisieren. Durch Aufruf des Befehls
net stop lmhosts
sc config lmhosts start= disabled
wird der Dienst deaktiviert.
Schließen von CIFS over TCP
Seit Erscheinen von Windows 2000 wird das CIFS Protokoll über Port 445 eingebunden und standardmäßig mit installiert, so dass ein Windows 2000 Server auf Port 445 lauscht. Um ihm dies abzugewöhnen gibt es zwei Möglichkeiten:
- Abschalten des NetBT Treibers
- Hinzufügen eines Eintrags in die Registry um das CIFS Protokoll zu deaktivieren
Die zweite Möglichkeit dürfte die Sinvollere sein. Hierzu geht man mit dem Tool regedit in die Registrierungsdatenbank und fügt den Wert
Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters
Value: SmbDeviceEnabled
Type: DWORD value (REG_DWORD)
Content: 0
hinzu. Durch Setzen des Wertes auf 0 wird CIFS deaktiviert. Allerdings wird Port 445 solange offen bleiben, bis das der Server neu gestartet (gebootet) worden ist.
Abschalten der RPC Dienste
Die TCP Ports 135 und 1025, sowie die UDP Ports 135, 1026 und 1027 werden von den RPC Diensten gebraucht. Sowohl der RPC Portmapper, als auch der COM Service Control Manager benutzen Port 135.
Nachrichtendienst
Port 1029 wird durch den Nachrichtendienst gebraucht. Nach Abschalten dieses Dienstes und Neustart des Systems ist dieser Port geschlossen. Außerdem bleibt UDP Port 135 geschlossen, da der letzte über UDP erreichbare RPC Dienst geschlossen wurde. Der COM Service Control Manager ist nicht per UDP erreichbar.
Befehl:
net stop messenger
sc config messenger= disable
Taskplaner
Der Task Scheduler horcht auf Port 1026. Durch deaktivieren dieses Dienstes und Neustart des Systems kann dieser Port geschlossen werden.
Befehl:
net stop Schedule
sc config Schedule= disable
IsmServ
Der Standortübergreifende Meldungsdienst lauscht auf Port 1025. Durch Deaktivieren und Neustart des Systems wird dieser Port geschlossen.
Befehl:
net stop IsmServ
sc config IsmServ= disable
Alternative Vorgehensweise
Mitunter werden die RPC Dienste gebraucht, sollen aber nicht im Netzwerk verfügbar sein (z.B. der Task Scheduler).
In diesem Fall kann man einen Schlüssel in der Registry hinzufügen.
Die folgenden Schlüssel Rpc\Linkage\ müssen erstellt werden in:
Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rpc\Linkage
Value: Bind
Type: REG_MULTISZ
Content: "0"
Da die Netzwerkinterfaces durchnummeriert werden und das Loopbackdevice die Nummer 0 hat werden mit diesem Schlüssel die RPC Dienste an das Loopbackdevice gebunden.
Abschalten des DCOM Dienstes
TCP Port 135 wird vom RemoteProcedureCall Dienst genutzt. Diesen Dienst kann man nicht einfach abmelden, da er den COM Service Control Manager beinhaltet, der von lokalen Prozessen benötigt wird.
Um den Port 135 zu schließen kann man folgendermaßen vorgehen: Man startet das dcomcnfg Programm und entfernt die "Verbindungsorientiertes TCP/IP" aus den Standardprotokolle.
Nun sollten alle Ports geschlossen sein.
Standarduser konfigurieren
Da Windows einen Vordefinierten Satz mit Benutzern installiert, sollte man sein Augenmerk auf diese richten. Hackern/Crackern sind diese nur allzu bekannt und demzufolge sind sie mit einer der ersten Angriffspunkte.
Folgende Benutzer kennt ein Windows 2000 Server nach der Installation:
Administrator
Gast
TsInternetUser
IUSR_server
IWAM_server
Grundsätzlich gilt: Accounts die nicht gebraucht werden haben auf einem Server nichts zu suchen, aber welche der o.g. Accounts werden nicht gebraucht???
Administrator
Da das Administrator Konto als Bekannt vorausgesetzt werden darf, ist es empfehlenswert, dieses umzubenennen. Danach richtet man ein neues Konto ein welches man Administrator nennt, aber nicht zur Gruppe der Administratoren hinzufügt. Für dieses Konto sollte zudem die Überwachung eingeschaltet werden, da man auf diese Art recht schnell erfährt, ob sich ein Unbefugter als Administrator am System zu schaffen machen will.
IUSR_server
Dieser Account dient dazu auf den IIS zugreifen zu können. Deswegen sollte man ihn nur entfernen, wenn man keinen Dienst anbietet, der den IIS braucht.
IWAM_server
Dies ist das IIS Prozesskonto, und somit sollte es nur entfernt werden, wenn der ISS nicht gebraucht wird.
TsInternetUser
Dieser Account wird vom Terminal Services Internet Connector Licensing benötigt. Das Passwort wird täglich gewechselt und dieser Vorgang wird mitprotokolliert selbst wenn der Dienst deaktiviert ist. Sollten die Terminal Services nicht benötigt werden, dann sollte dieser Account entfernt werden.
Gast
Dieses Konto sollte nach Möglichkeit deaktiviert werden. Allerdings sollte der Account nicht gelöscht werden, da ansonsten diverse Probleme auftauchen. Anzumerken ist hier, dass das Konto standardmäßig deaktiviert ist.
Erstellen eines Benutzers
Um nicht jede Arbeit am Server als Administrator erledigen zu müssen sollte mindestens ein Arbeitskonto eingerichtet werden, welches keine Administrationsrechte hat, und welches zur Erledigung des Tagesgeschäftes genutzt werden sollte.
Einspielen von Service Packs und Patchen
Da ein nicht gehärteter Server nicht an einem Netzwerk angeschlossen sein sollte, muss man die Service Packs, sowie die Patches die Microsoft zur Verfügung stellt anderweitig aufspielen. Am sinnvollsten ist es, sie mit einem schon vernetzten System vom Microsoft Server zu ziehen und auf einen Datenträger (derzeit meist CD-R(w)) zu spielen oder, sollte das nicht möglich sein, sie direkt auf Datenträger bei Microsoft zu bestellen. Leider bietet Microsoft keine Möglichkeit an, die Echtheit eines Downloads zu überprüfen (MD5 Checksumme, o. ä.). Deshalb ist bei einem Download mehr oder weniger Vertrauen angesagt. Da aber meistens gilt: Zeit ist Geld, wird die Möglichkeit eine CD von Microsoft zu bestellen in der Praxis wohl eher eine untergeordnete Rolle spielen.
Bei der Installation sollte man folgendermaßen vorgehen:
Zuerst das letzte aktuelle Service Pack installieren. Hierbei ist den Anleitungen von Microsoft Folge zu leisten. Im Anschluss daran ALLE Patches installieren, die seit Erscheinen des aktuellen Service Packs erschienen sind. Auch hier ist den Anweisungen von Microsoft Folge zu leisten.
Nach der Installation überprüfen ob nicht wieder Dienste aktiviert worden sind, die man eigentlich nicht haben wollte. Sollte dem so sein, müssen diese wieder deaktiviert werden.
Ist der Vorgang des Einspielens des aktuellen Service Packs sowie der nachfolgenden Patches erfolgreich verlaufen kann der Rechner in das Netzwerk eingebunden werden. Nun kann man mit dem Tool hfnetchk.exe nachsehen, ob ALLE Patches installiert sind oder ob man noch welche vergessen hat.
Ist alles fehlerfrei und komplett, so darf das Abhärten des Servers als beendet angesehen werden. Nun kann man die Dienste die man braucht durchkonfigurieren. Hierbei sollte darauf geachtet werden, dass die Dienste wenn möglich NICHT mit Administrationsrechten laufen.
Kontaktadresse