Einen Squid-Proxy Server einrichten
ArticleCategory: [Choose a category, do not translate
this]
SystemAdministration
AuthorImage:[Here we need a little image from you]
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]
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�hrt
http_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 wird
http_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 , fake
acl 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: