Caching-Proxy squid 2.4 mit Inhaltsfilter squidGuard installieren (SuSE 8.1)

Einleitung

Beitrag von Uwe Walther, Lampertheim

Installationsziel:
Ein (einfacher) Squid 2.4 -Caching-Proxy-Server (unter SuSE 8.1) mit Inhaltsfolter squidGuard soll eingerichtet werden (siehe Schema rot umrandet).
Der Internet-Explorer eines Windows-Client soll für den Zugriff über Proxy konfiguriert werden.
Es wird einer der im Abschnitt A beschriebenen fli4l-Router für die Einwahl ins Internet verwendet.

Schema:

mitproxy.jpg (24950 Byte)

Ausgangslage:
Ein Windows-Client (Win2000) ist als Standolanoe-PC eingerichtet und ein fli4l-Router wurde (wie in einem der Beiträge zur Einrichtung eines Routers in Abschnitt A beschrieben) betriebsbereit aufgebaut.

Notwendige Vorkenntnisse:
Kenntnisse über die Unterscheidung zwischen Hardware und Gerätetreibern. Kenntisse im Betriebssystem Windows und in der Installation von Gerätetreibern unter Windows. Grundkenntnisse in Befehlen zur Datei- und Verzeichnisverwaltung unter DOS oder Linux/Unix sowie Kenntnisse in vi oder einem anderen Zeileneditor von Linux sind sinnvoll.

Funktionsweise des Proxy-Systems mit Inhaltsfilter:
Wenn der Proxy-Server läuft werden die Verbindungen ins Internet stets über den Proxy-Server geleitet. Hierzu wird der Proxy-Server mit seiner IP-Adresse und Port im Browser des Windows-Clients eingetragen. Der Proxy-Server bedient die Anfragen des Client aus seinem Cache (Internet-Zwischenspeicher). Liegen die Daten dort nicht vor (weil sie das erste Mail anagefordert wurden oder weil sie nicht mehr aktuell sind) werden sie vom Proxy aus dem Internet geholt. Des Weiteren werden alle Anfragen gegen eine Liste mit "verbotenen Seiten" sowie unerwünschten Ausdrücken in der URL verglichen. Wird eine Übereinstimmung gefunden, wird die Anfrage umgeleitet (redirect) und eine HTML-Seite mit dem  Hinweis: "Zugriff nicht gestattet" o. ä. ausgegeben.

Installation

Installationsschritte kurz skizziert:

- Es wird ein SUSE-Minimalsystem installiert
- Das Basispaket wird um die Programme squid, squidguard und apache erweitert.
- Die Netzwerkgrundfunktionalität wird eingerichtet und getestet
- Der Proxy und der Inhaltsfilter werden konfiguriert, gestartet uind getestet (Konfigurationsdateien: squid.conf, squidguard.conf)
- Der Browser des Client wird für Proxy konfiguriert und getestet
- Die HTML-Seite(n) die vom Redirector aufgerufen werden, werden auf den Apache gelegt, der Apache gestartet und getestet.


1. Installation und Netzwerk-Grundkonfiguration

1.1 Linux-Grundinstallation und Proxy-Serversoftware installieren
Für dieses Beispiel verwendete Hardware: Pentium 200 MHz, 128 MB RAM, HDD: 1,6 GB, Floppy, Monitor VGA 640*480, DVD-ROM-Laufwerk. Ich schätze als Minimalvoraussetzung sollte ein Pentium ab 90 MHz, 64 MB RAM und eine HDD ab 1 GB ausreichend sein.

