Installation von Squidwall
| i18n |
|---|
| English |
| Deutsch |
Contents |
Installation
Squidwall Redirektor
Version
Dieses Dokument beschreibt die Installation von Squidwall Version 0.4b ... die Version 0.5 ist zur Zeit noch eine unstabile Entwicklerversion!
Anmerkungen
Bitte nutzt die Diskussionsseite um Fragen und eventuelle Lösungsansätze zu diskutieren.
Voraussetzungen
Die meisten Distributionen besitzen libowfat nicht, diese Bibliothek ist jedoch zur Kompilierung von Squidwall unbedingt notwendig und muß entsprechend heruntergeladen werden.
Zum kompilieren werden außerdem die Packete "make" und "gcc" benötigt. Alle gängigen Distributionen besitzen diese beiden Packete.
mycache:mkdir ~/packages/ mycache:cd ~/packages/ mycache:wget http://dl.fefe.de/libowfat-0.24.tar.bz2 (or any later version) mycache:bzcat libowfat-0.24.tar.bz2 | tar -x mycache:cd libowfat-0.24 mycache:make
Als nächstes muß ein symbolischer Link zur Libowfat Bibliothek erstellt werden, damit sie von der Squidwall Makefile gefunden wird.
mycache:cd ~/packages/ mycache:ln -s ~/packages/libowfat-0.24 ~/packages/libowfat
Kompilieren von Squidwall
Danach wird squidwall gebaut:
mycache:cd ~/packages/ mycache:wget http://www.mcmilk.de/projects/squidwall/dl/squidwall-0.4b.tar.bz2 mycache:bzcat squidwall-0.4b.tar.bz2 | tar -x mycache:cd squidwall-0.4b mycache:make mycache:make install cp contrib/squidwall.sh /usr/bin/
Squid Konfiguration
Füge folgendes zur /etc/squid/squid.conf hinzu:
redirect_program /usr/bin/squidwall.sh redirect_children 5 redirector_bypass off redirector_access deny localhost acl requireIdent ident REQUIRED http_access allow requireIdent
Dies würde die Benutzung eines Ident-Daemons zur Benutzeridentifizierung voraussetzen. Für Windows XP kann man Retina Scan's identd nutzen, welcher als Dienst auf jedem Client Rechner installiert wird.
Konfigurieren von Squidwall
Das Startskript /usr/bin/squidwall.sh kann genutzt werden, um diverse Variablen nach seinen eigenen Wünschen anzupassen. Es sollte ungefähr so aussehen:
#!/bin/sh SERVER="192.168.100.6" NETWORK="testing" exec env -i \ LOG_FILE="/var/log/squid/squidwall.log" \ PROXY="127.0.0.1:3128" \ CLAMD="127.0.0.1:3310" \ MAX_SIZE="50000" \ PFILTER_MAX="100" \ REDIR_BADUSER="http://$SERVER/inet/deny.php?network=$NETWORK&reason=user&" \ REDIR_BADHOST="http://$SERVER/inet/deny.php?network=$NETWORK&reason=host&" \ REDIR_BADCONT="http://$SERVER/inet/deny.php?network=$NETWORK&reason=cont&" \ REDIR_BADURL="http://$SERVER/inet/deny.php?network=$NETWORK&reason=url&" \ REDIR_VIRUSFOUND="http://$SERVER/inet/deny.php?network=$NETWORK&reason=virus&" \ REDIR_BANNERFOUND="http://$SERVER/inet/img/t.png" \ REDIR_SAFESITE="http://$SERVER/" \ REDIR_WEBINTERFACE="http://$SERVER/inet/" \ /usr/bin/squidwall
Webinterface Setup
- wichtige PHP Eigenschaften, welche für das Setup des Webinterfaces ein Rolle spielen:
- Sessions müssen unterstützt werden
- auf open_basedir achten
- short_open_tag = On
- display_errors = On (zum debuggen, falls etwas nicht funktioniert)
Lade die aktuelle Version des Beispiel-Webinterfaces von http://www.mcmilk.de/projects/squidwall/dl/webinterface/ herunter und entpacke es unter "/etc" wie folgt:
mycache:cd /etc mycache:wget http://www.mcmilk.de/projects/squidwall/dl/webinterface/0.4/2006-07-19.tar.bz2 mycache:bzcat 2006-07-19.tar.bz2 | tar -x
Verschiebe das Verzeichnis /etc/squidwall/inet in das Webroot des bereits installierten Apache. Dieses "http://your-server/inet/" wird dann als Basis für die deny.php als auch zum Einstellen der ACL's für squidwall genutzt.
mycache:cd /etc/squidwall mycache:mv -f inet /home/httpd/www (oder /usr/local/httpd ...)
Öffne /etc/squidwall/webinterface/CONFIG und überprüfe die Einstellungen, insbesondere:
$denypath $logpath $lang (english/german) $P_EXP="/inet"; /* Zugriff auf das Webinterface via http://servername/inet/ */ $P_EXP=""; /* Zugriff via http://squidwall/ - bevorzugt */
Die folgenden Dateien und Ordner müssen dem Webserver-User gehören. Und die Rechte müssen so gesetzt sein, dass Letzterer Lesen und Schreiben kann (bei Ordnern noch das x-Bit setzen).
Überprüfe, ob die folgenden Verzeichnisse und Dateien für den Webbenutzer oder der Webgruppe, meist nobody oder ähnlich, les- und schreibbar sind:
/etc/squidwall/filters /etc/squidwall/hosts /etc/squidwall/redirects /etc/squidwall/users /etc/squidwall/webinterface/sessions
Dies ist nötig, damit das Webinterface Dateien in diesen Verzeichnissen auch wirklich ändern darf. Falls die Rechte noch angepaßt werden müssen, sollte man folgendes ausführen:
chown -R webuser:webgroup /etc/squidwall
Variablen für die Meldungen
Die folgenden Variablen werden als HTTP GET Parameter an die Weiterleitungsseite übergeben:
$version - aktuelle Version von Squidwall $url - angefragte URL $ip - Client's IP Adresse $host - Hostname des anfragenden Clients $user - Benutzername des anfragenden Clients $method - the request method: GET, HOST, CONNECT, etc.
$clamd - Version von ClamAV $virus - Name des gefundenen Virus $filter - Informationen, warum die Seite gefiltert / geblockt wurde
Verfügbare Filter Mechanismen
Wenn man einen Filter-File erstellt ist es wichtig, dass man eine leere Zeile am Schluss des Files hat. Ansonsten wird der letzte Eintrag nicht beachtet.
Werbefilter
Diese Filter ersetzen Werbungen oder Banner mit einem 1 x 1 Pixel Bild, und blockieren sie somit:
basierend auf Stringvergleiche innerhalb der URL
+b,Filter1,Filter2,Filter3 -b diese Filterung ausschalten
basierend auf regex.7 Ausdrücken innerhalb der URL
+B,Filter1,Filter2,Filter3 -B diese Filterung ausschalten
basierend auf regex.7 Ausdrücken im HTTP-Header
+a,Filter1,Filter2,Filter3 -a diese Filterung ausschalten
URL - Schwarze Listen
basierend auf Stringvergleiche innerhalb der URL
+u,Filter1,Filter2,Filter3 -u diese Filterung ausschalten
basierend auf regex.7 Ausdrücken innerhalb der URL
+U,Filter1,Filter2,Filter3 -U diese Filterung ausschalten
basierend auf den MD5 hash der domain
+m,Filter1,Filter2,Filter3 -m diese Filterung ausschalten
basierend auf den SHA1 hash der domain
+s,Filter1,Filter2,Filter3 -s diese Filterung ausschalten
URL - Weiße Listen
basierend auf Stringvergleiche innerhalb der URL
+w,Filter1,Filter2,Filter3 -w diese Filterung ausschalten
basierend auf regex.7 Ausdrücken innerhalb der URL
+W,Filter1,Filter2,Filter3 -W diese Filterung ausschalten
Filterung von Inhalten
basierend auf Stringvergleiche innerhalb des Inhaltes der Seite
+c,Filter1,Filter2,Filter3 -c diese Filterung ausschalten
basierend auf regex.7 Ausdrücken innerhalb des Inhaltes der Seite
+C,Filter1,Filter2,Filter3 -C diese Filterung ausschalten
Schlagwörter filtern, basierend auf einem Negativ-Punktesystem für jedes gefundene Wort
+p,Filter1,Filter2,Filter3 -p diese Filterung ausschalten
Antivirus Filter
+V -V diese Filterung ausschalten
Zugriffskontrolle
Squidwall User ACL's
- $P_USERS/+user1
- der Benutzer darf das Internet ohne Einschränkung nutzen, sofern sein Host oder seine IP Adresse nicht gesperrt oder gefiltert werden
- $P_USERS/?user2
- der Benutzer 'user2' besitzt nur einen gefilterten Internetzugriff
- dies muß nicht zwangweise Schlecht sein, gefiltert heißt nur, das die Filteroptionen überhaupt eine Rolle spielen
- man kann ja alle Filter, mit der Ausnahme der Werbeblocker, deaktivieren und hat somit ein 'besseres surfen'
- auch ist eine Antivirus Filterung nicht unbedingt einschränkend
- $P_USERS/-user3
- der Benutzer 'user3' kann das Internet nicht benutzen
- er bekommt eine 'Benutzer ist gesperrt' Seite als Notiz dazu
- $P_USERS/!
- wenn sich die Modifikationszeit der Datei '!' geändert hat, liest squidwall dieses Verzeichnis neu ein
- diese Datei enthält die Standard Filteroptionen, welche für gefilterte Benutzer gelten sollen
- wenn diese Datei leer ist, werden alle möglichen Filter aus /etc/squidwall/filters/*/* genutzt
Zum Beispiel:
Der Benutzer "foo" soll für das Internet gesperrt werden:
touch /etc/squidwall/users/-foo touch /etc/squidwall/users/!
Squidwall Host/IP ACL's
- $P_HOSTS/+192.168.100.20
- der Host 192.168.100.20 darf das Internet ohne jegliche Beschränkung nutzen
- aber: ein Benutzer, der für die Internetnutzung gesperrt ist, darf auch von diesem Host aus nicht in das Internet :)
- $P_HOSTS/?192.168.100.21
- an dem PC mit der IP 192.168.100.21 wird gefiltert
- alle Filterungen, welche in '!' oder in '?192.168.100.21' definiert sind, werden geprüft
- $P_HOSTS/-hostX
- der Client, welcher auf den Namen hostX über DNS aufgelöst wird, darf zur Zeit nicht in das Internet
- $P_HOSTS/!
- wenn sich die Modifikationszeit der Datei '!' geändert hat, liest squidwall dieses Verzeichnis neu ein
- diese Datei enthält die Standard Filteroptionen, welche für gefilterte Hosts und IPs gelten sollen
- wenn diese Datei leer ist, werden alle möglichen Filter aus /etc/squidwall/filters/*/* genutzt
Webinterface ACL's
Die Benutzer für das Webinterface werden in zwei Gruppen eingeteilt und in der Datei "/etc/squidwall/webinterface/users.csv" definiert.
Standard Benutzer
- kann Hostnamen, IPs und Benutzer für das Internet sperren/filtern/erlauben
- kann vorhandene Filter anpassen
- kann Weiterleitungen anlegen/ändern/löschen
Adminstrator
- kann alles, was ein normaler Benutzer auch kann
- kann zusätzlich neue Hosts, IPs oder auch Benutzer anlegen
- kann neue Benutzer und Administratoren für das Webinterface anlegen
Die Datei selber enthält auch eine kleine Beschreibung, wie man Benutzer per Hand dort definieren kann.
Format der Datei: user:hash:perm user -> username hash -> sha1(user:pass) perm -> a=admin u=user Zum Beispiel: - username = adminuser - password = 12345 - permissions = admin -> result: 'adminuser:b810a5905bae88fd4cbbd94639d56b3ae0c43613:a'