|
|||||||
|
|||||||
|
|
| Zurück | Inhalt | Vorwärts |
| Dieses Kapitel wurde freundlicherweise zur Verfügung gestellt von: Helge Klug |
In der nachstehenden Dokumentation wird die Installation und Konfiguration eines "Squid" Proxy-Servers in der Version 2.4.x mit "SquidGuard" unter einem Linuxbetriebssystems behandelt. Der Proxy-Server wird in eine bestehende "Firewall" so integriert, dass ein erhöhter Administrationsaufwand, für die Adresseneingabe des Proxys auf den einzelnen Clients vermieden wird. Die Internetverbindung wird weiterhin über die eingetragene "Standardgateway" Adresse aufgebaut. Der Dokumentationsabschnitt über SquidGuard ist an beiden Installationsmethoden getestet worden. Aus der Erfahrung ist es jedoch ratsam bei der Installation von SquidGuard den etwas längeren Weg über den Quellcode zu wählen.
Die Bandbreite für den Zugang in das globale Netzwerk wurde in den letzten Jahren kontinuierlich erhöht. Ist das Internet proportional schneller geworden als früher? Informationen über den Typ des Browsers, verwiesene URL-Seiten, akzeptierte Zeichensätze, Sprachen usw. werden vom Browser beim jeden Aufruf einer Seite im Transportprotokoll mit verschickt. Datenmengen die zum Aufruf von Seite beansprucht werden, sind dementsprechend höher als früher. Unerwünschte Seiten wie z.B. Pornographie, Gewalt oder Musikdateien werden beim Surfen unweigerlich mit abgerufen, die Performance leidet. Gegen den Willen Erziehungsberechtigter können Seiten mit dem oben genanten Inhalt von Jugendlichen leicht aufgerufen werden. Mit einem Proxy-Server besteht erstens die Möglichkeit einen Teil dieser Seiten automatisch zu sperren. Zweitens wird ein kleiner Teil von Anonymität und Schnelligkeit zurück gewonnen.
Es gibt im Wesentlichen zwei Techniken, die die Clients mit dem World Wide Web (www) verbinden: Proxy (engl. Vermittler) und NAT (Network Address Translation). Der Proxy übernimmt die Anfrage des Browsers, überprüft die Informationen aus dem Datenpaket. Alle unzulässigen Eintragungen werden gelöscht bzw. überschrieben. Nach der Überarbeitung wird die Anfrage ins Internet weitergeleitet. Die Rückantwort wird dem Browser übermittelt und zeitgleich im Proxy-Cache des Servers gespeichert. Beim nächsten Aufruf wird die Seite aus dem eigenen Cache bezogen, nachdem die Aktualität überprüft worden ist. Der Zugriff auf die Seite ist dadurch wesentlich schneller. Mit Hilfe der "redirect program" Option in der Konfigurationsdatei (squid.conf), besteht die Möglichkeit eine eigenständige Software auf das Redirector-Interace des Squid-Proxys zu setzen. SquidGuard oder Junkbuster sind die meist Verbreittesten. In Zusammenarbeit mit dem Proxy können anhand definierter Ausdrücke, Dateiendungen, Urls Dateien oder Seiten gefiltert werden. Greift einer der gesetzten Regeln wird der Aufruf abgebrochen oder durch eine vorgegebene Datei ersetzt. Die Ladezeit wird dadurch verringert. In der nachstehenden Dokumentation wird auf "redirect program" SquidGuard Bezug genommen.
Bei der neueren Methode NAT wird die Quell-IP-Adresse eines für einen Server im Internet bestimmten Datenpakets geändert. Durch die geringfügige Änderung des Pakets können mit NAT weitaus umfangreichere Datenströme bewältigt werden, als mit einem Proxy-Server. Die Filterung von Internetseiten etc. wird jedoch nicht unterstützt.
Das Paket des Squid-Servers befindet sich auf jeder gängigen Linux-Distribution und kann mit dem herstellerspezifischen Konfigurationstool in das laufende Betriebssystem integriert werden. Wer die neueste Version verwenden möchte, kann den Quellcode von http://www.squid.org herunterladen und wie folgt am Beispiel der Version 2.4 installieren. Die Datei muss entpackt werden.
gzip -dc squid-2.4.tar.gz | xvf -
Das Verzeichnis mit dem Namen"squid-2.4" wird angelegt und der Quellcode in das Verzeichnis "source" kopiert. Wechseln Sie in das neue Verzeichnis.
cd squid-2.4/source
Nun kann mit der Kompilierung und der Installation begonnen werden:
./configure
make
make install
make clean
Für SquidGuard, ist ein funktionierender Squid-Server erforderlich. Die
Installation kann wie bei Squid über zwei Wege vorgenommen werden. Über
den Quellcode der unter http://www.squidguard.org
bezogen werden kann oder über ein RPM-Paket (RedHat Paket Manager). Mit
dem Distributions- bezogenem Installationstool kann das Paket über die
Installations-CD leicht in das laufende System installiert werden.
Bei der Installation über den Quellcode muss einiges beachtet werden.
Neben dem Quellcode von SquidGuard, wird die Berkeley DB Library in der
Version 2.2 benötigt. Bei der Kompilierung von SquidGuard mit der aktuellsten
Version der Berkeley Library (Version ab 3.0) treten Probleme auf, begründet
auf der Weiterentwicklung der Berkeley Library. Für die Kompilierung von
SquidGuard werden des Weiteren die Module "bison" und "flex" benötigt.
Bison ist ein universeller grammatische Definition Generator, der eine
Grammatikbeschreibung für eine LALR kontextfreie Grammatik in ein C Programm
umwandelt, um dessen Aufbau zu analysieren.
Flex ist ein schneller lexikalischer Analysatorgenerator.
Beide Module können von http://ftp.teledanmark.no/pub/gnu/
herunter geladen werden.
Als erstes muss der Quellcode entpackt werden
gzip -dc /db-2.7.7.tar.gz | tar xvf - cd /db-2.7.7/dist
Nachdem alles entpackt ist, kann mit der Installation der Berkeley Library begonnen werden
./configure
make
make install
Die Berkeley Library wurde in /usr/local/BerkeleyDB installiert.
Als erstes muss der Quellcode entpackt und in das entstandene Verzeichnis gewechselt werden.
tar -xvf bison-1.35.tar
cd /bison-1.35
Nachdem alles entpackt ist, kann mit der
./configure
make
make install
Bison wurde in /usr/local/share/bison installiert.
Wie bei den vorherigen Installationen wird als erstes die komprimierte Datei entpackt.
tar -xcf flex-2.5.4a.tar
cd / flex-2.5.4a
Die Installation des Definition Generators wird mit
./configure
make
make install
vollzogen. Flex wurde in /var/local/bin installiert.
Wie bei der oben beschriebenen Installation wird als ersts der Quellcode entpackt und in das Installationsverzeichnis gewechselt.
gzip -dc /squidGuard-1.2.0.tar.gz | tar xvf -
cd /squidGuard-1.2.0
Die Kompilierung und Installation unterscheidet sich nur wesentlich, vom oben genannten. Bei der Kompilierung müssen Optionen gesetzt werden, die die spätere Administration erleichtern.
./configure --with-db-lib=/usr/local/BerkeleyDB/lib
\--with-db-inc=/usr/local/BerkeleyDB/include
\--with-sg-conf=/etc/squid/squidGuard.conf
\--with-sg-logdir=/var/log/squidGuard
\--with-sg-dbhome=/usr/share/squidGuard-1.2.0/
make
make test
Während des Testes, überprüft SquidGuard die bis hierin getätigte Installation. Treten keine Fehlermeldungen auf kann mit der Installation fortgefahren werden.
make install
make clean
Sollten während der Installation Probleme auftreten, wird auf die FAQ (Friendly Asked Questions) des SquidGuard Projektes verwiesen. SquidGuard wurde in /var/local/bin installiert.
| Tabelle 1: Erklärungen zu den gesetzten Optionen | |
| Einstellung | Erklärungen |
| --with-db-lib=/usr/local/BerkeleyDB/lib | Bestimmung des "/lib"- Verzeichnisses von der Berkeley Bibliothek. |
| --with-db-inc=/usr/local/BerkeleyDB/include | Bestimmung des "/include"- Verzeichnisses von der Berkeley Bibliothek. |
| --with-sg-conf=/etc/squid/squidGuard.conf | Bestimmung des Pfades der Konfigurationsdatei von SquidGuard. |
| --with-sg-logdir=/var/log/squidGuard | Bestimmung des Ortes der Logdateien, für den Prozess selbst. Default-Verzeichnis: /usr/local/squidGuard |
| --with-sg-dbhome=/usr/share/squidGuard- 1.2.0 | Ort der Quelldateien. |
Dieser Schritt kann bei den meisten Distributionen entfallen, da die Konfigurationstools dies selbstständig durchführen. Der für Squid notwendige Squid-Prozes wird in ein Startskript einfügt und steht bei jedem Neustart des Rechners zur Verfügung. Das "redirect program" SquidGuard wird später von Squid selbst aufgerufen. Nach der Installation muss allerdings Squid von Hand gestartet oder ein reboot durchgeführt werden.
/etc/init.d/squid restart
Mit diesem Ausdruck wird der Proxy gestartet und das Cacheverzeichnis beim ersten Start angelegt. Bei anderen UNIX-Systemen sorgt ein Start-Script dafür, dass Squid automatisch gestartet wird. Da dies bei den einzelnen Distributionen unterschiedlich ist, wird hier nicht näher darauf eingegangen. Nach der erfolgreichen Installation kann mit der Konfiguration begonnen werden.
Jeder Administrator eines größeren Systems ist bedacht sich selbst möglichst wenig Arbeit zu machen. Die gravierende Änderung, von NAT auf Proxy, wird vom Benutzer nicht wahrgenommen. Der Proxy wird transparent in das bestehende Sicherheitssystem eingebunden. Anfragen auf Port 80, der für einfache Internet-Anfragen (http) verwendet wird, werden fortan auf den Proxy umgeleitet. Alle anderen Verbindungen wie z.B. für E-Mails laufen weiterhin über NAT.
Folgende Änderungen (vgl. Listing 1) werden in der Konfigurationsdatei (squid.conf) des Squid-Servers vorgenommen. Die Konfigurationsdatei befindet sich unter /etc/squid/.
|
Listing 1: Die Datei /etc/squid/squid.conf
|
# NETWORK OPTIONS http_port 3128 hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY # OPTIONS WHICH AFFECT THE CACHE SIZE cache_mem 64 MB cache_swap_low 75 cache_swap_high 95 maximum_object_size 4096 KB # LOGFILE PARAMETERS AND CACHE DIRECTORIES cache_dir ufs /var/spool/squid 500 16 256 cache_access_log /var/log/squid/access.log cache_store_log /var/log/squid/store.log pid_filename /var/run/squid.pid log_fqdn on client_netmask 255.255.255.255 # OPTIONS FOR TUNING THE CACHE refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 reference_age 1 mounth # ACCESS CONTROLS acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp #acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT # Rechner ACL's acl rechner_1 src 192.168.99.1 acl rechner_2 src 192.168.99.2 http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access allow CONNECT !SSL_ports # Rechnerfeigabe http_access allow localhost http_access allow rechner_1 http_access allow rechner_2 icp_access allow all miss_access allow all # ADMINISTRATIVE PARAMRETERS cache_mgr deine_email@domain.de cache_effective_user squid cache_effective_group squid # MISCELLANEOUS append_domain .home.local memory_pools_limit 32 MB forwarded_for off anonymize_headers allow Cookie anonymize_headers allow Allow Authorization Cache-Control anonymize_headers allow Content-Encoding Content-Length anonymize_headers allow Content-Type Date Expires Host anonymize_headers allow If-Modified-Since Last-Modified anonymize_headers allow Location Pragma Accept anonymize_headers allow Accept-Encoding Accept-Language anonymize_headers allow Content-Language Mime-Version anonymize_headers allow Retry-After Title Connection anonymize_headers allow Proxy-Connection fake_user_agent xx00234 |
| Tabelle 2: Erklärung zu den gesetzten Optionen | ||
| Einstellung | Erklärungen | |
| http_port | Port, auf dem http-Anfragen empfangen werden. Verwendet wird auch der Port 8080. Default: 3128 | |
| hierarchy_stoplist cgi-bin ? | Seiten im cgi-bin Format (Dynamische Seiten) werden direkt geladen und aus dem eigenem Cache gelöscht. | |
| cache_mem | Größe des Caches im Hauptspeicher (RAM). Default: 8 MB | |
| cache_swap_low cache_swap_high | Ist der Cache zu 95% belegt, wird dieser bis zum low-level gelöscht. Default: 90 und 95. | |
| maximum_object_size | Objekte größer dem angegebenen Wert in kb (Kilo Byte) werden nicht im Cache gespeichert. | |
| cache_dir | Ort des Cacheverzeichnises. Die Abkürzung
"ufs" verweißt auf das verwendete Speicherprinzip des Caches. Der
erste numerische Zahlenwert gibt die maximale Größe (in MB) des Caches
an. Im Cacheverzeichnis werden 16 Ordner mit jeweils 256 Unterordnern
angelegt. Default: ufs /var/squid/cache 100 16 256 |
|
| cache_access_log | Ort der Logdatei, der erlaubten Zugriffe. Default: /var/squid/logs/access.log | |
| cache_store_log | Ort der Logdatei, der geblockten Zugriffe. Default: /var/squid/logs/store.log | |
| pid_filename | Der Dateiname in der die Prozess-ID geschrieben wird. Default: /var/run/squid.pid | |
| log_fqdn | In den Logdateien, wird die aufgerufene URL angegeben, statt der IP. Default: off | |
| client_netmask | In den Logdateien soll die komplette IP des Clients angezeigt werden. | |
| Refresh_pattern ^ftp: refresh_pattern ^gopher: refresh_pattern ^gopher: |
Default: |
refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 |
| reference_age | Zeitdauer, wie lange eine Datei im Cache gehalten werden soll. Default: 1 month | |
| acl … |
Mit "access controls" (acl) werden Listen erstellt, in der die Zugriffe auf den Proxy bestimmt werden. Hierbei ist folgendes zu beachteten. Als erstes muss ein acl definiert werden.
Der ACL-Name "rechner_1" ist hier die IP "192.168.99.1" zugewiesen worden. Die Abkürzung "src" verweist auf eine IP-Adresse. Weitere Abkürzungen können aus der Konfigurationsdatei entnommen werden. Nach der Definition werden die Rechte bestimmt.
Der Client mit dem ACL-Name"rechner_1" wird der Zugriff auf Internetseiten eingeräumt. Bei der Freigabe ist folgendes zu beachten: Es ist alles erlaubt, wenn einzelnes verboten ist. Es ist, alles verboten, wenn einzelnes erlaubt ist. Eine Verwendung von "Allow" und "Deny" ist nicht zulässig. |
|
| cache_mgr | In den Fehlermeldungen wird die Angegebene E-Mail angezeigt. | |
| cache_effective_user cache_effective_group |
Läuft Squid unter Superuserrechten, wird
hier die UID/GID (User Identification / Group Identification) geändert. Bei einigen Linux-Distributoren (z.B. SUSE-Linux) wird die hier verwendete Gruppe nicht verwendet. In diesen Fällen ist die default- Einstellung zu wählen. Default: nobody |
|
| append_domain | Angabe des Hosts in den Fehlermeldungen. | |
| memory_pools_limit | Default: 0 | |
| forwarded_for | Aus den Anfragen soll die interne IP-Adresse der Clients gelöscht werden. | |
| anonymize_headers |
Bei Anfragen werden vom Browser viele Daten mit gesendet, z.B. Browsertyp, verwendete Zeichensätze und Art des Betriebssystems. Diese Informationen werden größten Teils für die richtige Darstellung der Internetseite benötigt. Die Daten können von dritte Ausgelesen werden und für Statistiken ausgewertet werden. Moderne Web-Server, ermitteln die benötigten Daten über Javaskripte, so dass eine Vielzahl der vom Browser mit gesendeten Daten nicht benötigt werden. Informationen für Dritte können nicht ausgewertet werden. Für ein komfortables Surfen müssen einige vom Browser mit gesendeten Informationen freigegeben werden. Die Benötigten Informationen werden hier freigegeben, alle anderen werden gesperrt. Hinweis: Wird "anonymize_headers" verwendet, kann u.a. die Updatefunktion von Microsoftprodukten nicht verwendet werden. Die Identifikation des verwendeten Betriebssystems kann nicht ermittelt warden. |
|
| fake_user_agent | Einige Web-Server benötigen die Angabe des Browsertyps. Auf Grund der "anonymize_headers" Funktion von Squid ist diese Information gelöscht worden. Hier kann ein Individueller Browsername Angegeben werden. Der verwendete Browsername beeinträchtigt nicht die Darstellung der Internetseite. | |
Wie in der Kurzzusammenfassung beschrieben, wird der Proxy in ein bestehendes System so integriert, dass ein erhöhter Administrationsaufwand vermieden wird. Der Http-Port (Port 80) wird auf den angegebenen Proxy-Port (Port 3128) umgeleitet. Eine Umgehung des Proxys von den Benutzern wird so umgangen. Für die Benutzer ist die Umstellung des Systems nicht erkenntlich. Lediglich Fehlermeldungen verraten, den im Hintergrund laufenden Proxy.
Für die unter Punkt 6.4.2 beschriebene Arbeitsweise, muss die Konfigurationsdatei des Proxys nach Listing 2 abgeändert werden.
|
Listing 2: Squid als transparenter Proxy
|
# HTTP_ACCELERATOR OPTIONS httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on |
| Tabelle 1: Erklärungen zu den gesetzten Optionen | |
| Einstellung | Erklärungen |
| httpd_accel_host httpd_accel_port |
Hier wird bestimmt dass der Proxy im Hintergrund arbeiten soll und seine Anfragen an den Port 80 stellen soll. |
| httpd_accel_with_proxy | Squid soll als Proxy arbeiten |
| httpd_accel_uses_host_header | Default: off |
Die gesetzten Optionen sind Squid schon bekannt, werden allerdings noch nicht ausgeführt. Damit die Einstellungen angewandt werden, muss die Konfigurationsdatei "squid.conf" neu eingelesen werden. Dies geschieht über die Konsole mit: /etc/init.d/squid restart
Das oben beschriebene umleiten des http-Ports wird über ein Skript realisiert. Folgendes Skript (vgl. Listing 3) wird im Verzeichnis /etc/squid angelegt und ist mit
touch /etc/squid/http_port
anzulegen. Die angelegte Datei muss noch ausführbar gemacht werden:
chmod 744 /etc/squid/http_port
|
Listing 3: Die Datei /etc/squid/http_port
|
#! /bin/sh ############################################### # # Umleiten des http_ports (Port 80) auf den Proxyport (3128) # ############################################### iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 |
Somit werden alle Anfragen auf Port 80 der ersten Netzwerkkarte auf Port 3128 umgeleitet. Bei jeder neuen Einwahl ins Internet, ist dieses Skript einmal auszuführen. Während der Einwahl werden alle gesetzten Routes, auf Grund des ip-up.local-Skriptes (/etc/ppp/ip-up.local), gelöscht. Im ip-up.local-Skript ist folgende Änderung (vgl. Listing 4) vorzunehmen.
|
Listing 4: Die Datei /etc/ppp/ip-up.local
|
############################################### # # Umleiten des http_ports (Port 80) auf den Proxyport (3128) # ############################################### /etc/squid/http_port # # Freischalten, was auf den *Clients* benötigt wird # |
Alle Vorbereitungen für den Betrieb des Proxys sind abgeschlossen. Damit die Einstellungen getestet werden können muss die Portumleitung noch gesetzt werden. Dies geschieht über die Konsole mit:
/etc/squid/http_port
Zur Überprüfung der richtigen Ausführung des Skriptes, muss ein
iptables -L -t nat
über die Konsole ausgeführt werden. Die richtige Ausgabe sieht wie folgt aus.
Chain PREROUTING (policy ACCEPT)
REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 3128
Der Aufruf einer Internetseite, eines freigegeben Clients, wird jetzt über den Proxy vorgenommen. Falscheingaben, werden mit einer Fehlermeldung des Proxy angegeben.
Das "redirect program" SquidGuard muss in der Konfigurationsdatei von Squid (squid.conf) angegeben werden. Der direkte Aufruf von SquidGuard kann Probleme erzeugen, deshalb wird der Aufruf über einem Startskript vorgenommen. Folgende Änderungen sind in der Konfigurationsdatei des Proxys vorzunehmen (vgl. Listing 5).
|
Listing 5: SquidGuard aktivieren
|
# OPTIONS FOR EXTERNAL SUPPORT PROGRAMS redirect_program /usr/sbin/exec_sqGuard.sh redirect_children 5 |
| Tabelle 4: Erklärung zu den gesetzten Optionen | |
| Einstellung | Erklärungen |
| redirect_program | SquidGuard wird über ein Bourne-Shell-Skript (sh) aufgerufen, welches sich im angegebenen Verzeichnis befindet. |
| redirect_children | Es werden maximal fünf Subprozesse für SquidGuard gestartet. |
Die Konfiguration in Squid ist abgeschlossen.
Das in der Konfigurationsdatei von Squid angegebene sh-Skript wird mit
touch /usr/sbin/exec_sqGuard.sh
angelegt und mit
chmod 744 /usr/sbin/exec_sqGuard.sh
ausführbar gemacht. Der Inhalt des Skriptes ist in Listing 6 verdeutlicht. Hierbei ist zu beachten, dass der Pfad zu SquidGuard sowie dessen Konfigurationsdatei richtig angegeben ist.
|
Listing 6: Die Datei /usr/sbin/exec_sqGuard.sh
|
#! /bin/sh
SUDO="/usr/bin/sudo"
if test -x $SUDO; then
if test $UID -ne 0; then
exec $SUDO $0 $*
fi
fi
ulimit -n 2048
# Installation über den Quellcode
#exec /usr/local/bin/squidGuard -c /etc/squid/squidGuard.conf
# Installation über ein rpm-Paket
#exec /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
echo "--exec_sqGuard.sh wird ausgeführt"" >> /var/log/messages
|
Für die jeweilige Installationmethode ist das "#" vor der entsprechenden Zeile zu entfernen. Das unter Listing 6 aufgeführte Skript wird von Squid und dessen Berechtigungen (squid) aufgerufen. Für den "exec" Befehl werden root-Rechte benötigt, welche über Sudo zugewiesen werden.
Die Datei "sudoers" weist Squid die Rechte zu, um das angegeben Skripte als root auszuführen. Folgender Eintrag ist in /etc/sudoers zu erstellen (vgl. Listing 7).
|
Listing 7: Die Datei /etc/sudoers
|
Squid ALL:NOPASSWD /usr/sbin/exec_sqGuard.sh |
Die nachfolgenden Beispiele sollen verdeutlichen, wie die Konfigurationsdatei von SquidGuard aufgebaut ist. Hierbei wird sich von der vorgegebenen Konfigurationsdatei gelöst, um die Freigaben individuell selbst bestimmen zu können.
Bei der Installation über den Quellcode, wird keine Konfigurationsdatei von SquidGuard angelegt. Die Konfigurationsdatei ist daher mit
touch /etc/squid/SquidGuard.conf
anzulegen und mit "squid" Besitzrechten zu bestimmen.
chown squid /etc/squid/SquidGuard.conf
Die unter Listing 8 angegebenen Parameter, stehen für den Speicherort der Logdateien und das Stammverzeichnis der Zieladressen.
|
Listing 8: Pflichtangaben in SquidGuard.conf
|
# SquidGuard # /etc/squidGuard.conf logdir /var/log/SquidGuard dbhome /usr/share/squidGuard-1.2.0/db |
Das Verzeichnis für die Logdateien muss mit einem
mkdir /var/log/SquidGuard
angelegt werden. Bei der Installation über ein RPM-Paket, kann dieser Schritt übergangen werden. Die im Stammverzeichnis enthaltenen Zieladressen sind während der Installation angelegt worden. Zur Sicherheit sollte das Verzeichnis mit einem
ls /usr/share/squidGuard-1.2.0/db
kontrolliert werden. Der Aufruf führt zum Teil die in Tabelle 5 aufgelisteten Verzeichnisse auf.
| Tabelle 5: Unterverzeichnisse |
| Verzeichnisse |
| Ads |
| Adult |
| Aggressive |
| audio-video |
| drugs |
| gambling |
| hacking |
| porn |
| violence |
| warez |
Unter SquidGuard besteht die Möglichkeit entweder allen Benutzern oder nur Benutzergruppen Ziele zu sperren. Wie Gruppendefinitionen angelegt werden, verdeutlicht das nachstehende Beispiel (vgl. Listing 9).
|
Listing 9: Gruppendefinitionen in SquidGuard.conf
|
src gruppe1 {
ip 192.168.99.100 192.168.99.101
}
src gruppe2 {
ip 192.168.99.0/12
}
src gruppe3 {
user root
}
src gruppe4 {
group admin
}
|
| Tabelle 6: Erklärung zu den gesetzten Optionen | |
| Einstellung | Erklärungen |
| gruppe1 | In Gruppe1 sind die Clients mir der IP 192.168.99.100 und 192.168.99.101 enthalten |
| gruppe2 | In Gruppe2 sind die Clients mit dem IP-Bereich 192.168.99.0 bis 192.168.99.12 enthalten |
| gruppe3 | In Gruppe3 ist der Benutzer "root" enthalten. |
| gruppe4 | In Gruppe4 sind alle Benutzer der Linuxgruppe "admin" enthalten. |
Die unter /usr/share/squidGuard-1.2.0/db/ angegebenen Zieladressen müssen ausgelesen und bestimmt werden. Im Folgenden (Listing 10) wird lediglich auf die Bestimmung "porn" Bezug genommen. Andere Zuweisungen erfolgen nach dem gleichen Prinzip.
|
Listing 10: Zieladressen in SquidGuard.conf
|
dest porn {
urllist porn/urls
domainlist porn/domains
expressionlist porn/expressions
log porn.log
}
|
| Tabelle 6: Erklärung zu den gesetzten Optionen | |
| Einstellung | Erklärungen |
| urllist | Die Angegebenen Urls in der Datei /usr/share/squidGuard-1.2.0/db/porn/urls werden unter den Begriff "porn" geladen. |
| domainlist | Die Angegebenen IP-Adressen in der Datei
/usr/share/squidGuard-1.2.0/db/domains werden unter den Begriff "porn" geladen. |
| expressionlist | Die Angegebenen Ausdrücke in der Datei /usr/share/squidGuard-1.2.0/db/porn/expressios werden unter den Begriff "porn" geladen. |
| log | Logdateien für den Abschnitt "porn" sollen unter /var/log/SquidGuard/porn.log gespeichert werden. |
Nachdem Gruppen, Zieladressen sowie vorhandene Ausdrücke bestimmt sind, müssen die greifenden Seiten noch verweigert werden. Hier können verschiedene Methoden angewandt werden. Die Verweigerungen werden zum Schluss in einem Ausdruck oder die einzelnen Bereiche werden gesondert verweigert (vgl. Listing 11).
|
Listing 11: Seiten sperren mit SquidGuard
|
acl {
default {
pass !porn !ads !aggressive !audio-video !drugce all
redirect http://www.deinserver.de/deny.html
}
}
acl {
guppe2 {
pass !porn all
redirect http://www.deinserver.de/porn_deny.html
}
default {
pass all
}
}
|
| Tabelle 6: Erklärung zu den gesetzten Optionen | |
| Einstellung | Erklärungen |
| redirect | Greift einer der definierten Regeln, wird das Laden der Seite unterbrochen und stattdessen die angegebene Seite geladen. |
Im ersten Beispiel von Listing 11 werden alle greifenden Seiten mit einem Ausdruck gesperrt, eine Unterscheidung der einzelnen Benutzergruppen findet nicht statt. Das zweite Beispiel hingegen unterscheidet zwischen Benutzergruppen und Ausdrücken. Benutzer die in der Benutzergruppe "gruppe2" sind, wird der Zugriff auf gelistete pornographische Seiten gesperrt.
20 Prozent der im Internet abgelegten Seiten sind mit Pornographischen Inhalt gefüllt. Daher ist es eine Utopie, zu denken, dass Filtermechanismen jede Seite erkennen und gegebenen falls sperren können. Das Surfverhalten der Systembenutzer ist daher zu Überprüfen, um daraus Schlüsse zu ziehen welche Seiten gesperrt werden sollten.
Aus dem Internet kann unter http://www.bn-paf.de/filter/blacklist-upd.tar.gz ein Skript herunter geladen werden, welches für das Erstellen, Aktualisierung verwendet werden kann. Bei der Verwendung des Skriptes werden deutsche, französische sowie englische Filterlisten verwendet.
Nach dem herunterladen wird die komprimierte Datei entpackt
gzip -dc blacklist-upd.tar.gz| xvf -
Mit
cp /blacklist-upd/blacklist-update /etc/squid/
wird die Aktualisierungsdatei in das angegebene Verzeichnis kopiert.
In der Updatedatei müssen einige Variablen an das System angepasst werden (vgl. Listing 12).
|
Listing 12: Seiten sperren mit SquidGuard
|
USER=squid GROUP=$squid |
Die automatische Aktualisierung wird über einen Cronjop ausgeführt. Hierzu wird folgende Syntax in /etc/crontab eingeführt. (vgl. Listing 13).
|
Listing 13: /etc/crontab
|
22 4 * * 0 /etc/squid/blacklist-update diff 42 4 1 * * /etc/squid/blacklist-update all |
Nach der Eingabe wird jede Woche nach aktuellen diff-Dateien gesucht und gegebenenfalls über diese die Datenbank aktualisiert. Jeden Monat wird die Datenbank vollständig aktualisiert.
Wie Sie selbst Internetseiten, Ausdrücke etc. sperren wird anhand des Beispiels "porn", im nachstehenden Bezug genommen.
Die Internetseite "http://www.porn.de" soll mit allen Unterverzeichnissen für die Benutzer Ihres Netzwerkes gesperrt werden. Hierzu erstellen Sie mit:
touch /usr/share/squidGuard-1.2.0/db/costum/local-block/domains
die Datei "domains" im angegebenen Verzeichnis. Der Inhalt der Datei ist in Listing 14 verdeutlicht.
|
Listing 14: Sperren einer Domäne
|
| +porn.de |
Die URL "http://www.stats4all.com/asp", soll von dem "redirect program" gesperrt werden. Hierzu erstellen Sie mit:
touch /usr/share/squidGuard-1.2.0/db/costum/local-block/urls
die angegebene Textdatei im genannten Verzeichnis. Der Inhalt ist in Listing 15 verdeutlicht.
|
Listing 15: Sperren einer URLs
|
| + www.stats4all.com/asp |
Das entfernen von Datensätzen aus der Datenbank, wird genau so vollzogen wie das erstellen. Hierzu tauschen Sie lediglich das Pluszeichen (+) gegen ein Minuszeichen (-), vor der eigentlichen Zieladresse aus.
Für die Aktualisierung ist die Vorbereitung vollendet. Damit die erstellten Adressen von SquidGuard berücksichtigt werden, müssen die die neunen Datensätze aufgenommen werden. Dies geschieht über die Konsole mit:
squidGuard -C domains
beziehungsweise mit
squidGuard -C urls
Die neu zugeordneten Adressen werden fortan von SquidGuard berücksichtigt. Zur Sicherstellung, dass die überarbeitete Datenbank korrekt arbeitet, sollte der Proxy und somit das redirect- Programm mit:
/etc/init.d/squid restart
neu gestartet werden.
Ihnen wurde gezeigt, wie Sie bestimmte Internetseiten für Ihr Netzwerk sperren können. Die hier einfachen Konfigurationsbeispiele sollen lediglich den Weg einer benutzerspezifischen Konfiguration verdeutlichen. Durch die transparente Konfiguration des Proxy, wird sichergestellt, dass sämtliche http-Dokumente von dem Filter analysiert werden und gegebenenfalls gesperrt werden können. Eine Umgehung des Sicherheitsmechanismus ist nach dem oben genannten Prinzip nicht möglich.
| Ausgezogende Zeilen | Befehlseingaben über die Konsole |
| Kursive Schreibweise | Pfadangaben |
| Listings, Skripte | Konfigurationsdateien |
| Tabellen | Erklärungen von gesetzten Optionen. |
Helmut Holz, Bernd Schmitt, Andreas Tikart, 2001, D Verlag moderne industrie
Buch AG & Co.KG - Linux-Server
Über eventuelle Schäden übernimmt der Autor keine Haftung.
Copyright © 2004 by Helge Klug. The content is licensed under the terms of the Open Public Licence.
| Zurück | Inhalt | Vorwärts |
|
||||
|
|