SuSE 8.1 über Installations-DVD oder Installations-CD-ROM Nr.1 starten. Grundsätzlich gehen Sie bei der Installation wie im Handbuch beschrieben vor. Sie führen eine Installation nach den Vorschlägen von Linux durch. Einziger Punkt, der zu beachten ist: nur Minimal-System installieren, da sonst der Plattenplatz nicht reicht. Hierzu, wenn das Menü "Software-Auswahl" angeboten wird, das "Minimal-System" auswählen. Das Minimal-System benötigt zusätzlich nur drei Programm-Pakete, die sie über die Schaltfläche "Erweiterte Auswahl" hinzufügen können. Am einfachsten ist es nach den Paketen zu suchen und in jeweils in der Auswahlliste als "zu installieren" zu markieren. Wie man das macht erfahren Sie über "Hilfe". Es handelt sich um die Pakete:
squid        Das Proxy-Server-Paket
squidgrd   Der Inhaltsfilter squidguard
apache     Der Apache-Webserver

Danach starten Sie den Kopiervorgang. Bei der Installation per CD-ROM ist es von nöten nach Aufforderung die CD zu wechseln.

Irgendwann ist SuSE mit seiner Kopierarbeit fertig und bittet um die Eingabe des Passworts für den Superuser "root".
Passwort eingeben, Wiederholen und auf <Next> gehen.

Ein Standard-User ist einzutragen. Kriterien: Vor- und Nachname, Name unter dem sich der User anmeldet, Passwort (8 Zeichen).

Das System verarbeitet die Informationen und sucht dann nach der Netzwerkkarte. Danach muss für das Netzwerkdevice mit dem Namen eth0 (Treiber für die erste Netzwerkkarte) eine IP-Nummer vergeben werden.
Bitte unter "Static address setup" eingeben:
IP-Adresse 192.168.6.253, Netzwerkmaske 255.255.255.0

Hinweis: Alle in diesem Beitrag empfohlenen Konfigurationsparameter (IP-Adressen etc.) sind auf den unter Abschnitt A aufgebauten Router abgestimmt. Sofern Sie andere Konfigurationsparameter einstellen, ist auch der Router ggfs. anzupassen.

In die Sektion "Detailed settings" wechseln und <Host name and name server> auswählen.
Im Menü "Host name and name server configuration" unter "Host name and domain name" den "Domain name"ändern in "lan" (weil der Domänenname bei dem fli4l auch so heißt.). Es ist sauberer konfiguriert aber nicht zwinged notwendig.

In die Sektion "Name servers and domain search list" unter "Name server 1" die
IP-Nummer des DNS-Servers 194.25.2.129
(der Beitrag bezieht sich auf den Provider T-Online bzw. 1&1; sollten Sie einen anderen Provider haben, geben Sie deren IP-Nummer ein) und unter
"Domain search 1" den
Domänenname "t-online.de"
eingeben und <Next>.

Zurück im Menü <Network address setup> in der Sektion "Detailed settings> das Menü <Routing> auswählen.
In "Default gateway" die IP-Nummer des fli4l-Router
Router 192.168.6.254
eingeben und die Option "Enable IP forwarding" aktivieren. Weiter mit <Next>.

Das Menü "Network address setup" verlassen mit <Next>. Das Menü "Network cards configuration" verlassen mit <Finish>. Das Menü "Installation Settings" verlassen mit <Next>. Die Netzwerkeinstellungen werden übernommen, das System entsprechend eingestellt und die Einstellungen gspeichert. Das System läuft hoch.

Wenn die Meldung "Master Resource Control:  runlevel 3 (oder runlevel 5, je nach Hardwarevoraussetzungen und Programmumfang) has been reached" erscheint, dann kann man sich einloggen.

Testen wir mal ob das Netzwerk funktioniert:
Testen, ob die Karte intern erreichbar ist: ping 192.168.6.253
Testen, ob der Router im Netz erreichbar ist: ping 192.168.6.254
Testen, ob T-Online erreichbar ist: ping 194.25.2.129
Testen, ob ein Rechner im Internet über die Eingabe eines Webnamens erreichbar ist: ping   www.lowpriceproject.de

