.:zefanjas:. https://zefanjas.de open source, web, education Thu, 22 Feb 2018 07:11:56 +0000 de-DE hourly 1 https://wordpress.org/?v=4.9.4 https://zefanjas.de/wp-content/uploads/2016/12/cropped-zefanjas_new-32x32.png .:zefanjas:. https://zefanjas.de 32 32 Wie man Feinstaub mit einem Raspberry Pi messen kann https://zefanjas.de/wie-man-feinstaub-mit-einem-raspberry-pi-messen-kann/ https://zefanjas.de/wie-man-feinstaub-mit-einem-raspberry-pi-messen-kann/#respond Thu, 22 Feb 2018 07:11:56 +0000 https://zefanjas.de/?p=2428 Wir messen an unserer Schule regelmäßig den Feinstaubgehalt in der Luft. Besonders zwischen Februar und Mai sind die Werte hier in Süd-Ost Asien sehr hoch, da es in dieser Zeit kaum regnet, es sehr trocken und heiß ist und viele Wiesen und Felder abgebrannt werden. Das alles wirkt sich negativ auf die Qualität der Luft aus. Heute möchte ich zeigen, wie man den Feinstaub mit einem Raspberry Pi messen kann. Doch vorher möchte ich kurz auf die Frage eingehen: Was...

Weiterlesen Weiterlesen

Der Beitrag Wie man Feinstaub mit einem Raspberry Pi messen kann erschien zuerst auf .:zefanjas:..

]]>
Wir messen an unserer Schule regelmäßig den Feinstaubgehalt in der Luft. Besonders zwischen Februar und Mai sind die Werte hier in Süd-Ost Asien sehr hoch, da es in dieser Zeit kaum regnet, es sehr trocken und heiß ist und viele Wiesen und Felder abgebrannt werden. Das alles wirkt sich negativ auf die Qualität der Luft aus. Heute möchte ich zeigen, wie man den Feinstaub mit einem Raspberry Pi messen kann. Doch vorher möchte ich kurz auf die Frage eingehen: Was ist Feinstaub überhaupt und was wollen wir messen?

Was ist Feinstaub?

Ganz grob kann man sagen, dass es sich bei Feinstaub um sehr kleine Partikel / Teilchen in der Luft handelt. Man unterscheidet dabei zwischen PM10 und PM2.5 (Particulate Matter, auch Feststoffteilchen). Bei PM10 handelt es sich dabei um alle Partikel in der Luft, die kleiner als 10µm sind, bei PM2.5 entsprechend alle Teilchen, die kleiner als 2.5µm sind. Je kleiner die Teilchen, also v.a. alles kleiner als 2.5µm, desto gefährlicher sind sie für die Gesundheit, da sie bis in die Lungenbläschen eindringen können.

Die WHO empfiehlt z.B. folgende Grenzwerte:

  1. Jahresmittel PM10 20 µg/m³
  2. Jahresmittel PM2,5 10 µg/m³
  3. Tagesmittel PM10 50 µg/m³ ohne zulässige Tage, an denen eine Überschreitung möglich ist.
  4. Tagesmittel PM2,5 25 µg/m³ ohne zulässige Tage, an denen eine Überschreitung möglich ist.

Diese Werte liegen unter den in den meisten Ländern festgelegten Grenzen. In EU ist ein Jahresmittel für PM10 von 40 µg/m³ zulässig.

Was ist der Air Quality Index (AQI)?

Ausgehend von dem Feinstaubgehalt in der Luft kann man den Air Quality Index berechnen. Er gibt an, wie „gut“ oder „schlecht“ die Luft gerade ist. Leider gibt es hier keinen einheitlichen Standard, da verschiedene Länder diesen jeweils anders berechnen oder andere Skalen haben. Der Wikipedia-Artikel zum Air Quality Index liefert dafür einen gute Übersicht. An unserer Schule richten wir uns nach der Einteilung wie sie von der EPA (United States Environmental Protection Agency) festgelegt wurde.

AQI

Soweit ein kurzer Abriss zum Thema Feinstaub und AQI.

Was brauchen wir für die Feinstaubmessung?

Eigentlich braucht es nur zwei Dinge:

  • einen Raspberry Pi (jedes Modell geht, am besten ein Modell mit WLAN)
  • Feinstaubsensor SDS011

SDS011

Das war es schon 🙂 Wer sich für einen Raspberry Pi Zero W entscheidet, benötigt noch ein Adapterkabel auf einen Standard-USB Anschluss, da der Zero nur Micro-USB hat. Den Sensor bekommt man am besten bei Aliexpress. Dort kostet er um die 17-20$. Der Sensor hat eine USB-Adapter für die serielle Schnittstelle mit dabei.

Installation

Für unseren Raspberry Pi laden wir uns das entsprechende Raspbian Lite Image herunter und schreiben es auf die Micro-SD Karte. Dokumentiert ist das z.B. hier. Auf die Einrichtung der WLAN-Verbindung gehe ich an dieser Stelle nicht ein. Dazu gibt es viele Tutorials im Netz.

Wer nach dem Booten gleich SSH aktiviert haben möchte, muss in der boot-Partition einen leere Datei mit dem Namen ssh anlegen. Die IP des Raspberry Pis bekommt man am besten über den eigenen Router / DHCP Server heraus. Danach kann man sich per SSH anmelden (Standardpasswort ist raspberry):

$ ssh pi@192.168.1.5

Für unseren Sensor verwenden wir eine kleines Python-Modul, was uns einiges an Arbeit abnimmt. Dazu müssen wir noch einige Pakete installieren und das Repository auf den Pi klonen.

$ sudo apt install git-core python3-serial python-enum lighttpd
$ git clone https://gitlab.com/frankrich/sds011_particle_sensor.git sds011

Alle benötigten Pakete sollten jetzt installiert sein und das Modul für unseren Sensor befindet sich in /home/pi/sds011. Unter /home/pi/sds011/Code/text.py gibt es ein Testprogramm, mit dem man den Sensor testen kann. Bevor wir das Programm aufrufen können, müssen wir noch wissen, an welchem seriellen Port der USB-Adapter steckt. dmesg hilft uns weiter:

$ dmesg
[ 5.559802] usbcore: registered new interface driver usbserial
[ 5.559930] usbcore: registered new interface driver usbserial_generic
[ 5.560049] usbserial: USB Serial support registered for generic
[ 5.569938] usbcore: registered new interface driver ch341
[ 5.570079] usbserial: USB Serial support registered for ch341-uart
[ 5.570217] ch341 1-1.4:1.0: ch341-uart converter detected
[ 5.575686] usb 1-1.4: ch341-uart converter now attached to ttyUSB0

In der letzten Zeile steht unsere Schnittstelle: ttyUSB0. Wir können das Programm nun wie folgt aufrufen:

$ cd /home/pi/sds011/Code
$ sudo python3 test.py /dev/ttyUSB0

Wenn das Skript durchläuft, ist unser Sensor einsatzbereit. Wir brauchen jetzt noch zwei Dinge: einmal ein kleines Python-Skript, welches die Daten ausliest und in eine JSON-Datei speichert und dann werden wir eine kleine HTML-Seite basteln, die diese Daten ausliest und darstellt.

Daten auf dem Raspberry Pi auslesen

Wir erstellen zuerst eine Instanz des Sensors und lesen dann alle 5 Minuten für 30 Sekunden den Sensor aus. Diese Werte können natürlich angepasst werden. Zwischen den Messintervallen versetzen wir den Sensor in einen Schlafmodus, um die Lebensdauer zu erhöhen (Lebensdauer beträgt laut Hersteller ca. 8000 Stunden). Im Homeverzeichnis legen wir eine Datei mit dem Namen aqi.py an und kopieren den folgenden Inhalt hinein:

#!/usr/bin/python3

import sys
sys.path.append("/home/pi/sds011/Code/")
from sds011 import SDS011
import time
import json


sensor = SDS011("/dev/ttyUSB0")
sensor.reset()
print("Getting workstate...")
print(sensor.workstate)

while True:
    sensor.workstate = SDS011.WorkStates.Measuring
    for t in range(60):
        values = sensor.get_values()
        if values is not None:
            print("PM2.5: ", values[0], ", PM10: ", values[1])
            time.sleep(2)

    # open stored data
    with open('/var/www/html/aqi.json') as json_data:
    data = json.load(json_data)

    # check if length is more than 100 and delete first element
    if len(data) > 100:
        data.pop(0)

    # append new values
    data.append({'pm25': values[0], 'pm10': values[1], 'time': time.strftime("%d.%m.%Y %H:%M:%S")})

    # save it
    with open('/var/www/html/aqi.json', 'w') as outfile:
        json.dump(data, outfile)

    print("Going to sleep for 5min...")
    sensor.workstate = SDS011.WorkStates.Sleeping
    print(sensor.workstate)
    time.sleep(300)

Schneller geht es mit:

$ wget -O /home/pi/aqi.py https://raw.githubusercontent.com/zefanja/aqi/master/python/aqi.py

Damit das Skript fehlerfrei durchläuft sind noch zwei kleine Dinge nötig:

$ touch /home/pi/sds011/Code/__init__.py
$ sudo chown pi:pi /var/www/html/
$ echo [] > /var/www/html/aqi.json

Nun kann man das Skript starten:

$ chmod +x aqi.py
$ sudo ./aqi.py
Getting workstate...
WorkStates.Measuring
PM2.5: 55.3 , PM10: 47.5
PM2.5: 55.5 , PM10: 47.7
PM2.5: 55.7 , PM10: 47.8
PM2.5: 53.9 , PM10: 47.6
PM2.5: 53.6 , PM10: 47.4
PM2.5: 54.2 , PM10: 47.3
...

HTML-Seite für Anzeige der Messwerte und AQI

Weiter oben haben wir bereits einen leichtgewichtigen Webserver lighttpd installiert. Unsere HTML-, Javascript- und CSS-Datei müssen wir also im Verzeichnis /var/www/html/ speichern, damit wir von einen anderem Computer / Smartphone auf die Daten zugreifen können. Mit den nächsten beiden Befehlen laden wir die entsprechenden Dateien einfach herunter:

$ wget -O /var/www/html/index.html https://raw.githubusercontent.com/zefanja/aqi/master/html/index.html
$ wget -O /var/www/html/aqi.js https://raw.githubusercontent.com/zefanja/aqi/master/html/aqi.js
$ wget -O /var/www/html/style.css https://raw.githubusercontent.com/zefanja/aqi/master/html/style.css

Die Hauptarbeit findet in der Javascript-Datei statt, die unsere JSON-Datei öffnet, den letzten Wert nimmt und anhand dieses Wertes den AQI berechnet. Dann werden noch die Hintergrundfarben anhand der Skala der EPA angepasst.

Nun man die Adresse des Raspberry Pis einfach im Browser aufrufen und die aktuellen Feinstaubwerte betrachten, z.B. http://192.168.1.5:

AQI Website

Die Seite ist sehr einfach gestaltet und kann noch erweitert werden, z.B. um eine Grafik, die den Verlauf der letzten Stunden anzeigt usw. Pull Requests sind willkommen 🙂

Fazit

Für relativ wenig Geld können wir jetzt den Feinstaub mit einem Raspberry Pi messen. Ob draußen fest installiert oder als mobiles Messgerät – Einsatzmöglichkeiten gibt es viele. An unserer Schule haben wir beides im Einsatz. Einerseits einen Sensor der Tag und Nacht die Werte im Freien misst und einen mobilen Sensor, mit dem wir die Effektivität unserer Luftfilter in den Klassenzimmern überprüfen.

Unter http://luftdaten.info/ gibt es noch eine andere Möglichkeit einen ähnlichen Sensor zu bauen. Da bekommt man die Software bereits fertig geliefert und das Messgerät ist noch mal kompakter, da kein Raspberry Pi verwendet wird. Tolles Projekt!

Ein Feinstaubsensor ist ein Projekt, was sich auch gut mit Schülern im Informatikunterricht oder einer Arbeitsgemeinschaft umsetzen lässt!

Wofür setzt du einen Raspberry Pi ein?

Kommentar hinzufügen

Der Beitrag Wie man Feinstaub mit einem Raspberry Pi messen kann erschien zuerst auf .:zefanjas:..

]]>
https://zefanjas.de/wie-man-feinstaub-mit-einem-raspberry-pi-messen-kann/feed/ 0
linuxmuster und KVM – neue Dokumentation https://zefanjas.de/linuxmuster-kvm-neue-dokumentation/ https://zefanjas.de/linuxmuster-kvm-neue-dokumentation/#respond Wed, 21 Feb 2018 08:28:31 +0000 https://zefanjas.de/?p=2480 Neue Dokumentation Seit einigen Tagen gibt es eine ausführliche Anleitung zur Installation von linuxmuster.net auf einem KVM-Virtualisierungshost in der offiziellen Dokumentation des Projekts. Wenn man dieser Anleitung folgt, hat man nach wenigen Stunden den KVM-Host, den linuxmuster.net Schulserver, die Firewall und einen Administrations-PC fertig eingerichtet. Ergänzt wird das Ganze durch Bilder und Videos, welche die einzelnen Schritte noch mal visualisieren. In zwei weiteren Kapiteln stellt der Autor verschiedene Backup-Strategien vor und beschreibt die Einrichtung von VLANs auf dem Server. Neben...

Weiterlesen Weiterlesen

Der Beitrag linuxmuster und KVM – neue Dokumentation erschien zuerst auf .:zefanjas:..

]]>
Neue Dokumentation

Seit einigen Tagen gibt es eine ausführliche Anleitung zur Installation von linuxmuster.net auf einem KVM-Virtualisierungshost in der offiziellen Dokumentation des Projekts. Wenn man dieser Anleitung folgt, hat man nach wenigen Stunden den KVM-Host, den linuxmuster.net Schulserver, die Firewall und einen Administrations-PC fertig eingerichtet.

