Partnerlinks:
Google

www.linux-club.de/ sehr aktives und kompetentes Board m. Fragen u. Antworten rund um Linux  |  www.linux-board.de/ privates Board m. Fragen u. Antworten rund um Linux  |  meybohm bei viando.de gute Tools - u.a. "Phase 5 / HTML Editor" mein Lieblings-HTML-Editor und "Proton" - guter Texteditor www.meybohm.de  |  Wunsch-Domain schon belegt? Hier finden Sie sie trotzdem!   |  Webhosting beim Testsieger 2007. www.greatnet.de  | 
Host Europe - World Class Internet Hosting
 

  Ein Pinguin-Logo    
news About Me linux referenz tips links downloads kontakt
 
News
About
Linux
Referenz
Tips
  Linux
  Sicherheit
  Perl
  Allround Server
  Fileserver Samba
  HTTP-Server
  Zope-Server
  SQL-Server
  Mail-Server
  Proxy_Server
  FAX-Server
  Netzwerk-Tools
  SMS-Tools
  Postscript
  MS Office
Links
Downloads
Kontakt

Besucher
seit 21.10.2002
 
Mein Gästebuch
 

Squid - DER HTTP- und FTP-Proxy-Server für Linux (1)

1. Einführung

Squid ist ein HTTP- und FTP-Proxyserver. Diese Serverprogramme arbeiten sozusagen als Stellvertreter des Users hinter einer Firewall gegenüber dem HTTP- bzw. FTP-Server im Internet. Die Anforderung einer z.B. html-Seite wird von allen Clients im lokalen Netzwerk an den Proxy-Server gestellt. Dieser gibt diese Anfrage gegenüber dem Server im Internet als seine eigene Anfrage aus. Die vom Internet-Server zurückgegebene Antwort oder Datei wird dann an den ursprünglich anfragenden Client weitergegeben. Auf diese Art kann man für diesen einen Rechner eine einzige Bresche in seine Firewall schlagen. Diese ist einfacher definier- und kontrollierbar, als wenn das für jeden einzelnen PC im lokalen Netz erfolgen muss.

Darüberhinaus kann das intelligente Zwischenspeichern der Elemente der Webseiten in einem großen Netzwerk den Traffic zu oft abgerufenen Seiten erheblich vermindern. Nicht sehr oft aktualisierte Elemente (z.B. Bilder) werden hierbei länger zwischengespeichert als dynamische Seiten (*.php, *.cgi). Diese Inhalte werden meis direkt abgerufen und an die Clients / Browser weitergegeben. In der Konfigurationsdatei kann man an enorm vielen Stellschrauben drehen, um unter verschiedensten Aspekten Optimierungen zu erreichen.

Eine weitere wichtige Aufgabe des/eines Proxy-Servers ist die Kontrolle des Zuganges zum Internet, die Einschränkung/Kontrolle der abrufbaren Inhalte, Objekte, URL's nach verschiedensten Kriterien. So lassen sich User-, Computer-, Netzwerk- oder irgendwelche anderen Gruppen bilden, denen dann wieder unterschiedliche Berechtigungen bzw. Einschränkungen zugeordnet werden können.

2. Konfiguration

2.1 Browser-(Client-)Konfiguration

2.1.1 Manuelle Browser-Konfiguration

Damit die Clients (das sind in diesem Fall die Browser) die Anfragen an den Proxy-Server, anstatt direkt an die Webseite, schicken müssen noch ein paar Einstellungen an den Clients (Browsern) vorgenommen werden.

Internet Explorer

Extras -> Internetoptionen -> Verbindungen -> LAN-Einstellungen -> Einstellungen ->
[x] Proxy-Server fuer LAN verwenden
Adresse: [proxy.deine-domain.de ]
Name bzw. IP-Adresse des Rechners mit dem Proxy-Servers eintragen
Port: [3128]
Squid-Standard-Port 3128 eintragen [x] Proxy-Server fuer lokale Adressen umgehen
Erweitert ->
hier die Rechneradressen angeben, die direkt angesprochen werden sollen (z.B. Server im lokalen Netzwerk)

Netscape/Mozilla

Bearbeiten -> Einstellungen -> Erweitert -> Proxies ->
[x] Manuelle Proxy-Konfiguration
HTTP-Proxy: [proxy.deine-domain.de ]
Name bzw. IP-Adresse des Rechners mit dem Proxy-Servers eintragen
Port: [3128]
Squid-Standard-Port 3128 eintragen Kein Proxy fuer:
hier die Rechneradressen angeben, die direkt angesprochen werden sollen (z.B. Server im lokalen Netzwerk)

2.1.2 Automatische Browser-Konfiguration

Die oben aufgeführten Einstellungen bei jedem Client im Netzwerk durchführen zu müssen wird schon ab 5 Rechner nervig. Wenn dann noch einige Adressen für direkt anzusprechende Server hinzukommen verliert man die Lust.

Zur Lösung dieses Problems bieten beide Browser die Option "Automatisches Konfigurationsskript verwenden" bzw. "Automatische Proxy-Konfiguration" an.

Dieses Konfigurationsskript ist eine Textdatei "proxy.pac" (beim Verwenden ohne die Endung "*.txt" abspeichern, nur zum problemlosen Downloaden mit der Endung versehen). Darin werden, teilweise mit regulären Ausdrücken, bestimmte Server-Namen benannt, die direkt angesprochen werden sollen.

Diese Datei muss in einem per HTTP erreichbaren Verzeichnis des (lokalen) HTTP-Servers liegen und mit dem entsprechenden Pfad in die Dialogfelder der Browser eingetragen werden. Zum Beispiel so: http://mein-server.de/proxy.pac

Es muss jetzt nur noch in der Web-Server-Konfigurationsdatei (/etc/httpd.conf) bzw. der von dieser verwendeten MIME-Typ-Zuordnungs-Tabelle (/etc/httpd/mime.table), die Endung "*.pac" einem bestimmten Dateityp zugeordnet werden. Das geschieht durch Eintragung der folgenden Zeile in die Datei "mime.table" oder direkt in "httpd.conf":

application/x-ns-proxy-autoconfig    pac

Durch diese Eintragungen wird bei Aufruf der Datei durch den Browser vom Server der Dateityp (application/x-ns-proxy-autoconfig) mitgeschickt. Daraufhin weiß der Browser wie er den Inhalt der Datei zu deuten/verarbeiten hat.

2.2 Squid-Server Konfiguration

2.2.1 Allgemeine Konfigurations-Optionen

Squid wird über die Datei /etc/squid/squid.conf konfiguriert. Im Normalfall muss man in der mitgelieferten Konfigurationsdatei nur wenige Optionen ändern um damit arbeiten zu können:

http_port 192.168.0.101:3128
- binden von Squid an einzelne IP-Adressen:Port-Sockets
- Squid nimmt dann nur noch auf diesen Adressen Anfragen an
cache_mem 8 MB
- Größe des Cache-Speichers zum Zwischenspeichern von Seiten (im Arb.-Speicher) für z.B. In-Transit-Objects, Hot-Objects, Negative-Cached-Objects
- der Squid-Prozess beansprucht aber noch weiteren Speicher
- abhängig vom verfügbaren Arbeitsspeicher und den noch laufenden Prozessen
cache_swap_low 90
cache_swap_high 95
- Watermarks in Prozent des definierten Speichers
- low -> untere Grenze des Speichers bis zu der keine Seiten ausgelagert werden müssen,
- high -> obere Grenze, wenn Speicher darüber kommt, dann müssen zwischengespeicherte Seiten ausgelagert werden
log_fqdn on
- Eintragen der FullQualified-Domain-Namen in das Logfile
- bei jedem Seitenabruf wird eine DNS-Anfrage gestellt, verlangsamt die Verbindung bei stark frequentierten Proxys
- hilfreich bei nachträglicher Auswertung durch Logfile-Analysatoren (Zeitersparnis, Auflösung auch dynamischer Site-Namen)
client_netmask 255.255.255.255
- wichtig für genaue Unterscheidung der Anfragen der Clients in den Logfiles (damit man nicht den falschen verdächtigt oder beschuldigt auf Nicht-Jugendfreie Seiten zugegriffen zu haben ;-) - Aber Achtung - Datenschutz!
dns_timeout 30 seconds
- verkürzen der Timeout-Zeit (Standard 5 min!) für nicht auflösbare DNS-Anfragen
negative_dns_ttl 5 seconds
- verkürzen der "Lebenszeit" (Time-to-live) für negativ ausgefallene DNS-Anfragen - bei Dial-Up-Verbindungen kann der erste Versuch der DNS-Anfrage fehlschlagen, mit dieser Einstellung kann man schneller nochmals anfragen (Standard sonst 5 Minuten!)
connect_timeout 50 seconds
- verkürzen der Timeout-Zeit (Standard 2 min!) für nicht zustandekommende Verbindungen
visible_hostname proxy.my-domain.de
- Anzeigename des Proxy-Servers in von ihm generierten HTML-Seiten (z.B. Fehlerseiten)
error_directory /usr/share/squid/errors/de
- Einbinden der deutschen Fehlermeldungen (viele andere Sprachen möglich, siehe in den entsprechenden Unterverzeichnissen)

