Google und Facebook IP-Adressen blockieren

1. Stecker ziehenGoogle blockieren

Im vierten Teil der Artikelserie Your phone – Your data habe ich beschreiben, wie ihr mit den Custom-Scripts von AFWall+ die IP-Adressen von Facebook blockieren könnt. Nahezu wöchentlich erhalte ich Anfragen, wie auch IP-Adressen von anderen »Datensammlern« direkt in AFWall+ bzw. iptables blockiert werden können. Denn es ist gar nicht so einfach alle relevanten IP-Adressblöcke eines Unternehmens zu identifizieren, um sie anschließend zu sperren.

Der Hintergrund ist einfach: Wer bspw. keine Berührungspunkte zu Google oder Facebook hat, sprich deren Dienste nicht nutzt, der möchte auch keine Informationen dorthin übertragen. Auf vielen Webseiten im Internet sind allerdings irgendwelche »Social Media Buttons« eingebunden oder innerhalb von Apps werden direkt Bibliotheken von Google und Co. verwendet, die wiederum eine ungewollte Verbindung aufbauen. Wir wissen also nicht, wo sich Google und Facebook überall »versteckt«.

Wir müssen also selbst aktiv werden und den Stecker ziehen. Natürlich unterbinden wir damit nur die Datenübertragung von unseren Geräten. Wenn euch bspw. jemand in seinem Adressbuch gespeichert hat und Facebook nutzt, dann seid ihr dort vermutlich auch längst »bekannt«.

2. IP-Adressen abfragen

Über nslookup lassen sich bspw. einige IP-Adressblöcke von Google identifizieren:

nslookup -q=TXT _spf.google.com 8.8.8.8
nslookup -q=TXT _netblocks.google.com 8.8.8.8
nslookup -q=TXT _netblocks2.google.com 8.8.8.8
nslookup -q=TXT _netblocks3.google.com 8.8.8.8

Allerdings sind das bei weitem nicht alle IP-Adressen. Wie erhalten wir also eine nahezu vollständige Liste aller IP-Adressblöcke? Typischerweise haben ISPs, aber auch große internationale Unternehmen eigene AS-Nummern (ASN). Hinter solch einem autonomen System (AS) verbirgt sich eine Ansammlung von IP-Netzen, welche bspw. über das  interne Routing-Protokoll (IGP) miteinander verbunden sind. Internationale Unternehmen wie Google oder Facebook haben ihre eigene ASN, wo im Idealfall alle zugehörigen IP-Netze registriert sind:

Also fragen wir die Informationen direkt bei RIPE an und speichern die Ausgabe in einer Textdatei (nets.txt):

curl --silent 'https://stat.ripe.net/data/announced-prefixes/data.json?preferred_version=1.1&resource=AS15169' | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}' | uniq > nets.txt

Anschließend lassen wir uns die IP-Adressblöcke mit einem Python-Skript jeweils immer zum größtmöglichen Block zusammenfassen und direkt als Copy & Paste Material ausgeben:

from ipaddr import IPv4Network, CollapseAddrList
as_nets = list()
with open('nets.txt') as fh:
   for line in fh:
      net = IPv4Network(line.strip())
      as_nets.append(net)
print "AFWall+ Output"
for net in sorted(CollapseAddrList(as_nets)):
   print "$IPTABLES -A \"afwall\" -d %s -j REJECT" % (net)
print ""
print "iptables Output"
for net in sorted(CollapseAddrList(as_nets)):
   print "$IPTABLES -A OUTPUT -d %s -j REJECT" % (net)

Die Ausgabe für Googles AS15169 sieht dann folgendermaßen aus:

