externe Scripte oder URLs via hosts unterbinden


© März 2020, letzte Änderung am 30.11.20

Übersicht

URLs ausschliessen mit Lokal-Horst ;-)

Die lokale hosts Datei, Vorläufer vom DNS, ist zwar ein Relikt vergangener Tage, aber befindet sich so gut wie auf jedem System und ist daher auch ein guter Ansatz lästige URLs auszusperren.

Da man hier auch auf gefälsche URLs verweisen kann (Hosts file Hijack von Kleinweich;-), ist die Datei ziemlich kritisch und nur mit Administrator Rechten bearbeitbar. Alles was hier aussortiert wird, wird gar nicht mehr den PC verlassen, egal welcher DNS folgt. Bitte auch daran denken, hier sehr sorgfältig zu arbeiten, da sonst die Stabilität des Systems gefährdet ist...

Windows hosts-Datei

Die hosts-Datei befindet sich unter dem Pfad %windir%\system32\drivers\etc , welchen man einfach in die Kopfzeile des Explorers einfügen kann und mit Return bestätigt.
z.B. konkret: C:\Windows\System32\drivers\etc.
Den Inhalt kann man sich angucken, wenn man mit rechter Maus auf der hosts-Datei den "öffnen mit" Dialog anwählt und einen Editor auswählt.

Die Standard Windows hosts-Datei sieht wie folgt aus:

 # 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 # für IPv6 

Weitere Zeilen kann man darunter einfügen in Form:
0.0.0.0  URL oder 127.0.0.1  URL.

Die Wirkung ist gleich, der Unterschied ist 127.0.0.1 = localhost und zeigt somit auf sich selbst (loopback)
und 0.0.0.0 ist eine invalide nicht erreichbare Adresse.

Für das Einfügen ist zunächst ein Text-Editor im Admin-Modus zu starten.
z.B. im Total-Commander mit rechter Maus auf das Editor-Symbol gehen und "als Administrator" auswählen.
Im Editor:   Datei > Öffnen   eingeben und im Fenster in der Fußzeile "Alle Dateien" auswählen.
Dann in der Kopfzeile die Adresse   %windir%\system32\drivers\etc   hinein kopieren.
Nach dem Return, kann die Datei hosts ausgewählt werden. Nun können beispielsweise folgende Zeilen ergänzt werden.

...
# ip-adresse   Domainname=FQDN  [Rechnername=hostname]   # Kommentar
  0.0.0.0   googletagmanager.com 
  0.0.0.0   ajax.googleapis.com
  0.0.0.0   gstatic.com
  0.0.0.0   youtube.com
  0.0.0.0   www.youtube.com
  0.0.0.0   m.youtube.com
# 0.0.0.0   telemetry.microsoft.com  # kann nicht ausgeklammert werden, da MS das extra behandelt

Ich hoffe man kann an der Struktur erkennen, das keine Platzhalter möglich sind und wie auskommentiert wird.

Testen kann man via   Win-Taste > cmd > ping URL.
z.B. ping youtube.com
Es sollte dann die Meldung kommen "...konnte nicht finden"

Eine zusätzliche Sicherheit ist es, wenn man selbst für den Administrator die Datei hosts auf Read-Only setzt.

Sinnvoll ist auch den Pfad in der Registry zu überprüfen.
Dies geschieht mit   Win-Taste > dann Eingabe von Regedit.

Siehe \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath
Der "DataBasePath" sollte auf %SystemRoot%\System32\drivers\etc stehen.

Weitere Details z.B. windowspro.de   hosts-Datei bearbeiten.
English: winhelp2002.mvps.org/hosts.htm  
English: someonewhocares.org   hosts

Debian-Linux hosts Datei

In Debian-Systemen oder Debian-Derivaten z.B. Linux-Mint und wahrscheinlich in allen übrigen Linuxsystemen ebenso, befindet sich die hosts-Datei unter /etc.

ls -la ho* 
-rw-r--r-- 1 root root   9 Aug  7  2006 host.conf
-rw-r--r-- 1 root root   4 Aug 16  2018 hostname
-rw-r--r-- 1 root root 183 Aug 16  2018 hosts 
-rw-r--r-- 1 root root 411 Aug 16  2018 hosts.allow
-rw-r--r-- 1 root root 711 Aug 16  2018 hosts.deny 

Die Hosts-Datei /etc/hosts sieht geringfügig anders aus als unter Windows.

127.0.0.1  localhost	
127.0.1.1  ab1			

# The following lines are desirable for IPv6 capable hosts 
::1     localhost ip6-localhost ip6-loopback 
ff02::1 ip6-allnodes 
ff02::2 ip6-allrouters

# ip-adresse   Domainname  [Rechnername]   # Kommentar

ab1 ist hier der Name des Computers, welcher auch in der Datei /etc/hostname eingetragen ist.
Der entsprechende FQDN - fully qualified domain name, welche für die externen Adressen erwartet wird, wäre in meinem Fall ab1.fritz.box. Wer den Namen nachträglich ändern möchte, kann das hier tun. Für ein Samba-Laufwerk darf der Hostname nicht länger als 15 Zeichen sein.

Wie bereits erwähnt, sind nur Buchstaben, Zahlen, der Punkt und Minus erlaubt.
Wildcards, wie "*", sind nicht möglich.
Es wird exakt nur das geblockt was eingegeben wird.
Also z.B. "google-analytics" blockiert nicht "ssl.google-analytics.com".
Einen Geschwindigkeitsvorteil hat man wenn man 0.0.0.0 statt 127.0.0.1 verwendet.

Hat man den eigenen Namen (hier ab1) editiert, ist es noch erforderlich ein Skript zu starten, um die Änderungen zu übernehmen. Ansonsten werden die übrigen Änderungen sofort aktiv.

su
nano /etc/hosts
...
# ip-adresse   Domainname=FQDN    # Kommentar
  0.0.0.0   googletagmanager.com 
  0.0.0.0   ajax.googleapis.com
  0.0.0.0   gstatic.com
  0.0.0.0   youtube.com
  0.0.0.0   www.youtube.com
  0.0.0.0   m.youtube.com

nano /etc/hostname

/etc/init.d/hostname.sh                          Skript starten zur Übername des neuen Hostnamen

hostname -f                                      Überprüfung des Hostnamens
b41

Sollte es Probleme mit der Umsetzung geben, kann man folgende Datei überprüfen.

cat /etc/dhcp/dhclient.conf
... 
#send host-name "andare.fugue.com";
send host-name = gethostname();                  kontrollieren, sollte so gesetzt sein

Sinnvoller ist es einen Proxy-Server zu verwenden, wie er in manchen Firewalls eingebaut ist oder einen DNS (z.B. dnsmasq) wie er mit Pi-hole realisiert wird.
Wie man Dnsmasq lokal auf einem DEB-System installiert, konfiguriert und benutzt habe ich mal beschrieben.

Siehe configserverfirewall.com   Config Server Firewall

Android hosts Datei

Zum Anfang