Pinguinbild

L i n u x - S c h u l e
Der Squid Proxy

Homepage | Server | Linux-Clients | Win9x-Clients | WinNT-Clients | Win3.11-Clients | Dos-Clients | Utilities

Wer surfte wann wohin ?

Auf Arktur läuft ein Squid Proxy, der in der Grundkonfiguration nur die IP-Nummern der Clients aufzeichnet, die auf ihn zugreifen. Es ist zwar mit Hilfe der Samba Logs möglich, zu bestimmen, wer wann wohin surfte, das ist aber sehr aufwendig.

Seit den Updatepaketen auf Kernel 2.2.19 und Squid 2.3 wird die Antwort eines identd (ein Programm, das die Identität eines angemeldeten Anwenders zurückgibt) im Logfile vermerkt. Das Script von Joachim Deckers zur Auswertung des Squid-Logs über das Webinterface ist in einer geänderten Fassung enthalten. Es werden nur noch die URL und der aufrufende Rechner angezeigt, aber nicht der Name des Aufrufenden. Die Namen sind nur noch in /var/log/proxy/access.log zu lesen. Die Originalversion mit Namen gibt es immer noch bei Joachim Deckers oder bei mir

Achtung: Die Aufzeichnung von solchen benutzerbezogenen Daten kann ein Verstoß gegen das Datenschutzgesetz sein, und sollte von den Anwendern im Rahmen einer Nutzungsdvereinbarung abgesegnet werden, insbesondere dann, wenn die namentliche Auflistung mit dem Originlscript installiert wird.

Was in dieser Grundeinrichtung nicht geht, ist der Ausschluss bestimmter User vom Internetzugang. Dazu muß eine acl angelegt werden, das Verfahren ist unten beschrieben.


Benötigte Programme

Windows Clients

Das Programm identd.exe für Win9x kann unter http://identd.sourceforge.net heruntergeladen werden.
Die Download Adresse für WinNT lautet http://info.ost.eltele.no/freeware/identd Weil ich keine NT Maschinen habe, konnte ich dieses Programm nicht testen.

Man muß nun dafür sorgen, dass das Programm auf jedem Rechner läuft. Am besten entpackt man identd.exe aus der zip-Datei nach /etc/samba/scripts. Wenn man nur mit Win95/98 Clients arbeitet, reicht zum Aufruf eine neue Zeile in der Datei /etc/samba/scripts/logon.bat:
\\arktur\netlogon\identd.exe -q

Auf WinNT Clients sollte das Programm lokal installiert werden (kann auch bei Win9x Clients nichts schaden). Der Aufruf im login Script sieht dann etwa so aus:
c:\identd -q

Linux Clients

Bei SuSE Linux wird in den Standardinstallationen kein identd installiert. Über die Auswahl des Paktetes pidentd aus der Serie n kann das nachgeholt werden. Der identd startet dann in Runlevel 2 und 3 automatisch.

Die Änderungen auf Arktur

Die Dateien /etc/squid/squid.conf.in und etc/squid/squid.conf sind in Abschnitt 7 Zugriffskontrolle können in Erweiterung der Angaben bei Joachim Deckers um folgende Zeilen ergänzt werden:

man fügt unterhalb von:
acl verboten url_regex "/etc/squid/schmuddel

diese Zeile ein:
acl badusers ident "/etc/squid/badusers"

und unterhalb von:
http_access deny verboten

diese Zeile:
http_access_deny badusers

Als Ergebnis dieser Maßnahme werden nicht nur die Anwendernamen im Logfile angezeigt, sondern es wird eine Liste befragt und die Anwender, die auf dieser Liste stehen, haben keinen Zugriff auf den Proxy und damit aufs Internet mehr. Diese Liste sollte mindestens den Eintrag nobody haben, sie darf nicht leer sein. Mehr dazu unter User vom Internetzugang aussperren.

In den Arktur Versionen <= 3.2t6 werden die Namen der aufrufenden Anwender nur mitgeloggt, es findet keine Zugriffskontrolle über eine acl statt.

Die Auswertung

Nach den Updates steht eine Maske für die Auswertung unter arktur/admin2/ als proxy.cgi zur Verfügung, die allerdings keine Namen mehr anzeigt. Ersetzt man diese proxy.cgi durch das Original von Joachim Deckers, hat man auch die Namen wieder.


User vom Internetzugang aussperren

Diese Lösung funktioniert nur, wenn sich alle Benutzer mit persönlichen Login anmelden und die Passwörter geheim sind!

Wie oben beschrieben, liest Squid nach der Änderung die auszusperrenden Benutzernamen aus einer Datei ein. Der Speicherort dieser Datei ist frei wählbar. Ich habe dazu ein Samba-Share /home/lehrer angelegt, auf das nur die Lehrer schreibenden Zugriff haben (es dient bei uns auch zum Materialaustausch zwischen den Lehrern). Es wird ihnen unter einem bestimmten Laufwerksbuchstaben zur Verfügung gestellt, ich arbeite dabei mit gruppenbezogenen Login-Dateien (siehe dazu s-samba.htm). In diesem Share liegt die Datei "badusers.txt". Jeder Lehrer kann nun von seinem Arbeitsplatz aus Schüler in dieser Liste ein- und austragen. Damit Squid die Datei auch lesen kann, sollten die folgenden Rechte gesetzt werden:

- für das Verzeichnis (als Beispiel):
chown squid.lehrer /home/lehrer
chmod 660 /home/lehrer

- für die Datei:
chown squid.lehrer /home/lehrer/badusers.txt
chmod 660 /home/lehrer/badusers.txt

Mit einem Doppelklick auf diese Datei öffnet sich der Editor, der Lehrer kann einen Anwendernamen eintragen, speichert die Datei ab und ist fertig.

Die Zeile für die Zugriffskontrolle muß dann so geändert werden:
acl badusers ident "/home/lehrer/badusers.txt"

Damit Squid die Änderungen auch mitbekommt, wird er über cron alle 10 Minuten rekonfiguriert. Eintrag in der crontab:
*/10 * * * /usr/squid/bin/squid -k reconfigure

Der Abstand sollte auf einen nicht zu kleinen Zeitraum eingestellt werden.

Es wäre sicher auch möglich ein sofortiges Reconfigure über ein cgi Script per Webbrowser anzustoßen, die Mühe habe ich mir aber nicht gemacht.

Pfeil_nach_oben Nach oben

© Thomas Litsch, zuletzt aktualisiert 01.05.2001, Email: thomas.litsch@linux-schule.de