AFWall+ Output
[...]
$IPTABLES -A "afwall" -d 64.233.160.0/19 -j REJECT
$IPTABLES -A "afwall" -d 66.102.0.0/20 -j REJECT 
$IPTABLES -A "afwall" -d 66.249.64.0/19 -j REJECT 
$IPTABLES -A "afwall" -d 70.32.128.0/19 -j REJECT 
$IPTABLES -A "afwall" -d 72.14.192.0/18 -j REJECT 
[...]
iptables Output
[...]
$IPTABLES -A OUTPUT -d 64.233.160.0/19 -j REJECT
$IPTABLES -A OUTPUT -d 66.102.0.0/20 -j REJECT
$IPTABLES -A OUTPUT -d 66.249.64.0/19 -j REJECT
$IPTABLES -A OUTPUT -d 70.32.128.0/19 -j REJECT
$IPTABLES -A OUTPUT -d 72.14.192.0/18 -j REJECT
[...]

Hinweis: Ihr müsst beim curl Skript lediglich die resource=XXX anpassen und könnt dort jeden beliebigen AS eintragen. Die Erfassung funktioniert nur für IPv4-Adressen. Für IPv6-Adressen ist eine Modifikation notwendig.

Hilf mit die Spendenziele zu erreichen!

Unabhängig. Kritisch. Informativ. Praxisnah. Verständlich.

Die Arbeit von kuketz-blog.de wird vollständig durch Spenden unserer Leserschaft finanziert. Sei Teil unserer Community und unterstütze unsere Arbeit mit einer Spende.

Mitmachen ➡

3. Fazit

Update

17.08.2017: Im Artikel »ASN-Skript: Datensammler haben ausgeschnüffelt« wird ein Skript vorgestellt, mit dem sich der komplette Vorgang einfach und schnell automatisieren lässt.

Die Erfassung der IP-Adressen eines AS lässt sich sicherlich weiter optimieren und auch automatisieren. Für mich scheint die ASN-Variante jedenfalls brauchbare Ergebnisse zu liefern. Allerdings habe ich bisher nicht überprüft, ob sich damit bspw. tatsächlich alle IP-Adressen von Google erfassen lassen. Es ist durchaus möglich, dass Google über weitere ASN verfügt oder Adressen dort womöglich noch nicht hinterlegt sind. Wenn ihr andere Wege kennt oder mehr dazu wisst, dann nutzt gerne die Kommentarfunktion.

Bildquellen:

Network: McLac2000, Creative Commons CC0

Über den Autor | Kuketz

Mike Kuketz

In meiner freiberuflichen Tätigkeit als Pentester / Sicherheitsforscher (Kuketz IT-Security) schlüpfe ich in die Rolle eines »Hackers« und suche nach Schwachstellen in IT-Systemen, Webanwendungen und Apps (Android, iOS). Des Weiteren bin ich Lehrbeauftragter für IT-Sicherheit an der Dualen Hochschule Karlsruhe, sensibilisiere Menschen in Workshops und Schulungen für Sicherheit und Datenschutz und bin unter anderem auch als Autor für die Computerzeitschrift c’t tätig.

Der Kuketz-Blog bzw. meine Person ist regelmäßig in den Medien (heise online, Spiegel Online, Süddeutsche Zeitung etc.) präsent.

Mehr Erfahren ➡

SpendeUnterstützen

Die Arbeit von kuketz-blog.de wird zu 100% durch Spenden unserer Leserinnen und Leser finanziert. Werde Teil dieser Community und unterstütze auch du unsere Arbeit mit deiner Spende.

Folge dem Blog

Wenn du über aktuelle Beiträge informiert werden möchtest, hast du verschiedene Möglichkeiten, dem Blog zu folgen:

Bleib aktuell ➡


Diskussion

