Transparenter Proxy mit Inhaltsfilter

Seit wenigen Jahren besitzt jeder Raum unserer Schule mind. zwei Netzwerkanschlüsse. Somit kann überall der schulische Internetzugang genutzt werden. In Klassenzimmern könnte es also durchaus vorkommen, dass Schüler (zumindest zeitweise) ohne Aufsicht diesen nutzen. Daher begab ich mich auf die Suche nach Möglichkeiten, um den Zugriff zu kontrollieren bzw. zumindest einzuschränken.

Separates Netzwerk

Um überhaupt gezielt Einfluss nehmen zu können, richtete ich ein eigenes Netzwerk für die Anschlüsse in den Klassenzimmern und den Fachräumen ein. Dieses VLAN – das Unterrichtsnetz – erhielt einen eigenen Adressbereich. Als Dienste stellte ich darin zunächst lediglich DHCP und DNS zur Verfügung. Somit war es zunächst möglich über die Firewall für dieses Netzwerk eigene Zugriffsregeln für den Internetzugriff festzulegen.

Beispiel einer Firewall-Regel, die den DNS-Zugriff auf den Router erlaubt
Beispiel einer Firewall-Regel, die den DNS-Zugriff auf den Router erlaubt

Damit lassen sich bestimmte Dienste wie z.B. der Mailabruf per POP3 generell verbieten. Aber der Zugriff auf Webseiten im Internet kann nur generell erlaubt oder verboten werden. Es kann nur sehr pauschal z.B. zwischen unverschlüsselten (http) und verschlüsselten Seiten (https) unterschieden werden. Dies war mir zu wenig differenziert und ich ging weiter auf die Suche.

Erster Proxy-Server

Als nächsten Schritt richtete ich im Unterrichtsnetz (als virtuelle Maschine) den OpenSchoolProxy ein. Dabei handelt es sich um einen weitgehend vorkonfigurierten Proxy-Server mit Inhaltsfilter. Als solcher macht er aber nur dann Sinn, wenn die Firewall für dieses Netz entsprechend eingeschränkt wird: Nur der Proxy-Server erhält Zugriff auf das Internet. Damit die anderen Rechner im Unterrichtsnetz dennoch im Internet surfen können, muss die Adresse und der Port des Proxy-Servers im Browser eingetragen werden. Unter Windows wird der systemweite Proxy-Server in den Netzwerk-Einstellungen des Internet-Explorers gesetzt.

Im Administrations-Interface des OpenSchoolProxy kann dann relativ detailliert festgelegt werden, welche Seiten frei aufrufbar bzw. welche gesperrt sind. Damit dies bei der Vielzahl an weltweiten Internetadresse überhaupt sinnvoll möglich ist, geschieht die Freigabe bzw. Sperrung von Webseiten anhand von Kategorien. Dennoch lassen sich im Einzelfall davon abweichende Einstellungen treffen. Außerdem protokolliert der OpenSchoolProxy jeden Zugriff auf das Internet. Darüber müssen die Benutzer natürlich Bescheid wissen.

Einblick in das Administrationsinterface des OpenSchoolProxy
Einblick in das Administrationsinterface des OpenSchoolProxy

Mit der Einrichtung und Konfiguration des OpenSchoolProxy hatte ich zunächst weitestgehend meine Ziele erreicht. So lief diese Konfiguration daher auch etwa zwei Schuljahre. Allerdings ergaben sich aus meiner Sicht auch Nachteile, die mich veranlassten einen weiteren Aus- bzw. Umbau vorzunehmen:

  1. Jeder Benutzer, der einen eigenen Rechner bzw. einen Computer verwenden will, der nicht von mir vorkonfuguriert wurde, muss den Proxy-Server manuell eintragen. Entsprechend muss diese Einstellung nach dem Einsatz im Unterrichtsnetz wieder rückgängig gemacht werden.
  2. Bei (Android-)Tablets muss der Proxy-Server ebenfalls im verwendeten Browser eingetragen werden. Diese Eintragung wirkt jedoch nur auf diesen speziellen Browser und nicht systemweit. Somit sind alle Apps, die keine eigene Einstellung eines Proxy-Server möglich machen, automatisch vom Internetzugang ausgesperrt.

Transparenter Proxy

Während weiterer Recherchen und bei Gesprächen mit Systembetreuerkollegen hörte ich davon, dass ein möglicher Lösungsansatz die Verwendung eines transparenten Proxys sei. Zu diesem wird der komplette Datenverkehr innerhalb des Netzwerks geleitet. Somit übernimmt er eigentlich eine dem Gateway ähnliche Rolle. Aber anders als bei einem Gateway im üblichen Sinn, kann an dieser Stelle eben ein Inhaltsfilter ansetzen.

Anhand verschiedener Anleitungen, die ich im Internet gefunden hatte, unternahm ich den Versuch, einen solchen transparenten Proxy auf Basis von Debian selber zu installieren und zu konfigurieren. Leider scheiterte ich damals an der Anpassung einiger Details. Da ich zu diesem Zeitpunkt jedoch keine Zeit hatte, mich ausführlicher einzuarbeiten, suchte ich nach weitgehend vorkonfigurierten Alternativen. Dabei kam mir IPCop in den Sinn. Diese Linux-Firewall-Distribution hat sicher deutlich mehr Funktionen, als ich für mein Szenario benötige. Aber sie bringt sowohl die Proxy- als auch die Inhaltsfilter-Funktionalität bereits mit.

IPCop als VM

Der IPCop wurde von mir in einer virtuellen Maschine installiert. Dieser VM gab ich zwei virtuelle Netzwerkkarten mit. Die eine (IPCop: Grüne Netzwerkschnittstelle) davon befindet sich im Unterrichtsnetz und die andere (IPCop: Rote Netzwerkschnittstelle) hängt in einem Netzwerk, das (nahezu) uneingeschränkten Internetzugriff hat. Entsprechend den IP-Adressbereichen der beiden Netze habe ich diese Schnittstellen mit IP-Adressen versehen.

Virtuelle Maschine für IPCop mit zwei Netzwerkkarten
Virtuelle Maschine für IPCop mit zwei Netzwerkkarten

Web-Proxy und URL-Filter

Die Konfiguration des IPCop beschränkt sich dann im Wesentlichen auf die Dienste Web-Proxy und URL-Filter. Beide Dienste erfordern relativ wenige Konfigurationseinstellungen.

Der Web-Proxy muss aktiviert und als "Transparent" eingestellt werden.
Der Web-Proxy muss aktiviert und als „Transparent“ eingestellt werden.
Ist der URL-Filter aktiviert kann er bei entsprechend gewählten Einstellungen wie der OpenSchoolProxy arbeiten.
Ist der URL-Filter aktiviert kann er bei entsprechend gewählten Einstellungen wie der OpenSchoolProxy arbeiten.

DHCP-Server

Damit nun an keinem Rechner mehr ein Proxy-Server händisch eingetragen werden muss, fehlt noch eine Änderung am DHCP-Server. Dort muss die IP-Adresse des Proxy-Servers im Unterrichtsnetz (Grüne Netzwerkschnittstelle) als Standard-Gateway verteilt werden.

Da der URL-Filter mit einer lokalen Kopie der gewählten Blacklist arbeitet, sollte diese noch regelmäßig und am besten automatisch auf den neusten Stand gebracht werden. Dies lässt sich ebenfalls im IPCop konfigurieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.