Einen Squid-Proxy Server einrichten
    ArticleCategory: [Choose a category, do not translate
    this]
    SystemAdministration 
    AuthorImage:[Here we need a little image from you]
![[DSOberoi]](../../common/images/DSOberoi.jpg) 
    TranslationInfo:[Author + translation history. mailto: or
    http://homepage]
    original in en D.S.
    Oberoi
en to de Hermann J. Beckers
    AboutTheAuthor:[A small biography about the author]
    D.S. Oberoi lebt in Jammu, Indien und hat z. Zt.  wegen der anhaltenden 
    politischen Spannungen Probleme, Verbindung zum Internet zu bekommen.
    
    Abstract:[Here you write a little summary]
    Linux ist ein Synonym für Vernetzung geworden. Es wird gleichermassen
    in Büro- wie in privaten Umgebungen als Datei-, Druck-, Email- und
    Anwendungsserver eingesetzt und auch in steigendem Maße als 
    Proxy-Server benutzt.
    
    Ein Proxy-Server bietet mehreren Benutzern Internet-Zugang zur gleichen
    Zeit, indem z. B. eine einzelne Internet-Verbindung geteilt wird. Ein guter
    Proxy-Server bietet auch die Möglichkeit, die angeforderten Daten lokal
    zwischenzuspeichern, um so die Daten aus lokalen Ressourcen anstelle
    aus dem Web zu holen und dadurch die Zugriffszeit zu reduzieren und
    Bandbreite zu sparen. Squid ist eine solche Software, die die Proxyfunktion
    sowie das lokale Speichern von HTTP-, ftp-, Gopher- und anderen Anfragen
    unterstützt. Es unterstützt ausserdem SSL, Zugriffskontrollen,
    DNS-Zwischenspeicherung und führt ein vollständiges Log über alle
    Anforderungen. Squid ist auch für Windows NT erhältlich von  Logi Sense. 
    
    Der Schwerpunkt dieses Artikels liegt auf grundlegenden Hinweisen
    zum Einrichten eines Proxy-Servers und den Möglichkeiten, den 
    Benutzerinnen kontrollierten Zugriff zu bieten.
    ArticleIllustration:[This is the title picture for your
    article]
![[squid]](../../common/images/illustration235.gif) 
    ArticleBody:[The article body]
    Ist Squid Installiert ?
    Die Squid-rpm-Dateien kommen zusammen mit der RedHat 7.1-Version
    und werden automatisch installiert, wenn die Option Netzwerk-Installation
    gewählt wird. Ob Squid installiert ist oder nicht, kann mit dem folgenden
    rpm-Befehl überprüft werden:
    
    rpm -q squid
   
    Die aktuellste Squid-Version kann immer von der  Squid-Webseite und anderen Spiegelrechnern  abgerufen
    werden. Squid kann auf dem gewünschten System mit dem folgenden
    rpm-Befehl installiert werden: 
    rpm -ivh squid-2.3.STABLE4-10.i386.rpm
   
    Squid-Konfiguration
    Die Arbeitsweise und das Verhalten von Squid wird durch die 
    Konfigurationseinzelheiten gesteuert, die in der Konfigurationsdatei
    festgelegt werden (squid.conf); diese Datei findet sich normalerweise
    im /etc/squid-Verzeichnis. Die Konfigurationsdatei squid.conf ist sehr
    umfangreich, das gute daran ist aber, das alle Optionen klar mit
    Erläuterungen aufgeführt sind.    
    
    Das erste, was editiert werden muss, ist  http_port, welches die Socket-
    Adresse spezifiziert, auf der Squid auf Client-Anforderungen lauscht.
    Standardmäßig ist als Port 3128 gesetzt, aber dies kann auf einen
    benutzerdefinierten Wert gesetzt werden. Zusammen mit dem Port-Wert
    kann auch die IP-Adresse der Maschine angegeben werden, auf der
    Squid läuft. Dies kann z.B. geändert werden zu: 
    http_port 192.168.0.1:8080
    Mit der obigen Deklaration wird Squid auf die IP-Adresse 192.168.0.1 und
    die Port-Adresse 8080 gebunden. Jede Port-Adresse kann angegeben
    werden, aber stellen Sie sicher, das keine andere Anwendung auf dem
    gesetzten Port läuft. Mit ähnlichen Konfigurationszeilen können auch
    die Ports anderer Service-Anforderungen gesetzt werden.
    
    Zugangskontrollen
    Durch die Zugangskontroll-Möglichkeiten kann der Internet-Zugang
    kontrolliert werden hinsichtlich bestimmter Zeiträume, der lokalen
    Zwischenspeicherung, zu bestimmten Rechnern oder Rechnergruppen
    usw. Die Squid-Zugangskontrollen haben zwei verschiedene Komponenten,
    nämlich ACL-Elemente und Zugangslisten. Eine Zugangsliste 
    erlaubt oder versagt den Zugriff auf den Dienst. 
    
    Einige wichtige ACL-Elemente sind nachstehend aufgeführt
    
      - src: Quelle d. h. Client-IP-Adressen
- dst: Ziel d. h. Server-IP-Adressen
- srcdomain: Quelle d. h. Client-Domain-Namen
- dstdomain: Ziel d. h. Server-Domain-Namen
- time: Zeit/Wochentag 
- url_regex: URL-Überprüfung auf Übereinstimmung mit regulären 
      Ausdrücken
- urlpath_regex: URL-Pfad-Überprüfung auf Übereinstimmung mit regulären 
      Ausdrücken ohne Berücksichtigung von Protokoll und Hostname
- proxy_auth: Benutzer-Authentifizierung durch externe Prozesse 
- maxconn: maximal erlaubte Anzahl von gleichzeitigen Verbindungen
      von einer einzelnen Client-IP-Adresse 
Zur Anwendung der Kontrollen muss man zuerst eine Reihe von ACLs 
    definieren und dann Regeln auf sie anwenden. Das Format einer 
    ACL-Anweisung ist:acl   acl_element_name   type_of_acl_element
    values_to_acl
    Hinweise: 
    
      - acl_element_name kann ein benutzerdefinierter Name für ein ACL-
      Element sein
- Es dürfen keine ACL-Elemente den gleichen Namen haben.
- Jedes ACL besteht aus einer Liste von Werten. Wenn eine Überprüfung
      stattfindet, werden mehrere Werte mit oder verknüpft. In anderen Worten, ein
      ACL-Element trifft zu, wenn irgendeins seiner Werte übereinstimmt.
      
- Nicht jedes ACL-Element kann mit jedem Typ von Zugangsliste 
      benutzt werden. 
-  Verschiedene ACL-Elemente werden in getrennten Zeilen angegeben
      und Squid fasst sie in einer Liste zusammen.
Es ist eine Anzahl unterschiedlicher Zugangslisten verfügbar. Diejenigen,
    die wir hier benutzen werden, sind nachstehend aufgeführt
      - http_access: Erlaubt es HTTP-Clients, auf den HTTP-Port
      zuzugreifen. Dies ist die vorrangige Zugangsliste.
- no_cache: Definiert das Zwischenspeichern der Antworten
      auf Anforderungen
Eine Zugangslisten-Regel besteht aus Schlüsselwörtern wie allow oder
    deny, welche den Zugang zu einem speziellen ACL-Element oder einer
    Gruppe erlauben oder verweigern.
    Hinweis: 
    
      - Die Regeln werden in der Reihenfolge überprüft, in der sie in der
      Konfigurationsdatei erscheinen; sobald eine Übereinstimmung vorliegt,
      wird der Vergleich abgebrochen.
- Eine Zugangsliste kann aus mehreren Regeln bestehen.
- Wenn keine Regel zutrifft, ist die Fehlwert-Aktion das Gegenteil zur
      letzten Regel in der Liste, daher ist es ratsam, die Fehlwert-Aktion 
      ausdrücklich aufzuführen.
- Alle Elemente eines Zugangseintrages werden mit UND verbunden
      und in der folgenden Weise ausgeführt:
 http_access Aktion Anweisung1 UND Anweisung2 UND Anweisung
      ODER
 http_access Aktion Anweisung3
 Mehrere http_access-Anweisungen werden durch ODER verknüpft während die
      Elemente eines Zugangseintrages mit UND verbunden werden.
- Erinnern Sie sich daran, das die Regeln immer von oben nach unten
      gelesen werden.
Zurück zur Konfiguration
    Standardmäßig gewährt Squid keinem Client Zugriff und die Zugangslisten
    müssen für diesen Zweck angepasst werden. Man muss seine eigenen
    Regeln aufführen, um den Zugang zu erlauben. Blättern Sie in der
    squid.conf-Datei abwärts und fügen Sie die folgenden Zeilen direkt vor
    der "http_access deny all"-Zeile ein: 
    acl mynetwork 192.168.0.1/255.255.255.0
     http_access allow mynetwork
     Mynetwork ist der ACL-Name und die nächste Zeile die Regel, die auf
     einen bestimmten ACL-Eintrag anwendbar ist, z. B. mynetwork.  192.168.0.1 
     bezieht sich auf die Adresse des Netzwerks, dessen Netzmaske 
      255.255.255.0 ist. mynetwork gibt also einer Gruppe von Maschinen in 
      dem Netzwerk einen Namen und die folgende Regel erlaubt den Clients
      den Zugang. Die vorstehenden Änderungen zusammen mit der  
      http_port-Anweisung sind ausreichend, um Squid zu aktivieren. Nach den 
      Änderungen kann Squid mit dem folgenden Befehl gestartet werden: 
    service squid start
    Hinweis:
    Squid kann auch automatisch zur Bootzeit gestartet werden, indem es in
    ntsysv oder setup (System Service Menu) aktiviert wird. Nach jeder 
    Änderung in der Konfigurationsdatei muss der aktuelle Squid-Prozess
    gestoppt und Squid erneut gestartet werden, damit die neuen
    Konfigurationsänderungen wirksam werden. Diese zwei Schritte können
    durch folgende Befehle erreicht werden:
 
    
      - service squid restart or
- /etc/rc.d/init.d/squid restart
Konfiguration der Client-Maschinen
    Da die Clientanforderungen auf einem besonderen Port des Proxy-Servers
    erwartet werden, müssen die Client-Maschinen für den gleichen Zweck
    konfiguriert werden. Es wird hier vorausgesetzt, dass diese Maschinen
    bereits mit dem LAN (mit gültigen IP-Adressen) verbunden sind und in der
    Lage sind, den Linux-Server mittels ping zu erreichen. 
    
    Internet Explorer 
    
      -  Tools -> Internet-Optionen
- Wählen Sie den Verbindungs-Tab und LAN-Einstellungen
- Markieren Sie Proxy-Server und geben Sie die IP-Adresse des 
      Proxy-Servers und die Port-Adresse ein, unter der die Anforderungen
      angenommen werden (http_port-Adresse).
     Netscape Navigator 
    
      -  Edit -> Einstellungen -> Advanced ->
      Proxies.
- Wählen Sie Manual Proxy Configuration.
- Wählen Sie den View Button &
- Geben Sie die IP-Adresse des Proxy-Servers und die Port-Adresse 
      ein, unter der die Anforderungen angenommen werden (http_port-Adresse).
      
Benutzung von Zugangslisten
    Mehrere Zugangslisten und -Regeln bieten eine sehr gute und flexible
    Art, den Zugang von Clients zum Internet zu kontrollieren. Beispiele für die
    am häufigsten vorkommenden Steuerungen werden unten angegeben; 
    diese sollten auf keinen Fall als die einzig vorhandenen Steuerungen 
    angesehen werden.
   
    
      - 
        Ausgewählten Maschinen den Zugang zum Internet erlauben
 acl allowed_clients src 192.168.0.10
        192.168.0.20 192.168.0.30
 http_access allow allowed_clients
 http_access deny !allowed_clients
 Dies erlaubt nur den Rechnern mit den IP-Adressen 192.168.0.10,
        192.168.0.20 und 192.168.0.30 Zugang zum Internet und dem Rest
        der IP-Adressen (nicht aufgeführt) wird der Service verweigert.
- 
        Beschränkung des Zugangs nur zu bestimmten Zeiten 
 acl allowed_clients src
        192.168.0.1/255.255.255.0
 acl regular_days time MTWHF 10:00-16:00
 http_access allow allowed_clients regular_days
 http_access deny allowed_clients
 Dies erlaubt allen Clients im Netzwerk 192.168.0.1 
        den Netzzugang von Montag bis Freitag zwischen 10.00 und 16.00 Uhr.
- 
        Unterschiedliche Zeitzugänge für verschiedene Clients
 acl hosts1 src192.168.0.10
 acl hosts2 src 192.168.0.20
 acl hosts3 src 192.168.0.30
 acl morning time 10:00-13:00
 acl lunch time 13:30-14:30
 acl evening time 15:00-18:00
 http_access allow host1 morning
 http_access allow host1 evening
 http_access allow host2 lunch
 http_access allow host3 evening
 http_access deny all
 Die obige Regel erlaubt Host1 Zugang sowohl während der 
        morning-Zeit als auch in der evening-Zeit; während host2 und host3
        entsprechend jeweils nur während der lunch-Zeit bzw. der 
        evening-Zeit Zugriff haben.
 
 Hinweis:
 Alle Elemente eines Zugangseintrages werden mittels UND verbunden und
        in der folgenden Art ausgeführthttp_access Aktion Anweisung1 UND Anweisungt2
        UND Anweisung ODER. Mehrere  http_access-Anweisungen werden mit ODER verknüpft,
        während Elemente eines Zugangseintrages mit UND verbunden werden; 
        aus diesem Grunde wirdhttp_access allow host1 morning evening niemals zutreffen, weil die Zeitdefinitionen morning und evening
        (morning UND evening ) nie übereinstimmen und daher keine Aktion 
        stattfindet.
- 
        Sperrung von Webadressen
 Squid kann den Zugang zu einem bestimmten Rechner oder zu Seiten, die
        besondere Worte enthalten, sperren. Dies kann in der folgenden Weise
        implementiert werden:acl allowed_clients src
        192.168.0.1/255.255.255.0
 acl banned_sites url_regex abc.com *()(*.com
 http_access deny banned_sites
 http_access allow allowed_machines
 
 Die gleichen Definitionen können genutzt werden, um den Zugang zu
        Seiten zu sperren, die bestimmte Worte enthalten wie z.B.  dummy , fakeacl allowed_clients src
        192.168.0.1/255.255.255.0
 acl banned_sites url_regex dummy fake
 http_access deny banned_sites
 http_access allow allowed_clients
 Es ist nicht besonders praktikabel, alle Wortlisten oder Seiten aufzuführen,
         zu denen der Zugang verhindert werden soll, diese können in eine
         Datei ausgelagert werden (z. B. Sperr.Liste im /etc-Verzeichnis) und die
         ACL-Definition kann diese Information aus dieser Datei einlesen und 
         dann den Zugang zu den gesperrten Seiten verhindern.acl allowed_clients src
        192.168.0.1/255.255.255.0
 acl banned_sites url_regex "/etc/Sperr.Liste"
 http_access deny banned_sites
 http_access allow allowed_clients
 
- 
        Optimieren der Benutzung
 Squid kann die Anzahl gleichzeitiger Verbindungen von den
          Client-Maschinen durch das maxconn-Element kontrollieren.
           Zur Benutzung dieser Option sollte die client_db-Eigenschaft vorher
           aktiviert werden.acl mynetwork 192.168.0.1/255.255.255.0
 acl numconn maxconn 5
 http_access deny mynetwork numconn
 Hinweis:
 Das maxconn-ACL benutzt einen kleiner-als-Vergleich. Dieser 
        Zugangseintrag trifft zu, wenn die Anzahl gleichzeitiger Verbindungen
        größer als der angegebene Wert ist. Dies ist der Hauptgrund dafür,
        weshalb dieser Zugangseintrag nicht zusammen mit der http_access allow 
        Regel benutzt wird.
- 
        Zwischenspeichern der Daten
 Antworten auf die Anforderungen werden direkt gespeichert, dies ist 
        sinnvoll für statische Seiten. Es macht aber keinen Sinn, cgi-bin- oder
        Servlet-Dateien zwischenzuspeichern. Dies kann über das no_cache 
        ACL-Element verhindert werden.acl cache_prevent1 url_regex cgi-bin /?
 acl cache_prevent2 url_regex Servlet
 no_cache deny cache_prevent1
 no_cache deny cache_prevent2
 
- 
        Erstellen Ihrer eigenen Fehlermeldungen
 Es ist möglich, mit einer deny-Regel eigene Fehlermeldungen zu 
        verwenden; dies geschieht mittels der deny_info-Option. Alle 
        Squid-Fehlermeldungen finden sich standardmäßig im Verzeichnis
        /etc/squid/errors. Das Fehler-Verzeichnis kann über die 
         error_directory-Option gesetzt werden. Sie können sogar die 
         vorhandenen Fehlermeldungen anpassen.acl allowed_clients src 192.168.0.1/255.255.255.0
 acl banned_sites url_regex abc.com *()(*.com
 http_access deny banned_sites
 deny_info ERR_BANNED_SITE banned_sites
 http_access allow allowed_clients
 Im obigen Beispiel wird eine besondere Nachricht angezeigt, wann immer
         Benutzer/innen versuchen, auf eine Seite mit den aufgeführten
         gesperrten Worten zuzugreifen. Der Dateiname in der Option, z. B.
         .ERR_BANNED_SITE muss in den angegebenen Fehlerverzeichnis
         existieren. Diese Fehlerdatei sollte im HTML-Format erstellt sein. 
         Die oben angeführten Beispiele sind nur einige wenige der Optionen,
         Möglichkeiten und Fähigkeiten der ACL-Elemente. 
         Sie sollten sich die  FAQ section auf der Squid-Webseite für ausführlichere Benutzung und 
         Erklärungen zu anderen ACL-Elementen und Zugriffseinträgen 
         durchlesen.
Log-Dateien
    Alle Squid-Logdateien sind im Verzeichnis /var/log/squid enthalten; 
    dies sind cache.log, access.log und store.log. Die Datei access.log
    enthält die Information über die Client-Anforderungen, Aktivität und 
    enthält Einträge für jede  HTTP- & ICP-Anfrage, die an den 
    Proxy-Server gestellt wurde, die Client-IP-Adresse, die Anforderungsart,
    angeforderte URL, usw. Der Inhalt dieser Datei kann zur Analyse der
    Zugriffsinformationen genutzt werden. Viele Programme wie 
        sarg, calamaris, Squid-Log-Analyzer 
    sind verfügbar, um diese Daten zu analysieren und Berichte (im 
    HTML-Format) zu generieren. Diese Berichte können hinsichtlich
    Benutzern, IP-Adressen, besuchten Seiten, usw. erstellt werden. 
    
     Die Speicherung der Log-Dateien kann über die folgenden Optionen
     geändert werden: 
cache_access_log     für access.log
cache_log            für cache.log
cache_store_log      für store.log (Store manager)
pid_filename         Squid Prozess-ID-Dateiname
    Authentifizierungs-Methoden
    Squid erlaubt in der Standard-Konfiguration jedermann und -frau den 
    Zugang ohne einen Authentifizierungsprozess. 
    Um die Benutzer zu überprüfen (d. h. nur zulässige Benutzerinnen von
    jeder Maschine im Netzwerk), bietet Squid die Möglichkeit zur
    Authentifizierung, jedoch über ein externes Programm, für das dann
    ein gültiger Benutzername und Passwort erforderlich sind. Dies wird
    ermöglicht durch die Benutzung des proxy_auth-ACL und der 
    authenticate_program-Anweisung, welches die Benutzer zwingt, 
    Benutzername und Passwort zu verifizieren, bevor Zugang gewährt wird.
    Es sind mehrere Authentifzierungsprogramme vorhanden, die Squid benutzen
    kann; diese sind 
    
      - LDAP : benutzt das Linux Lightweight Directory Access
      Protocol
- NCSA : benutzt NCSA-ähnliche Benutzer- und Passwort-Dateien
- SMB : benutzt SMB-Server wie SAMBA oder Windows NT
- MSNT : benutzt Windows NT Domain-Authentifizierung
- PAM : benutzt Linux Pluggable Authentication Modules
- getpwam : benutzt Linux Passwort-Datei.
Man muss das benutzte Authentifizierungsprogramm angeben und dies
    geschieht durch die authenticate_program-Option. Stellen Sie sicher,
    dass das benutzte Authentifizierungsprogramm installiert ist und funktioniert.
    
    Die Änderungen in der squid.conf-Datei sollten nun auch auf das 
    gleiche authenticate_program /usr/local/bin/pam_auth verweisen:
    acl pass proxy_auth REQUIRED
    acl mynetwork src 192.168.0.1/255.255.255.0
    http_access deny !mynetwork
    http_access allow pass
    http_access deny all
    Hiermit wird das PAM-Authentifizierungsprogramm benutzt und alle 
    Benutzer müssen sich authentifizieren, bevor sie auf das Internet zugreifen.
     
    
     Optionen wie authenticate_ttl und authenticate_ip_ttl können benutzt 
     werden, um das Verhalten des Authentifizierungsprozesses zu ändern,
     z.B. um eine Revalidierung von Benutzername und Passwort zu 
     erzwingen.  
    Referenzen
    Dieser Artikel berührt gerade nur die Spitze des Squid-Eisberges, für 
    weitere Informationen sollten Sie die folgenden Web-Seiten aufsuchen: