hosts: Sinn, Funktion und Nutzen der Datei verständlich erklärt

Scheinweltname

Lt. Commander
Registriert
Jan. 2008
Beiträge
1.743
Weil ich die Funktionsweise der hosts Datei [unter Windows] jetzt endlich selber kapiert habe, formuliere ich das hier mal für Leute, die aus dem Wikipedia-Eintrag auch nicht schlau werden und noch nicht wissen bzw. verstehen, wie die hosts-Datei als Webfilter genutzt werden kann. Sehr hilfreich war für mich dieser link.


Die Datei hosts


Ort:
Windows-Ordner --> System32 --> drivers --> etc
(die Datei hat keine Endung, lässt sich mit dem Editor bzw. jedem Textprogramm öffnen und ggf. erstellen, ist aber meistens schreibgeschützt und Änderungen erfordern ggf. Admin-Rechte)

Die normale Beispiel-hosts-Datei, die bei der Installation von Windows automatisch erstellt wird, hat diesen Inhalt:
# Copyright (c) 1993-1999 Microsoft Corp.
#
# Dies ist eine HOSTS-Beispieldatei, die von Microsoft TCP/IP
# für Windows 2000 verwendet wird.
#
# Diese Datei enthält die Zuordnungen der IP-Adressen zu Hostnamen.
# Jeder Eintrag muss in einer eigenen Zeile stehen. Die IP-
# Adresse sollte in der ersten Spalte gefolgt vom zugehörigen
# Hostnamen stehen.
# Die IP-Adresse und der Hostname müssen durch mindestens ein
# Leerzeichen getrennt sein.
#
# Zusätzliche Kommentare (so wie in dieser Datei) können in
# einzelnen Zeilen oder hinter dem Computernamen eingefügt werden,
# aber müssen mit dem Zeichen '#' eingegeben werden.
#
# Zum Beispiel:
#
# 102.54.94.97 rhino.acme.com # Quellserver
# 38.25.63.10 x.acme.com # x-Clienthost

127.0.0.1 localhost

Der Sinn der hosts-Datei

IP-Adressen einem Namen zuordnen (Namensauflösung) und darauf aufbauend Verbindung bzw. Umleitung (als Ergänzung oder gar Ersatz von Namensauflösungsmöglichkeiten wie DNS) bewerkstelligen.

Adressen wie "www.google.de" dienen nur der Benutzerfreundlichkeit, die eigentliche Adresse dahinter ist die Zahlen-Reihe (IP-Adresse) mit den drei Punkten, zum Beispiel 169.254.234.24, ggf. mit Angabe des Netzwerkports (in diesem Fall 80; der Standard-Port fürs Websurfen): 169.254.234.22:80 (HTTP). [1] [2]

Wenn man sich in einem Netzwerk bzw. im Internet bewegt und in einem Browser z.B. "www.google.de" eingibt, dann muss ja irgendeine Instanz die zu diesem Text zugehörige IP-Adresse suchen. Der erste Schritt ist da die hosts-Datei: Es wird dort nach "www.google.de" gesucht. Die hosts-Datei gilt für das gesamte System, also für jeden Browser und jedes Programm, individuelle Anpassungen an Programme sind nicht nötig.
Wenn in der hosts-Datei nichts gefunden wird, dann wird die IP-Adresse meistens per DNS (Domain Name System) neu gesucht. Normalerweise übernimmt ein DNS-Server oder der eigene Router diese Aufgabe. [3]

Wenn aber z.B. ein in die Adressleiste eines Browsers eingetippte Adresse tatsächlich als Eintrag in der hosts-Datei steht, dann verbindet der Rechner mit der davor stehenden IP-Adresse, ohne die IP-Adresse neu "aufzulösen", d.h. zu suchen.


fiktives Beispiel [4] :
127.0.0.1 localhost
169.254.234.22 w*ww.google.de
Folge: Wenn man "www.google.de" eingibt, landet man auf der Website/ dem Rechner mit der IP-Adresse 169.254.234.22, insofern eine Verbindung möglich ist.

