Browser konfigurieren

Läuft Squid einmal, muss der Proxy nur noch in der Browserkonfiguration angegeben werden. Beim Opera findet sich die entsprechende Einstellung unter Einstellungen | Netzwerk | Proxyserver, bei Firefox finden Sie die Eingabemaske unter Einstellungen | Erweitert | Netzwerk | Verbindung (Abbildung 1).

Abbildung 1: Läuft Squid, müssen Sie den Proxy nur noch in der Browserkonfiguration angeben.

Ob die Konfiguration jetzt auch dort greift, wo sie soll, lässt sich in der Praxis ausprobieren. Schneller geht es jedoch mit dem kleinen, zum Squid-Fundus zählenden Werkzeug Squidclient, das über die Kommandozeile Anfragen an den Proxy sendet und so wertvolle Dienste leistet. Vorausschauend haben wir bereits alle Problem-Domains in Extra-Dateien ausgelagert, sodass wir unsere Access-Control-Direktiven jetzt automatisiert testen können. Bei Squidclient handelt es sich um ein Kommandozeilenprogramm, das Sie in der einfachsten Form mittels squidclient URL aufrufen. Das setzt jedoch voraus, dass Squid auf dem lokalen Rechner läuft.

In aller Regel will man sich aber um eine ganze Reihe von Rechnern kümmern, auf denen jeweils die selben Regeln gelten sollen, weswegen der Squid-Proxy auf einem eigenen Rechner läuft. In diesem Fall gilt es beim Aufruf von Squidclient den zusätzlichen Schalter -h IP-Squid anzugeben. Läuft Squid auch noch auf einem anderen Port als 3128, müssen Sie diesen mit -p Port ebenfalls angeben.

Für den Test selbst schreiben Sie am besten ein kleines Skript, dem Sie einfach eine Datei mit den zu testenden URLs übergeben. Unsere Skript aus Listing 4 ist ein wenig aufgebohrt: Es erweitert alle Domainnamen mit führenden Punkten – also alle, die auch für Subdomains gelten sollen – um ein www, da die URL ansonsten fehlerhaft wäre. Ferner wollen wir auf das Output-Geraschel verzichten. Uns genügt eine Status-Meldung, die zeigt, ob die zu filternden Domains es bis in den Browser schaffen.

Listing 4

#! /bin/bash
URLFILE=$1
while read url;
do
  echo $url
  squidclient -h 192.168.10.111 -p 3128 http://${url/^./www.} | grep "HTTP/"
done < URLFILE
exit 0

Abbildung 2 zeigt einen Testlauf, bei dem die Access-Control-Direktiven wie gewünscht greifen und anstelle lustiger Multiplayer-Spielchen ein Forbidden im Browser auftaucht.

Abbildung 2: Squidclient prüft, ob alle URLs wie geplant gesperrt wurden.

Transparenter Abfangjäger

Nun ist es für den Admin wenig erbaulich, wenn er einen hübschen Proxy samt sämtlicher ACLs aufsetzt, der gemeine Nutzer das aber umgeht, indem er schlicht die Proxy-Einstellungen des Browsers ändert. Hier hilft es, die Nutzer mithilfe eines separaten, als Squid-Proxy genutzten Rechners unter Assistenz durch Iptables zu zwingen, den Web-Zugriff über Squid abzuwickeln. Squid lässt sich so im "Interception"-Modus betreiben und bleibt in dieser Konfiguration für Clients völlig transparent.

Im Interception-Modus können Sie also darauf verzichten, jeden Client einzeln zu konfigurieren. Stattdessen weisen Sie ein zentrales Netzwerkgerät ( in der Regel den Router) an, alle Webanfragen über den Proxy zu leiten. So fällt es dem findigen Nachwuchs deutlich schwieriger, den Proxy zu umgehen: Dazu muss die Brut schon zu Tunneln oder zusätzlichen Hilfsprogramme greifen.

In Heimnetzwerken kommen oft Router mit integriertem DSL-Modem zu Einsatz, die eine Umleitung von HTTP-Anfragen über einen Proxy nicht unterstützen. Deshalb schummeln Sie in so einem Fall einfach und leiten die Anfragen erst einmal zum Squid-Proxy und erst anschließend zum Router. Der Squid-Proxy fungiert hier als Bridge, die den HTTP-Traffic an Squid durchreicht und alles andere ohne Umwege an den Router weiterleitet.

Um das zu erreichen, richten Sie auf dem Squid-Proxy eine kleine Firewall ein (Listing 5). Diese lässt sich später noch erweitern, um unliebsame andere Ports zu blocken, wie sie "echte" MMORPGs benötigen. Sie können freilich auch auf allen Clients die Firewall entsprechend einrichten, aber an zentraler Stelle lässt sie sich leichter pflegen. Um die Firewall-Einstellungen auch über Neustarts hinweg zu erhalten, packen Sie sie in ein Skript, das beim Systemstart aufgerufen wird – etwa in der /etc/rc.local beziehungsweise /etc/rc.d/rc.local.

Listing 5

# Squid-IP und Port
SQUIDIP=192.168.10.111
SQUIDPORT=3129
# Forwarding ein
echo 1 > /proc/sys/net/ipv4/ip_forward
# HTTP-Traffic über Squid-Proxy leiten
iptables -t nat -A PREROUTING -s $SQUIDIP -p tcp --dport 80 -j ACCEPT
# Umwege über andere Proxys/Programme berücksichtigen
iptables -A FORWARD -p tcp -m multiport --dport 3128,8080,6543,6544,7544,9050 -j DROP
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination $SQUIDIP:$SQUIDPORT
iptables -t nat -A POSTROUTING -j MASQUERADE

Zu guter Letzt teilen Sie Squid noch mit, dass Sie den Interception-Modus verwenden möchten. Dazu fügen Sie in der squid.conf die Direktive http_port 3129 intercept hinzu (beziehungsweise transparent für Squid-Versionen bis 3.1). Jetzt tragen Sie auf allen Client-Rechnern noch den Squid-Proxy als Gateway ein – beziehungsweise geben dem Proxy die IP-Adresse des Routers und dem Router eine neue IP-Adresse. Anschließend sollten alle HTTP-Anfragen vorbildlich gefiltert werden.

Der Interception-Modus vereinfacht zwar vieles, bringt aber auch einige Probleme mit sich. So gelingen dabei beispielsweise weder Proxy-Authentifizierung noch IP-Filterung. Zudem verletzten Sie TCP/IP-Standards, denn der Proxy empfängt Pakete, die eigentlich nicht für ihn bestimmt sind. Obendrein kann Squid nur HTTP-Pakete abfangen – kommen HTTPS oder FTP ins Spiel, reicht Squid entsprechende Anfragen direkt weiter.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...