2.2.2 Access-Control-Lists (ACL's)

Die weiter oben aufgeführten Möglichkeiten zur Zugriffskontrolle werden mit Hilfe von Zugriffs-Kontroll-Listen (Access-Control-Lists - ACL's) realisiert. Das Verfahren sieht zuerst die Definition einer "Zugriff-Liste" (oder Gruppe) vor. Diese Liste wird dann weiter unten mit dem Erlauben (= allow) oder Verbieten (= deny) bestimmter Aktionen für ebendiese "Liste" verknüpft.

acl my_net src 192.168.0.30-192.168.0.45/255.255.255.255
- Liste mit Namen "my_net"
- für die Quell-Adressen ("src") im Bereich von 192.168.0.30 bis 192.168.0.45

Es gibt viele verschiedene Arten von Listen für die unterschiedlichsten Anwendungsfälle. Die Art der Liste wird durch den dritten Parameter in der ACL festgelegt. Einige Beispiele für Listenarten:

src        - Source(Quell)-IP-Adresse(n),
             ergaenzt mit der Netzmaske
dst        - Destination(Ziel)-IP-Adresse(n),
             ergaenzt mit der Netzmaske
srcdomain  - Source(Quell)-Domain,
             erzeugt DNS-Anfrage
dstdomain  - Destination(Ziel)-Domain,
             erzeugt DNS-Anfrage
srcdom_regex
           - Source(Quell)-Domain, Filterung mit Hilfe
             von regulaeren Ausdruecken moeglich
dstdom_regex
           - Destination(Ziel)-Domain, Filterung mit Hilfe
             von regulaeren Ausdruecken moeglich
time       - Zeitangaben in verschiedensten Formen
url_regex  - Suche nach dem regulären Ausdruck in der gesamten
             URL
urlpath_regex
           - Suche nach dem regulären Ausdruck im gesamten
             Pfad-Anteil der URL (z.B. für Dateitypen u.ä.)
port       - tcp-Port der Verbindung
proxy_auth - Authentifizierung notwendig

Dazu einige praktische Beispiele:

acl erlaubte_domains_001 dstdomain .tei.de .wei.de .he.de
acl erlaubte_domains_002 dstdomain .dort.com .fort.biz
- definiert die hier aufgeführten Domains als Entscheidungslisten
- hier dürfen keine Sub-Domains (www.tei-lin-net.de, mirror.tei-lin-net.de, ...) aufgeführt werden, Squid "meckert" dies beim Starten (oder Neuladen) an
- Filtern nach Sub-Domains muß mit dem ACL-Typ "dstdom_regex" erfolgen
acl erlaubte_domains dstdomain "/etc/squid/erlaubte_domains.lst"
- definiert die hier benannte Datei ("erlaubte_domains.lst") als (Ursprungs-)Liste mit Domains die als Entscheidungsregel zur Verfügung stehen sollen (Datei muß vom Squid-Prozess lesbar sein!)
- in dieser Datei wird jede Zeile als Wert der Liste interpretiert, d.h. es muß auf jeder Zeile genau ein Domainname vermerkt sein
- hilfreich für große Menge von Listenelementen und Strukturierung in verschiedene Listen (Themensortierung, ...), verteilte Administration
acl erlaubte_sub_domain_001 dstdomain \*sex\*\.tei\-lin\-net\.de
- definiert einen regulären Ausdruck nach dem im (Sub-)Domain-Teil gesucht wird
- Sonderzeichen müssen mit dem Backslash "entwertet" werden
acl morgens time MTWHF 9:00-9:15
acl mittags time MTWHF 12:00-12:30
- definiert zwei Zeit-Listen; eine für Montag bis Freitag morgens von 9:00 Uhr bis 9:15 Uhr (Frühstückspause) und eine weitere an den gleichen Tagen von 12:00 Uhr bis 12:30 Uhr (Mittagspause)

In der originalen Konfigurationsdatei die mit Squid mitgeliefert wird sind viele kommentierte Beispiele. Das gilt auch für alle anderen möglichen Optionen.

2.2.3 Zugriffsregeln

Diese Listen werden ein paar Zeilen weiter unten mit dem Festlegen der Zugriffsbeschränkungen/-regeln (erlauben - "http_access allow", verbieten - "http_access deny") verknüpft.

Werden mehrere Listen nebeneinander in einer z.B. "allow-Regel" aufgeführt, müssen alle Listen zutreffen, damit der Zugang gewährt wird ("UND-Verknüpfung" der Zugriffslisten). Untereinander stehende Regeln werden von oben nach unten durchlaufen. Die erste zutreffende Regel wird angewendet ("ODER-Verknüpfung" der Zugriffslisten). Durch die Kombination dieser Regeln ergibt sich eine sehr mächtige und flexible Filtersyntax.

http_access allow my_net
- erlaubt den in der Liste "my_net" aufgeführten Rechnern den ungehinderten HTTP-Zugriff
http_access allow my_net morgens
http_access allow my_net mittags
- erlaubt den in der Liste "my_net" aufgeführten Rechnern morgens und mittags den ungehinderten HTTP-Zugriff


   
Squid (1)
Einführung
Konfiguration
- Browser
- Server
ACL's
Zugriffsregeln
Squid (2)
Einführung
Passwortdatei
Auth-Optionen
ACL's
 
©  09.09.2009  Heiko Teichmeier - Glauchau/Sa.