Troubleshooting:
Das Thema ist leider zu komplex um alle Ursache hier abzuhandeln. Ich empfehle folgende Vorgehensweise:
-Ist die Karte schon mittels ping 192.168.1.253 nicht erreichbar, so empfehle ich eine Neuinstallation nach Handbuch, nicht mit dem Ziel einen Proxy aufzubauen, sondern sich grundsätzlich mit der Materie vertraut zu machen. Sie sollten ausßerdem sicher stellen, daß die Karte nicht defekt ist. Eine neue PCI-Karte Realtek-Chipsatz für 6,- bis 10,- Euro könnte vielleicht schon helfen. Erst wenn sicher gestellt ist, daß die Karte grundsätzlich funktioniert, können Sie weiter machen.
- Ist der Router im Netz nicht erreichbar, so sollten Sie die IP-Adressen auf dem Proxy wie auch auf dem Router noch einmal überprüfen. Beide sollten in den ersten drei Blöcken 192.168.6  haben. Der Proxy hat dann die 253 als Rechnernummer und der Router die 254. Natürlich könnte es auch an der Verkabelung und am Hub liegen. Hier auch noch mal kontrollieren.
- Ist der T-Online-Rechner nicht erreichbar, probieren Sie am Router ob mittels ping 194.25.2.129 on eine Einwahl ins Internet statt findet. Funktioniert es da schon nicht, dann sind die Voraussetzungen für den Aufbau des Proxies (Einrichten eines fli4l oder sontigen Routers) nicht erfüllt. Macht er es mittels ping 194.25.2.129 nur vom Proxy aus nicht, dann überprüfen Sie bitte die Routing-Tabelle wie folgt:
route -n
Es sollten diese zwei Zeilen (auszugsweise) vorhanden sein:
192.168.1.0    0.0.0.0    255.255.255.0     eth0
0.0.0.0            192.168.1.254                     eth0

Fehlt der zweite Eintrag, dann kontrollieren Sie die Datei /etc/sysconfig/network/routes
Sie sollte folgende Zeile beinhalten:
default    192.168.1.254   -   -

Ist diese in Ordnung, kontrollieren Sie bitte die Datei /etc/resolv.conf
Sie sollte dies beinhalten:
nameserver   194.25.2.129
search t-online.de

Nach den Änderungen machen Sie einen Neustart und probieren es noch einmal.

Weiter gehts jetzt in Richtung Proxy-Konfiguration

Anzeigen der Serverprogramme (nachschauen ob die Software, die wir benötigen, im System vorhanden ist) mit
ls -ls /usr/sbin/squid
ls -ls /usr/sbin/squidGuard
ls -ls /usr/sbin/httpd

Troubleshooting:
Fehlt eines der Serverprogramme, dann überprüfen Sie bitte noch einmal ihre Schreibweise. Fehlt es immer noch, starten Sie yast und installieren Sie die Pakete noch einmal. Hier sei auch auf das Handbuch verwiesen.

1.2 Proxy-Server konfigurieren
Wechseln Sie ins Verzeichnis /etc/squid und überprüfen bzw. editieren Sie in der Datei squid.conf folgende (rot unterlegten) Einträge
#
# /etc/squid.conf
NETWORK OPTIONS
# keine Änderungen
OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM
keine Änderungen
OPTIONS WICH AFFECCT THE CACHE SIZE
# keine Änderungen
LOGFILE PATHNAMES AND CACHE DIRECTORIES

# nur zur Info, keine Änderungen
# für 512 MB Cache, 16 Verzeichnisse, 256 Unterverzeichnisse; Standard: 100MB
cache_dir ufs  /var/cache/squid  100  16  256
OPTIONS FOR EXTERNAL SUPPORT PROGRAMS
#   TAG: redirect_programm
#Default:
# none
redirect_program  /usr/sbin/squidGuard
OTIONS FOR TUNING THE CACHE
# keine Änderungen
TIMEOUTS
# keine Änderungen
ACCESS CONTROLS
# Hier ist Standardmäßig alles verboten und muß dediziert erlaubt werden
# zu diesem Zweck muß bei "http" der Eintrag "deny" in "allow" geändert werden.
# (ungefähr in Zeile 1458) "http access deny all" umwandeln in:
http access allow all
ADMINISTRATIVE PARAMETERS
# Hier wird die E-Mail des Cache-Administrators festgelegt.
cache_mgr  ihreemailadresse@ihredomain.top
OPTIONS FOR THE CACHE REGISTRATION SERVICE#