Ergänzt wird das Ganze durch Bilder und Videos, welche die einzelnen Schritte noch mal visualisieren. In zwei weiteren Kapiteln stellt der Autor verschiedene Backup-Strategien vor und beschreibt die Einrichtung von VLANs auf dem Server.

Neben dieser neuen Dokumentation gibt es auch Leitfäden für die manuelle Installation sowie die Installation mit einem XenServer.

Neuigkeiten zu Version 7

Die Entwickler arbeiten weiter fleißig an der neuen Version 7 von linuxmuster.net. Aber auch die aktuelle Version 6.2 hat im vergangenen Monat einige Sicherheitsupdates sowie neue Features erhalten (v.a. Linbo).

Noch gibt es keine Beta-Version von linuxmuster.net v7, aber wer sich ein Testsystem installieren will, findet im Github-Wiki eine Installationsanleitung inkl. fertiger Virtualbox-Images. Insgesamt wird es wohl noch einige Monate dauern, bis es ein Release geben wird.

Kommentar hinzufügen

Der Beitrag linuxmuster und KVM – neue Dokumentation erschien zuerst auf .:zefanjas:..

]]>
https://zefanjas.de/linuxmuster-kvm-neue-dokumentation/feed/ 0
Warum Linbo eines der besten Features von linuxmuster.net ist https://zefanjas.de/warum-linbo-eines-der-besten-features-von-linuxmuster-net-ist/ https://zefanjas.de/warum-linbo-eines-der-besten-features-von-linuxmuster-net-ist/#respond Fri, 16 Feb 2018 11:30:46 +0000 https://zefanjas.de/?p=2471 Es gibt viele Dinge, die ich an linuxmuster.net toll finde, aber eines der besten Features ist Linbo. Linbo (Linux Network Boot) ist ein Mini-OS, mit dem wir alle unsere Rechner verwalten. Mit Linbo registrieren wir neue Rechner im Netz, erstellen neue Images und verteilen sie wiederum auf andere Computer in unserem Schulnetzwerk. Für Schüler und Lehrer ist Linbo eher ein Bootmanager mit dem sie ihr gewünschtes Betriebssystem auswählen oder zurücksetzen können. Was an Linbo so besonders ist und warum es...

Weiterlesen Weiterlesen

Der Beitrag Warum Linbo eines der besten Features von linuxmuster.net ist erschien zuerst auf .:zefanjas:..

]]>
Es gibt viele Dinge, die ich an linuxmuster.net toll finde, aber eines der besten Features ist Linbo. Linbo (Linux Network Boot) ist ein Mini-OS, mit dem wir alle unsere Rechner verwalten. Mit Linbo registrieren wir neue Rechner im Netz, erstellen neue Images und verteilen sie wiederum auf andere Computer in unserem Schulnetzwerk. Für Schüler und Lehrer ist Linbo eher ein Bootmanager mit dem sie ihr gewünschtes Betriebssystem auswählen oder zurücksetzen können.

Was an Linbo so besonders ist und warum es uns sehr sehr viel Zeit einspart, möchte ich in diesem Artikel erklären.

Computer registrieren

In linuxmuster.net müssen alle Computer, bevor sie von Linbo verwaltet werden können, registriert werden. Jeder Rechner bekommt eine IP-Adresse, eine Rechner-Gruppe, einen Raum und einen Hostnamen. Dazu bootet man den Rechner einfach über das Netzwerk und wählt in Linbo den Tab „Imaging„. Es erscheint ein Dialog, in dem man alle Infos eintragen kann. Wenn man mehrere Rechner in einem Raum aufnimmt, füllt Linbo die meisten Felder automatisch aus.

register-dialog

Diese Infos sind wichtig, um später Einstellungen für einzelne Räume oder Rechnergruppen vorzunehmen. Ein Beispiel dafür ist die Einrichtung von Epoptes, einer Klassenraummanagement-Software.

Images erstellen

Mit Linbo kann man Abbilder von Partitionen erstellen („Images“), die man dann später auf andere Rechner verteilt. Das erleichtert die Verwaltung von vielen Rechnern enorm, da man i.d.R. nur ein Master-Image erstellt und es dann an mehreren Rechner nutzt. Da Linbo ein Abbild der Partition erstellt, unterstützt es fast jedes Betriebssystem (Ubuntu, Windows, …). Im Reiter „Imaging“ hat man verschiedene Optionen zur Auswahl.

linbo-imagingscreen

Über den Button „Image erstellen“ kann man ein Abbild erstellen und es gleich auf den Server hochladen.

Rechner synchronisieren (auch offline!)

Hat man einmal ein Image erstellt und auf den Server hochgeladen, kann das Image an andere Rechner verteilt werden. Dazu startet man wieder den Rechner über das Netzwerk und drückt einfach den gelben oder roten Button. Der Unterschied ist, dass bei einem Klick auf „Neu und Start“ (roter Button), die Partition vorher noch formatiert wird. Bei einem normalen Sync wird rsync im Hintergrund ausgeführt.

linbo-mainscreen-registered

Linbo lädt vor dem Synchronisieren das komplette Image auf den Rechner herunter. Unser Ubuntu-Image ist ca. 4,1GB groß, unser Windows 10 Image ca. 12 GB (ein weiterer Grund, warum ich lieber auf Ubuntu setze :)). Dadurch, dass das Image heruntergeladen wird, funktioniert die Synchronisation auch offline. Ist das System z.B. durch einen USB-Stick mit einem Virus infiziert worden oder man hat etwas kaputt konfiguriert, synchronisiert man den Rechner einfach neu und schon hat man wieder den gewünschten Ist-Zustand zurück. Ein tolles Features, was vor allem in Schulen enorm wichtig ist, wo mehrere hundert Schüler einen Computer / Woche benutzen.

Linbo Werkzeuge

linuxmuster.net bringt einige Kommandozeilen-Werkzeuge mit, die man vom Server aus benutzen kann: linbo-ssh, linbo-remote und linbo_wrapper.

linbo-ssh

Mit linbo-ssh kann man sich auf jedem Rechner einloggen, auf dem Linbo gestartet wurde. Dazu reicht es, wenn man hinter dem Befehl des Hostnamen des Rechners eingibt, z.B.

$ linbo-ssh r100-pc01

linbo_wrapper

Wenn man sich mit linbo-ssh an einem Rechner angemeldet hat, kann mit linbo_wrapper alle Befehle durchführen, die auch in der GUI verfügbar sind. Um z.B. den Rechner zu formatieren und anschließend das erste Betriebssystem zu synchronisieren, hilft folgender Befehl:

~$ linbo_wrapper partition sync:1

linbo_wrapper help gibt noch weitere Möglichkeiten aus.

linbo-remote

Dieser Befehl gehört für mich zu den besten Features, denn damit kann ich alles vom Server aus steuern, was ich auch manuell in der GUI machen kann. Die Einsatzmöglichkeiten sind sehr vielfältig:

  • einen ganze Rechnergruppe automatisch mit einem neuem Image versorgen (per Wake-on-Lan) z.B. mit
    $ linbo-remote -g fs -w 60 -c partition,format,initcache:torrent,sync:1,start:1
  • Rechner automatisch herunterfahren, die Linbo gestartet haben
  • alle Rechner jeden Morgen synchronisieren und das Betriebssystem der Wahl starten. So hat man immer ein frisches System, welches sofort einsatzbereit ist

Dadurch, dass linbo-remote ein ganz normales Kommandozeilen-Werkzeug ist, kann man es auch in andere Skripte einbauen, was die Anwendungsmöglichkeiten noch mal zusätzlich erweitert.

Wir nutzen dieses Werkzeug sehr gern, da man dadurch sehr viel automatisieren kann und weniger „Turnschuhadministration“ notwendig ist.

Fazit

Wer noch mehr über Linbo wissen möchte, findet in der Dokumentation noch zusätzliche Infos. Für mich ist es das Feature von linuxmuster.net. Ich habe bisher keine andere Möglichkeit kennengelernt, wie man viele Rechner mit so wenig Aufwand verwalten kann.

Welche Werkzeuge nutzt du, um mehrere Rechner zu verwalten? CloneZilla? FOG? FAI? Opsi?

Kommentar hinzufügen

Der Beitrag Warum Linbo eines der besten Features von linuxmuster.net ist erschien zuerst auf .:zefanjas:..

]]>
https://zefanjas.de/warum-linbo-eines-der-besten-features-von-linuxmuster-net-ist/feed/ 0
Wie man Epoptes in linuxmuster.net integrieren kann https://zefanjas.de/wie-man-epoptes-in-linuxmuster-net-integrieren-kann/ https://zefanjas.de/wie-man-epoptes-in-linuxmuster-net-integrieren-kann/#comments Wed, 14 Feb 2018 08:13:52 +0000 https://zefanjas.de/?p=2452 In meinem letzten Artikel habe ich beschrieben, wie man Epoptes installieren und im Unterricht einsetzen kann. Wir verwenden an unserer Schule linuxmuster.net als Schulserver-Lösung. Eines der für mich besten Features in linuxmuster.net ist postsync. Mit Hilfe von Linbo (dem Bootmanager von linuxmuster.net) haben wir genau ein Image für alle unsere Ubuntu-Rechner und können trotzdem individuelle Anpassungen für einzelne Rechner oder ganze Räume vornehmen. Heute möchte ich deshalb beschreiben, wie man Epoptes in linuxmuster.net integriert. Für die Schüler- und Lehrerrechner müssen...

Weiterlesen Weiterlesen

Der Beitrag Wie man Epoptes in linuxmuster.net integrieren kann erschien zuerst auf .:zefanjas:..

]]>
In meinem letzten Artikel habe ich beschrieben, wie man Epoptes installieren und im Unterricht einsetzen kann. Wir verwenden an unserer Schule linuxmuster.net als Schulserver-Lösung. Eines der für mich besten Features in linuxmuster.net ist postsync. Mit Hilfe von Linbo (dem Bootmanager von linuxmuster.net) haben wir genau ein Image für alle unsere Ubuntu-Rechner und können trotzdem individuelle Anpassungen für einzelne Rechner oder ganze Räume vornehmen. Heute möchte ich deshalb beschreiben, wie man Epoptes in linuxmuster.net integriert. Für die Schüler- und Lehrerrechner müssen verschiedene Konfigurationen vorgenommen werden, doch dank postsync brauchen wir weiterhin nur ein „Master-Image“ pflegen.

Installation

Die Installation führen wir an einem Rechner, welcher mit Linbo verwaltet wird, durch. Dazu starten wir unser Ubuntu-Image (in unserem Fall Ubuntu 16.04) synchronisiert (Klick auf gelbes Symbol):

linbo-mainscreen-registered

Nach dem Starten melden wir uns als lokaler Administrator an (z.B. linuxadmin). Danach installieren wir die beiden Pakete epoptes und epoptes-client.

$ sudo apt install epoptes epoptes-client

Mehr ist an dieser Stelle erst einmal nicht zu tun, da wir die Konfiguration später vornehmen.

Vorbereitungen für neues Master-Image

Bevor wir ein neues Master-Image erstellen, müssen wir folgende Dateien auf einen USB-Stick oder gleich auf den linuxmuster.net Server kopieren und auf unserem Master-Image-PC löschen.

/etc/default/epoptes-client
/etc/default/epoptes
/etc/epoptes/server.crt
/etc/epoptes/server.key
/etc/xdg/autostart/epoptes-client.desktop
/etc/init.d/epoptes
/etc/init.d/epoptes-client
/usr/bin/epoptes
/usr/sbin/epoptes-client
/usr/share/applications/epoptes.desktop

Entweder wir verschieben die Dateien auf einen Wechselspeicher (z.B. mit sudo mv /etc/default/epoptes-client /media/linuxadmin/Wechseldatenträger/) oder per scp direkt auf den linuxmuster.net Server (siehe nächster Abschnitt).

Hinweis: Die Ordner, in denen sich die Dateien befinden, werden nicht gelöscht!

Postsync einrichten

Wir wollen nun die nötigen Einstellungen vornehmen, damit der Postsync am Ende auch die richtigen Anpassungen vornimmt. Die genaue Funktionsweise des Postsync-Features ist in der offiziellen Dokumentation erklärt. Deshalb müssen wir alle unserer Anpassungen für unser Ubuntu 16.04 Image (Xenial) unterhalb von /var/linbo/linuxmusterclient/xenial/ vornehmen.

Dazu erstellen wir folgende Verzeichnis:

  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/etc/default/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/etc/epoptes/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/etc/init.d/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/etc/xdg/autostart/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/usr/bin/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/usr/sbin/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/usr/share/applications/

Für unseren Lehrer-PC brauchen wir noch diese Verzeichnisse:

  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/etc/default/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/etc/epoptes/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/etc/init.d/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/etc/xdg/autostart/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/usr/bin/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/usr/sbin/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/usr/share/applications/

Die Ordner können wir auf dem linuxmuster.net Server wie folgt anlegen (Raum und Lehrer-PC anpassen und für alle Ordner aus den Listen oben durchführen):

# Raum r100
$ mkdir -p /var/linbo/linuxmuster-client/xenial/r100/etc/default/
...
# Lehrer-PC r100-pc01
$ mkdir -p /var/linbo/linuxmuster-client/xenial/r100-pc01/etc/default/
...

Sind alle Ordner angelegt, können wir nun die Epoptes-Dateien von unserem Master-Image-PC oder von unserem USB-Stick in die richtigen Verzeichnisse kopieren. Am einfachsten geht es, wenn man den passwortlosen Zugang zum Master-Image-PC eingerichtet hat.

