Günter Hartl beschreibt in seinen Streifzügen durch die digitale Welt immer wieder nützliche Handgriffe, die den Umgang mit dem PC erleichtern. In der kommenden Ausgabe PCNEWS-162 (erscheint im September) zeigt Günter, wie er seinen Schützlingen eine Basis-Absicherung für die Spaziergänge im Internet einrichtet. Es geht um das unabsichtliche Klicken auf gefährliche Seiten, die dann etwas am PC installieren, das man nur schwer los wird.

Im Internet werden Listen von potenziell gefährlichen Internetseiten publiziert. Sehr viele Einzelpersonen beteiligen sich an der Pflege dieser Verzeichnisse und stellen sie allen Interessenten kostenlos zur Verfügung.

Wir zeigen hier, wie man ein solches Verzeichnis am eigenen Rechner installiert; für Insider (Kurzfassung), für Durchschnittsuser (Langfassung). Einige Hintergrundinformation gibt’s in der Lernfassung.

Kurzfassung

Man hole sich von der Seite www.someonewhocares.org den dortigen Text für die Datei hosts und ersetze/ergänze die eigene Datei hosts durch diesen Text (ca. 14500 Zeilen).

Mit dieser Maßnahme werden als gefährlich eingestufte Seiten für jedes Programm am eigenen Rechner blockiert. Ohne irgendein weiteres Zusatzprogramm.

Nachteil: Man muss diese Prozedur von Zeit zu Zeit wiederholen, weil sich „das Böse“ immer wieder in neuem Gewand zeigt. Die Autoren dieser Seite aktualisieren den Inhalt sehr penibel.

Langfassung

Dan Pollock, ist der Herausgeber einer hosts-Datei, die gefährliche Internet-Adressen gar nicht erst bis zum Programm kommen lässt und bei einem versehentlichen Kontakt zu einer dieser Seiten auf die Loopback-Adresse 127.0.0.1 umlenkt, was zu einer Fehlermeldung führt. Diese hosts-Datei gibt es in zwei Versionen

Die erste Version (hosts/hosts) ersetzt die als gefährlich eingestuften Web-Adressen mit der Loopback-Adresse 127.0.0.1 die zweite (hosts/zero/hosts) auf die Adresse 0.0.0.0. Die zweite Version soll etwas schneller sein, ist aber – laut Autor – nicht auf allen Systemen einsetzbar.

Was steht in der hosts-Datei von Dan Pollock?

Die heruntergeladene hosts-Datei enthält mehr als 14500 Zeilen der folgenden Art:

...
127.0.0.1 bluewaffle.biz
127.0.0.1 bottleguy.com
127.0.0.1 bowlgirl.com
127.0.0.1 cadaver.org
127.0.0.1 clownsong.com
127.0.0.1 copyright-reform.info
...

Wenn also der Benutzer durch eine Interaktion oder ein Programm durch einen Zugriff eine der rechts stehenden Adressen, zum Beispiel cadaver.org anfordert, dann wird diese Anforderung zuerst mit dieser Liste verglichen. Steht der Name in der Liste, wird die Adresse 127.0.0.1 zurückgegeben und nicht die Adresse, die ein DN-Server dafür liefern würde, denn der DN-Server wird gar nicht erst gefragt. Die Anfrage geht ins Leere, noch bevor eine Auflösung über den DNS-Mechanismus erfolgt wäre.

Wo ist meine hosts-Datei?

Auf einem Windows-10-Rechner findet man die hosts-Datei im Pfad

C:\windows\system32\drivers\etc\

Die Datei besitzt keine Endung und ist ein einfacher Text.

Um die Datei zu editieren, muss der Editor mit Administratorrechten geöffnet werden. (Wenn man zum Editieren von Textdateien Visual Studio Code verwendet – sehr empfehlenswert -, muss man die Administratorrechte bei Aufruf nicht explizit angeben, denn wird beim Speichern gefragt, ob das Programm sie aktivieren soll.)

Vor dem Ersetzen der eigenen hosts-Datei muss man kontrollieren, ob diese Datei nicht etwa wichtige Einträge enthält, die von installierten Programmen dort eingetragen wurden und daher erhalten bleiben müssen. Ist das der Fall, muss man die runtergeladene Datei an die eigene hosts-Datei anhängen, andernfalls kann man die hosts-Datei einfach überschreiben.

Was steht normalerweise in der hosts-Datei?

Die kurze Antwort ist: nichts! Nach der Installation von Windows findet man etwa folgenden erklärenden Text in der Datei hosts:

# Copyright (c) 1993-2006 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 handle within DNS itself.
#       127.0.0.1       localhost
#       ::1             localhost

Das Raute-Zeichen ‚#‘ am Beginn einer Zeile kennzeichnet diese Zeile als einen Kommentar. Im obigen Beispiel hat also die hosts-Datei keine Wirkung. Die beiden letzten Zeilen sind aber interessant. Hier wird festgelegt, dass der Name „localhost“ als IP.Adresse 127.0.0.1 aufgelöst wird. ::1 ist die Loopback-Adresse im ip6-Adressraum.

So, wie hier abgebildet – also mit den #-Zeichen vor den beiden letzten Zeilen – würde die Eingabe von http://localhost im Browser eine Fehlermeldung „Die Webseite ist nicht erreichbar“ liefern. Entfernt man aber die Raute in den beiden letzten Zeilen, wird „localhost“ gleichbedeutend mit „127.0.0.1“, und dann sieht man die (Fehler-)meldung, die man auch bei der Eingabe von 127.0.0.1 gesehen hätte.

Wenn man eine solche einfache hosts-Datei am eigenen Rechner vorfindet, kann man sie durch die Datei von Dan Pollock ersetzen.

Test der hosts-Datei

Als Test könnte man Zeilen einfügen, die man nach dem Test wieder löscht (denn eine der potenziell gefährlichen Adressen in der hosts-Datei wird man möglichst nicht aufrufen), zum Beispiel:

127.0.0.1   facebook.com
127.0.0.1   www.facebook.com 

Nach dem Editieren der Datei hosts muss man alle Browserinstanzen schließen und den Browser neu öffnen, damit die Änderungen wirksam werden. Mit diesem Testeintrag sollte es nicht möglich sein, die Adresse von Facebook zu öffnen. Man sollte eine Fehlermeldung bekommen.

Will man Kinder von bestimmten Seiten fernhalten, kann man das auch auf diese Art einstellen; eine Art „Kindersicherung“.

Lernfassung

In den Anfängen des Internet stand die Ausfallsicherheit des Netzes im Vordergrund, das Internet war ja auch ein militärisches Projekt. Dass man die einzelnen Rechner nicht mit einer IP, sondern mit einem Namen bezeichnen muss, war auch damals schon klar. Weil die Zahl der Rechner anfangs noch auf einem Blatt Papier Platz fand, bestand die damalige DNS-Datenbank aus einer einzigen Datei, die den Namen hosts hatte und heute immer noch hat.

Diese Datei hosts wurde zwischen den beteiligten Rechnern von Zeit zu Zeit händisch upgedatet.

Das rasante Wachstum des Netzwerks machte es 1983 erforderlich, dass dieses Internet-Telefonbuch automatisch und unterstützt durch eigene Protokolle ausgetauscht werden musste. Das ist das bis heute existierende Domain Name System, eine verteilte Datenbank, die ihren Inhalt in wählbaren Zeitabständen automatisch aktualisiert.

Aber die hosts-Datei ist geblieben. Sie enthält heute praktisch keine Einträge mehr, alle Anfragen über IP-Adressen werden über die DN-Server ermittelt.

Diese Ermittlung beginnt aber auf jedem Rechner immer zuerst in der hosts-Datei. Erst wenn die Hosts-Datei keinen Übereinstimmung findet, geht die Anfrage an den im Router eingetragenen DNS weiter.

127.0.0.1

Das Wesen des Internets ist die Kommunikation zwischen Rechnern und damit das Abrufen von Inhalten fremder Rechner. Jeder Rechner, der im Internet kommunizieren will, benötigt eine öffentliche IP-Adresse. Ein Rechner kann sowohl andere Rechner (als Client) befragen, also zum Beispiel wäre der Browser ein Programm, das mit anderen Rechnern kommuniziert. Aber ein Rechner kann selbst auch von anderen kontaktiert werden, sofern er Inhalte anzubieten hat, er ist dann ein Server für einen oder mehrere Ports, auf deren Anfrage er reagiert.

Jeder unserer privaten Rechner besitzt durch den gemeinsamen Router eine IP-Adresse (zum Beispiel 192.168.0,101, 192.168.0.102…).und man kann zu Hause von jedem Rechner jeden anderen Rechner über dessen IP-Adresse im Browser ansprechen. Da aber unsere Rechner in der Regel über keine eignen Webserver verfügen, bekommt man bei einer solchen Ansprache eine Fehlermeldung, etwa „Die Webseite ist nicht erreichbar.“

Aber, um das zu prüfen, braucht man immer zwei Rechner, einen der fragt und einen der gefragt wird.

Damit ein Rechner sich selbst prüfen kann, gibt es die so genannte Loopback-Adresse 127.0.0.1. Jeder Rechner mit Internet-Protokoll besitzt diese Adresse implizit. Man kann diese Adresse von außen nicht ansprechen, denn sie existiert nur im eigenen Rechner. Jeder, der im Browser diese Adresse eingibt, betrachtet immer die Reaktion des eigenen Rechners.

Und was sieht man bei der Eingabe von 127.0.0.1?

Vorausgesetzt man benutzt einen Browser, dann fragt der Browser eine IP-Adresse mit dem Port 80 als zusätzliches Merkmal ab. Du kannst es probieren, im Normalfall siehst Du eine Fehlermeldung, und das ist OK, weil am PC kein Webserver installiert ist, der eine Antwort liefern könnte.

Der Aufruf von 127.0.0.1 im Browser liefert normalerweise eine Fehlermeldung