1.3 SquidGuard konfigurieren
In der Datei /etc/squidguard.conf die (rot unterlegten) Einträge erzeigen bzw. editieren (sonst darf nix drin sein). Beachten Sie bitte peinlichst genau die Exakte Schreibweise und die vielen geschweiften Klammern.

# squidGuard Konfigurationsdatei
# /etc/squidguard.conf (hier mit kleinem "g")
# Pfadangabe zu den logdateien. Die müssten aber noch
# konfiguriert werden.

logdir /var/squidGuard/logs

# Der gesamte Pfad zu den Dateien domains, urls und expressions
# ist /var/squidGuard/db/blacklist
# für dbhome wird hier wird das übergeordnete Verzeichnis angegeben!

dbhome /var/squidGuard/db

# Hier die globalen Parameter

dest blacklist {
      domainlist blacklist/domains
      urllist blacklist/urls
      expressionlist blacklist/expressions
      redirect http://www.lowpriceproject.de/verweigert.html
}

dest expressions {
      expressionlist  blacklist/expressions
      redirect  http://www.lowpriceproject.de/verweigert2.html
}

# Hier wird entschieden ob Zugriff erlaubt oder verboten ist.
# Will man erlauben, dann muesste das Ausrufezeichen weg.
acl {
      default {
            pass !blacklist all
      }
}

1.4 Starten und Testen der Server
Starten Sie squid (und damit auch automatisch squidguard) mittels
rcsquid start

Ob der Server läuft sehen Sie mit
ps ax | grep squid
In der Bildschirmausgabe sollten diese Einträge (Auszugsweise) zu sehen sein:
....../usr/sbin/squid -sYD
..... (squid)  -sYD

Wenn der Server nicht läuft gibts mehrere mögliche Gründe:
-Der Squid-Cache wurde verhunzt (z.B. durch manuelles löschen "drüberinstallieren")
Der Cache kann so neu aufgebaut werden:
Squid aufrufen mit:
/usr/sbin/squid -z
Es werden Fehlerdetails ausgegeben. Beim Fehler
FATAL: Failed to make swap directory /var/cache/squid: (13) Permission denied
folgendes machen
Abhilfe:
Als root durchführen:
rcsquid stop (squid beenden)
cd /var/cache/
rm -R squid
(löscht den gesamten Cache, dauert etwas, wird
bei zerschossenem Filesysem Fehlermeldungen bringen)
mkdir squid (Cache-Verzeichnis neu anlegen)
chown -c squid:nogroup squid (Rechte setzen, Besitzer: squid, Gruppe: keine)
chown squid:nogroup cache (Rechte setzen)
/usr/sbin/squid -z (den Cache neu aufbauen lassen)

1.5 Automatisches starten des Squid
Die Automatisierung des Squid-Serverstarts erfolgt über insserv.
insserv squid

Anschließend starten Sie das System neu.


2. Konfiguration des Windows-Client

2.1 Den Client für Caching-Proxy konfigurieren
Internet-Explorer aufrufen.Im der Menüleiste den Menüpunkt <Extras> anwählen. Im Pull-Down-Menü den Menüpunkt <Internetoptionen> anwählen. Im Dialogfenster die Registerkarte <Verbindungen> auswählen. In der Registerkarte "Verbindungen" den Menüpunkt <LAN-Einstellungen> anwählen. Dort <Proxyserver verwenden> einschalten und IP-Nummer (192.168.1.253) sowie den Port (3128) eintragen.

2.2 Testphase
Die Zugriffsgeschwindigkeit testen. Dazu erst mal eine große Seite aus dem Internet downloaden. Den Lokalen Cache des Windows-Clients löschen. Dann die Seite nochmals aus dem Internet anfordern. Die Ladezeitdauer müßte jetzt deutlich kürzer sein. Geben Sie anschließend eine unsinnige URL ein. Der Proxy müßte sich jetzt im Brwoserfenster ausweisen. Rufen Sie jetzt eine Suchmaschine auf und geben Sie einen unerwünschten Suchbegriff ein (Siehe in den Dateien unterhalb von /var/squidGuard/db nach). Es sollte jetzt folgender Hinweis (auf blauem Grund) kommen:

 

