Inhaltsverzeichnis
Tipps
Die mitglieferte Konfigurationsdatei enthält bei Squid auch viel Dokumentation. Daneben gibt es aber auch meist eine HTML-basierte Dokumentation (ansonsten auch via Web )
Wer nicht an allen Clients Proxy-Einstellungen machen will, schaut sich am besten mal PaketFilter an (Stichwort: transparenter Proxy).
Squid kann auch transparent gemacht werden, und falls ein größeres Netzwerk vorhanden ist, besteht die Möglichkeit, mehrere Caches zusammenarbeiten zu lassen. Die Daten werden so besser im Netz verteilt und man hat mehr Arbeitsspeicher (da mehrere Rechner) zur Verfügung.
Eine Alternative zum transparenten Proxy ist die automatische Proxy-Konfiguration, die man nur einmal im Client eintragen muß - z.B. http://localhost/proxy.pac. Das Javaskript proxy.pac weist dann dem Client die Proxy-Einstellungen zu. Im Gegensatz zum transparenten Proxy hat nicht jeder Client per Default eine http-Verbindung ins Internet, was manchmal unerwünscht sein mag (Virenverbreitung!).
Beispiel:
function FindProxyFORUrl(url, host) { if (isInNet(host, "172.16.0.0", "255.255.0.0")){ return "DIRECT"; } else{ return "PROXY p1:3128; PROXY p2:3128; DIRECT"; } } Dieses Skript bewirkt: *Kein Proxy für das lokale Netz *p1:3128, wenn verfügbar, sonst p2:3128, sonst direct
Frage: Was sind p1 und p2?
- Das sind die Hostnamen von den Proxies.
Bei der Konfiguration von Cache-Hierarchien sind einige Punkte zu beachten: 'Parents' sind übergeordnete Caches, Siblings gleichgeordnete. Zum Informationsaustausch kann das Protokoll ICP verwendet werden (Default: Port 3130). Wenn ein Proxy kein ICP kann, können ICP-Anfragen mit der Option 'no-query' unterbunden werden. Bei manchen (älteren) Versionen ist die Option 'prefer_direct' als 'on' vorkompiliert; hier hilft 'prefer_direct off', um die Benutzung des Parent zu erzwingen. Bei ICP wird natürlich eine entsprechende Firewall-Regel benötigt. ACHTUNG: ICP verwendet auch UDP.
Hinweis: Das SSL nicht gecacht wird, muß der Proxy auch direkten Zugriff aufs Internet haben, um solche Seiten liefern zu können.
Es ist ebenfalls möglich, Squid als ReverseProxy vor einen Webserver zu schalten.
Mit den sogenannten "Delay Pools" kann man auch auf simple Art Beschränkungen der Bandbreite -- auch für einzelne Benutzer bzw. -gruppen -- realisieren. Eine Beschreibung findet sich unter http://www.serverwatch.com/tutorials/print.php/3357241 . HINWEIS: Delay-Pools sind statisch, d.h. Begrenzungen gelten auch dann, wenn die Leitung frei ist. Mit einem kleinen Trick kann man dieses Verhalten verbessern; z.B. delay_parameters x 50000/250000 definiert ein Maximum von 50Kbyte/sec Durchfluß für den Pool x, erlaubt aber für einen User einen Peak von 250Kbytes/sec, wenn die Leitung dafür frei ist. Dann werden kurze Webinhalte schnell geladen, während lange Downloads auf 50Kbytes/sec beschränkt werden. In manchen Fällen mag man genau das wollen. Testen kann man Delay-Pools am einfachsten mit wget. Man setzt mit ifconfig auf die Netzwerkkarte eine (zusätzliche) IP für den gewünschten Delay-Pool und bindet dann wget mit --bind-addres=ip an diese Adresse.
Außerdem kann man Squid auch mit verschiedenen Modulen verknüpfen. So ist es z.B. möglich, mit sog. Blacklists Seiten zu sperren ( SquidGuard, DansGuardian) oder eins der verschiedenen Module zur Authentifizierung der Benutzer einzusetzen. Hier kann man z.B. auf smb_auth verweisen - damit ist es möglich, dass Squid mit einer bestehenden NT-Nutzerdatenbank zusammen arbeitet.
Zur Anonymisierung dienen die Optionen anonymize_headers, forwarded_for und fake_user_agent. ACHTUNG: Squid muß für 'anonymize_headers' compiliert sein; ist nicht immer der Fall.
Sperren von Webseiten
Um bestimmte Domänen zu sperren trägt man folgende Zeilen in die Datei squid.conf ein:
acl gesperrt dstdomain "/etc/squid/domains.deny" http_access deny gesperrt
Nun trägt man die zu sperrenden Domänen (jeweils eine pro Zeile) in die Datei /etc/squid/domains.deny ein, z.B.
.doubleclick.net .ientry.net
Das ganze geht auch mit ip-Nummern:
acl gesperrt-ip dst "/etc/squid/ip.deny" http_access deny gesperrt-ip
Nun trägt man die zu sperrenden ip-Nummern (jeweils eine pro Zeile) in die Datei /etc/squid/ip.deny ein, z.B.
62.26.121.2/32
Eine einfachere Alternative ist SquidGuard (und eventuell das Debianpaket chastity-lists).
Browser und Betriebsystem fälschen
header_replace User-Agent Gozilla/4711.0815 (CP/M; 11-bit; 59 MByte)
in die Datei squid.conf eintragen. Funktioniert allerdings nur bei vorherigem löschen des echten User-Agent mit
header_access User-Agent deny all
Nach User-Agent kann man jeden beliebigen Text eintragen, es kann jedoch zu Problemen mit schlecht konfigurierten Servern kommen.
Absender-Info einschränken
Um zu verhindern, daß unnötige Informationen aus dem internen Netz nach außen gelangen, sollte man dies mit
- anonymize_headers deny Via und
- anonymize_headers deny X-Forwarded-For
unterbinden. Welche Header genau nach außen gehen, kann man mit ngrep herausfinden.
*Warnung: Squid muß mit der Option 'anonymize_headers on' compiliert sein, was nicht immer der Fall ist!
Links
Hilfen
Squid Proxyserver Administrationshandbuch von DirkDithardt
Kommentar: etwas dürr - bietet nicht mehr als eine Übersetzung der Online-Doku.
Squid Documentation Links zu weiteren Dokumentationen.
Daten nach Viren scannen
Mit ICAP (gibt's fertig als cacheMARA von http://www.marasystems.com/) kann man den HTTP- und FTP-Traffic nach Viren zu scannen
Alternativ gibt es bei http://antivir.de ein webgate, das vor oder hinter Squid geschaltet werden kann.
Logdateien analysieren
Mit Sarg (Squid Analysis Report Generator) kann man die Logdateien analysieren
Webalizer kann auch squid logs verarbeiten
Squid-Graph zeichnet schöne statistiken wieviel Cache hits etc. man hatte.
Calamaris Ein in Perl geschriebenes Analyseprogramm das Tabellen ausgibt jedoch keine Grafiken.
Werbebanners aus Webseiten entfernen
über regular expressions in der URL: siehe Squid-Vortrag von Johannes Franken
Squid inkompatible Seiten
Anhängig von den Einstellungen kann es sein daß man manche Seiten nicht zu Gesicht bekommt weil der Seitenersteller glaubt besser zu wissen was der Browser verdauen kann als der Benutzer. Manchmal hilft es die Hauptseite zu umgehen und direkt auf die gewünschte Unterseite zuzugreifen.
OffeneFrage: Woran erkennen manche Server daß ein Proxy benutzt wird?
- Es wird noch eine weitere Zeile in den http-Header eingefügt. Kannst du sehr leicht mit einem Packetsniffer nachprüfen, den du hinter den Proxy hängst. Das man durch Anonymisieren der Header (X-Forwarded-for) abstellen)
- Es geht auch indirekt und heuristisch. Alle Requests kommen von einer IP auf Highports.