127.0.0.1 ist also die Adresse des eigenen Rechners und sie existiert nur am Rechner selbst und ist von außen nicht ansprechbar. Immer. Auf jedem Rechner. Gibt man 127.0.0.1 im Browser ein, sieht man jene Antwort, die jemand im Internet sehen würde, wenn er diesen Rechner am Port 80 ansprechen würde. Man sieht sich also selbst, ohne dazu ein zweites Gerät zur Diagnose zu brauchen.

localhost

Da wir im Internet normalerweise mit sprechenden Namen arbeiten, ist es üblich, einer IP-Adresse einen Namen zuzuweisen. Die Adresse 127.0.0.1 ist aber definitionsgemäß eine Adresse, die es in einem DN-Server nicht geben kann, weil sie ja nur auf jedem Rechner existiert und nach außen keine Wirkung hat. Daher kann man diese Adresse auch nicht durch das DNS-System auflösen lassen. Aber die hosts-Datei kann es. Wenn man die folgenden Zeilen in die hosts-Datei schreibt…

127.0.0.1 localhost
127.0.0.1 meinrechner

…kann man im Browser statt http://127.0.0.1 auch http://localhost oder http://meinrechner schreiben. (Das vorangestellte „http://“ kann wichtig sein, weil der Browser wegen der automatischen Websuche versuchen könnte, das Wort „localhost“ oder „meinrechner“ im Internet zu suchen statt darunter eine lokale Adresse zu verstehen, denn Punkte sind in dem Text nicht enthalten, die auf eine Adresse hindeuten würden.

Man sieht an dieser Stelle, dass man das Wort „localhost“ durch jedes andere ersetzten könnte.

Der folgende freundliche Browser bietet bei der Eingaben von „localhost“ eine vermutete Internetadresse an oder eine Google-Suche.

Und was passiert dann?

Die Reaktion von localhost (bzw. von 127.0.0.1) hängt von der Konfiguration des eigenen Rechners ab. Die Fehlermeldungen der Standardkonfiguration wurden oben gezeigt. Das sind die, bei denen am Rechner kein Webserver installiert ist. Wenn man aber über „Programme und Features“ einen lokalen Webserver installiert (siehe Webserver), sieht man bei einem Aufruf von http://localhost dessen Startseite:

Bei Windows befindet sich die Startseite defaultmäßig hier:

C:\inetpub\wwwroot

Die Datei, die dort aufgerufen wird, heißt iisstart.htm. Diese Startdatei kann auch umbenannt werden, und es kann auch mehrere Startdateien geben.

Ich habe auf meinem Arbeits-PC einen Webserver installiert und dieser Webserver ist auch aus dem Internet sichtbar. (siehe Mein PC im Internet) Er hat die Adresse http://ffiala.ddns.net. Ohne Dateiangabe sieht man dort eine Bitcoin-Adresse. Überweisen hat noch niemand etwas.

hosts für Entwicklung

Ich selbst benutze die hosts-Datei dazu, dass Webprojekte, die am lokalen Webserver einem Projekt zugeordnet werden, einen sprechenden Namen erhalten. Dem realen Domänennamen, den es im Internet gibt, wird die Endung .localhost angehängt. Der Name wird lokal aufgelöst und das lokale Verzeichnis wird angesprochen.

Beispiel:

Webanwendung: http://buero.clubcomputer.at
Lokale Kopie: http://buero.clubcomputer.at.localhost

hosts für Blockierungen

Nehmen wir an, die Seite xyz.com wird verdächtigt, sich aggressiv zu verhalten. Dann genügt folgender Eintrag in der Datei hosts:

127.0.0.1 xyz.com

Jede Anfrage an xyz.com wird an die eigene Adresse weitergeleitet.

Sollten in der Domäne xyz.com gefährliche Subdomänen existieren, muss man diese auch angeben:

127.0.0.1 xyz.com
127.0.0.1 abc.xyz.com
127.0.0.1 def.xyz.com 

Nehmen wir an, ein Programm sendet dubiose Anfragen an unbekannte Adressen. Wenn diese unerwünschten Kontakte die Funktionalität nicht beeinträchtigen, kann man sie durch einen Eintrag in der hosts-Datei ins Leere laufen lassen.

hosts zur Abwehr von Angriffen

Günter Hartl verweist in einem Beitrag auf die Möglichkeit, eine Liste als gefährlich eingestufter Webserver in die hosts-Datei einzutragen.

Wenn man daher versehentlich auf einen dieser gefährlichen Links klickt, passiert gar nichts, weil die Anfrage auf die Adresse 127.0.0.1 umgelenkt wird und von dort eine Fehlermeldung zurückkommt. Diese Technik wird auch im Wikipedia-Artikel zur hosts-Datei beschrieben.

Der Vorteil dieser Technik ist, dass – anders als bei Browser-Plugins – sich diese Blockierung systemweit auswirkt und alle Programme betrifft, nicht nur Browser.

Der Nachteil ist, dass man die Datei von Zeit zu Zeit selbst aktualisieren muss. Außerdem ist der Zugriff auf diese Textdatei nicht optimiert und der Zugriff auf Webseiten kann sich dadurch verlangsamen. Mir ist aber eine Verlangsamung der Zugriffe nicht aufgefallen.

Links

Zur Werkzeugleiste springen