ZUGRIFF VERWEIGERT


Hinweis: Es werden zwei unterschiedliche Seiten ausgegeben. Für unserlaubte URLs bzw. Domains die verweigert.html und für unerlaubte Ausdrücke die verweigert2.html. Zum Testen ist das besser. Sie sehen schon was ich meine, wenn Sie es ausprobieren.

3. Die Seiten für den Redirector auf dem Proxy installieren
Sollte alles bis hierhin funtkioniert haben: HERZLICHEN GLÜCKWUNSCH.
Kommen wir nun zur KÜR:
In der von mir vorgeschlagenen squidguard-Konfiguration wird mittels redirect (Umleitung) bei unerwünschten Seiten oder Ausdrücken in der URL auf zwei Seiten in der Domain www.lowpriceproject.de/verweigert (bzw. www.lowpriceproject.de/verweigert2) verzweigt. Ich kann mir vorstellen, daß es Ihnen vielleicht sympatischer ist, einen eigenen Mechanismus hierfür zu etablieren. In weiser Voraussicht haben wir hierfür den Apache installiert.

Erzeugen Sie im Verzeichnis /srv/www/htdocs die Datei verweigert.html mit z.B. folgendem Inhalt:
<html>
<head>
<title></title>
</head>
<body </body bgcolor="#000080" topmargin="0" leftmargin="0">
<table border="0" width="100%">
<tr>
<td width="100%"><p align="center"></td>
</tr>
<tr>
<td width="100%" bgcolor="#FF0000"><p align="center">&nbsp;</p>
<p align="center"><font color="#FFFFFF" face="Arial"><strong><big><big><big>ZUGRIFF VERWEIGERT</big></big></big></strong></font></p>
<p align="center"><font color="#FFFFFF" face="Arial"><strong><br>
</strong></font></td>
</tr>
<tr>
<td width="100%"><p align="center"></td>
</tr>
</table>
</body>
</html>

oder eine eben eine Datei die Ihren persönlichen Ansprüchen genügt. Meines Wissens nach ist es auch möglich eine GIF-Datei zu hinterlegen, das habe ich allerdings noch nie ausprobiert.

Jetzt starten sie den Apache mittels
rcapache start

Geben Sie anschließend die IP-Nummer ihres Apache-Webserver im Browser ein. Sie sollten folgendes zu sehen bekommen:

apache.gif (7106 Byte)

Mittels
insserv apache
aktivieren Sie den automatischen Start beim Hochfahren des Systems. Jetzt ist die Squidguard-Konfiguration auf ihren Apache anzupassen. Editieren Sie hierzu die  /etc/squidguard.conf wie folgt (rot unterlegt):

dest blacklist {
      domainlist blacklist/domains
      urllist blacklist/urls
      expressionlist blacklist/expressions
     
redirect http://127.0.0.1/verweigert.html
}

dest expressions {
      expressionlist  blacklist/expressions
      redirect  http://127.0.0.1/verweigert.html
}

Neustart des Systems. Voila, das war´s.

4. Nachbearbeiten bzw. ergänzen der blacklists
Im Verzeichnis /var/squidGuard/db/blacklist finden Sie drei Dateien:
domains
urls
expressions

Hier können Sie eigene Ergänzungen einpflegen.

Hinweis zu expressions:
Beachten Sie bitte, daß bei expressions nur drei Zeilen existieren (die je nach verwendetem Programm zur Anzeige umgebrochen werden könnten). In der ersten Zeile können Sie zusätzliche (zwischen zwei | ) Begriffe eintragen (alphabetische Reihenfolge beachten).

>> Eine für Schulen optimierte blacklist anfordern <<

....... Ende des Beitrags