Master-Rechner (aka Lehrer-PC)

Für den Lehrer-PC müssen wir folgende Dateien kopieren (vom Master-Image-PC):

  • /etc/default/epoptes  → Rechte 644
  • /etc/epoptes/server.key → Rechte 644
  • /etc/init.d/epoptes → Rechte 755
  • /usr/bin/epoptes → Rechte 755
  • /usr/share/applications/epoptes.desktop → Rechte 644

Mit scp sieht da so aus (für alle Dateien wiederholen und Zielpfade anpassen):

$ scp root@r100-pc01:/etc/default/epoptes /var/linbo/linuxmuster-client/xenial/r100-pc01/etc/default/
...

Die Rechte könne mit chmod angepasst werden:

$ chmod 644 /var/linbo/linuxmuster-client/xenial/r100-pc01/etc/default/epoptes
...

Da durch den Postsync erst alle Dateien aus dem Ordner /var/linbo/linuxmuster-client/xenial/r100/ synchronisiert werden, landen auch die Dateien des Epoptes Clients auf dem Lehrer-PC, was zu Problemen führt. Deshalb legen wir noch ein paar Dummy-Dateien an, um die Dateien des Epoptes-Clients wieder zu überschreiben:

$ cd /var/linbo/linuxmuster-client/xenial/r100-pc01/
$ touch etc/default/epoptes-client etc/xdg/autostart/epoptes-client.desktop etc/init.d/epoptes-client usr/sbin/epoptes-client

Client-Rechner (aka Schüler-PC)

Ähnlich wir zu unserem Lehrer-PC kopieren wir nun noch die Dateien für unsere Schüler-Rechner. Diese Dateien werden benötigt:

  • /etc/default/epoptes-client → Rechte 644
  • /etc/epoptes/server.crt→ Rechte 644
  • /etc/hosts → Rechte 644
  • /etc/xdg/autostart/epoptes-client.desktop → Rechte 644
  • /etc/init.d/epoptes-client → Rechte 755
  • /usr/sbin/epoptes-client → Rechte 755

Diese können wir wieder nach dem gleichen Muster wie oben per scp auf unseren Server vom Master-Image-Computer kopieren:

$ scp root@r100-pc01:/etc/default/epoptes-client /var/linbo/linuxmuster-client/xenial/r100/etc/default/ 
...

Die Rechte könne mit chmod angepasst werden:

$ chmod 644 /var/linbo/linuxmuster-client/xenial/r100/etc/default/epoptes-client
...

Nun sind alle Dateien am richtigen Ort und wir können Epoptes konfigurieren.

Epoptes konfigurien

Master-Rechner (aka Lehrer-PC)

Für den Lehrer-PC müssen wir nur in der Datei /var/linbo/linuxmuster-client/xenial/r100-pc01/etc/default/epoptes die SOCKET_GROUP von epoptes inSOCKET_GROUP=teachers ändern.

Client-Rechner (aka Schüler-PC)

Für die Schüler-Rechner müssen wir etwas mehr konfigurieren.

  • /var/linbo/linuxmuster-client/xenial/r100/etc/default/epoptes-client
    • SERVER=r100-pc01 – hier müssen wir den Namen des Lehrer-Rechners eintragen
    • Wer Wake-On-Lan nutzen möchte, muss das Kommentarzeichen vor WOL=g entfernen.
  • /var/linbo/linuxmuster-client/xenial/r100/etc/xdg/autostart/epoptes-client.desktop
    • X-GNOME-AutoRestart=true – Damit der Epoptes-Client auch bei einem Neustart des Displayservers neustartet, müssen wir hier wieder das Kommentarzeichen entfernen, .
  • /var/linbo/linuxmuster-client/xenial/r100/etc/hosts
    • Da es manchmal Probleme mit dem Epoptes-Client trotz korrekter Namensauflösung geben kann, ergänzen wir am Ende der Datei die IP des Lehrer-PCs (IP anpassen!):
      #Server für epoptes
      10.16.5.100 r100-pc01

Image erstellen

Jetzt können wir ein neues Master-Image auf unserem Master-Image-PC erstellen. Wichtig ist, dass man vorher alle unnötigen Dateien entfernt, damit das Image nicht unnötig groß wird (z.B. alte Kerneldateien, homes der Schüler und Lehrer löschen, Chronik von Firefox / Chrome bereinigen, …). Das Tool „LMLCC“ ist an dieser Stelle sehr sehr hilfreich.

Wichtig: Unbedingt die Dateien löschen, die unter „Vorbereitungen für neues Master-Image“ aufgelistet sind!

Nach dem Neustart des Rechners können wir in Linbo ein neues Image erstellen und auf den Server hochladen.

Postsync testen

Jetzt, da wir ein neues Image haben und Epoptes konfiguriert ist, müssen wir noch testen, ob auch alles funktioniert, wie es soll. Zuerst brauchen wir das Postsync-Skript. Es sollte in der Regel schon vorhanden sein oder man kann es sich hier herunterladen und nach /var/linbo/xenial.cloop.postsync kopieren (Rechte 664).

$ wget -O /var/linbo/xenial.cloop.postsync https://raw.githubusercontent.com/linuxmuster/linuxmuster-client-servertools/master/usr/lib/linuxmuster-client-servertools/generic.postsync
$ chmod 664 /var/linbo/xenial.cloop.postsync

Nun starten wir einen beliebigen Rechner in unserem Computerraum und synchronisieren ihn mit Linbo, indem wir auf das gelbe oder rote Synchronisationssymbol klicken. Danach startet der Rechner und alles sollte fertig eingerichtet sein.

Leider sieht man in Linbo nicht direkt, ob der Postsync geklappt hat oder nicht. Wir können uns aber vom Server aus in Linbo einloggen. Dazu starten wir wieder einen Rechner aus dem Computerraum und warten bis Linbo fertig gebootet hat. Dann können wir wie folgt den Rechner synchronisieren und dabei beobachten, was passiert:

$ linbo-ssh r100-pc02
# Dann in der Linbo-Shell
$ linbo_wrapper sync:1

Die 1 steht für das 1. Betriebssystem, d.h. wenn man ein Dual-Boot System mit Windows hat und Ubuntu das zweite System ist, müssen wir den Befehl anpassen.

Falls Fehler auftreten, werden sie in der Konsole angezeigt. Vor allem sollte man erkennen können, ob der Postsync überhaupt ausgeführt wird!

Wenn alle Rechner im Computerraum synchronisiert sind, kann Epoptes benutzt werden.

Fazit

Die Integration von Epoptes in linuxmuster.net hat für uns den großen Vorteil, dass wir weiterhin nur ein Ubuntu-Image pflegen müssen, aber trotzdem einzelne Rechner unterschiedlich zu konfigurieren (auch offline!). Für mich persönlich ist dieses eines der Killer-Features von linuxmuster.net (neben der großartigen Community!) Deshalb kann ich jedem, der sich für eine freie Schulserverlösung interessiert, linuxmuster.net sehr ans Herz legen.

Problemlösung

Epoptesdienst startet nach Kernelupdate nicht mehr

Falls nach einem Kernelupdate der Epoptesdienst nicht mehr startet, hilft es Epoptes vor dem Kernelupdate zu deinstallieren mit

$ sudo apt remove --purge eopoptes

Danach alle Updates durchführen, die epoptes Pakete erneut installieren, die notwendigen Dateien wieder entfernen (am besten die Dateien in lmlcc unter Bereinigen mit hinzufügen) und dann das Image neu schreiben.

2 Kommentare

Der Beitrag Wie man Epoptes in linuxmuster.net integrieren kann erschien zuerst auf .:zefanjas:..

]]>
https://zefanjas.de/wie-man-epoptes-in-linuxmuster-net-integrieren-kann/feed/ 2
Klassenraummanagement mit Epoptes – App des Monats https://zefanjas.de/klassenraummanagement-mit-epoptes-app-des-monats/ https://zefanjas.de/klassenraummanagement-mit-epoptes-app-des-monats/#comments Mon, 12 Feb 2018 13:06:41 +0000 https://zefanjas.de/?p=2353 Jeder, der schon einmal in einem Computerraum unterrichtet hat, kennt die Situation. Die Aufmerksamkeit wiederherzustellen ist in einem Raum mit Computern besonders schwierig. Ständig sind die Schüler mit irgendetwas auf dem Schirm beschäftigt. Oder man möchte etwas erklären oder am Beamer zeigen und einfach nur sicherstellen, dass niemand versucht ist, auf seinen Bildschirm zu schauen, in der Angst, dort etwas zu verpassen. Um solche Dinge besser in den Griff zu bekommen, möchte ich heute – als weitere App des Monats...

Weiterlesen Weiterlesen

Der Beitrag Klassenraummanagement mit Epoptes – App des Monats erschien zuerst auf .:zefanjas:..

]]>
Jeder, der schon einmal in einem Computerraum unterrichtet hat, kennt die Situation. Die Aufmerksamkeit wiederherzustellen ist in einem Raum mit Computern besonders schwierig. Ständig sind die Schüler mit irgendetwas auf dem Schirm beschäftigt. Oder man möchte etwas erklären oder am Beamer zeigen und einfach nur sicherstellen, dass niemand versucht ist, auf seinen Bildschirm zu schauen, in der Angst, dort etwas zu verpassen. Um solche Dinge besser in den Griff zu bekommen, möchte ich heute – als weitere App des Monats – Epoptes vorstellen, eine Software, die eine große Hilfe für jede Form von Unterricht in einem Computerraum ist.

Epoptes ist aktuell nur für Ubuntu, Debian und openSUSE verfügbar. Wer Windows im Computerraum verwendet, muss sich nach einer anderen Lösung umschauen, z.B. Veyon (ehemals iTALC).

Features

Epoptes bringt folgende Features und Funktionen mit:

  • Bildschirme zentral überwachen (Beobachten / Fernsteuern)
  • eigenen Bildschirminhalt auf anderen Computern im Raum anzeigen
  • Befehle ausführen
  • Nachrichten versenden
  • Sound an/aus
  • Bildschirmsperre an/aus

Installation

[Update] Wer Epoptes zusammen mit linuxmuster.net nutzen möchte, kann dieser Anleitung folgen: Wie man Epoptes in linuxmuster.net integrieren kann.

Epoptes bringt zwei Programme mit. Einmal den Epoptes-Client, d.h. das Programm, welches auf den zu überwachenden Computern installiert wird. Für den Lehrer-PC wird dagegen das Hauptprogramm installiert, mit dem man die einzelnen Computer überwachen und steuern kann.

Master-Rechner (aka Lehrer-PC)

Die Pakete für Epoptes sind in den offiziellen Paketquellen von Ubuntu enthalten. Mit den folgenden Befehlen aktualisieren wir die Paketquellen und installieren Epoptes für den Master-Rechner.

$ sudo apt update
$ sudo apt install epoptes

Damit man Epoptes benutzen kann, muss man Mitglied in der epoptes Gruppe sein (oder eine andere festgelegte Gruppe – siehe unten).

$ sudo usermod -aG epoptes $USER
$ newgrp - epoptes

Die Konfigurationsdatei für den Master-Rechner finden wir unter /etc/default/epoptes. Dort können wir z.B. die Gruppe ändern, die nötig ist, um die Klassenraummanagement-Software benutzen zu dürfen.

$ sudo nano /etc/default/epoptes

Unter SOCKET_GROUP wird die Gruppe festgelegt (z.B. teacher). Die Gruppe muss allerdings existieren. Neben der Gruppe können wir auch noch den Port (standardmäßig 789) anpassen.

Client-Rechner (aka Schüler-PC)

Die Installation auf dem Client ist ähnlich. Im Unterschied zum Master-Rechner installieren wir hier das Paket epoptes-client.

$ sudo apt update
$ sudo apt install epoptes-client

Der Client muss wissen, wo er den Master-PC finden kann. Das können wir in der Datei /etc/default/epoptes-client auf dem Client konfigurieren:

$ sudo nano /etc/default/epoptes-client

Unter SERVER geben wir den DNS-Namen des Master-PCs an, z.B. server. Falls wir keinen zentralen DNS-Server in unserem Netzwerk haben, können wir den Eintrag auch in der Datei /etc/hosts auf dem Client vornehmen. Dort fügen wir folgenden Eintrag hinzu:

192.168.1.10 server

Die IP-Adresse muss natürlich noch angepasst werden. Mit ping server können wir überprüfen, ob der Eintrag auch aufgelöst wird.

Als letztes müssen wir noch das Zertifikat für die sichere Kommunikation vom Master-PC auf den Client herunterladen.

$ sudo epoptes-client -c

Zum Schluss müssen wir den Client-Rechner einmal neustarten. Der Epoptes-Client startet automatisch beim Booten des Rechners.

Bedienung von Epoptes

Epoptes Hauptfenster

Alle wesentlichen Bedienelemente befinden sich oben in der Werkzeugleiste. Hinter den Symbolen verstecken sich folgende Funktionen:

  1. Client per Wake-On-LAN starten (muss separat eingerichtet werden)
  2. Benutzer abmelden
  3. Client neustarten
  4. Client herunterfahren
  5. Die Steuerung an einem Client übernehmen. Ein einfacher Doppelklick auf einen Client öffnet ein Fenster im „Beobachten-Modus“, d.h. man kann den Rechner beobachten ohne jedoch die Steuerung zu übernehmen.
  6. Sendet den Bildschirm an die Clients. Praktisch, wenn man z.B. keinen Beamer hat.
  7. Stoppt die Ausstrahlung des Bildschirms.
  8. Führt einen Befehl am Client aus.
  9. Sendet eine Nachricht an alle ausgewählten Clients
  10. Sperrt alle ausgewählte Clients. Sehr praktisch 🙂
  11. Entsperrt die Bildschirme wieder.
  12. Zeigt Informationen über den Client an (MAC-Adresse, CPU, RAM, …)