25 Ergänzungen zu “Google und Facebook IP-Adressen blockieren”

  1. Comment Avatar james sagt:

    Hallo Herr Kuketz,

    Danke für den Beitrag,
    hat alles bei mir funktioniert.
    Ich hätte da noch eine frage gibt es noch andere Datenkraken die man Blockieren kann?
    Zb. Die national.s.a?oder andere?
    Oder kann man keine Ips von denen finden?

    • Comment Avatar Mike Kuketz sagt:

      Klar mit der Variante lassen sich noch mehr »Datenkraken« oder unliebsame Unternehmen sperren. Die Liste lässt sich beliebig fortsetzen. ;-)
      Bspw. Microsoft oder Akamai

      Ihr dürft gerne Vorschläge machen und kurz begründen, warum ein AS bzw. die dazugehörigen IP-Adressen gesperrt werden sollten.

  2. Comment Avatar MadMax sagt:

    Hey, von mir auch nochmal ein Dankeschön für die vielen hilfreichen Informationen die es hier gibt =).

    Habe es über das Handy-Terminal und „adb shell“ versucht.
    Anscheinend unterstützt meine ROM CM11 Python nicht.

    Kann man das nachinstallieren?

    Bei dem Eingeben der „curl“ (komplette CodeZeile) kommt:
    sh: curl: not found

    Auf dem PC, Linux ist es installiert (curl –version gibt curl 7.42.1…..an)

    Was mache ich falsch, kann mit jemand helfen bitte?

    • Comment Avatar Daniel sagt:

      Hallo MadMax

      Es wäre zweckmäßig das Afwall Script auf einem Linux rechner zu erstellen und anschließend aufs Smartphone zu kopieren und als Custom Script in Afwall einzubinden.

      Auf einem Linux Rechner bekommst du dann durch den curl befehl eine netlist mit den Adressbereichen.
      Im gleichen Verzeichnis erstellet du dir nun ein Python Script „name.py“ (2.7er Python muss installiert sein,da das Script von Mike ist in der 2er Syntax geschrieben ist).
      Im Script schreibst du in die erste Zeile: „#!/usr/bin/python“ ohne Anführungszeichen um den Pfad zur Python binary anzugeben.
      Anschließend kopierst du das Skript von Mike und besserst noch einen Fehler aus:
      – die letzte Zeile musst du auf: "print "iptables -A OUTPUT -d %s -j REJECT" % (net)" ohne der äußeren Anführungszeichen ändern, da Mike das Ganze versehentlich in der Afwall+ Syntax anstelle der iptables Syntax gepostet hat

      Mit dem Befehl: „chmod +x name.py“ machst du das Skript ausführtbar und mit: „./name.py“ führst du das Skript anschließend aus. Dann bekommst du einmal dein AFWall output fürs Smartphone und den iptables output für den Linux Rechner. Diese Outputs kopierst du in deine Firewall Scripts und aktualisierst anschließend die Firewall Regeln.
      Fall du auch die Facebook IPs blocken willst wiederholst du den curl Befehl mit dem FB ASN und fürst das Python Script ein weiteres mal aus

      • Comment Avatar Mike Kuketz sagt:

        Danke Daniel für die Beschreibung.
        Ist aber kein Fehler mit $IPTABLES – jedenfalls deklariere ich den Pfad zu iptables immer manuell über diese Variable. ;-)
        Die Einrückung nach der for-Schleife habe ich noch korrigiert.

        • Comment Avatar Daniel sagt:

          Ah ok so gehts natürlich auch ;-) sollte aber vielleicht für die unerfahreneren Anwender angemerkt werden ;-)
          Außerdem wieder mal danke für deinen Artikel

      • Comment Avatar MadMax sagt:

        @Daniel

        Vielen Dank. Werde es dann so versuchen.
        Ausnahmsweise wusste ich, das es für´s Smartphone ist ;-P.

        Für den PC habe ich auch bisher immer „iptables“, statt „$IPTABLES“ verwendet.
        Laut „iptables -L“, wurde auch immer „….REJECT all — anywhere 74.125.90.0/23 reject-with icmp-port-unreachable“ angezeigt“.

        Also kann man $IPTABLES für AFwall und Linux PC, verwenden, oder verstehe ich das falsch?

      • Comment Avatar MadMax sagt:

        @Daniel

        Hat alles funktioniert, musste aber das „python-ipaddr modul“ nachinstallieren.

        Zu den IP-Adressen:
        – Amazon Technologies Inc. (Besuch von Webseiten z.b Android-Hilfe)
        – Oder evtl. Hetzner Online AG (Besuch von Webseiten, Foren)

  3. Comment Avatar 4non sagt:

    nur mit der execute-berechtigung (chmod +x) hatte es bei mir nicht geklappt, erst nachdem ich rwx-berechtigung gab klappte es:
    chmod +rwx ./name.py
    anschliessend das script ausgeführt:
    python ./name.py

  4. Comment Avatar Arthur sagt:

    Hallo Mike,

    mit Deiner Hilfe habe ich jetzt eine Menge Stecker gezogen.
    Vorab vielen, vielen Dank! Sehr lehrreich und ich hoffe, es bleibt etwas hängen.

    Doch mit dem smartphone konnte ich mich von da an nicht mehr in das Gästenetz meiner Firma einwählen. Zunächst bin ich gar nicht auf die Idee gekommen, die generierten Scripte zu prüfen und vermutete einen Fehler beim AP.

    Für Google wurden u.a. folgende Regeln generiert:

    ## Block Google
    ## Outgoing Connection
    $IPTABLES -A OUTPUT -d 1.0.0.0/24 -j REJECT
    $IPTABLES -A OUTPUT -d 1.1.1.0/24 -j REJECT <=== das ist der Übeltäter lt. meiner Kollegen

    Das ist auch in Ordnung, denn der Abruf der ripe-Information für Google liefert u.a.:
    […]
    173.194.195.0/24
    1.1.1.0/24
    74.125.28.0/24
    […]

    ——————————————–
    In unserem Firmennetz ist aber
    Name: wifi.dieFirma.com
    Address: 1.1.1.1

    ——————————————-
    Verwenden die Kollegen eine unzulässige IP ?

    https://apps.db.ripe.net/db-web-ui/#/query?searchtext=1.1.1.1
    ——————————————————————————
    inetnum: 1.0.0.0 – 1.255.255.255
    netname: NON-RIPE-NCC-MANAGED-ADDRESS-BLOCK
    descr: IPv4 address block not managed by the RIPE NCC
    ———————————————————————————

  5. Comment Avatar Mikros sagt:

    Hallo zusammen,

    als erstes einmal möchte ich Sie sehr loben! In einfachen und anschaulichen Beschreibungen bekommt man hier Hilfe, das zu erreichen, was eigentlich selbstverständlich sein sollte. Da es das aber leider nicht ist: vielen Dank! :)

    Ich habe mich nach dem ersten Artikel zum Blockieren von IP-Adressen daran versucht, bin jedoch gescheitert. Wenn ich die Zeit finde, werde ich es in nächster Zeit vielleicht nochmal versuchen.
    Da mir aber das Erstellen, Konvertieren und Einbinden der Skripte deutlich komplizierter erscheint, als die Schritte die wir ansonsten auf dem Smartphone unternommen habe und doch recht viel selbst getan werden muss, kommt mir die Frage, ob sich da nicht noch mehr „vorbereiten“ lässt, sodass der nicht so versierte Nutzer noch ein paar Schritte abgenommen bekommt. Optimalerweise eine Funktion in der AFWall+ mit der man einfach die zu sperrenden Unternehmen auswählt und alles weitere automatisch geschieht. Wenn sich das nicht ohne weiteres umsetzen lässt, wäre es dann möglich, hier die fertigen Dateien hochzuladen, sodass man diese nur noch herunterladen und aktivieren muss?

    • Comment Avatar Mike Kuketz sagt:

      Hallo Mikros,

      sicherlich lässt sich das noch weiter optimieren und vereinfachen. Auch eine Option in AFWall+ wäre denkbar. Aber es fehlt einfach an der Zeit das umzusetzen. Wer mag, der kann das Skript gerne als Vorlage nehmen.

  6. Comment Avatar MadMax sagt:

    @Mikros

    Ist jetzt kein eingebaute Option, aber evtl. eine Alternative.

    Auf AndroidHilfe.de hat an0n eine flashable zip erstellt.
    Vielleicht diese mal mit TWRP oder CWM flashen (vllt. vorher mit einem alten Handy mal testen)….

    https://www.android-hilfe.de/forum/android-sicherheit-antivirus-firewalls-datenschutz-verschluesselung.910/ipv4-firewall-patch-asn-blockliste-security-iptables-dns.743959.html

  7. Comment Avatar 4non sagt:

    @Mikros: danke fürs verlinken.
    ich hab jetzt update reingestellt, die version 1 hatte Drop-regeln, was zu Problemen geführt hatte, so konnte man keine Webseiten öffnen, die Googledienste beinhalten (z.B. Google-analytics), die Reject-regeln blockieren dies, man kann aber gleichzeitig die Webseite öffnen.

    Wenn man Afwall und SuperSu sowie CM12/CM13 installiert hat, sollte es funtionieren, unter Stockroms hab ich es nicht getestet.

    Die Blockliste ist nach dem flashen über CWM/TWRP unter /system/su.d zu finden, es läuft als Skript mit Rootrechten ohne Einbindung mit Afwall. Falls es zu Problemen mit Afwall kommt, sollte man das Skript mit Afwall verlinken (als Custom-Script) über die interne Sdkarte.

    Falls es Webseiten gibt die jemand braucht, die ich in die Blockliste gesetzt hatte, einfach mit CMFilemanager entfernen und rebooten.

  8. Comment Avatar Anonymous sagt:

    Sollte man die Ausgabe für Googles AS15169 (copy and paste) in den benutzerdefinierten Script oder in den Shutdown Script einfügen?

    • Comment Avatar Anonymous sagt:

      weder noch
      der curl command erstellt dir eine nets.txt, die das python script anschließend parsed und dir in der Konsole die fertigen Zeilen für iptables und afwall ausspuckt.

  9. Comment Avatar Saul sagt:

    Das Python-Skript braucht man eigentlich nicht unbedingt und ist für den Laien eher zu kompliziert zum Einrichten und Ausführen. Die nets.txt kann man auch wunderbar in Notepad++ oder irgendeinem anderen Texteditor öffnen welches reguläre Ausdrücke wie \n für Zeilenumbrüche unterstützt und dann alle Zeilenumbrüche (\n) über Replace All mit

    “ REJECT\n$IPTABLES -A OUTPUT -d “

    (ohne Anführungszeichen, mit Leerzeichen vorne/hinten) ersetzen. Die 1. Zeile wird danach ergänzt und die letzte gelöscht.

  10. Comment Avatar Phil sagt:

    Also erst einmal ein ganz großes Lob an diesen Blog und für diesen Beitrag. War lange stiller Leser, doch jetzt beschäftigt mich doch eine Frage. Ich habe alles erfolgreich befolgen können, aber das Python Skript spuckt weniger IP Adressen aus als in der nets.txt vorhanden sind. Hab ich irgendwas falsch gemacht?

  11. Comment Avatar Anonymous sagt:

    Ich habe das nun endlich mal umgesetzt. Mich irritiert jetzt, dass im Netzwerk Log trotzdem zahlreiche Einträge mit IP-Adressen von Google (z.B. 216.58.208.46, 74.125.34.43, 64.233.166.121) auftauchen. Alle mit „Gesendet: 1 packets, 60 bytes“. Bedeutet das, dass mein Smartphone trotzdem eine Verbindung zu Google aufnimmt bzw. Daten dorthin sendet?

HilfeWenn du konkrete Fragen hast oder Hilfe benötigst, sind das offizielle Forum oder der Chat geeignete Anlaufstellen, um dein Anliegen zu diskutieren. Per E-Mail beantworte ich grundsätzlich keine (Support-)Anfragen – dazu fehlt mir einfach die Zeit. Kuketz-Forum

Abschließender Hinweis

Blog-Beiträge erheben nicht den Anspruch auf ständige Aktualität und Richtigkeit wie Lexikoneinträge (z.B. Wikipedia), sondern beziehen sich wie Zeitungsartikel auf den Informationsstand zum Zeitpunkt des Redaktionsschlusses.

Kritik, Anregungen oder Korrekturvorschläge zu den Beiträgen nehme ich gerne per E-Mail entgegen.