Das lässt sich leicht für kriminelle Zwecke missbrauchen, indem man auf Seiten mit Schadcode, Browser-Plugin-Installationsversuchen, Angeboten für Scareware usf. umgeleitet wird. D.h. dass "www.google.de" nicht mit der IP-Adresse von Google verbunden wird, sondern mit einer anderen. Hinterhältige Umleitungen führen z.B. auf Seiten, die genauso aussehen wie die gesuchte Seite, die aber im Hintergrund noch Script-Code (Keylogger o.ä.) oder andere Verbindungen öffnen (z.B. bei Phishing-Seiten). Erschwerend kommt hinzu, dass in der Adressleiste des Browsers trotz der Umleitung immer noch die eingegebene Adresse steht. Wer also beim Online-Banking u.ä. sicher sein will, muss immer auf die Anzeige des "Schlosses" im Browser achten, was bestätigt, dass die Seite über eine verschlüsselte und außerdem per Zertifikat 'beglaubigte' Verbindung aufgerufen wurde. Hinweise zum Umgang mit Zertifikaten siehe Post #8.


[Passage entfernt, siehe Post #4, Scheinweltname]

[Passage entfernt, siehe 2. Zitat von Jesterfox Post #2, Scheinweltname]

Wer also andere Einträge als den üblichen 127.0.0.1 localhost in der eigenen hosts-Datei findet, muss nicht zwingend Opfer von Schadsoftware geworden sein. Vorsicht ist aber in jedem Fall geboten; vor allem sollte geprüft werden, ob die IP-Adressen mit Trojanern, Viren und Co. in Verbindung stehen. Dazu sollte man die IP-Adresse bei einem WhoIs-Dienst eingeben (z.B. bei heise). Dort wird dann angezeigt, wie der Anbieter heißt und aus welchem Land er kommt. [5]


Die hosts-Datei als Adress-Filter

Manche vertrauenswürdigen Schutz-Programme, wie z.B. Spybot Search & Destroy, verändern die hosts-Datei, um den Zugriff auf bestimmte Adressen zu blockieren. Wenn man mit Spybot den Rechner per "Immunisieren" schützt (und das standardmäßig aktivierte Häkchen bei "Global: Hosts" nicht entfernt), dann werden der hosts-Datei (mit den derzeitigen Update-Definitionen (11.10.2009)) ganze 11.805(!!) Einträge hinzugefügt (die Datei ist dann ca. 350KB groß).

Auszug aus einer mit Spybot S&D immunisierten hosts Datei [4]
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host

# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost

127.0.0.1 localhost
::1 localhost
# Start of entries inserted by Spybot - Search & Destroy
127.0.0.1 w*ww.007guard.com
127.0.0.1 007guard.com
127.0.0.1 008i.com
127.0.0.1 w*ww.008k.com
127.0.0.1 008k.com
127.0.0.1 w*ww.00hq.com
127.0.0.1 00hq.com
127.0.0.1 010402.com
127.0.0.1 w*ww.032439.com
127.0.0.1 032439.com
127.0.0.1 w*ww.0scan.com
127.0.0.1 0scan.com
127.0.0.1 1000gratisproben.com
127.0.0.1 w*ww.1000gratisproben.com
127.0.0.1 1001namen.com
127.0.0.1 w*ww.1001namen.com
127.0.0.1 100888290cs.com
127.0.0.1 w*ww.100888290cs.com
127.0.0.1 w*ww.100sexlinks.com
127.0.0.1 100sexlinks.com
127.0.0.1 10sek.com
127.0.0.1 w*ww.10sek.com
127.0.0.1 w*ww.1-2005-search.com
127.0.0.1 1-2005-search.com
...

Das Filtern funktioniert so:

Wenn jetzt der Rechner eine unseriöse Adresse, die in der Liste enthalten ist, aufrufen will, dann wird die Verbindung nicht mit der unseriösen Seite (bzw. ihrer IP-Adresse) hergestellt, sondern mit dem localhost 127.0.0.1, dem eigenen Rechner. Das bedeutet effektiv, dass keine Verbindung zu einer womöglich mit Schadcode verseuchten Seite aufgerufen wird.

Allerdings greift dieser Schutz nur, wenn man die Adresse in Textform schreibt bzw. ein Programm nicht direkt eine IP-Adresse, sondern einen Namen z.B. an einen Browser übergibt. [Passage geändert, Scheinweltname]

Die formalisierte Syntax der hosts-Datei:
[IP-Adresse] [Name, den man z.B. in die Adresszeile des Browsers schreibt, um die IP-Adresse zu erreichen] [ggf. Kommentare, beginnend mit "#"]

DISCLAIMER
Auch wenn ich natürlich davon ausgehe, dass alle meine Informationen korrekt sind, so bin ich doch kein Netzwerk-Experte, sondern habe das alles durch Recherche erschlossen. Das bedeutet vor allem, dass ich keine Verantwortung für die Folgen von manuellen Veränderungen der Datei übernehme; dieser Text ist KEINE Bedienungsanleitung für das "tweaking" der Datei hosts. Im Zweifelsfall also immer selber recherchieren oder Experten fragen!

Wer sachliche Fehler findet, der antworte mir bitte unbedingt per PN oder schreibe eine Antwort in diesen Thread. Scheinweltname

______________Fußnoten_____________
[1] Die eigene IP-Adresse mit der zugehörigen Reverse-DNS (der Name des eigenen Rechners im Internet) kann man z.B. hier prüfen: https://www.grc.com/x/ne.dll?bh0bkyd2.

[2] Um die Nutzung von Internet-IP-Adressen zu vermeiden, dient hier eine willkürlich ausgewählte Adresse aus dem Adressraum von lokalen Netzwerken (ZeroConfig-Netzwerke) als Beispiel.

[3] Die Adresse des eigenen DNS-Servers kann man abrufen, indem man in die Eingabeaufforderung ipconfig /all eingibt oder bei seiner Netzwerkverbindung (Adaptereinstellungen) unter "Status"-->"Details" nachsieht. [5]

[4] Damit die links nicht klickbar sind, habe ich das rote Sternchen eingefügt. Eigentlich müsste an den entsprechenden Stellen also "www" statt "w*ww" stehen!

[5] Benutzer von Routern könnten bei sich ggf. die Adresse ihres Routers als DNS-Server finden. Einträge aus dem ZeroConfig-Adressraum 169.254.0.0/16 (d.h. alle möglichen Adressen zwischen 169.254.1.0 bis 169.254.254.255) und dem Bereich 192.168.0.0 bis 192.168.255.255 (nutzen die meisten/ alle Router) sollten - unter Vorbehalt - sicher sein (es sei denn, man hätte Angreifer im eigenen lokalen Netzwerk). Diese Adressen liefern bei ip2location "Private IP Address Lan", was aber in Ordnung ist.
 
Zuletzt bearbeitet:
Sieht soweit ganz gut und verständlich aus. 2 Ergänzungen hätte ich aber:

Scheinweltname schrieb:
Erschwerend kommt hinzu, dass in der Adressleiste des Browsers trotz der Umleitung immer noch die eingegebene Adresse steht. Wer also beim Online-Banking u.ä. sicher sein will, muss immer auf die Anzeige des "Schlosses" im Browser achten, was bestätigt, dass die Seite über eine verschlüsselte und außerdem per Zertifikat 'beglaubigte' Verbindung aufgerufen wurde.

Hier sollte man nicht nur auf das Schloss an sich, sondern auch auf das Zertifikat selbst (Aussteller und Domain für die es ausgestellt wurde) achten. Vom Browser gemeldetete Zertifikatsfehler sind ernst zu nehmen! (auch wenn gerne eine schlampige Verwendung seitens des Betreibers der Grund ist)

Scheinweltname schrieb:
Dabei könnte "Start" für jede beliebige lange Text-Adresse stehen. Man muss nur "Start" in die Adresszeile eingeben, und schon landet man auf der Website, die man vorher nur unter der ellenlangen Adresse erreicht hat.

Diese Abkürzung funktioniert nur mit dem Doaminnamen, nicht mit vollständigen Pfaden und ist auch dann nicht zuverlässig, da manche Webseiten den "richtigen" Namen benötigen (wenn sogenannte Named VHosts auf dem Server laufen).
 
Jesterfox schrieb:
Hier sollte man nicht nur auf das Schloss an sich, sondern auch auf das Zertifikat selbst (Aussteller und Domain für die es ausgestellt wurde) achten. Vom Browser gemeldetete Zertifikatsfehler sind ernst zu nehmen! (auch wenn gerne eine schlampige Verwendung seitens des Betreibers der Grund ist)
Bislang sind mir nur zwei Arten von Zertifikatfehler untergekommen:
  • Uni-Bibliotheken bzw. Uni-EDV-Dienste stellen offenbar für sich selbst aus. Da hatte ich bislang Probleme bei Uni Bielefeld, Uni Dortmund und Uni Düsseldorf.
  • Außerdem kann es passieren, dass sich z.B. nach einem Image-Backup oder bei Problemen mit dem CMOS (leere BIOS-Batterie!) eine falsche Systemzeit eingestellt hat. Firefox hat beim Login-Versuch beim T-Online-Mail-Account über ein ungültiges Zertifikat gemeckert, weil es noch gar nicht gültig war (die Systemzeit war auf 2008 eingestellt, es war Mitte 2009 und das Zertifikat lief seit Anfang 2009:D)

Jesterfox schrieb:
Diese Abkürzung funktioniert nur mit dem Doaminnamen, nicht mit vollständigen Pfaden und ist auch dann nicht zuverlässig, da manche Webseiten den "richtigen" Namen benötigen (wenn sogenannte Named VHosts auf dem Server laufen).
Hatte das Ganze auch nur abgeleitet aus der Funktionsweise von hosts. So einfach ists dann aber wohl doch nicht ;). Wie steht es denn mit dem Beispiel im lokalen Netzwerk wie "PetrasRechner"? Geht das (hab kein Netzwerk zum Testen)? (Hab die Syntax mit "start" gerade mal am Beispiel Computerbase.de ausprobiert. Funktioniert tatsächlich nicht). Und was ist mit "127.0.0.1 169.254.234.22", geht das? Kann man so die IP-Adresse auf den localhost umleiten? Bzw. könnte man statt auf den localhost auch auf jede beliebige IP-Adresse umleiten?
 
Zuletzt bearbeitet:
Hoho ... Du schreibst hier ein Tutorial/HowTo ohne es vorher getestet zu haben? Gewagt sag ich mal!

Also das mit PetrasRechner funktioniert natürlich nicht, weil PetrasRechner keinen Webserver am laufen hat. Du kannst ja nicht einfach mit einem Browser auf einen anderen PC zugreifen. LAN-Freigaben sehen wieder anders aus als Web-IPs.
 
mumpel schrieb:
Hoho ... Du schreibst hier ein Tutorial/HowTo ohne es vorher getestet zu haben? Gewagt sag ich mal!
Ich hab ganz dick und in rot im Disclaimer gesagt, dass es KEINE Bedienungsanleitung zum Tweaking sein soll, d.h. KEIN HowTo!

Außerdem habe ich es vorher ausprobiert; und ich konnte mich erfolgreich durch die Eingabe "www.computerbase.de" auf google.de umleiten. Dachte, dass andere Adressen dann auch funktionieren würden.

Aber danke wegen des anderen Hinweises. Die Passage ist gelöscht.
 
Zuletzt bearbeitet:
Ein Angreifer könnte auf der Zielseite ebenfalls ein selbstausgestelltes Zertifikat verwenden. Bis auf die Unterschrift einer vertrauenswürdigen Zertifizierungsstelle könnte es alle Angaben des echten Zertifikats enthalten (so ein Zertifikat selbst zu bauen ist nicht sonderlich schwer und man kann reinschreiben was man will).
 
Und worauf muss man dann achten, wen man prüfen will, ob das Zertifikat echt ist?
 
Ein Zertifikat sollte immer von einer Zertifizierungsstelle die im Browser hinterlegt ist zertifiziert sein (Verisign ist wohl die bekannteste) und auch auf die Richtige Person/Organistation und Domain ausgestellt sein. Nur so kann man sicher sein, dass die Seite auch tatsächlich das Original ist (die Zertifikate sind ja nicht nur zum Verschlüsseln sondern eben auch um die Echtheit sicherzustellen, sozusagen der Personalausweis der Webseite)

Bei selbstzertifizierten sollte man vorsichtig sein. Bei manchen Seiten kann es einen egal sein (weil man nichts kritisches dort macht), aber bei Onlinebanking oder ähnlichem ist das ein No-Go. Wenn man die Seite kennt und dem Zertifikat vertraut (man weis, dass es das richtige ist) kann man dieses eine auch in den Browser importieren, damit er nicht mehr meckert. Das hat den Vorteil, dass ein erneutes erscheinen der Meldung auf eine Änderung im Zertifikat hinweist.

Andere Fehler wie falsche Domain sollten einen stuzig machen. Ein abgelaufenes Datum für die Gültigkeit ist auch unschön, weil da jemand geschlampt hat...


Der neueste Firefox ist da auch recht hartnäckig daran einen zu hindern auf eine Webseite zu gehen, bei dem das Zertifikat unstimmigkeiten aufweist. Andere Browser sollten einen auch darauf hinweisen wenn etwas nicht stimmt. Das wichtigste ist halt diese Hinweise ernst zu nehmen und nicht wie manch andere Meldung einfach wegzuklicken.
 
127.0.0.1 w*ww.google.de
127.0.0.1 google.de

Habe ich probehalber eingetragen. Funktioniert nicht. Warum?

Egal, welche Seite ich eintrage, sie wird ganz normal aufgerufen.

Das hatte ich vor Jahren schon mal getestet, da ging's auch nicht.
 
Zuletzt bearbeitet:
Core2Quad schrieb:
127.0.0.1 w*ww.google.de
127.0.0.1 google.de

Habe ich probehalber eingetragen. Funktioniert nicht. Warum?

Egal, welche Seite ich eintrage, sie wird ganz normal aufgerufen.

Das hatte ich vor Jahren schon mal getestet, da ging's auch nicht.
wenn das Vorgehen richtig war (hosts-Datei ohne Datei-Endung (die Original-Datei verändert oder neu erstellt? Der Editor hängt beim Speichern automatisch ein *.txt dran, wenn man nicht drauf achtet! Syntaxfehler beim Neu-Erstellen?)? Ein "#" vor dem Eintrag? Datei im richtigen Ordner? Datei wirklich gespeichert und nicht getestet, als die Datei noch offen war? ...), dann wüsste ich darauf keine Antwort.

Vielleicht liegts an irgendwelchen Proxys. Vielleicht kann man auch irgendwo einstellen, dass die hosts-Datei bei der DNS-Auflösung ignoriert wird.
 
Zuletzt bearbeitet:
Jetzt hammas. Die Sternchen mussten raus :D
Die waren für die Forensoft, nehme ich an. Hättest du mal drauf hinweisen können.

Und Google.com musste auch noch rein.

Naja, und
127.0.0.1 localhost :)
 
Zurück
Oben