Netzwerk-Installationsanleitung für Kernel 2.4 und 2.6

 

  
Zurück Inhalt Vorwärts


Dieses Kapitel wurde freundlicherweise zur Verfügung gestellt von: Helge Klug

6.0 Der Squid-Proxy in Verbindung mit SquidGuard

- Die Kindersicherung fürs Internet

Kurzfassung

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.

6.1 Einleitung

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.

6.2 NAT versus Proxy

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.

6.3 Installation

6.3.1 Installation von Squid

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

6.3.2 Installation von SquidGuard

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.

6.3.2.1 Installation der Berkeley Library

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.

6.3.2.2 Installation von Bison

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.

6.3.2.3 Installation von Flex

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.

6.2.3.4 Installation von SquidGuard

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.

6.3.3 Automatisches Starten der Installierten Dienste

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.

6.4 Einrichtung des Systems

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.

6.4.1 Grundkonfiguration von Squid 2.4

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.

acl rechner_1 src 192.168.99.1

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.

http_access allow rechner_1

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.

6.4.2 Squid als transparenter Proxy

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.

6.4.2.1 Konfiguration auf Seiten des Proxys

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

6.4.2.2 Die Einstellungen dem Netzwerk mitteilen

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

6.4.2.3 Umleitung des Http-Ports

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
#

6.4.3 Testen des eingerichteten Systems

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.

6.5 Konfiguration von SquidGuard
6.5.1 Konfiguration in Squid

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.

6.5.2 Erstellen des Shell-Skriptes

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.

6.5.2.1 Änderungen in /etc/sudoers

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

6.5.3 Aufbau SquidGuard.conf

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.

6.5.3.1 Anlegen der Konfigurationsdatei

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

6.5.3.2 Pflichtangaben in SquidGuard

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

6.5.3.3 Benutzer- und Gruppendefinierung in SquidGuard

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.

6.5.3.4 Zieladressen bestimmen

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.

6.5.3.5 Zieladressen verweigern

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.

6.6 Aktualisierung der Datenbank

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.

6.6.1 Aktualliesierung der Stammverzeichnisse über ein Skrip

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.

6.6.1.2 Entpacken der Datei

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.

6.6.1.3 Änderungen in der "blacklist-update" Datei

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

6.6.1.4 Automatische Aktualisierung der Datenbank

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.

6.6.2 Erstellen eigener Filterlisten

Wie Sie selbst Internetseiten, Ausdrücke etc. sperren wird anhand des Beispiels "porn", im nachstehenden Bezug genommen.

6.6.2.1 Sperren von Domains

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

6.6.2.2 Sperren von URLs

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

6.6.2.3 Freigeben von gesperrten Domänen und URL-Adressen

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.

6.6.2.4 Aktualisierung der Datenbank

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.

Zusammenfassung

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.

Legende

Ausgezogende Zeilen Befehlseingaben über die Konsole
Kursive Schreibweise Pfadangaben
Listings, Skripte Konfigurationsdateien
Tabellen Erklärungen von gesetzten Optionen.

Literatur

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