Matthias, aus der linuxmuster.net Community, hat vor einiger Zeit auch ein kurzes Einführungsvideo erstellt:

Fazit

Wir benutzen Epoptes bei uns in unserem Computerraum. Da wir räumlich nicht die Möglichkeit hatten, alle Bildschirme am Rand aufzustellen, sodass man natürlicherweise immer einen Blick auf alle Bildschirme hat, ist diese Programm eine große Hilfe für uns. V.a. die Funktion alle Bildschirme mit einem Klick zu sperren ist äußerst hilfreich, um schnell die Aufmerksamkeit herstellen zu können. Einige unserer Kollegen nutzen auch gern die Möglichkeit, einen Schülerbildschirm vorn am Beamer zu projizieren, um etwas zu erläutern oder damit Schüler ihre Ergebnisse vorstellen können.

Welche Erfahrungen hast du mit Epoptes im Speziellen oder einer anderen Klassenraummanagement-Software gemacht?

5 Kommentare

Der Beitrag Klassenraummanagement mit Epoptes – App des Monats erschien zuerst auf .:zefanjas:..

]]>
https://zefanjas.de/klassenraummanagement-mit-epoptes-app-des-monats/feed/ 5
Koha LDAP Verbindung einrichten https://zefanjas.de/koha-ldap-verbindung-einrichten/ https://zefanjas.de/koha-ldap-verbindung-einrichten/#respond Tue, 06 Feb 2018 13:22:21 +0000 https://zefanjas.de/?p=2430 Koha ist eine freie Bibliothekssoftware, die wir an unserer Schule verwenden. Wir verwalten damit unsere Lehrmittel- als auch unsere Schulbibliothek. Vorher haben wir LITTERA dafür verwendet, doch seit letztem Sommer sind wir komplett auf Koha umgestiegen. Der Kern unserer Schulinfrastruktur ist ein linuxmuster.net Schulserver. Jeder Schüler und Kollege hat einen schulinternen Benutzernamen, den man für die Anmeldung an unseren Schulcomputern braucht. linuxmuster.net bringt dafür einen LDAP Server mit. In diesem Artikel möchte ich zeigen, wie man in Koha die LDAP...

Weiterlesen Weiterlesen

Der Beitrag Koha LDAP Verbindung einrichten erschien zuerst auf .:zefanjas:..

]]>
Koha ist eine freie Bibliothekssoftware, die wir an unserer Schule verwenden. Wir verwalten damit unsere Lehrmittel- als auch unsere Schulbibliothek. Vorher haben wir LITTERA dafür verwendet, doch seit letztem Sommer sind wir komplett auf Koha umgestiegen. Der Kern unserer Schulinfrastruktur ist ein linuxmuster.net Schulserver. Jeder Schüler und Kollege hat einen schulinternen Benutzernamen, den man für die Anmeldung an unseren Schulcomputern braucht. linuxmuster.net bringt dafür einen LDAP Server mit. In diesem Artikel möchte ich zeigen, wie man in Koha die LDAP Verbindung einrichtet, sodass sich alle Benutzer in der Bibliothek mit ihrem schulinternen Login anmelden können.

Konfiguration für Koha LDAP Verbindung anpassen

Koha speichert seine Einstellungen in der Datei koha-conf.xml. Diese Datei befindet sich unter /etc/koha/sites/library/koha-conf.xml, falls die Koha-Instanz library heißt. Diese Datei öffnen wir mit einem Editor unserer Wahl und suchen den Eintrag <useldapserver>0</useldapserver>.

$ sudo nano /etc/koha/sites/library/koha-conf.xml

Die Dokumentation für die Koha LDAP Verbindung ist leider nicht sehr ausführlich. Die wesentlichen Informationen findet man in der Perl-Dokumentation zum Koha LDAP-Modul. Auf dieser Seite finden wir eine Beispielkonfiguration, die wir größtenteils übernehmen können. Ein paar kleine Änderungen sind allerdings notwendig, damit die Integration zwischen Linuxmuster und Koha auch gut funktioniert. Zuerst ändern wir <useldapserver>0</useldapserver> in <useldapserver>1</useldapserver>, um Koha mitzuteilen, dass wir gern einen LDAP-Server für die Anmeldung verwenden wollen. Direkt danach fügen wir folgende Zeilen ein:

<ldapserver id="ldapserver"  listenref="ldapserver">
  <hostname>ldaps://10.16.1.1</hostname>
  <base>ou=Accounts,dc=linuxmuster,dc=net</base>
  <user>cn=admin,dc=internal,dc=cdsc,dc=ac,dc=th</user><!-- DN, if not anonymous -->
  <pass>Bind-User-Passwort</pass><!-- password, if not anonymous -->
  <replicate>1</replicate>       <!-- add new users from LDAP to Koha database -->
  <update>1</update>             <!-- update existing users in Koha database -->
  <auth_by_bind>1</auth_by_bind> <!-- set to 1 to authenticate by binding instead of password comparison, e.g., to use A$
  <principal_name>uid=%s,ou=Accounts,dc=internal,dc=cdsc,dc=ac,dc=th</principal_name>
  <!-- optional, for auth_by_bind: a printf format to make userPrincipalName from koha userid -->
  <mapping>             <!-- match koha SQL field names to your LDAP record field names -->
   <userid       is="uid"></userid>
   <password     is="userpassword"></password>
   <email        is="mail"></email>
  </mapping>
</ldapserver>

Dazu ein paar kurze Hinweise:

  • <hostname>: Hier müssen wir die Addresse des LDAP-Servers (der linuxmuster.net Server) angeben. Weiterhin müssen wir sichergehen, dass unser Koha Server den LDAP-Server auch über die Ports (TCP/UDP 636) für LDAPS erreichen kann.
  • <base>: Der LDAP Pfad für unsere Benutzeraccounts. Die Domain am Ende muss wahrscheinlich angepasst werden.
  • <user>: der Bind-User, damit Koha an die Benutzerdaten herankommt.
  • <pass>: Das Passwort des Bind-Users. Es befindet sich auf dem linuxmuster.net Server unter /etc/ldap/ldap.secret
  • <replicate>: Wenn sich ein Benutzer per LDAP anmeldet, möchten wir, dass er auch ein Koha-Konto bekommt.
  • <update>: Diese Option brauchen wir, damit Benutzer mit Informationen aus dem LDAP aktualisiert werden, falls bereits ein Koha-Konto existiert.
  • <auth_by_bind>: Für die Überprüfung der Anmeldedaten wollen wir den Bind-User verwenden.
  • <mapping>: Hier können wir festlegen, welche Daten aus dem LDAP welches Attribut in Koha überschreiben soll. Wichtig ist vor allem userid und password.

Koha LDAP Verbindung testen

Um die LDAP Verbindung zu testen, rufen wir die Koha OPAC Seite auf und melden uns mit einem linuxmuster.net Benutzeraccount an. Sollte es Probleme beim Laden der Website geben oder die Anmeldung nicht klappen, kann man auf dem Koha-Server unter /var/log/koha/library/opac-error.log nachschauen, woran es liegt.

koha login

Falls die Anmeldung erfolgreich war, sieht man eine Liste mit den aktuellen Ausleihen des Benutzers:

koha user

Fazit

Die Einrichtung der LDAP Verbindung in Koha bringt für unsere Schule einen großen Mehrwert. Vorher war es mit LITERRA nicht möglich, dass einzelne Benutzer ihre aktuellen Ausleihen sehen konnten. Weiterhin müssen jetzt die Benutzerdaten nur noch an einem Ort gepflegt werden und nicht in verschiedenen Programmen. Die Bedienung über ein Webinterface ist für alle Bibliotheksmitarbeiter ein großer Gewinn und eine Arbeitserleichterung. Der Einstieg in Koha ist vielleicht etwas steiler als in andere Bibliotheksprogramme, aber die Möglichkeiten und Flexibilität dieser Open Source Software sind beeindruckend.

Kommentar hinzufügen

Der Beitrag Koha LDAP Verbindung einrichten erschien zuerst auf .:zefanjas:..

]]>
https://zefanjas.de/koha-ldap-verbindung-einrichten/feed/ 0
Open Source in der Schule – Was dafür und was dagegen spricht https://zefanjas.de/open-source-in-der-schule-was-dafuer-und-was-dagegen-spricht/ https://zefanjas.de/open-source-in-der-schule-was-dafuer-und-was-dagegen-spricht/#comments Wed, 31 Jan 2018 06:13:56 +0000 https://zefanjas.de/?p=2411 Open Source in der Schule – ein Thema, bei dem sich häufig die Geister scheiden. Ist es wirklich sinnvoll Open Source Software (OSS) in der Schule zu verwenden? Gibt es gerade für Schulen nicht viel geeignetere Alternativen? Welche Argumente gibt es für und gegen den Einsatz von OSS in der Schule, d.h. im Unterricht, im Computerraum oder auf auf dem Schulserver? Gibt es Schulen, die erfolgreich auf OSS setzen oder ist das nur ein Wunschtraum? Ich möchte versuchen Argumente für...

Weiterlesen Weiterlesen

Der Beitrag Open Source in der Schule – Was dafür und was dagegen spricht erschien zuerst auf .:zefanjas:..

]]>
Open Source in der Schule – ein Thema, bei dem sich häufig die Geister scheiden. Ist es wirklich sinnvoll Open Source Software (OSS) in der Schule zu verwenden? Gibt es gerade für Schulen nicht viel geeignetere Alternativen? Welche Argumente gibt es für und gegen den Einsatz von OSS in der Schule, d.h. im Unterricht, im Computerraum oder auf auf dem Schulserver? Gibt es Schulen, die erfolgreich auf OSS setzen oder ist das nur ein Wunschtraum?

Ich möchte versuchen Argumente für und gegen Open Source Software in der Schule aufzulisten. Diese Liste ist sicher nicht vollständig und ich werde sie deshalb von Zeit zu Zeit aktualisieren. Wer noch weitere Ideen und Gründe für oder gegen den Einsatz von Open Source in der Schule hat, ist hiermit ermutigt einen Kommentar zu schreiben 🙂

Warum man Open Source in der Schule verwenden sollte – die Chancen

  • Sensibilisierung für informationelle Freiheit vs. Monopole – Der Einsatz von Open Source Software leistet einen großen Beitrag in der Medienerziehung. Dazu zählt die Sensibilisierung für die Tatsache, dass heutzutage der Großteil meiner Daten nur einer handvoll Unternehmen gehört. Weiterhin das Aufzeigen von Möglichkeiten und Alternativen, die es neben den großen Anbietern proprietärer Software gibt.
  • Freiheit –  Dieser Begriff ist sehr weit und umfasst sowohl die Freiheit von kommerziellen Interessen, als auch im Sinne von Weitergabe von Software. Dazu zählt auch, dass die meiste OSS lizenzkostenfrei ist. Der Einsatz von OSS bricht Abhängigkeiten von Herstellern, von Supportverträgen oder Sicherheitsupdates, die nur gegen Aufpreis verfügbar sind. LibreOffice stellt z.B. sicher, dass ich Dokumente aus vielen kommerziellen Produkten weiterverwenden und importieren (teilweise auch exportieren) kann.
  • keine Lizenzkosten – In der Regel zahlt man für OSS keine Lizenzkosten. Dadurch kann langfristig sehr viel Geld gespart werden. Weiterhin können Unterrichtsprojekte/-methoden, welche teure Programme oder deren flächendeckende Installation erfordern, mit OSS-Alternativen realisiert werden. Aus finanziellen Gründen wären diese oft nicht möglich. Man muss z.B. Grafikbearbeitung nicht mit Adobe Photoshop lernen.
  • Sicherheit – Der Quelltext von OSS ist für jeden frei zugänglich. Schwachstellen werden i.d.R. schnell behoben. Hintertüren sind dadurch nur schwer einzuschleusen – wenn überhaupt. Bei (L)Unix – Systemen gibt es eine klare Rechteverteilung. Das erhöht die Sicherheit zusätzlich. Derzeit gibt es recht wenig bekannte Viren und Malware für Linux-Betriebsysteme.
  • größeres Verständnis für Funktionsweise von Programmen – Dadurch, dass Schüler die Möglichkeit haben, andere Software neben den marktbeherrschenden Programmen kennenzulernen, können sie ein größeres Verständnis für die Funktionsweise bekommen, z.B. einer Textverarbeitung oder Tabellenkalkulation. Es wird weniger „Klick-Wissen“ angeeignet, sondern man stattet die Schüler mit einer größeren Flexibilität im Umgang mit unbekannter Software aus.
  • Gleichheit – OSS leistet einen großen Beitrag zur Gleichheit zwischen den Schülern. Die Software kann jeder frei für die meisten Betriebssysteme herunterladen und auch weitergeben. Es herrscht kein Zwang eine bestimmte Software zu kaufen, um die Inhalte des Unterrichts zu Hause zu vertiefen. Finanzschwächere Familien werden nicht benachteiligt.
  • Werte – Die Werte, die hinter der OSS-Bewegung stehen passen gut zu Schule und zu dem, was sie eigentlich vermitteln will. Konkret meine ich (Wissen) teilen, zusammen arbeiten, Offenheit, Transparenz, freier Zugang zu Informationen. Diese Praxis und die Kultur des Weitergebens und Teilens fördern Kompetenzen, die ethisch und gesellschaftlich von hoher Bedeutung sind.
  • Lokalisierung – OSS Software ist oft in der Muttersprache vorhanden. Diese Argument zählt vielleicht nicht so sehr in der westlichen Welt, in der jede Software meist noch in anderen Sprachen neben Englisch verfügbar ist. In Asien oder Afrika, in denen es sehr viele verschiedene Sprachen gibt, ist das ein großer Vorteil. Auch wenn Englisch sehr weit verbreitet ist, gibt es viele Teile auf der Welt, in denen diese Sprache nicht gesprochen oder verstanden wird.
  • Verwaltung / Administration – Nach mehreren Jahren Erfahrung mit OSS im privaten sowie im schulischem Umfeld kann ich persönlich bestätigen, dass die Verwaltung von vielen Rechnern mit OSS wesentlich einfacher und zeitsparender ist. Die Möglichkeiten zur Automatisierung sind riesig. Wir verwenden auch Windowsrechner bei uns, aber deren Pflege und Wartung ist ca. 80% aufwendiger als unsere Ubuntu-Rechner.
  • alte Hardware kann länger verwendet werden – Ein Vorteil, den man nicht unterschätzen sollte, gerade für Schulen. Die meisten Dinge, die Schüler in der Schule an einem Computer lernen und wozu sie ihn benutzen, erfordern keine hohe Systemvoraussetzungen. Ein alter Rechner, ausgestattet mit einer kleinen SSD, lässt sich noch viele Jahre einsetzten. Gebrauchte Hardware kann man günstig erwerben oder man erhält sie u.U. auch als Spende. Mit OSS, die oft weniger Ressourcen braucht, kann man Hardware noch lange einsetzten. Wir haben z.B. noch Rechner im Betrieb, die schon fast 8-10 Jahre im Betrieb sind.

