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 01/2015: E-Books im Griff

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

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

PCLinuxOS Version 2014.08 "FullMonty" Umstellung auf deutsch
Karl-Heinz Welz, 19.12.2014 09:55, 3 Antworten
Hallo, liebe Community, ich bin 63 Jahre alt und möchte jetzt nach Jahrzehnten Windows zu Linux...
ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.