Quantcast
Channel: blog.rotzoll.net » Pogoplug
Viewing all articles
Browse latest Browse all 9

Pogoplug/ Raspberry Pi – transparenter Proxy als Werbefilter und Debuggingproxy

$
0
0
 

Proxyserver hatten zu Zeiten des “langsamen” Internets (gut, das kommt dank der Telekom ja bald wieder) eine gewisse Daseinsberechtigung. Zur Beschleunigung von Seitenaufbauzeiten sowie Verringerung der Datenübertragungsmengen sind Proxyserver mittlerweile eher nicht mehr gebräuchlich. Eine gute Möglichkeit für einen Proxyserver (z.B. Squid) ist das Bereinigen von Internetseiten. Werbebanner, Tracking-Bilder und andere Datensammelgeschichten lassen sich recht einfach rausfiltern. Etwas Aufwand in die weitere Pflege der geblockten Seiten vorausgesetzt kommt man nach und nach nicht mehr mit den Adservern in Berührung, Webseiten werden wieder ansehnlich und die Datensammelleidenschaft einiger Seiten wird auch stark eingeschränkt. Apps auf Smartphones verlieren ihre zum Teil recht dominanten, blinkenden, bunten, flackernden Werbebalken. Statt dessen wird häufig nur noch ein schlichter, grauer Balken “no ads available” angezeigt. Also lieber der als das geflackere nervender Werbebilder.
In Kurzform: Es wird wieder schöner…

Mein Raspberry Pi wurde eh schon soweit umgebaut, dass dieser per LAN angeschlossen einen OpenVPN Tunnel zu einem vertrauenswürdigen Server aufbaut und den Datenverkehr vom internen LAN bzw. WLAN Interface nur noch durch den VPN Tunnel zulässt. Er kann nunmehr als ideale Lösung für Netzzugänge dienen, denen man kein 100%iges Vertrauen zukommen lässt. Durch seine Größe und Kompaktheit kann er also recht einfach mitgenommen werden und im Hotel, bei Veranstaltungen usw. einen sicheren Internetverkehr regeln. Am USB Port einen LAN-USB-Adapter angeschlossen sorgt für das nötige Interface, um alles durch den Proxy zu schleifen.
Als Aufbaumöglichkeit: Router – Proxy – LAN/ WLAN.

Da Squid für diesen Anwendungsfall keine großen Anforderungen an CPU & Hardware stellt nutzen wir Squid & IPtables in Kombination um den ausgehenden normalen HTTP (Port 80) Datenverkehr vom internen LAN/ WLAN durch IPtables in Squid zu übergeben. Hier werden Tracking- & Adserver herausgefiltert.

Natürlich kann man auch anfangen, auf den Clients mit Adblockern im Browser zu hantieren. Das errfordert bei jedem Client einen Eingriff, sorgt nicht für eine “Bereinigung” des Smartphone-Datenverkehrs und ist natürlich aus “Bastlersicht” langweilig.

 

1. Squid installieren

Squid wird über apt installiert:
      Shell #> sudo apt-get install squid

 

2. Basis-Konfiguration anpassen

Die Konfiguration liegt in /etc/squid/squid.conf. Nur ein paar wenige Änderungen sind nötig.

 

3. Squid Filterregeln erstellen

In der squid.conf wird nun zusätzlich eine ACL angelegt, welche auf eine Datei /etc/squid/blocked-urls.conf verweist. Innerhalb dieser Datei werden dann nach und nach die gesperrten URLs bzw. Begriffe eingetragen.

      acl blockregexurl_ads url_regex "/etc/squid/blocked-urls.conf"
      http_access deny blockregexurl_ads

 

4. eigene Hinweisseiten ausgeben

Die Hinweisseiten von Squid über geblockte Seiten sind hilfreich, aber doch überflüssig. Wir wollen den Inhalt dieser Squid-Seite auf ein Minimum reduzieren. Hierzu legen wir in /usr/share/squid/errors/en/ und in /usr/share/squid/errors/templates/ eine Datei mit dem Namen ERR_TRACKING an. Zu Testzwecken nimmt man sich einfach eine vorhandene Datei und passt diese an bzw. löscht den Unnötigen Teil einfach heraus.
Danach wird in der squid.conf für die ACL ein deny_info Eintrag vorgenommen. Der deny_info sorgt dafür, dass der Nutzer eine entsprechende Seite oder URL o.ä. erhält. Wir wollen nur die Ausgabe der Hinweisseite.

      deny_info ERR_TRACKING blockregexurl_ads
(Das Schema ist deny_info Seitenname acl-name.)

 

5. Squid starten

Wenn Squid noch nicht gestartet wurde, kann er nun gestartet oder restartet werden.
     Shell #>sudo service squid (re)start

Händisch wird im Browser der Squid-Proxy mit konfiguriertem Port 3128 angegeben. Das sollte nun dafür sorgen, dass über den Proxy gesurft wird. Im Proxyserver-Log /var/log/squid/access.log werden nun die Seitenaufrufe erscheinen.

 

6. IPtables nutzen und ausgehenden HTTP Verkehr in den Proxy übergeben

Nun kommt der eigentliche Punkt: Wir wollen (ersteinmal) nur den ausgehenden HTTP Verkehr “umbiegen” und an den Proxy übergeben. Damit keine Einstellungen an den Clients vorgenommen werden müssen und jeder HTTP Verkehr durch den Squid-Proxy geleitet wird geschieht dieses auf dem Pogoplug mit Hilfe von IPtables. Alle Geräte (Rechner, Mobilgeräte, Smartphones usw.) im Netzwerk, die die IP vom Proxyserver als Gateway eingetragen haben, werden somit automatisch durch den Proxyserver geschickt. Der HTTP Verkehr wird dadurch von Werbung und Trackingtools bereinigt. Dieses geschieht somit für den Nutzer transparent und ohne nötigen Konfigurationsaufwand. Der Proxy ist also “transparent” im HTTP Datenverkehr zwischen Client und Server zwischengeschaltet.
Wenn man das Prinzip noch weiter dicht machen möchte kann man den ausgehenden Datenverkehr komplett unterbinden und nur noch vom Proxyserver erlauben. Somit würden auch die Systeme eingefangen werden, die das Gateway abändern. Kann man machen, muss es aber nicht…

Folgende Regeln kommen in IPtables (hinzu). LAN Interface ist eth1, externes (“Internet”) ist eth0.

     # Prerouting von Port 80 zum SquidPort (hier: 3128)
     iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

     # Weiterleitung lokal generiertem Traffic zum SquidPort
     # ausgenommen der vom User proxy (unter der der Proxy läuft)
     iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner --uid-owner proxy -j ACCEPT
     iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 3128

 

7. Client Datenverkehr umstellen

Nun auf dem Client den im Browser konfigurierten Proxyeintrag deaktivieren. Clients, die den Proxy als default-GW eingetragen haben surfen nun über den Proxy.
Den DHCP Server kann man nun anpassen, dass der als default-GW den Proxy ausgibt. Oder halt den Proxy “zwischenschleifen”…

 

8. Sichtung der Logs

Zu Debuggingzwecken lohnt es sich, ins Logs des Squid zu schauen. Dort werden gesperrte Seitenaufrufe mit TCP_DENIED vermerkt. Hat man überhaupt keine Logeinträge, so sollte man sicherstellen, ob die IPtables Regeln korrekt sind und der Clientrechner den Proxyserver als Gateway eingetragen hat.

 

9. Erweiterung der Filterregeln

Nun kann man den Datenverkehr im Log des Proxyservers betrachten. Gerade einige Smartphone-Apps und auch Webseiten nutzen viele verschiedene Adserver und anderen Tracking-Unfug. In den Logs tauchen diese auf. Je nach Vorliebe kann man nun nur bestimmte Hosts oder gleich ganze Domains, Pfade zu Skripten oder ganze Begriffe usw. in die Filterliste aufnehmen. Bei Nutzung von Begriffen sollte man allerdings vorsichtig sein. Schnell sperrt man zu viel ;-)

Nach einer Erweiterung der Filterregeln den Squid reloaden:
      Shell #> sudo service squid reload

Treibt man diesen Aufwand nun regelmäßig, so nimmt die Anzahl unerwünschter Werbebanner stark ab… Bingo.

 

http://blog.rotzoll.net/2013/04/raspberry-pi-ein-rpi-wlan-access-point-mit-openvpn-tunnel/
http://blog.rotzoll.net/2013/04/raspberry-pi-wlan-access-point-einrichten-mit-realtek-8188cus-usb-wlan-adapter/


Viewing all articles
Browse latest Browse all 9

Latest Images

Trending Articles