Was spricht gegen die Verwendung von Open Source in der Schule?

Trotz der oben genannten Punkte, gibt es auch Argumente gegen den Einsatz von Open Source in der Schule. Generell muss man unterscheiden, in welchem Umfang man OSS verwenden möchte. Geht es nur darum eine Anwendung auszutauschen oder eine Schule komplett, d.h. vom Betriebssystem an, mit OSS zu betreiben? Oder möchte man OSS nur auf einem Server einsetzen? Je nach Anwendungsfall kommen weitere Argumente dazu oder fallen weg.

  • weniger Support durch Unternehmen – Es gibt faktisch weniger Unternehmen und Dienstleister, welche OSS unterstützen, v.a. auch abseits der westlichen Welt. Das ist ein großes Problem, wenn man z.B. von Windows zu Ubuntu wechseln möchte. In vielen Fällen gibt es vielleicht eine engagierte Lehrkraft, aber das ist keine langfristige Lösung bzw. eigentlich auch nicht Aufgabe eines Lehrers.
  • kaum Lernsoftware vorhanden – Lernsoftware ist zu 99% für Windows konzipiert. Für Linux oder macOS gibt es von den Schulbuchverlagen kaum Anwendungen. Sicher kann man über den Sinn und Zweck von Lernsoftware streiten, aber es gibt kaum eine Lernsoftware für Linux. Wer Lernsoftware einsetzen will / muss, braucht i.d.R. einen Windowscomputer (physisch oder virtuell).
  • kleinere Community, wenige Referenzen – Es gibt einige Schulen in Deutschland, aber auch weltweit, die Open Source in der Schule verwenden, aber man findet wenig Informationen darüber. Das ist v.a. ein Nachteil, wenn man den (geplanten) Einsatz von OSS vor der Schulleitung oder dem Vorstand begründen muss.
  • weiterer Bildungs- und Berufsweg verwendet andere Software – Dies ist ein weit verbreitetes Argument gegen OSS. Später müsse man doch sowieso Mircosoft Office verwenden, warum sollen die Schüler dann den Umgang mit LibreOffice lernen? Eigentlich kein richtiges Argument gegen OSS, denn m.M.n. hat dieses Argument auch mit dem nächsten zu tun:
  • Bequemlichkeit und allgemeine Abwehrhaltung gegen OSS – Ich erlebe immer wieder eine gewissen Abneigung gegen OSS. Man befindet sich oft in einer Rechtfertigungshaltung, wenn man OSS einsetzen möchte. Das hat zum Teil mit der Qualität und Stabilität einiger Open Source Projekte zu tun, aber auch mit der mangelnden Flexibilität vieler Lehrkräfte. Das kann ein großes Hindernis für den erfolgreichen Einsatz von OSS sein!
  • Unsichere Weiterentwicklung – Für die Weiterentwicklung von OSS gibt es keine Garantie, weil sie vom freiwilligen Engagement der Community sowie der Nachfrage abhängt. Das gilt vor allem für viele kleine Projekte.
  • Anwendungsintegration – Im Zusammenspiel mit anderen Applikationen, insbesondere kommerzieller Software, kann es zu erheblichen Problemen kommen. Dieses Argument spielt in Schulen eine kleinere Rolle im Vergleich zu Unternehmen.

Was nötig ist – die Herausforderungen

Die größten Herausforderungen beim Einsatz von Open Source in der Schule sehe ich im Abbau von Berührungsängsten und den damit verbunden Schulungen sowie der Gewinnung von einem geeigneten Dienstleister oder eigenem Personal. Diese beiden Punkte sind kritisch, wenn man OSS im Unterricht oder in der IT-Infrastruktur einsetzen möchte. Ich erlebe immer wieder, wie Kollegen und Mitarbeiter OSS ablehnen oder kritisch gegenüberstehen, weil es anders ist und nicht so aussieht bzw. funktioniert, wie sie es gewohnt sind. Hier kann man mit internen Fortbildungen und Schulungen entgegenwirken. Deshalb muss eine Migration z.B. von MS Office zu LibreOffice oder Windows zu Ubuntu gut geplant und vorbereitet werden. Trotz allem wird es aber immer Leute geben, die dem kritisch gegenüber stehen, getreu nach dem Motto „Was er Bauer nicht kennt, isst er nicht!“.

Damit der Einsatz von Open Source Software in der Schule gelingt, braucht es unbedingt auch kompetentes Personal bzw. Dienstleister. Ohne so einen Person oder Partner ist es schwierig(er) die Kollegen für OSS zu gewinnen. Oft muss individuelle Hilfe geleistet oder zusätzliche Dokumentation erstellt werden, v.a. in der Übergangszeit. In Europa und der westlichen Welt sind die Chancen größer einen solchen Partner zu finden, aber in anderen Teilen der Welt kennt man fast nur Windows. Dessen muss man sich bewusst sein.

Fazit

Als Schule im Ausland sind wir den Schritt Richtung Open Source vor ca. 2 Jahren gegangen und haben es nicht bereut. Im Gegenteil: Wir haben unsere bisherige Infrastruktur stark ausgebaut – ohne größere Mehrkosten. Mit Hilfe von Open Source Software konnten wir so in vielen Bereichen einen Mehrwert schaffen. Unsere Schüler haben die wenigsten Probleme mit unseren Ubuntu-Rechner und auch viele Kollegen arbeiten gern damit. Als Schulserverlösung verwenden wir linuxmuster.net – eine freie Musterlösung – hinter der eine super Community steht – nett, hilfsbereit, kompetent.

Setzt du Open Source in der Schule ein? Wo siehst du die größten Chancen und Herausforderungen?

Quellen (1,2)

9 Kommentare

Der Beitrag Open Source in der Schule – Was dafür und was dagegen spricht erschien zuerst auf .:zefanjas:..

]]>
https://zefanjas.de/open-source-in-der-schule-was-dafuer-und-was-dagegen-spricht/feed/ 9
Wie man das Koha „auto increment“ Problem lösen kann https://zefanjas.de/wie-man-das-koha-auto-increment-problem-loesen-kann/ https://zefanjas.de/wie-man-das-koha-auto-increment-problem-loesen-kann/#comments Wed, 24 Jan 2018 14:04:49 +0000 https://zefanjas.de/?p=2398 Wir verwenden Koha für unsere Bibliothek, eine sehr mächtige und tolle Open Source Software. Auf Mailingliste des Projekts hatte ich bereits vom „Koha auto increment“ – Problem gelesen und hoffte, dass es uns nicht betraf. Doch vor einigen Wochen kam einer unserer Mitarbeiter der Schulbibliothek zu mir und gab mir ein Buch, dass sich nicht zurückgeben ließ. Jedes mal, wenn man versuchte, das besagte Buch zurückzugeben, bekam man folgende Fehlermeldung: Unter Mehr → Über Koha im Reiter „Systeminformationen“ konnte ich...

Weiterlesen Weiterlesen

Der Beitrag Wie man das Koha „auto increment“ Problem lösen kann erschien zuerst auf .:zefanjas:..

]]>
Wir verwenden Koha für unsere Bibliothek, eine sehr mächtige und tolle Open Source Software. Auf Mailingliste des Projekts hatte ich bereits vom „Koha auto increment“ – Problem gelesen und hoffte, dass es uns nicht betraf. Doch vor einigen Wochen kam einer unserer Mitarbeiter der Schulbibliothek zu mir und gab mir ein Buch, dass sich nicht zurückgeben ließ. Jedes mal, wenn man versuchte, das besagte Buch zurückzugeben, bekam man folgende Fehlermeldung:

Koha auto increment error

Unter Mehr → Über Koha im Reiter „Systeminformationen“ konnte ich dann sehen, dass einige Bücher von diesem Problem betroffen waren.

Koha Systeminformationen

Doch worin liegt eigentlich das Problem? Wie konnte es dazu kommen?

Das Problem

Im Koha Wiki gibt es zu diesem Datenbankproblem eine eigene Wiki-Seite. Koha verschiebt Einträge zwischen Datenbanktabellen, wenn man z.B. einen Benutzer oder ein Buch löscht. Das gleiche passiert mit Ausleihen. Die Einträge in diesen Tabellen haben eine eindeutige ID, welche normalerweise automatisch hochgezählt wird (auto increment). Das Problem ist allerdings, dass MySQL diese Zähler nur im Arbeitsspeicher speichert und nicht auf der Festplatte. Dies tritt nur auf, wenn Einträge gelöscht werden. Ein Beispiel:

  • Ich erstelle einen neuen bibliographischen Eintrag (z.B. ein Buch). Es wird u.a. in der Tabelle biblio gespeichert. Der Eintrag bekommt die ID 1. Der nächste Wert für die ID müsste also 2 sein.
  • Jetzt lösche ich dieses Buch wieder. Der Eintrag wird in die Tabelle deletedbiblio verschoben. In der Tabelle biblio gibt es jetzt keinen Eintrag mehr.
  • Ich starte den MySQL-Server neu. Dadurch wird der interne Zähler für die IDs zurückgesetzt.
  • Nun lege ich ein neues Buch an. Es bekommt nicht die ID 2, sondern 1, weil es ja keinen Eintrag mehr in der Tabelle biblio gibt.
  • Wenn ich jetzt dieses Buch lösche, wird es zwar aus der Tabelle gelöscht, aber nicht in die Tabelle deletedbiblio verschoben, da es dort schon einen Eintrag mit dieser ID gibt. Die Folge ist, dass in diesem Fall mein Eintrag für immer verloren ist.

Das passiert wie gesagt nicht nur mit bibliographischen Einträgen, sondern auch mit Ausleihen, Benutzern etc. Aus diesem Grund warnt Koha in den aktuellen Versionen vor dem Problem. Damit ist es aber noch nicht behoben.

Das Koha „auto increment“ Problem reparieren

Um zukünftig einen Datenverlust zu vermeiden, bringen wir MySQL bei, die IDs nicht zurückzusetzen, v.a. nicht auf einen Wert, den wir schon einmal verwendet haben. Dazu öffnen wir die Datei /etc/mysql/my.cnf oder /etc/mysql/mariadb.conf.d/50-server.cnf (wir verwenden einen Ubuntu 16.04 LXD Container mit MariaDB) und ergänzen im Abschnitt [mysqld] folgende Zeile:

init-file=/var/lib/mysql/init-file_koha.sql

Dann erstellen wir eben diese Datei mit

$ sudo nano /var/lib/mysql/init-file_koha.sql

und kopieren den folgenden Inhalt in die Datei:

USE koha_DB_Name;
 
SET @new_AI_borrowers = ( SELECT GREATEST( IFNULL( ( SELECT MAX(borrowernumber) FROM borrowers ), 0 ), IFNULL( ( SELECT MAX(borrowernumber) FROM deletedborrowers ), 0 ) ) + 1 );
SET @sql = CONCAT( 'ALTER TABLE borrowers AUTO_INCREMENT = ', @new_AI_borrowers );
PREPARE st FROM @sql;
EXECUTE st;
 
SET @new_AI_biblio = ( SELECT GREATEST( IFNULL( ( SELECT MAX(biblionumber) FROM biblio ), 0 ), IFNULL( ( SELECT MAX(biblionumber) FROM deletedbiblio ), 0 ) ) + 1 );
SET @sql = CONCAT( 'ALTER TABLE biblio AUTO_INCREMENT = ', @new_AI_biblio );
PREPARE st FROM @sql;
EXECUTE st;
 
SET @new_AI_biblioitems = ( SELECT GREATEST( IFNULL( ( SELECT MAX(biblioitemnumber) FROM biblioitems ), 0 ), IFNULL( ( SELECT MAX(biblioitemnumber) FROM deletedbiblioitems ), 0 ) ) + 1 );
SET @sql = CONCAT( 'ALTER TABLE biblioitems AUTO_INCREMENT = ', @new_AI_biblioitems );
PREPARE st FROM @sql;
EXECUTE st;
 
SET @new_AI_items = ( SELECT GREATEST( IFNULL( ( SELECT MAX(itemnumber) FROM items ), 0 ), IFNULL( ( SELECT MAX(itemnumber) FROM deleteditems ), 0 ) ) + 1 );
SET @sql = CONCAT( 'ALTER TABLE items AUTO_INCREMENT = ', @new_AI_items );
PREPARE st FROM @sql;
EXECUTE st;
 
