Freigabe und Sperrung von einzelnen Arbeitsplätzen
Benutzung
Der Zugang zum Internet kann bisher nur generell freigegeben oder gesperrt
werden. Für den Einsatz des c't/ODS-Kommunikationsservers (Arktur)
in Netzen mit mehr als einem Klassenraum bietet diese Erweiterung
die Möglichkeit für einzelne Arbeitsplätze den Zugang zum
Internet freizugeben bzw. zu sperren. Die Steuerung erfolgt über ein
Formular, das über die URL http://arktur/admin/formzugang.cgi
aufgerufen wird. Alle Anwender, die berechtigt sind das Admin-Interface
aufzurufen, können dieses Formular aufrufen:
In dem Formular können Sie einzelne Arbeitsplätze oder den gesamten
Raum freigeben. Beachten Sie, dass Sie erst die Änderungen durchführen
müssen, bevor diese aktiv werden. Ihnen werden nur die Arbeitsplätze
des Raumes angezeigt, in dem Sie das Formular aufrufen. Falls Sie alle Arbeitsplätze
sehen möchten, wählen Sie als URL
http://arktur/admin/formzugang.cgi?alle=ja,
dann erhalten Sie eine Übersicht über alle Räume.
Die Sperrung funktioniert nur, wenn Sie den Internetzugang nur über
den Proxy zulassen (s. Einstellungen des Webbrowser). D.h. Sie dürfen
auf dem Server das IP-Masquerading nicht aktivieren!
Protokoll
Eine Übersicht über die durchgeführten Freigaben bzw. Sperrungen
kann über das Skript http://arktur/admin/logzugang.cgi abgefragt werden.
Diese Dokumentation finden Sie nach der Installation unter der URL
http://arktur/admin/sperren.htm
Meldungen
Falls der Zugang über den Proxy gesperrt ist erhalten Sie beim Aufruf
einer Seite aus dem Internet folgende Meldung:
FEHLER
Der angeforderte URL konnte nicht geholt werden
Während des Versuches, den URL http://www.lego.com/ zu
laden,
trat der folgende Fehler auf:
Aufgrund von Zugriffsbeschränkungen ist Ihre Anfrage zur Zeit nicht
erlaubt.
Bitte kontaktieren Sie Ihren Service Provider, wenn Sie der Meinung sind,
daß dies nicht korrekt ist.
Generated Mon, 26 Feb 2001 08:35:41 GMT by Arktur.rbb.do.nw.schule.de
(Squid/2.3.STABLE4)
|
Installation
Die Installation ist mit der Version 3.0t bzw. 3.1 (c´t-Version)
und 3.2.14 getestet. Ob die Installation auch mit den Versionen 2.x funktioniert
kann nicht garantiert werden. Falls nicht können Sie wie unter
Deinstallation
beschrieben, den alten Zustand wieder herstellen.
Die Installation der Systemerweiterung erfolgt über die Option
"Einspielen von Updates" des Sysadm-Interfaces.
a) von Diskette
Falls Sie noch keine entsprechende Diskette haben, müssen Sie die Datei
sperren.tar mit rawwrite (s. c´t/ODS-CD) oder unter Linux
mit dd if=sperren.tar of=/dev/fd0 bs=512 auf eine leere formatierteDiskette
übertragen:
- Kopieren Sie auf einemen Windows-Client die Datei sperren.tar
aus dem Internet in das Laufwerk T (tmp auf arktur bzw. /home/tmp)
- Melden Sie sich auf Arktur als Benutzer root an.
- Geben Sie den Befehl cd /home/tmp ein.
- Legen Sie die Diskette in das Diskettenlaufwerk.
- Jetzt können Sie den Befehl dd if=sperren.tar
of=/dev/fd0 bs=512 ausführen.
- Nach der Anmeldung als Benutzer sysadm rufen Sie
die Update-Option auf (Verwalten / Updates).
- Wählen Sie die Option Disk.
b) von Festplatte
Alternativ können Sie auch die Datei sperren.tgz in das Verzeichnis
/var/updates kopieren und das Update über die Option HD einspielen.
Falls Sie diese Lösung nicht auf einem c´t/ODS-Server einsetzen
können Sie die Installation
entsprechend anpassen.
Die Installation führt folgende Änderungen auf Ihrem System
durch:
-
Die Dateien sperren.htm, formzugang.cgi, logzugang.cgi
und internet.cgi werden ins Verzeichnis /home/www/admin
kopiert.
- Die Datei zugang.conf wird ins Verzeichnis
/etc kopiert.
- Das Verzeichnis /etc/sperren wird neu eingerichtet
und die Dateien squid.sperren_ip und squid.sperren_raum
hierhin kopiert.
- Das Verzeichnis /home/www/admin/log wird neu
eingerichtet.
- In der Datei /etc/sudoers wird die Zeile "
www
ALL=NOPASSWD: /usr/squid/bin/squid" angefügt. Das Original finden
Sie unter /etc/sudoers.org
- In den Dateien /etc/squid.conf und /etc/squid.conf
.in werden die Zeilen "acl sperren_ip src /etc/sperren/squid.sperren_ip
" und "http_access deny all !sperren_ip"
- Die Datei job.MONAT.sperren wird in das Verzeichnis
/usr/lib/ods-server/cron kopiert.
Konfiguration
Nach der Installation müssen Sie noch die Arbeitsplätze, die
Sie freigeben möchten in die Datei /etc/sperren/squid.sperren_raum
eintragen. Verwenden Sie dafür den mc. Jeder Raum beginnt
mit dem Schlüsselwort Raum gefolgt von der Bezeichnung. Die
folgenden Zeilen enthalten die Bezeichnung des Arbeitsplatzes und seiner
IP-Adresse:
...
# Syntax
# Raum 418A gruppiert die folgenden Eintraege
# ^Schluesselwort (RAUM oder raum geht nicht!)
# ^Bezeichnung der Gruppe
# ROB1 192.168.0.10
# ^Arbeitsplatz: keine Umlaute oder Leer- und Sonderzeichen ausser
_ oder -
# ^ 1
Leerzeichen zur Trennung
#
^IP-Adresse
Raum 001
PC1R001 192.168.0.10
PC2R001 192.168.0.2
PC3R001 192.168.0.3
....
Raum 002
... |
Nach dieser Konfiguration ist die Erweiterung einsatzbereit.
Hinweis
Falls der Arbeitsplatz in der letzten Zeile nicht in dem Formular erscheint,
fügen Sie in der letzten Zeile einen Zeilen an.
Falls Sie die automatische Proxykonfiguration mit netcape.pac
verwenden, müssen Sie die Proxykonfiguration manuell vornehmen, um
Ausnahmen für den Proxy einzutragen, sonst sperren Sie sich u.U. selber
aus:
FTP Proxy |
192.168.0.1 |
8080 |
HTTP Proxy |
192.168.0.1 |
8080 |
Sicherheits Proxy |
192.168.0.1 |
8080 |
Kein Proxy für |
192.168.0.1,www,arktur |
|
Hinweise
Falls Sie den Eindruck haben, dass diese Erweiterung nicht funktioniert,
kontrollieren Sie bitte die Einträge in den Dateien
(s.o.)
insbesondere die Ergänzungen in /etc/sudoers und /
etc/squid/squid.conf bzw. /etc/squid.conf.in.
Achtung: Beim Systemstart wird die Datei squid.conf
durch die Datei squid.conf.in ersetzt.
Insbesondere nach Änderungen der Anwender für das Admin-Interface
sollten Sie die Datei /etc/sudoers überprüfen.
Weitere Hinweise zu Fehler können Sie den Dateien /var/log/messages
und /var/log/httpd_error.log entnehmen.
Das Protokoll der Freigaben und Änderungen wird automatisch monatlich
an den Systemverwalter (root) geschickt und anschließend gelöscht.
Änderungen
Die Voreinstellung der Installation sieht vor, dass grundsätzlich
alle Arbeitsplätze gesperrt sind und nur die freigegebenen einen Zugang
zum Proxy erhalten. Falls Sie eine umgekehrte Logik wünschen müssen
Sie in den Dateien /etc/squid.conf und /etc/squid.conf.in
die Zeile "http_access deny all !sperren_ip" in "http_access
deny sperren_ip" ändern. Allerdings entsprechen dann die Kommentare
in den Web-Formularen nicht mehr der Logik.
Die Datei /etc/zugang.conf enthält die Konfigurationen
des Servers, die in den Skripten benötigt wird. Hier müssen Sie
nur Änderungen vornehmen, wenn Sie diese Lösung auf andere Server
übertragen oder einige zusätzliche Funktionen (
s.u
.) nutzen wollen.
Deinstallation
Die installieren Dateien (s.o)
können Sie mit dem mc ohne Probleme wieder löschen. Um
nur die Funktionalität zu abzuschalten, genügt es in den Dateien
/etc/squid/squid.conf und /etc/squid.conf.in den Eintrag "
http_access deny all !sperren_ip" zu entfernen. Danach funktioniert
der Server wieder wie gewohnt.
Installation auf anderen Systemen
Diese Erweiterung lässt sich prinzipiell auch auf andere Systeme
übertragen. Folgende Voraussetzungen müssen auf den Systemen erfüllt
sein:
- Der Proxy unterstützt Access Control (z.B. SQUID)
- Der Webserver bearbeitet Perl CGI-Skripte (Perl-Version
5.0)
- Der Webserver kann den Proxy veranlassen, die Konfiguration
neu einzulesen (z.B. mit sudo /sbin/squid -k reconfigure)
Die Installation erfolgt in folgenden Schritten:
- Installation der Dateien
- Die Dateien formzugang.cgi, logzugang.cgi
und internet.cgi werden ins cgi-bin-Verzeichnis des Web-Servers
kopiert
- Die Dateien zugang.conf, sperren_ip und
squid.sperren_raum werden ins /etc-Verzeichnis
kopiert. Achten Sie darauf, dass sowohl Squid als auch der Webserver
diese Datei lesen bzw. verändern dürfen: chmod 644 squid.sperren_ip
u. chown www squid.sperren_ip
- Anpassungen im System
- Im cgi-bin-Verzeichnis das Verzeichnis log
mit Schreibrechten für den Web-Server anlegen
- In der Proxy-Konfiguration eine Access Control
Liste anlegen: z.B. in etc/squid.conf folgende Zeilen eintragen
- acl sperren_ip src /etc/squid.sperren_ip
- http_access deny all !sperren_ip
- Rechte für den Web-Server (User ID = www)
für den Proxy-Zugriff einrichten: z.B. mit sudo, d.h. in /etc/sudoers
folgendes eintragen:
- www
ALL=NOPASSWD: /usr/sbin/squid
- In der Datei /etc/zugang.conf müssen Sie
die Pfade bezogen auf Ihr System eintragen (s. Beispiel).
- In der Datei /etc/squid.sperren_raum müssen
Sie die Arbeitsplätze eintragen (s.o.).
- Die Datei job.MONAT.sperren z.B. nach /root/bin
kopieren und in die Crontab als Job eintragen , falls Sie ein regelmäßiges
Löschen der Log-Datei wünschen. Im Skript den absoluten Pfad der
Log-Datei eintragen.
Beispiel der Datei /etc/zugang.conf
...
kernelver="1.0" |
Diesen Eintrag sollten Sie nicht ändern! |
# fuer das Firewalling hier Server IP und Proxy-Port eintragen
server_ip = "192.168.1.21"
server_port = "3128" |
Änderungen nicht erforderlich! |
# Datei, die die Liste mit den freizugebenden Arbeitsplaetzen enthaelt
plaetze="/etc/squid.sperren_raum" |
Absoluten Pfad mit Dateiname eintragen |
# Datei, die in der squid.conf eingetragen wird z.B.:
# acl sperren_ip src "/etc/squid.sperren_ip"
squidfile="/etc/squid.sperren_ip" |
Absoluten Pfad mit Dateiname eintragen |
# Kommandozeile fuer squid
cmdsquid = "sudo /usr/sbin/squid -k reconfigure" |
Hier den Befehl eingeben, den der Web-Server nach der Änderung
der Proxy-Konfiguration ausführen soll |
# Datei, in der die Freigaben und Sperrungen protokolliert werden
# Der Pfad liegt relativ zum Verzeichnis cgi-bin
logfile="log/ipfw_http" |
Relativer Pfad zum cgi-bin-Verzeichnis des Web-Servers.
Den absoluten Pfad z.B. /usr/local/httpd/cgi-bin/log/ipfw_http im Skript
job.MONAT.sperren eintragen |
# Hintergrund der Formularseiten. Wird in den BODY-Tag eingefuegt
background=""whttxtr2.jpg" |
Hier die URL des Hintergrundbildes der Formulare eintragen |
# Web-Verzeichnis der Skripte
cgipath="/cgi-bin/" |
Hier die URL des cgi-Verzeichnisses eintragen |
# voruebergehend gesperrte User
denyuser="/etc/sperren/user.gesperrt" |
In diese Datei können User eingetragen werden, die vorübergehend
keinen Zugang freischalten sollen. |
# Ausgabe der letzten Sperrungen ja oder nein
printlog="nein" |
Bei jeder Sperrung und Freigabe werden zur Kontrolle die letzten
Aufrufe angezeigt. (Ist das eigene Passwort erraten worden?) |