SET @new_AI_issues = ( SELECT GREATEST( IFNULL( ( SELECT MAX(issue_id) FROM issues ), 0 ), IFNULL( ( SELECT MAX(issue_id) FROM old_issues ), 0 ) ) + 1 );
SET @sql = CONCAT( 'ALTER TABLE issues AUTO_INCREMENT = ', @new_AI_issues );
PREPARE st FROM @sql;
EXECUTE st;
 
SET @new_AI_reserves = ( SELECT GREATEST( IFNULL( ( SELECT MAX(reserve_id) FROM reserves ), 0 ), IFNULL( ( SELECT MAX(reserve_id) FROM old_reserves ), 0 ) ) + 1 );
SET @sql = CONCAT( 'ALTER TABLE reserves AUTO_INCREMENT = ', @new_AI_reserves );
PREPARE st FROM @sql;
EXECUTE st;

Wichtig: In der ersten Zeile müssen wir unbedingt koha_DB_Name mit dem Datenbanknamen unserer Koha-Installation ersetzen. In der Regel ist das koha_name_der_koha_instanz, also z.B. koha_library.

Zum Schluss starten wir noch MySQL bzw. MariaDB neu:

$ sudo service mysql restart

Fehlerhafte Datensätze aufräumen

Nun haben wir zwar verhindert, dass das Problem wieder auftritt, aber es sind immer noch unserer alten Datensätze vorhanden. Ein Weg ist, die entsprechenden Einträge aus den deleted* Tabellen zu löschen. Damit verliert man vielleicht ein paar statistische Informationen, aber auf die können wir in unserer kleinen Schulbibliothek verzichten. Sonst haben wir bisher keine negativen Auswirkungen feststellen können.

Um die „fehlerhaften“ Datensätze zu löschen, müssen wir uns zuerst an unserem Koha-Server anmelden. Dann loggen wir uns in die MySQL-Konsole ein mit

$ sudo mysql -p koha_datenbankname
Enter password: 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 115
Server version: MariaDB Ubuntu 16.04

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [koha_datenbankname]>

Oben im Screenshot sieht man, dass unsere fehlerhaften Datensätzen in den Tabellen biblio und deletedbiblio sind. Die IDs sind doppelt und wir löschen die IDs aus einer der beiden Tabellen, konkret aus deletedbiblio. Wir überprüfen zuerst, welche Datensätze betroffen sind:

MariaDB [koha_datenbankname]> SELECT * FROM deletedbiblio WHERE biblionumber IN (*hier die IDs aus dem Webinterface kopieren*);

Wenn wir die Datensätze wirklich löschen wollen ändern wir den Befehl leicht ab:

MariaDB [koha_datenbankname]> DELETE FROM deletedbiblio WHERE biblionumber IN (*hier die IDs aus dem Webinterface kopieren*);

Falls es z.B. auch problematische Datensätze mit den Ausleihen gibt, würde der Befehl so lauten:

MariaDB [koha_datenbankname]> DELETE FROM old_issues WHERE issue_id IN (*hier die IDs aus dem Webinterface kopieren);

Nun zeigt Koha keine fehlerhaften Datensätze mehr an:

Koha Info

Fazit

Wenn man dieses Problem in seiner Koha-Installation hat, ist es sehr ratsam dieses Problem zu lösen. Allerdings gibt es verschiedene Ansätze. Der oben beschriebene Weg ist ein schneller Fix, der aber unter Umständen nicht für jede Installation in Frage kommt. Seitens Koha wird noch an einem Skript gearbeitet, dass das Problem später automatisch beheben soll. Trotz diesem Datenbankproblem haben wir den Umstieg auf Koha bisher nicht bereut. Es ist und bleibt eine tolle Software, die sicher ihre Einarbeitungszeit braucht, aber der Gewinn, die Flexibilität und die damit gewonnen Freiheiten sind scheinbar grenzenlos.

Setzt du Koha ein? Welche Erfahrungen hast du bisher gemacht?

3 Kommentare

Der Beitrag Wie man das Koha „auto increment“ Problem lösen kann erschien zuerst auf .:zefanjas:..

]]>
https://zefanjas.de/wie-man-das-koha-auto-increment-problem-loesen-kann/feed/ 3
pfSense Webfilter – squidGuard für HTTP(S)-Verbindungen https://zefanjas.de/pfsense-webfilter-squidguard-fuer-https-verbindungen/ https://zefanjas.de/pfsense-webfilter-squidguard-fuer-https-verbindungen/#comments Mon, 22 Jan 2018 12:00:04 +0000 https://zefanjas.de/?p=2356 Als Systemadministrator einer Schule steht man immer wieder vor der Frage, inwieweit man Inhalte aus dem Internet filtern soll. Überall da, wo Kinder und Jugendliche Zugriff zum Internet haben, egal ob in der Schule, im Verein, Bibliotheken, zu Hause oder einer anderen öffentlichen Einrichtung, muss diese Frage beantwortet werden. Die Meinungen zu diesem Thema sind sehr vielfältig. Einen 100%igen Schutz gibt es nicht. Viel wichtiger ist es, Kinder und Jugendlichen einen verantwortungsvollem Umgang mit dem Internet beizubringen. Das ist eine...

Weiterlesen Weiterlesen

Der Beitrag pfSense Webfilter – squidGuard für HTTP(S)-Verbindungen erschien zuerst auf .:zefanjas:..

]]>
Als Systemadministrator einer Schule steht man immer wieder vor der Frage, inwieweit man Inhalte aus dem Internet filtern soll. Überall da, wo Kinder und Jugendliche Zugriff zum Internet haben, egal ob in der Schule, im Verein, Bibliotheken, zu Hause oder einer anderen öffentlichen Einrichtung, muss diese Frage beantwortet werden. Die Meinungen zu diesem Thema sind sehr vielfältig. Einen 100%igen Schutz gibt es nicht. Viel wichtiger ist es, Kinder und Jugendlichen einen verantwortungsvollem Umgang mit dem Internet beizubringen. Das ist eine sehr große Herausforderung und dauert seine Zeit. Eltern und Pädagogen stehen vor dieser Aufgabe und wissen oft nicht, wie man es am besten angeht. Gerade in Schulen, wo man die Bildschirme nicht immer im Blick behalten kann, ist ein Webfilter eine große Hilfe. In manchen Ländern ist ein Webfilter für Schulen sogar gesetzlich vorgeschrieben. Manchmal geht es aber auch nur darum bestimmte Webseiten, wie Facebook, Netflix & Co zu sperren. Deshalb möchte ich in diesem Tutorial zeigen, wie man einen pfSense Webfilter einrichten kann.

Vorbemerkungen

pfSense ist eine weit verbreitete Open Source Firewall, die wir an unserer Schule einsetzen. Mit Hilfe von Squid (einem Proxy Server) und SquidGuard (dem eigentlichem Webfilter) wollen wir sowohl HTTP als HTTPS – Verbindungen filtern. Für dieses Tutorial brauchen wir zuerst eine aktive pfSense Installation. Die Firewall kann man hier herunterladen und nach dieser Anleitung installieren.

Funktionsweise

HTTP-Verbindungen zu filtern ist sehr einfach und auch schnell eingerichtet. Da diese Verbindungen unverschlüsselt sind, kann man sie gut untersuchen und deshalb ganz oder teilweise sperren. Heutzutage verwenden immer mehr Seiten (auch solche, die man gern sperren möchte) HTTPS, d.h. eine verschlüsselte Verbindung zwischen dem Browser des Benutzers und dem Webserver. Dank Let’s Encrypt kann heute jeder ein kostenloses Zertifikat für seine Website einrichten. Das ist an sich eine gute Sache, weil es die Sicherheit erhöht und viele Attacken unmöglich macht bzw. schwieriger. Es erschwert aber auch das Filtern nach unerwünschten Inhalten.

Diese „Problem“ lässt sich auf zwei Wegen lösen:

1. Man-in-the-Middle Angriff

Ein Weg ist ein bewusster Man-in-the-middle Angriff. Der Proxy-Server entschlüsselt dabei die HTTPS-Verbindung und baut sie neu auf. Dadurch kann er sich die Verbindung anschauen und entsprechend filtern. Dieses Konzept wird von den meisten Anbietern von Filterlösungen angewendet. Das Problem hierbei ist, dass durch diesen tiefen Eingriff in die HTTPS-Verbindung, die eigentliche Sicherheit durch HTTPS nicht mehr gegeben ist. Ein Benutzer kann den Unterschied kaum erkennen, wenn dem Zertifikat des Proxy-Servers vertraut wird. Doch diese Sicherheit ist trügerisch. Auch wenn man nur über diesen Weg von einer echten Inhaltsfilterung sprechen kann, so ist diese Lösung gefährlich, sehr risikobehaftet (die Implementation ist nicht trival) und je nach Land, nicht mit den vorherrschenden Gesetzen vereinbar (Stichwort Datenschutz). Deshalb ist dieser Weg aus sicherheitstechnischen und auch moralischen Gründen nicht zu empfehlen.

2. URL-Filter über SNI

Eine weitere Möglichkeit ist die Filterung über SNI (Server Name Indication). Bevor das Zertifikat zwischen Browser und Webserver abgefragt und somit einen verschlüsselte Verbindung aufgebaut wird, sendet der Browser den Domain Namen (FQDN) mit, den er abfragen möchte. Dieser Teil ist nicht noch nicht verschlüsselt und kann deshalb von einem (transparentem) Proxy gelesen und für die Filterung genutzt werden. Folgende Abbildung macht den TLS-Handshake deutlicher.

TLS Handshake

Man kann gut erkennen, dass der SNI vor dem Schlüsselaustausch und der eigentlichen sicheren Verbindung gesendet wird. Dieses Prinzip machen wir uns zunutze und können neben dem Webfilter für HTTP-Verbindungen auch einen URL-Filter für HTTPS-Verbindungen einrichten, ohne dabei HTTPS durch einen Man-in-the-Middle Angriff kaputt zu machen.

Safe-Search für Suchmaschienen

Firewall Regeln für DNS erstellen

Da wir nicht in eine HTTPS-Verbindung hinein schauen können, können z.B. in einer Google-Suche unerwünschte Bilder und Videos auftauchen. Google und auch andere Suchmaschinen bieten deshalb einen sicheren Modus (Safe-Search) an, denn wir erzwingen wollen.

Zuerst müssen wir dazu den DNS-Resolver in pfSense aktivieren (unter Services → DNS Resolver) und danach Speichern (Save) und die Änderungen übernehmen (Apply).

DNS Resolver

Damit später die Rechner im Netzwerk auch den DNS-Server der Firewall verwenden, brauchen wir eine Regel, welche alle anderen DNS-Anfragen an die Firewall weiterleitet. Dazu erstellen wir eine neue Regel unter Firewall → NAT im Reiter Port Forward mit einem Klick auf einen der beiden Add Buttons. Dabei geben wir folgendes ein:

  1. Interface: LAN
  2. Protocol: TCP/UDP
  3. Destination: Any
  4. Destination Port Range: DNS (53)
  5. Redirect Traget IP: 127.0.0.1
  6. Redirect Target Port: DNS (53)
  7. Description: Kann frei gewählt werden

NAT DNS Redirect

Nun müssen wir sicher stellen, dass unsere eben erstellte Firewall-Regel an der richtigen Stelle ist. Sie muss über der standardmäßigen „Default allow LAN to any rule“ sein! Dazu öffnen wir die Firewall Regeln unter Firewall → Rules und verschieben die Regeln nach oben. Danach mit Save speichern und mit Apply die Änderungen übernehmen.

LAN Rules

Host Overrides für Bing und Youtube

Als nächstes erstellen wir einige DNS-Einträge, die dafür sorgen, dass sowohl für Google und Bing deren Safe-Search verwendet wird. Dazu öffnen wir erneut den DNS-Resolver unter Services → DNS-Resolver und fügen unten im Abschnitt „Host Overrides“ mit Add folgende Einträge hinzu.

Bing:

  • Host: www
  • Domain: bing.com
  • IP Address: 204.79.197.220
  • Description: Bing
  • Dann mit Save speichern

Dann noch der Eintrag für Youtube:

  • Host: www
  • Domain: youtube.com
  • IP Address: 216.239.38.120
  • Description: Youtube
  • Wieder mit Save speichern

Host Override

Nun die Änderungen wieder mit Apply übernehmen.

Host Overrides für Google

Google verwendet sehr viele verschiedene Domains und es würde ziemlich lang dauern, diese von Hand einzugeben. Deshalb wählen wir für Google einen anderen Weg. Zuerst müssen wir uns per SSH in pfSense anmelden (oder einen Bildschirm + Tastatur anschließen, falls der pfSense auf einem Computer mit Grafikkarte installiert ist). Vorher muss SSH noch im Webinterface und System → Advanced im Abschnitt Secure Shell aktiviert werden.

pfSense SSH

Nun können wir uns mit folgendem Befehl per SSH anmelden (IP Adresse anpassen!):

$ ssh admin@192.168.0.1

Im folgenden Menü wählen wir „8“ (Shell).

pfSense Shell

Nun legen wir eine Datei an, in die wir später unsere DNS Einträge für Google eintragen. Das können wir mit folgendem Befehl machen:

$ vi /var/unbound/google.conf

Um den Editor wieder zu verlassen, müssen wir :wq eingeben (der Doppelpunkt ist wichtig!). Mehr brauchen wir nicht auf der Kommandozeile machen.

Wir können nun die eben angelegte Datei über Diagnostics → Edit File bearbeiten. Dazu geben wir den Pfad /var/unbound/google.conf ein und drücken dann auf Load.

Edit File

Nun kopieren wir folgenden Inhalt in die Datei:

local-data: "www.google.ad A 216.239.38.120"
local-data: "www.google.ae A 216.239.38.120"
local-data: "www.google.com A 216.239.38.120"
local-data: "www.google.com.af A 216.239.38.120"
local-data: "www.google.com.ag A 216.239.38.120"
local-data: "www.google.com.ai A 216.239.38.120"
local-data: "www.google.al A 216.239.38.120"
local-data: "www.google.am A 216.239.38.120"
local-data: "www.google.co.ao A 216.239.38.120"
local-data: "www.google.com.ar A 216.239.38.120"
local-data: "www.google.as A 216.239.38.120"
local-data: "www.google.at A 216.239.38.120"
local-data: "www.google.com.au A 216.239.38.120"
local-data: "www.google.az A 216.239.38.120"
local-data: "www.google.ba A 216.239.38.120"
local-data: "www.google.com.bd A 216.239.38.120"
local-data: "www.google.be A 216.239.38.120"
local-data: "www.google.bf A 216.239.38.120"
local-data: "www.google.bg A 216.239.38.120"
local-data: "www.google.com.bh A 216.239.38.120"
local-data: "www.google.bi A 216.239.38.120"
local-data: "www.google.bj A 216.239.38.120"
local-data: "www.google.com.bn A 216.239.38.120"
local-data: "www.google.com.bo A 216.239.38.120"
local-data: "www.google.com.br A 216.239.38.120"
local-data: "www.google.bs A 216.239.38.120"
local-data: "www.google.bt A 216.239.38.120"
local-data: "www.google.co.bw A 216.239.38.120"
local-data: "www.google.by A 216.239.38.120"
local-data: "www.google.com.bz A 216.239.38.120"
local-data: "www.google.ca A 216.239.38.120"
local-data: "www.google.cd A 216.239.38.120"
local-data: "www.google.cf A 216.239.38.120"
local-data: "www.google.cg A 216.239.38.120"
local-data: "www.google.ch A 216.239.38.120"
local-data: "www.google.ci A 216.239.38.120"
local-data: "www.google.co.ck A 216.239.38.120"
local-data: "www.google.cl A 216.239.38.120"
local-data: "www.google.cm A 216.239.38.120"
local-data: "www.google.cn A 216.239.38.120"
local-data: "www.google.com.co A 216.239.38.120"
local-data: "www.google.co.cr A 216.239.38.120"
local-data: "www.google.com.cu A 216.239.38.120"
local-data: "www.google.cv A 216.239.38.120"
local-data: "www.google.com.cy A 216.239.38.120"
local-data: "www.google.cz A 216.239.38.120"
local-data: "www.google.de A 216.239.38.120"
local-data: "www.google.dj A 216.239.38.120"
local-data: "www.google.dk A 216.239.38.120"
local-data: "www.google.dm A 216.239.38.120"
local-data: "www.google.com.do A 216.239.38.120"
local-data: "www.google.dz A 216.239.38.120"
local-data: "www.google.com.ec A 216.239.38.120"
local-data: "www.google.ee A 216.239.38.120"
local-data: "www.google.com.eg A 216.239.38.120"
local-data: "www.google.com.et A 216.239.38.120"
local-data: "www.google.fi A 216.239.38.120"
local-data: "www.google.com.fj A 216.239.38.120"
local-data: "www.google.fm A 216.239.38.120"
local-data: "www.google.fr A 216.239.38.120"
local-data: "www.google.ga A 216.239.38.120"
local-data: "www.google.ge A 216.239.38.120"
local-data: "www.google.gg A 216.239.38.120"
local-data: "www.google.com.gh A 216.239.38.120"
local-data: "www.google.com.gi A 216.239.38.120"
local-data: "www.google.gl A 216.239.38.120"
local-data: "www.google.gm A 216.239.38.120"
local-data: "www.google.gp A 216.239.38.120"
local-data: "www.google.gr A 216.239.38.120"
local-data: "www.google.com.gt A 216.239.38.120"
local-data: "www.google.gy A 216.239.38.120"
local-data: "www.google.com.hk A 216.239.38.120"
local-data: "www.google.hn A 216.239.38.120"
local-data: "www.google.hr A 216.239.38.120"
local-data: "www.google.ht A 216.239.38.120"
local-data: "www.google.hu A 216.239.38.120"
local-data: "www.google.co.id A 216.239.38.120"
local-data: "www.google.ie A 216.239.38.120"
local-data: "www.google.co.il A 216.239.38.120"
local-data: "www.google.im A 216.239.38.120"
local-data: "www.google.co.in A 216.239.38.120"
local-data: "www.google.iq A 216.239.38.120"
local-data: "www.google.is A 216.239.38.120"
local-data: "www.google.it A 216.239.38.120"
local-data: "www.google.je A 216.239.38.120"
local-data: "www.google.com.jm A 216.239.38.120"
local-data: "www.google.jo A 216.239.38.120"
local-data: "www.google.co.jp A 216.239.38.120"
local-data: "www.google.co.ke A 216.239.38.120"
local-data: "www.google.com.kh A 216.239.38.120"
local-data: "www.google.ki A 216.239.38.120"
local-data: "www.google.kg A 216.239.38.120"
local-data: "www.google.co.kr A 216.239.38.120"
local-data: "www.google.com.kw A 216.239.38.120"
local-data: "www.google.kz A 216.239.38.120"
local-data: "www.google.la A 216.239.38.120"
local-data: "www.google.com.lb A 216.239.38.120"
local-data: "www.google.li A 216.239.38.120"
local-data: "www.google.lk A 216.239.38.120"
local-data: "www.google.co.ls A 216.239.38.120"
local-data: "www.google.lt A 216.239.38.120"
local-data: "www.google.lu A 216.239.38.120"
local-data: "www.google.lv A 216.239.38.120"
local-data: "www.google.com.ly A 216.239.38.120"
local-data: "www.google.co.ma A 216.239.38.120"
local-data: "www.google.md A 216.239.38.120"
local-data: "www.google.me A 216.239.38.120"
local-data: "www.google.mg A 216.239.38.120"
local-data: "www.google.mk A 216.239.38.120"
local-data: "www.google.ml A 216.239.38.120"
local-data: "www.google.com.mm A 216.239.38.120"
local-data: "www.google.mn A 216.239.38.120"
local-data: "www.google.ms A 216.239.38.120"
local-data: "www.google.com.mt A 216.239.38.120"
local-data: "www.google.mu A 216.239.38.120"
local-data: "www.google.mv A 216.239.38.120"
local-data: "www.google.mw A 216.239.38.120"
local-data: "www.google.com.mx A 216.239.38.120"
local-data: "www.google.com.my A 216.239.38.120"
local-data: "www.google.co.mz A 216.239.38.120"
local-data: "www.google.com.na A 216.239.38.120"
local-data: "www.google.com.nf A 216.239.38.120"
local-data: "www.google.com.ng A 216.239.38.120"
local-data: "www.google.com.ni A 216.239.38.120"
local-data: "www.google.ne A 216.239.38.120"
local-data: "www.google.nl A 216.239.38.120"
local-data: "www.google.no A 216.239.38.120"
local-data: "www.google.com.np A 216.239.38.120"
local-data: "www.google.nr A 216.239.38.120"
local-data: "www.google.nu A 216.239.38.120"
local-data: "www.google.co.nz A 216.239.38.120"
local-data: "www.google.com.om A 216.239.38.120"
local-data: "www.google.com.pa A 216.239.38.120"
local-data: "www.google.com.pe A 216.239.38.120"
local-data: "www.google.com.pg A 216.239.38.120"
local-data: "www.google.com.ph A 216.239.38.120"
local-data: "www.google.com.pk A 216.239.38.120"
local-data: "www.google.pl A 216.239.38.120"
local-data: "www.google.pn A 216.239.38.120"
local-data: "www.google.com.pr A 216.239.38.120"
local-data: "www.google.ps A 216.239.38.120"
local-data: "www.google.pt A 216.239.38.120"
local-data: "www.google.com.py A 216.239.38.120"
local-data: "www.google.com.qa A 216.239.38.120"
local-data: "www.google.ro A 216.239.38.120"
local-data: "www.google.ru A 216.239.38.120"
local-data: "www.google.rw A 216.239.38.120"
local-data: "www.google.com.sa A 216.239.38.120"
local-data: "www.google.com.sb A 216.239.38.120"
local-data: "www.google.sc A 216.239.38.120"
local-data: "www.google.se A 216.239.38.120"
local-data: "www.google.com.sg A 216.239.38.120"
local-data: "www.google.sh A 216.239.38.120"
local-data: "www.google.si A 216.239.38.120"
local-data: "www.google.sk A 216.239.38.120"
local-data: "www.google.com.sl A 216.239.38.120"
local-data: "www.google.sn A 216.239.38.120"
local-data: "www.google.so A 216.239.38.120"
local-data: "www.google.sm A 216.239.38.120"
local-data: "www.google.sr A 216.239.38.120"
local-data: "www.google.st A 216.239.38.120"
local-data: "www.google.com.sv A 216.239.38.120"
local-data: "www.google.td A 216.239.38.120"
local-data: "www.google.tg A 216.239.38.120"
local-data: "www.google.co.th A 216.239.38.120"
local-data: "www.google.com.tj A 216.239.38.120"
local-data: "www.google.tk A 216.239.38.120"
local-data: "www.google.tl A 216.239.38.120"
local-data: "www.google.tm A 216.239.38.120"
local-data: "www.google.tn A 216.239.38.120"
local-data: "www.google.to A 216.239.38.120"
local-data: "www.google.com.tr A 216.239.38.120"
local-data: "www.google.tt A 216.239.38.120"
local-data: "www.google.com.tw A 216.239.38.120"
local-data: "www.google.co.tz A 216.239.38.120"
local-data: "www.google.com.ua A 216.239.38.120"
local-data: "www.google.co.ug A 216.239.38.120"
local-data: "www.google.co.uk A 216.239.38.120"
local-data: "www.google.com.uy A 216.239.38.120"
local-data: "www.google.co.uz A 216.239.38.120"
local-data: "www.google.com.vc A 216.239.38.120"
local-data: "www.google.co.ve A 216.239.38.120"
local-data: "www.google.vg A 216.239.38.120"
local-data: "www.google.co.vi A 216.239.38.120"
local-data: "www.google.com.vn A 216.239.38.120"
local-data: "www.google.vu A 216.239.38.120"
local-data: "www.google.ws A 216.239.38.120"
local-data: "www.google.rs A 216.239.38.120"
local-data: "www.google.co.za A 216.239.38.120"
local-data: "www.google.co.zm A 216.239.38.120"
local-data: "www.google.co.zw A 216.239.38.120"
local-data: "www.google.cat A 216.239.38.120"

Mit einem Klick auf Save speichern wir die Datei.

Der letzte Schritt ist, dass wir unserem DNS Server noch mitteilen müssen, wo er diese DNS-Einträge finden kann. Dazu öffnen wir wieder die Einstellungen des DNS Servers unter Services → DNS Resolver und klicken auf Display Custom Options. Dort fügen wir folgende Zeilen ein, speichern mit Save und übernehmen die Änderungen mit Apply.

server:
include: /var/unbound/google.conf

DNS Custom Options

Unsere Suchmaschinen sind konfiguriert. Im nächsten Schritt richten wir den Inhaltsfilter für HTTP und den URL-Filter für HTTPS ein.

Squid Proxy und SquidGuard

Installation

Damit pfSense die URLs filtern kann, brauchen wir einen Proxy-Server, durch den alle Anfragen aus unserem Netzwerk geleitet werden. Dazu verwenden wir Squid. SquidGuard ist, wie der Name schon vermuten lässt, der eigentliche Filter. Unter System → Package Manager im Reiter Available Packages installieren wir Squid und SquidGuard.

Package Manager

Transparenter Proxy für HTTP einrichten

Unter Services → Squid Proxy Server richten wir nun den transparenten Proxy für HTTP ein. Ein transparenter Proxy hat den Vorteil, dass wir keine Konfiguration an den einzelnen Rechner in unserem Netzwerk vornehmen müssen. Im Reiter General aktivieren wir folgende Punkte:

  1. Enable Squid Proxy ✔
  2. Proxy Interface(s): LAN
  3. Allow users on Interface ✔
  4. Transparent HTTP Proxy ✔
  5. Transparent Proxy Interface(s): LAN

Squid Proxy General

Nach dem Speichern mit Save legen wir im Reiter Local Cache fest, wie viel Festplattenplatz für den Cache verwendet werden soll (hier 500MB):

Squid Proxy Cache

Auch hier müssen die Einstellungen wieder mit Save gespeichert werden. Der Transparente Proxy für HTTP-Verbindungen ist jetzt fertig eingerichtet.

SquidGuard konfigurieren

SquidGuard ist die Komponente, die sich um die Filterung der Inhalte kümmert. Jede Anfrage wir von SquidGuard untersucht und dann entschieden, ob die Anfrage bzw. die Website geblockt werden soll oder nicht. Dazu verwenden wir eine Blacklist, die wir später konfigurieren. Davor legen wir ein paar allgemeine Einstellungen unter Services → SquidGuard Proxy Filter fest.

  1. Enable ✔ (nicht im Screenshot zu sehen)
  2. Enable Log  ✔
  3. Enable Log Rotation ✔
  4. Enable Blacklist ✔
  5. Blacklist URL: http://www.shallalist.de/Downloads/shallalist.tar.gz

Squid Proxy Filter General

Unten speichern wir wieder alles mit Save.

Beim SquidGuard müssen wir beachten, dass Änderungen in der Konfiguration erst dann aktiv werden, wenn wir Save und Apply (oben im Reiter General Settings) geklickt haben!

Black- und Whitelisten einrichten

Nachdem wir nun mit den grundlegenden Einstellungen fertig sind, fehlen noch die Black- und Whitelisten. Die URL für die Blackliste haben wir ja bereits angegeben. Nun müssen wir sie noch herunterladen im Reiter „Blacklist„.

Blacklist

Damit unser Filter auch funktioniert, legen wir nun einige Zielkategorien fest. Dazu öffnen wir den Reiter „Target Kategories“ und klicken auf Add. Wir erstellen eine Whitelist, in der alle Domainnamen kommen, die wir explizit erlauben. Das wären z.B. alle Google-Domain, da wir ja alle weiteren Suchmaschinen blocken werden, um dem Benutzer keine Möglichkeit zu geben, die weiter oben eingerichtet Safe-Search zu umgehen.

Folgendes geben wir ein:

  1. Name: Whitelist
  2. Domain List:
    google.ac google.ad google.ae google.al google.am google.as google.at google.az google.ba google.be google.bf google.bg google.bi google.bj google.bs google.bt google.by google.ca google.cat google.cd google.cf google.cg google.ch google.ci google.cl google.cm google.cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.hu google.co.id google.co.il google.co.in google.co.je google.co.jp google.co.ke google.co.kr google.co.ls google.com google.co.ma google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gr google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.nf google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw google.cv google.cz google.de google-directory.co.uk google.dj google.dk google.dm google.dz google.ee google.es google.fi google.fm google.fr google.ga google.ge google.gg google.gl google.gm google.gp google.gr google.gy google.hn google.hr google.ht google.hu google.ie google.im google.iq google.is google.it google.je google.jo google.kg google.ki google.kz google.la google.li google.lk google.lt google.lu google.lv google.md google.me google.mg google.mk google.ml google.mn google.ms google.mu google.mv google.mw google.ne google.nl google.no google.nr google.nu google.off.ai googlepirate.com google.pl google.pn google.ps google.pt google.ro google.rs google.ru google.rw google.sc google.se google.sh google.si google.sk google.sm google.sn google.so google.sr google.st google.td google.tg google.tk google.tl google.tm google.tn google.to google.tt google.uz google.vg google.vu google.ws bing.com
  3. Description: Whitelist
  4. Mit Save speichern.

Whitelist

Der vorerst letzte Schritt ist die Einrichtung einiger Regeln. Das machen wir im Reiter Common ACL. Dann bei „Target Rules List“ auf das „+“ – Zeichen klicken, um eine Liste mit den verschiedenen Regelsätzen zu öffnen. Hier gibt es nun verschiedene Kategorien und auch unsere Whitelist taucht hier auf. Folgende Einstellungen nehmen wir nun vor:

  • Whitelist: access whitelist
  • Default access [all]: access allow

Common ACL

Die anderen Kategorien können je nach Bedarf eingestellt werden. Hier einige Beispiele:

  • Werbung blocken: [blk_BL_adv] access deny
  • Pornographie blocken: [blk_BL_porn] access deny
  • usw.

Damit ein Benutzer unseren URL-Filter nicht durch die Eingabe der IP-Adresse einer Seite umgehen kann, aktivieren wir noch Do not allow IP-Addresses in URL. Falls diese Einstellung Probleme macht, sollte man sie wieder deaktivieren.

Do not allow IP Addresses

Dann speichern wir mit Save, wechseln in den Reiter General Settings und müssen dort noch einmal auf Apply drücken, damit unsere Änderungen auch angewendet werden.

Bisheriges Setup testen

Für HTTP-Verbindungen ist alles eingerichtet und wir können das Setup testen. Auf einem Rechner im LAN muss nichts weiter eingerichtet werden. Der Filter sollte bereits funktionieren. Falls wir eine Seite aufrufen, die in eine unserer Blacklisten auftaucht erscheint diese Seite:

Blocked Sites

Transparenter Proxy für HTTPS-Verbindungen

Bisher ist der transparente Proxy nur für HTTP, d.h. unverschlüsselte Anfragen aktiv.  Zu Beginn dieses Artikels habe ich bereits auf die Schwierigkeiten beim Filtern von verschlüsselten, also HTTPS-Verbindungen hingewiesen. In unserem Fall werden wir einen transparenten Proxy für HTTPS aktivieren, der es uns erlaubt einen URL-Filter für alle Anfragen auf Port 443 (HTTPS) zu aktivieren, allerdings mit dem Nachteil, dass wir nicht den Inhalt analysieren können (und auch nicht wollen!) sowie keine schöne Fehlerseite möglich ist. Stattdessen wird uns der Browser eine Zertifikatsfehlermeldung anzeigen. Doch dazu gleich mehr.

Wir aktivieren zuerst den transparenten Proxy auch für HTTPS. Dazu öffnen wir die Proxyeinstellungen unter Services → Squid Proxy Server und wählen im Abschnitt SSL Man in the Middle Filtering folgende Einstellungen:

  • HTTPS / SSL Interception ✔
  • SSL/MITM Method: Splice All
  • SSL Intercept Interfaces: LAN
  • CA: Ein Certificat Authority Zertifkat auswählen. Eventuell müssen wir erst noch eines erstellen. (Unter System → Cert. Manager).
  • Alles mit Save speichern.

SSL MITM

Nun ist wirklich alles eingerichtet und wir können auch HTTPS-Verbindungen testen. Wie bereits geschrieben, bekommen wir diesmal nicht so eine aussagekräftige Fehlermeldung wie für HTTP-Verbindungen, sondern eine Warnung des Browsers zu sehen:

Cert Error

Auch wenn diese Fehlermeldung nicht sehr aussagekräftig ist, haben wir unser eigentliches Ziel erreicht, nämlich das unerwünschte Seiten geblockt werden.

Fazit

Wir haben nun ein System eingerichtet, welches allen Netzwerkverkehr in unserem LAN (oder WLAN) filtert. Dabei werden Seiten, die über die Blacklisten festgelegt wurden, geblockt.

Über das Für und Wider von solchen Sperren gibt es unterschiedliche Positionen. Es ist auf jeden Fall ein Problem, welches sich technisch nicht zu 100% lösen lässt und auch nicht sollte, da es vielmehr darum geht, (junge) Menschen dahingehend zu erziehen, dass sie verantwortungsvoll mit dem Medium „Internet“ umgehen können. Dieses Ziel allein durch solche Filtermaßnahmen zu erreichen, ist sicher nicht der richtige Weg. Auch das man Kinder und Jugendliche an Zensur und Filter „gewöhnt“ wird von einigen kritisch gesehen.

Auf der anderen Seite ist es gerade für Schulen, Bibliotheken oder auch zu Hause eine Hilfe, wenn man die Fülle an nicht altersgemäßen Inhalten etwas einschränken kann. Manche Länder schreiben so einen Filter auch gesetzlich vor!

(Quelle: https://forum.pfsense.org/index.php?topic=112335.0)

3 Kommentare

Der Beitrag pfSense Webfilter – squidGuard für HTTP(S)-Verbindungen erschien zuerst auf .:zefanjas:..

]]>
https://zefanjas.de/pfsense-webfilter-squidguard-fuer-https-verbindungen/feed/ 3
MuseScore – App des Monats https://zefanjas.de/musescore-app-des-monats/ https://zefanjas.de/musescore-app-des-monats/#comments Mon, 15 Jan 2018 13:41:27 +0000 https://zefanjas.de/?p=2336 Weltweit wird Open Source Software immer mehr an Schulen verwendet. Ich meine dabei nicht nur den klassischen Informatikunterricht (wenn es ihn denn gibt…), sondern auch außerhalb davon. Es gibt einige sehr gute Open Source Apps, die sich z.B. im Mathe-, Physik- oder Musikunterricht einsetzen lassen. Trotz allem gibt es meiner Erfahrung nach immer noch große Vorbehalte gegenüber Open Source Programmen im Unterricht. Die Gründe dafür sind sehr vielfältig und oft kann ich sie nachvollziehen. Es gibt mittlerweile ein sehr großes...

Weiterlesen Weiterlesen

Der Beitrag MuseScore – App des Monats erschien zuerst auf .:zefanjas:..

]]>
Weltweit wird Open Source Software immer mehr an Schulen verwendet. Ich meine dabei nicht nur den klassischen Informatikunterricht (wenn es ihn denn gibt…), sondern auch außerhalb davon. Es gibt einige sehr gute Open Source Apps, die sich z.B. im Mathe-, Physik- oder Musikunterricht einsetzen lassen. Trotz allem gibt es meiner Erfahrung nach immer noch große Vorbehalte gegenüber Open Source Programmen im Unterricht. Die Gründe dafür sind sehr vielfältig und oft kann ich sie nachvollziehen. Es gibt mittlerweile ein sehr großes Angebot an (Lern-)Software und nur wenige der Anwendungen sind Open Source. Doch es gibt sie. Deshalb möchte ich in den kommenden Monaten verschiedene Open Source Programme und Apps vorstellen, die sehr gut für den Unterricht geeignet sind. Den Anfang macht MuseScore.

Was ist MuseScore?

MuseScore ist ein Notensatzprogramm mit einem WYSIWYG-Editor, das die Wiedergabe der eingegebenen Noten sowie den Import und Export in zahlreiche Dateiformate gestattet. Das Programm läuft unter Linux, Windows und macOS; für Windows gibt es eine portable Version, die ohne Installation etwa von einem USB-Massenspeicher gestartet werden kann. Die Benutzeroberfläche sowie die Eingabemöglichkeiten der Noten ähneln bekannten kostenpflichtigen Notensatzprogrammen wie Finale oder Sibelius. MuseScore ist jedoch Open Source und unter einer GNU General Public License lizenziert. (Wikipedia)

MuseScore ist ein Programm, dass ich jedem Musiklehrer oder Musiker ans Herz lege. Als wir vor einigen Jahren in unserer Schule auf Open Source gewechselt sind, war dieses Programm für unsere Musiklehrkräfte ein echter Gewinn. Mit MuseScore kann man sehr schnell und einfach Noten setzen. Doch MuseScore kann weit mehr.

Features

Es ist kaum möglich alle Features von MuseScore aufzulisten, weil es wirklich sehr viel kann. Hier eine Auswahl:

  • grafische Partitur-Eingabe und -Darstellung (WYSIWYG)
  • beliebige Anzahl von Notenzeilen
  • einfache und schnelle Noteneingabe mit Maus, Tastatur oder via Hardware-MIDI-Anschluss
  • Sequencer und FluidSynth-Softwaresynthesizer integriert
  • Abspielmöglichkeit der Partitur beinhaltet individuelle Einstellmöglichkeiten wie Geschwindigkeit und Lautstärke über ein virtuelles Mischpult
  • Automatische Transposition, beispielsweise mit oder ohne Tonart-Wechsel
  • Einfügen von Bildern in die Partitur
  • Mehrzeiliger Liedtext
  • verschiedene Möglichkeiten zum Datei-Import und -Export
  • und noch vieles vieles mehr!

Installation

MuseScore kann auf der Website des Projekts heruntergeladen werden. Es ist für so ziemlich jedes Betriebssystem und Plattform verfügbar. Wenn man snapd installiert hat (ab Ubuntu 16.04 standardmäßig mit dabei), kann man MuseScore mit folgendem Befehl installieren:

$ sudo snap install musescore

Alternativ kann man es auch aus den Paketquellen oder einem PPA installieren. Die Installation mit snap hat den Vorteil, dass man auch in älteren Ubuntu-Versionen immer die aktuelle Version bekommt ohne ein PPA einzurichten.

Anleitungen und Links

Zu MuseScore gibt es auch ein Handbuch in mehreren Sprachen, u.a. auch in deutsch. Dort werden die wichtigsten Themen, angefangen von der ersten Partitur bis hin zu fortgeschrittenen Themen, wie Griffbrettdiagramme, behandelt. Wenn man sich mal eine kleine Weile mit dem Programm beschäftigt hat, ist man erstaunt, was es alles kann. Allein die Fülle an Instrumenten, die unterstützt werden, sowie die unendlichen Möglichkeiten der Gestaltung der Partitur, sind sehr beeindruckend.

Ich habe versucht ein gutes Tutorial in deutsch zu finden, welches systematisch den Umgang mit Musescore beschreibt, aber ich bin leider nicht fündig geworden. Auf Youtube tummeln sich ein paar Videos in deutscher Sprache zur aktuellen Version, aber sie unterscheiden sich sehr vom Umfang und der Qualität der Aufnahme. Wer der englischen Sprache mächtig ist, wird sicher Gefallen an den offiziellen „MuseScore in Minutes“ finden. (Update: für diese Videos gibt es auch einen deutschen Untertitel!). Diese mehrteilige Videoreihe beschreibt kurz und knapp die wichtigsten Funktionen, sodass man sich danach schon recht gut in MuseScore zurecht findet (bzw. die Schüler).

Diese Programm wird sicher hauptsächlich im Musikunterricht und von Musiklehrkräften bzw. Musikern allgemein eingesetzt werden. Doch weitere Einsatzbereiche sind nicht ausgeschlossen, z.B.

  • Chorgruppen
  • Band-AGs
  • Instrumentenunterricht

Fazit

MuseScore kann sowohl für die Vorbereitung des eigenen Unterrichts, als auch direkt im Unterricht verwendet werden. Es ist auch möglich vorhandene Partituren anzupassen. Auf der Website des Projekts kann man dazu viele Partituren herunterladen und weiter bearbeiten.

Welche Open Source Apps und Programme verwendest du im Unterricht? Welche Open Source Software sollte unbedingt auf einem Schulcomputer installiert sein?

4 Kommentare

Der Beitrag MuseScore – App des Monats erschien zuerst auf .:zefanjas:..

]]>
https://zefanjas.de/musescore-app-des-monats/feed/ 4