Normale Ansicht

Es gibt neue verfügbare Artikel. Klicken Sie, um die Seite zu aktualisieren.
Ältere BeiträgeHaupt-Feeds

Microsoft macht Teile des Windows-UX-Frameworks zu Open Source

05. Dezember 2018 um 11:29

Auf GitHub sind nun Windows Presentation Foundation, Windows Forms und die WinUI XAML Library erhältlich. Sie sollen mehr Transparenz zwischen dem Produktteam und der Community schaffen. Microsoft veröffentlicht außerdem Vorabversionen von Visual Studio 2019 und .NET Core 3.0.

ownCloud Enterprise erhält verbesserte Verschlüsselung

06. Dezember 2018 um 19:58

Der Spezialist für Enterprise-File-Sharing ermöglicht Ende-zu-Ende-Verschlüsselung mit Hardwareunterstützung. Das E2EE-Plug-in verschlüsselt und entschlüsselt direkt im Webbrowser. Das Outlook-Plug-in vereinfacht den Versand verschlüsselter Dateien.

Microsoft bestätigt: Edge erhält Chrome-Unterbau und wird zum Cross-Plattform-Browser

07. Dezember 2018 um 08:25

Die eigene EdgeHTML-Browserengine macht Platz für die Blink-Engine von Chrome. Damit hält Edge auch Einzug auf Windows 7 und 8.1. Microsoft plant sogar eine Version für macOS. Die Umstellung soll im kommenden Jahr beginnen.

ownCloud Server 10.1 integriert Microsoft Office Online

08. Februar 2019 um 10:28

Durch die Unterstützung des WOPI-Protokolls ist es künftig möglich, das Microsoft-Kollaborationstool Office Online Server in ownCloud zu integrieren. File Locking soll Versionskonflikte beim Bearbeiten verhindern, die Tagging-Funktion wurde um „Static Tags” ergänzt.

Stumm schalten, Maus und primärer Bildschirm – Tipps für die Kommandozeile

Von: zefanja
12. November 2018 um 23:21

Letzte Woche kam ein Kollege auf mich zu, der ein paar individuelle Anpassungen für seinen Rechner im Klassenraum haben wollte. Es waren alles Dinge, die man recht schnell in den Systemeinstellungen einstellen konnte, doch wenn man das nach jedem Start machen muss, stört es schon. Es musste also eine Lösung her, wie man diese Dinge über die Kommandozeile lösen kann, damit wir die gewünschten Änderungen in ein Skript packen können, welches dann bei Anmelden ausgeführt wird. Deshalb hier ein paar kleine Tipps für die Kommandozeile.

Ton anschalten / stumm schalten

In unserem Ubuntu-Image ist der Ton standardmäßig stumm geschaltet. Das macht in den meisten Fällen Sinn – v.a. im Computerraum. In manchen Räumen, z.B. im Musikraum oder auch allgemein an den Lehrkraftrechnern, wäre es benutzerfreundlicher, wenn der Ton automatisch eingeschaltet wird. Das geht mit folgendem Befehl:

# Ton einschalten
$ pactl set-sink-mute 0 0

Möchte man den Ton wieder stumm schalten, muss die letzte Null durch eine „1“ ersetzt werden:

# Ton stumm schalten
$ pactl set-sink-mute 0 1

Primären Bildschirm festlegen

In den meisten Räumen wird standardmäßig der Bildschirm gespiegelt, sobald ein Beamer oder Bildschirm über den HDMI-Switch angeschlossen wird. Im konkreten Fall nutzt der Kollege den Rechner in „seinem“ Raum mehr oder weniger allein und er wollte gern ein Setup mit einem erweiterten Bildschirm. Ubuntu platziert allerdings den Launcher / Starter standardmäßig auf dem Bildschirm mit der größeren Auflösung. Hier brauchten wir eine Lösung, wie man den primären Bildschirm per Kommandozeile umstellen kann, sodass der Hauptbildschirm der Monitor am Lehrertisch ist. Das lässt sich leicht mit xrandr lösen.

$ xrandr --output DVI-0 --primary

DVI-0 ist der Ausgang, an dem der Monitor auf dem Lehrertisch hängt. Über xrandr -q kann man sich alle verfügbaren Anschlüsse anzeigen lassen.

Mauszeiger Geschwindigkeit einstellen

Eigentlich geht es weniger um die Geschwindigkeit, als um die Beschleunigung des Mauszeigers. Wie kann man die Geschwindigkeit des Mauszeigers per Kommandozeile einstellen? Es gibt verschiedene Wege z.B. mit xset oder xinput. Wir haben uns über den Weg mit xinput entschieden. Allgemein kann man die Eigenschaften eines Eingabegerätes wie folgt einstellen:

$ xinput --set-prop Geräte-ID Eigenschafts-ID Wert

Die Geräte-ID bekommen wir indem wir xinput ohne Parameter oder mit --list ausführen. Hier im Beispiel ist eine kabellose Maus angeschlossen.

Mauszeiger Geschwindigkeit

Als nächstes brauchen wir noch die richtige Eigenschaft-ID. Diese bekommen wir über folgenden Befehl heraus („9“ ist unsere Geräte-ID):

$ xinput --list-props 9

Maus Beschleunigung

Um die Beschleunigung der Maus einzustellen, müssen wir den Wert bei Accel Speed (Eigenschaft-ID ist 290) verändern. Es sind Werte zwischen -1 und +1 zugelassen. Um z.B. die Mausbeschleunigung zu verlangsamen, können wir das mit diesem Befehl tun:

$ xinput --set-prop 9 290 -1

Fazit

Alle diese kleinen Änderungen haben wir in ein Skript gepackt und dann per Postsync an den entsprechenden Rechner verteilt. Diese Flexibilität, die Ubuntu oder in unserem Fall linuxmuster.net bietet, ist eines der Hauptargumente, warum wir es einsetzen.

Welche netten und nützlichen Tipps für die Kommandozeile kennst du?

4 Kommentare

Der Beitrag Stumm schalten, Maus und primärer Bildschirm – Tipps für die Kommandozeile erschien zuerst auf .:zefanjas:..

Xubuntu – bester Kompromiss für Linux in der Schule?

Von: zefanja
17. November 2018 um 03:53

Auf der Suche nach einem neuen Desktop für unsere Schule möchte ich mir verschiedene Desktopumgebungen anschauen. Die Auswahl ist groß und ich habe einige sehr hilfreiche Kommentare und Vorschläge zu meinem letzten Artikel erhalten. Vielen Dank dafür.  Den Start macht heute Xubuntu. Xubuntu ist ein Derivat von Ubuntu, welches Xfce anstatt GNOME als Desktop nutzt. Auf der Website des Projekt beschreibt sich Xubuntu so:

Xubuntu ist ein elegantes und einfach zu bedienendes Betriebssystem. Es wird mit Xfce ausgeliefert, einer stabilen, leichten und konfigurierbaren Desktop-Umgebung.

Xubuntu ist perfekt für diejenigen, die das Beste aus ihren Desktops, Laptops und Netbooks mit einem modernen Look und genügend Funktionen für den effizienten, täglichen Gebrauch herausholen wollen. Es funktioniert auch auf älterer Hardware gut.

Bietet Xubuntu, was es verspricht? Ist es der beste Kompromiss aus modernem, aber ressourcenarmem Desktop? Das möchte ich mir anhand unserer Kriterien genauer anschauen.

Stabilität

Die Installation verlief ohne Probleme. Das ist heutzutage in den meisten Fällen kein Problem mehr 🙂 . Bei meinen Tests konnte ich bisher keine Stabilitätsprobleme erkennen.

Support

Im Gegensatz zu Ubuntu LTS bietet Xubuntu LTS 3 statt 5 Jahre Support. 5 Jahre sind sicher besser, aber in der Regel werden wir unser Image spätestens nach 3 Jahren updaten. Auf dem Server sind die längeren Support-Zeiträume wichtiger als auf dem Desktop.

Geringe Hardwareanforderungen

Die Hardwareanforderungen sind bei Xubuntu recht gering. Empfohlen werden 1GB Arbeitsspeicher und 20GB freier Speicher auf der Festplatte. Nach dem Start verbraucht Xubuntu ca. 500MB an Arbeitsspeicher. Sobald man aber Firefox mit ein paar Tabs startet steigt der Verbrauch schnell auf über 1GB an. Deshalb sollte man mindestens 2GB installiert haben. Ansonsten ist Xubuntu aber wesentlich genügsamer als Ubuntu mit GNOME oder Unity.

Einfache Bedienbarkeit

Dieser Punkt ist eher subjektiv, denn jeder hat sich im Laufe der Jahre an eine Desktop-Umgebung gewöhnt. Egal ob Windows, macOS, Unity, Gnome, Xfce, KDE – die Liste könnte ich noch lang weiterführen. Ich z.B. habe mich sehr an Unity gewöhnt und komme damit gut zurecht. Eine Umstellung auf GNOME oder eine andere Desktopumgebung fällt mir deshalb schwer. In einer Schule gibt es noch eine viel größere Bandbreite. Ich glaube man kann hier nicht so viel falsch machen, wenn man Linux in der Schule einsetzt. Für die meisten wird die Desktopumgebung neu sein. Es ist viel wichtiger Einführungen, Training und Workshops anzubieten, um die Kollegen an eine neue Umgebung zu gewöhnen. Generell kann man entscheiden, ob man sich eher an Windows 10 oder macOS orientiert.

Xfce hat ein Startmenü und kann mit einem Dock (z.B. Plank) erweitert werden. Dadurch sollten sich die meisten nach einiger Zeit gut zurechtfinden.

Modernes & hübsches Aussehen

Standardmäßig wirkt das Aussehen von Xubuntu eher altbacken, weder hübsch noch sonderlich modern. Über den Paketmanager kann man sich weitere Themes installieren, die dem Xfce-Desktop schöner machen. Das ist zum einen das Arc- oder Numix-Theme. Interessant fand ich auch noch das Qogir-Theme.

Xubuntu

Fazit

Xubuntu wird auf jeden Fall ein Kandidat für unseren Linux-Desktop in der Schule. Dafür sprechen v.a. die geringen Hardwareanforderungen. Sobald linuxmuster.net v7 als Beta veröffentlicht wird, werden wir Xubuntu noch den Praxistest unterziehen. Die meisten Schwierigkeiten und Stolpersteine zeigen sich bekanntlich erst, wenn man es auch tatsächlich einsetzt. Das Aussehen ist ein kleiner Dämpfer, auch wenn man es hübscher machen kann. An das neue Ubuntu-Theme in Ubuntu 18.10 kommt es m.M.n. aber nicht heran.

13 Kommentare

Der Beitrag Xubuntu – bester Kompromiss für Linux in der Schule? erschien zuerst auf .:zefanjas:..

pfSense automatisieren mit pfSsh.php

Von: zefanja
28. November 2018 um 13:29

pfSense hat seit einigen Versionen eine völlig überarbeitete Oberfläche. Damit lassen sich alle Einstellungen i.d.R. gut erreichen und einstellen. Das frei konfigurierbare Dashboard ist ebenfalls eine feine Sache. Trotz allem gibt es manchmal den Fall, dass man Einstellungen gern über eine API oder die Kommandozeile vornehmen möchte. pfSense hat aktuell keine API, diese soll erst in einer der kommenden Versionen integriert werden. Bis dahin kann man sich über die pfSense Entwickler-Shell behelfen, auch pfSsh.php genannt.

Auf pfSsh.php zugreifen

Am schnellsten kommt man in die Entwickler-Shell, wenn man sich per SSH mit pfSense verbindet oder direkt einen Bildschirm an die Firewall anschließt. Wenn SSH noch nicht aktiviert ist, kann man das in der Weboberfläche unter System → Advanced nachholen.

pfSense SSH aktivieren

Besser ist es, wenn man das Einloggen mit Passwort verbietet und nur das Anmelden mit Zertifikat erlaubt.

Ist der SSH-Zugang aktivert, kann man sich nun mit dem Admin-Benutzer anmelden (IP anpassen):

$ ssh admin@192.168.1.254

pfSense CLI

Unter Punkt 12 findet man die Entwickler-Shell, die im Grunde eine PHP-Shell ist.

Beispielbefehle für pfSsh.php

Hier einige Beispielbefehle, die zeigen sollen, wie man die Shell verwenden kann. Jede Eingabe ist normaler PHP Code und muss mit exec; abgeschlossen werden.

DHCP Einstellungen anzeigen

pfSense shell: print_r($config["dhcpd"]);
pfSense shell: exec;
Array
(
    [lan] => Array
        (
            [range] => Array
                (
                    [from] => 10.0.1.7
                    [to] => 10.0.255.245
                )

        )

)

Domain festlegen

pfSense shell: $config['system']['domain'] = 'mydomain.com';
pfSense shell: write_config();
pfSense shell: exec;

Shell – Befehle ausführen

Innerhalb der PHP Shell kann man auch normale Shell-Befehle ausführen, indem man ein „!“ davor setzt:

pfSense shell: ! cat /etc/version 
pfSense shell: exec;
2.4.3-RELEASE

Befehle „aufnehmen“ und „abspielen“

Mit pfSsh.php kann man auch mehrere Befehle „aufnehmen“ und später „abspielen“. Diese sogenannten Sessions sind für wiederkehrende Aufgaben nützlich. Ein Beispiel:

pfSense shell: record echoTest
Recording of echoTest started.
pfSense shell: echo "Das\n";
pfSense shell: echo "ist\n";
pfSense shell: echo "ein\n";
pfSense shell: ! echo "Test\n"
pfSense shell: exec;
pfSense shell: stoprecording 
Recording stopped.

Die Eingaben werden unter /etc/phpshellsessions/ gespeichert und können dort bei Bedarf verändert werden.

Die „Aufnahme“ kann man nun wie folgt wiedergeben:

pfSense shell: playback echoTest

Playback of file echoTest started.

Das
ist
ein
Test

pfSense shell:

oder auch direkt von der root-Shell mit:

$ pfSsh.php playback echoTest

Fazit

pfSsh.php ist ein nützliches Werkzeug, um pfSense mit Skripten zu automatisieren oder Anpassungen vorzunehmen. Gerade, wenn man mehrere Instanzen verwaltet oder ein bestimmtes Setup immer wieder braucht, ist pfSsh.php eine große Hilfe. Man kann z.B. alle Einstellung (sprich PHP-Code) in eine Datei packen, unter /etc/phpshellsessions/ speichern und dann ausführen oder direkt die Ausgabe an pfSsh.php weiterleiten:

$ ssh admin@192.168.1.254 '/usr/local/sbin/pfSsh.php' < MeineConfig.txt

 

2 Kommentare

Der Beitrag pfSense automatisieren mit pfSsh.php erschien zuerst auf .:zefanjas:..

Wie man sein WLAN-Netzwerk mit Freeradius absichern kann

Von: zefanja
09. Dezember 2018 um 03:35

An unserer Schule haben wir ein offenes WLAN mit einem Captive Portal sowie ein weiteres WLAN-Netz (WPA Enterprise, 802.1X), welches nur für Lehrkräfte gedacht ist. Für beide Netze nutzen wir einen RADIUS-Server für die Authentifizierung. Freeradius ist der am weitesten verbreitete OpenSource RADIUS-Server, der auch bei uns zum Einsatz kommt. In diesem Artikel wollen wir einen Freeradius-Server und Zertifikate für eine verschlüsselte Verbindung einrichten. Im Besonderen möchte ich auf die Anbindung an Linuxmuster 6.2 eingehen und die Authentifizierung mit einem LDAP-Server beschreiben.

Ein RADIUS-Server kümmert sich im Allgemeinen um 3 Dinge: Authentifizierung, Autorisierung und Accounting (oft auch als Triple-A oder AAA bezeichnet). Wir werden uns nur mit den ersten beiden „As“ beschäftigen, d.h. ob die Zugangsdaten korrekt sind und ob der Benutzer berechtigt ist, einen Zugang zu erhalten (zum WLAN z.B.).

Installation von freeradius

Die Installation führen wir auf einer aktuellen Linux-Installation (hier Ubuntu 18.04 Server) durch, z.B. in einem LXD Container oder einer virtuellen Maschine.

$ apt install freeradius freeradius-ldap freeradius-utils

Konfiguration

Grundkonfiguration

Um unseren freeradius Server zu testen, kommentieren wir folgende Zeile in /etc/freeradius/3.0/users aus oder fügen sie zu Beginn der Datei ein:

# Das Kommentarzeichen "#" vor dieser Zeile entfernen
steve Cleartext-Password := "testing"

Standardmäßig sollte in der Datei /etc/freeradius/3.0/clients.conf der localhost als Client eingerichtet sein:

client localhost {
  ipaddr = 127.0.0.1
  secret = testing123
}

Nun können wir einen ersten Test durchführen. Dazu stoppen wir den freeradius-Service und starten ihn manuell im Debug-Modus neu:

$ systemctl stop freeradius.service
$ freeradius -X
...
Ready to process request

Wichtig ist, dass am Ende „Ready to process requests“ steht.

Überprüfen der Grundkonfiguration

Als nächstes überprüfen wir, ob unser Test-Benutzer „Steve“ sich am RADIUS-Server anmelden kann (am besten in einem neuen/zweiten Terminal):

$ radtest steve testing 127.0.0.1 10 testing123

Falls alles passt, sollten wir folgende Antwort bekommen:

Sent Access-Request Id 234 from 0.0.0.0:40302 to 127.0.0.1:1812 length 75
    User-Name = "steve"
    User-Password = "testing"
    NAS-IP-Address = 10.18.10.60
    NAS-Port = 10
    Message-Authenticator = 0x00
    Cleartext-Password = "testing"
Received Access-Accept Id 234 from 127.0.0.1:1812 to 0.0.0.0:0 length 20

Wichtig ist, dass wir ein „Received Access-Accept“ bekommen. Hat diese Anfrage geklappt ist der freeradius-Server grundlegend eingerichtet und die folgenden Authentifizierungsverfahren sollten ohne weitere Probleme klappen:

  • PAP
  • CHAP
  • MS-CHAPv1
  • MS-CHAPv2
  • PEAP
  • EAP-TTLS
  • EAP-GTC
  • EAP-MD5

Diese Verfahren sind unterschiedliche Protokolle, die verschieden „sicher“ sind. Alle verwenden einen Benutzernamen und Passwort zur Authentifizierung. Die Bedeutung der (P)EAP Verfahren kann man hier nachlesen. MS-CHAPv1 und v2 sind Verfahren aus dem Hause Microsoft.

Hinweis: Die Zeile mit unserem Benutzer „Steve“ sollten wir jetzt wieder kommentieren oder löschen!

Wir werden im Folgenden das LDAP-Modul konfigurieren und neue Zertifikate für EAP-TTLS erstellen.

LDAP Anbindung einrichten

Die Konfiguration des LDAP-Servers nehmen wir in der Datei /etc/freeradius/3.0/mods-enabled/ldap vor. Falls diese Datei nicht existiert, müssen wir vorher noch einen symbolischen Link erstellen.

$ cd /etc/freeradius/3.0/mods-enabled/
$ ln -s ../mods-available/ldap ./

Ziemlich an Anfang der Datei konfigurieren wir unseren LDAP-Server:

server = "ldaps://linuxmuster.internal.example.com"
identity = "cn=admin,dc=internal,dc=example,dc=com"
password = superSecretPassword
base_dn = "ou=accounts,dc=internal,dc=example,dc=com"

...

group {
    ...
    membership_filter = "(|(member=%{control:Ldap-UserDn})(memberUid=%{%{Stripped-User-Name}:-%{User-Name}}))"
    ...
}

Es muss sichergestellt sein, dass alle nötigen Ports für die Kommunikation zwischen dem RADIUS und LDAP-Server offen sind.

Hinweis: Wenn man Freeradius 3.0 zusammen mit linuxmuster.net v6.2 verwenden möchte, müssen noch folgende Zeilen angepasst werden, damit die Authentifizierung mit Windows klappt (sign…):

update {
            control:Password-With-Header    += 'userPassword'
            control:NT-Password             := 'sambaNTPassword'
            ...
}

LDAP Verbindung testen

Nachdem der LDAP-Server in Freeradius konfiguriert ist, müssen wir ihn einmal neustarten und können anschließend testen, ob sich ein Benutzer aus dem LDAP am RADIUS-Server anmelden kann.

$ systemctl restart freeradius.service
$ radtest testuser password localhost 10 testing123
Sent Access-Request Id 213 from 0.0.0.0:46425 to 127.0.0.1:1812 length 73
    User-Name = "testuser"
    User-Password = "password"
    NAS-IP-Address = 10.18.10.60
    NAS-Port = 10
    Message-Authenticator = 0x00
    Cleartext-Password = "password"
Received Access-Accept Id 213 from 127.0.0.1:1812 to 0.0.0.0:0 length 20

Wenn wir wieder ein „Received Access-Accept“ als Antwort erhalten, klappt die Verbindung zwischen RADIUS und LDAP-Server. Falls es nicht klappt, sollten wir den RADIUS Server manuell starten und schauen, welche Fehler uns der RADIUS-Server ausgibt.

$ systemctl stop freeradius.service 
$ freeradius -X 
... 
Ready to process request

Zertifikate erstellen (für EAP-TTLS)

Standardmäßig verwendet Freeradius sogenannte Snake-Oil-Zertifkate, die natürlich nicht für den produktiven Einsatz gedacht sind. Deshalb erstellen wir in den folgenden Schritten eine neue Root-CA und ein Zertifikat für den Server. Die Zertifikate und die dazugehörigen Konfigurationsdateien befinden sich unter /etc/freeradius/3.0/certs/. Zuerst öffnen wir die Datei ca.cnf und ändern ein paar wenige Einstellungen:

...
[ CA_default ]
...
default_days        = 3650
...
default_md      = sha256
...

[ req ]
....
default_bits        = 2048
input_password      = supersecretandlongpassword
output_password     = supersecretandlongpassword
...

[certificate_authority]
countryName     = US
stateOrProvinceName = My State
localityName        = My Town
organizationName    = My School
emailAddress        = admin@my-school.org
commonName      = "CA Freeradius"
...

Ähnliche Einstellungen nehmen wir nun der Datei server.cnf vor:

...

[ CA_default ]
...
default_days        = 3560
...
default_md      = sha256
...

[ req ]
...
default_bits        = 2048
input_password      = supersecretandlongpassword
output_password     = supersecretandlongpassword

[server]
countryName     = US
stateOrProvinceName = My State
localityName        = My Town
organizationName    = My School
emailAddress        = admin@my-school.org
commonName      = "Freeradius Server Certificate"

Das Passwort muss jetzt auch in der Datei /etc/freeradius/3.0/mods-enabled/eap geändert werden:

tls-config tls-common {
    private_key_password = supersecretandlongpassword
    ...
}

Die Zertifikate erstellen wir mit einem einfachen make:

$ cd /etc/freeradius/3.0/certs/
$ make

EAP-TTLS Anmeldung testen

epol_test kompilieren

radtest unterstützt leider keinen Test für eine EAP-TTLS Authentifizierung. Dazu brauchen wir das Tool eapol_test, welches Teil des wpa_supplicant Pakets ist. Leider wird dieses Tool standardmäßig nicht von wpa_supplicant gebaut, deswegen müssen wir das selbst machen. Wir laden den Quellcode herunter, entpacken ihn und müssen noch einige Abhängigkeiten installieren.

$ wget https://w1.fi/releases/wpa_supplicant-2.7.tar.gz
$ tar -xzvf wpa_supplicant-2.7.tar.gz
$ apt install build-essential pkg-config libnl-3-dev libssl-dev libnl-genl-3-dev
$ cd wpa_supplicant-2.7
$ cp defconfig .config

Danach müssen wir die Datei .config öffnen und die Zeile #CONFIG_EAPOL_TEST=y  finden und das Kommentarzeichen entfernen.

$ nano .config
# Kommentarzeichen "#" entfernen
CONFIG_EAPOL_TEST=y

Mit dem folgenden Befehlen bauen wir nun das Programm und kopieren es noch an die richtige Stelle:

$ make eapol_test
$ cp eapol_test /usr/local/bin

Anmeldung testen

Um EAP-TTLS zu testen, brauchen wir für eapol_test eine kleine Config-Datei, die folgendermaßen aussehen kann:

$ nano eapol_test.conf
network={
        ssid="example"
        key_mgmt=WPA-EAP
        eap=TTLS
        identity="mustermann"
        anonymous_identity="anonymous"
        password="strenggeheim"
        phase2="auth=PAP"
}

Nun können wir eapol_test aufrufen:

$  eapol_test -c eapol_test.conf -a 127.0.0.1 -p 1812 -s testing123

Wenn man am Ende diese Ausgabe erhält, war alles erfolgreich:

MPPE keys OK: 1  mismatch: 0
SUCCESS

Clients einrichten (z.B. Accesspoints)

Bisher haben wir immer nur direkt auf dem RADIUS-Server getestet. Im Normalfall wird die Anfrage für die Authentifizierung aber von einem Accesspoint, Captive Portal oder einem Wireless Controller kommen. Diese müssen auf dem RADIUS-Server als Clients eingerichtet werden. Wir öffnen dazu die Datei /etc/freeradius/3.0/clients.conf und fügen am Ende alle Accesspoints etc. mit ihrer IP und einem Passwort / Secret ein:

$ nano /etc/freeradius/3.0/clients.conf
client AP1 {
    ipaddr = 10.0.0.10
    secret = supersecretsecret
}

Nun kann man auf dem Accesspoint ein WPA Enterprise (802.1X) Netzwerk einrichten und den RADIUS-Server mit seiner IP, den Port (1812) und dem eben festgelegten Passwort/Secret konfigurieren. Nun sollte man sich mit seinem mobilen Gerät im WLAN anmelden können.

Zugang auf bestimmte LDAP Gruppen beschränken

An unserer Schule haben nur Mitarbeiter und Lehrkräfte sowie die Oberstufenschüler Zugang zum WLAN an der Schule. In linuxmuster.net ist das über die Gruppe p_wifi gelöst. Alle, die in dieser Gruppe sind, sollen Zugang bekommen. Bisher ist unser RADIUS-Server aber so konfiguriert, dass jeder Benutzer im LDAP Zugang erhält. Um den Zugang einzuschränken, fügen wir noch folgende Zeilen in der Datei /etc/freeradius/3.0/users hinzu:

DEFAULT Ldap-Group == "cn=p_wifi,ou=groups,dc=internal,dc=example,dc=com"
DEFAULT Auth-Type := Reject
   Reply-Message = "Your are not allowed to access the WLAN!"

Freeradius und linuxmuster.net 6.2

Die Installation von Freeradius für linuxmuster.net 6.2 ist in der Dokumentation beschrieben. Bis auf ein paar wenige Details ist die Konfiguration sehr ähnlich. In Freeradius 2.0 sind die Standardeinstellungen für die Zertifikate nicht mehr zeitgemäß, sodass es zu Verbindungsproblemen mit einigen Clients kommen kann (z.B. mit einem aktuellen macOS). Hier sollte man unbedingt die Vorgaben von Freeradius 3.0 verwenden (siehe oben)!

Unterschiedliche Zugangsbeschränkungen nach WLAN-Netz

An unserer Schule haben wir ein Captive Portal für Gäste und Schüler, sowie ein WPA 802.1X (Enterprise) Netz für Mitarbeiter und Lehrkräfte. Während sich am Captive Portal alle anmelden können, die in der Gruppe p_wifi sind, sollen sie im WPA 802.1X Netzwerk nur Lehrkräfte und Mitarbeiter anmelden dürfen. Die Anfragen vom Captive Portal kommen von einer anderen IP (pfSense) als die für das WPA Enterprise Netzwerk. In der Datei /etc/freeradius/sites-enabled/inner-tunnel haben wir deshalb eine Abfrage eingebaut, die überprüft, von welcher IP die Anfrage kommt und entsprechend entscheidet, ob jemand Zugang bekommt oder nicht:

post-auth {
    ...
    #Only allow Teacher&Staff on WPA 802.1X Teacher and Staff network  
    if (NAS-IP-Address == 10.0.0.10) {
        if (LDAP-Group == "cn=teachers,ou=groups,dc=internal,dc=example,dc=com" || LDAP-Group == "cn=staff,ou=groups,dc=internal,dc=example,dc=com") {
            noop
        } else {
            reject
        }
    }
    ...
}

Fazit

Dieser Artikel beschreibt nur eine von vielen Möglichen Konfigurationen. Ein RADIUS-Server ist komplex, aber dank der guten Standardkonfiguration von Freeradius (v.a. in Version 3) kommt man recht schnell zum Erfolg. Lange Zeit hatten wir nur das Captive Portal im Einsatz und es hat auch gut funktioniert, doch die Benutzerfreundlichkeit und Sicherheit ist mit einem WPA 802.1X (Enterprise) Netzwerk nochmal gestiegen. Ohne den RADIUS-Server wäre das aber nicht möglich gewesen.

Nützliche Links:

2 Kommentare

Der Beitrag Wie man sein WLAN-Netzwerk mit Freeradius absichern kann erschien zuerst auf .:zefanjas:..

pfSense installieren

Von: zefanja
15. Dezember 2018 um 07:17

pfSense gehört zu den am weitesten verbreiteten Open Source Firewalllösungen. Wir setzen sie seit einigen Jahren bei uns in der Schule ein und sind sehr zufrieden damit, weil sie einfach viele Features bietet, für die man woanders viel Geld hinlegen muss. Heute möchte ich deshalb zeigen wie man pfSense installieren und grundlegend einrichten kann. Davor möchte ich kurz auf verschiedene Hardware eingehen, die für den Betrieb von pfSense geeignet ist.

Welche Hardware brauche ich?

Allgemein kann man sagen, dass man für den Betrieb von pfSense theoretisch jeden Rechner nehmen kann, der mindestens zwei Netzwerkkarten hat. Das kann z.B. ein alter Computer sein, welchen man nicht mehr braucht und mit einer zweiten Netzwerkkarte ausstattet. Aber oft ist ein alter Rechner nicht sehr stromsparend und andere Alternativen sind angebrachter. Neben dem Stromverbrauch spielt vor allem der Einsatzzweck eine entscheidende Rolle. Es macht einen Unterschied, ob ich die Firewall zu Hause mit wenigen Benutzern einsetze oder in einer Schule oder einem Unternehmen mit wesentlich mehr Zugriffen.

Für den Heimgebrauch beliebt sind die APU2C4 Board von PC Engine, aber auch Kleinstrechner von Qotom (v.a. im asiatischen Raum). Für eine Schule oder Unternehmen ist – je nach Anforderung – ein Board mit mindestens 4 Netzwerkkarten zu empfehlen. Wir verwenden z.B. eine SG-4860 von Netgate. Wenn man bei Amazon oder AliExpress nach pfSense sucht, findet man viele Angebote. Wichtig ist nur, dass die CPU AES-NI unterstützt, da dieses Feature von pfSense in zukünftigen Versionen unbedingt nötig sein wird.

Auf der Website des pfSense Projekt gibt es noch ein paar allgemeine Hinweise zu den Hardwareanforderungen:

  • Minimal → 512MB RAM, 500 Mhz CPU
  • Empfohlen → 1GB RAM, 1Ghz CPU

Auch die verfügbare Bandbreite sollte bei der Hardwareauswahl berücksichtigt werden, da ansonsten pfSense zum Flaschenhals werden könnte.

  • 10-20 Mbps → Intel oder AMD CPU mit mindestens 500MHz.
  • 21-100 Mbps → aktuelle Intel oder AMD CPU mit 1Ghz
  • 101-500 Mbps → aktuelle Intel oder AMD CPU mit mindestens 2 Ghz und einer PCI-e Netzwarkkarte
  • 501+ Mbps → Serverhardware mit Mehrkern-CPUs mit jeweils mindestens 2 Ghz, PCI-e Netzwerkkarte

pfSense Installation vorbereiten

Image herunterladen

Bevor man mit der Installation beginnt, muss man wissen, welches pfSense Image man braucht. Das hängt z.B. davon ab, ob die verwendete Hardware einen VGA/HDMI Ausgang hat oder nur einen serielle Konsole. Oder ob man per CD, USB-Stick oder direkt auf die Festplatte installieren möchte. Deshalb möchte ich hier ein paar Hinweise geben:

Architektur:

  • Netgate ADI braucht man nur, wenn man auch ein Netgate Produkt verwendet.
  • AMD64 für alles andere (Intel / AMD 64bit CPU)

Art des Image

  • USB Memstick Installer wird für die Installation mit einem USB-Stick benötigt
  • CD Image (ISO) Installer wird für die Installation mit einer CD gebraucht oder für virtuelle Maschinen

Konsole

  • seriell – wenn nur eine Serielle Schnittstelle verfügbar ist (USB oder RS-232)
  • VGA – wenn die verwendete Hardware einen VGA/DVI oder HDMI Ausgang hat.

Wenn man weiß, welches Image man braucht, kann man es von der pfSense-Website herunterladen.

pfSense Download

USB-Stick vorbereiten

Die Dokumentation von pfSense enthält viele Informationen zur Vorbereitung eines USB-Sticks. In unserem Beispiel gehen wir von einen USB Memstick VGA Installer aus. Zuerst sollte man den USB-Stick formatieren oder leeren. Das geht unter Linux sehr einfach mit

$ sudo dd if=/dev/zero of=/dev/sdz bs=1M count=1

Hinweis: Unbedingt darauf achten, welches Gerät man hinter of=/dev/ angibt. Ansonsten kann es passieren, dass man seine Hauptpartition leert und somit Daten unwiederbringlich verloren sind! Um den Gerätenamen herauszufinden, steckt man am besten den USB-Stick an und führt danach dmesg in einem Terminal aus. Dann sieht man, welches Gerätenamen der USB-Stick bekommen hat (oft ist es /dev/sdb).

Anleitungen zum Leeren eines USB-Sticks unter Windows oder macOS finden sich in der oben verlinkten Dokumentation.

Nun kann man als nächstes das heruntergeladene Image auf den USB-Stick schreiben.

$ gzip -dc pfSense-memstick-2.4.4-RELEASE-amd64.img.gz | sudo dd of=/dev/sdz bs=1M
$ sync

Der USB-Stick ist nun fertig vorbereitet. Als nächstes bootet man von diesem USB-Stick und kann die Installation beginnen. Je nach BIOS wird der Stick als USB-Gerät oder weitere Festplatte erkannt. Die Bootreihenfolge muss oft geändert werden, damit nicht von der 1. Festplatte gebootet wird. Die Dokumentation liefert auch einige Ideen, falls das Booten nicht klappen sollte.

pfSense installieren

Nach dem erfolgreichen Booten erscheint der Willkommensbildschirm von pfSense.

pfsense welcome

Hier wählt man „Install„. Im nächsten Dialog kann man das Keyboard Layout festlegen. Für die Partitionierung nimmt man am besten „Auto (UFS)“ und bestätigt wieder mit Enter.

pfSense partitioning

Danach startet die automatische Installation. Ist die Installation beendet, wird man noch gefragt, ob man eine Shell öffnen möchte (kann man verneinen). Zum Schluss muss man das System neu starten („Reboot„). Beim anschließenden Start sollte man unbedingt darauf achten, dass nicht wieder vom USB-Stick gebootet wird, sondern von der Festplatte!

pfsense complete

 

Netzwerk-Schnittstellen einrichten

Netzwerkkarten zuweisen

Während des Neustarts versucht pfSense automatisch die WAN Schnittstelle zu konfigurieren. Die WAN Schnittstelle ist die Netzwerkkarte, die mit dem Router des Internetanbieters oder ganz allgemein mit dem Internet verbunden ist. Falls die automatische Konfiguration erfolgreich ist, erscheint das pfSense Konsolenmenü, ansonsten wird man mit einem Dialog begrüßt.

pfSense menu

Um die WAN und LAN Schnittstellen zu ändern, wählt man Nr. 1 „Assign Interfaces„. Nun muss man einige Fragen beantworten:

  • Should VLANs be set up now? → n (Nein)
  • Enter the WAN interface name or „a“ for auto-detection → hier muss man den Namen der WAN Netzwerkkarte eingeben. Die MAC-Adressen werden zu Beginn des Dialog angezeigt. In unserem Bsp. heißt sie em0
  • Enter the LAN interface name or „a“ for auto-detection → hier muss man den Namen der LAN Netzwerkkarte eingeben. In unserem Bsp. heißt sie em1
  • Do you want to proceed → y (Ja). Vorher wird noch eine kurze Zusammenfassung der Zuordnung angezeigt.

pfsense assign interfaces

IP-Adressen festlegen

Falls an der WAN-Schnittstelle ein DHCP-Server läuft, sollte sie automatisch eine IP-Adresse bekommen haben. Falls nicht muss man sowohl für die WAN als auch die LAN Schnittstelle eine IP Adresse konfigurieren. Beispielhaft werde ich es hier für die LAN Schnittstelle zeigen. Dazu wählt man Nr. 2 „Set interface(s) IP address“ aus.

  • Enter the number of the interface you wish to configure → 2 für die LAN Schnittstelle
  • Enter the new LAN IPv4 address→ z.B. 10.10.10.1 oder 10.10.10.1/24
  • Wenn man im vorherigen Schritt keine Netzwerkmaske angegeben hat, muss man es jetzt tun: Enter the new LAN IPv4 subnet bit count (1 t0 31). → 24 (entspricht 255.255.255.0, d.h. 254 IP Adressen).
  • In der nächsten Frage muss ein Gateway festgelegt werden. Bei einer LAN Schnittstelle ist das nicht nötig, nur bei einer WAN Schnittstelle. → einfach ENTER (für None) drücken
  • Enter the new LAN IPv6 address. Press <ENTER> for none → ENTER (für keine)
  • Do you want to enable the DHCP server on LAN? → y (Ja), außer es gibt bereits einen DHCP-Server im LAN-Netz.
  • Enter the start address of the IPv4 client address range → 10.10.10.10 (erste IP Adresse, die ein Client im LAN Netz bekommen kann)
  • Enter the end address of the IPv4 client address range → 10.10.10.200 (letzte IP Adresse, die ein Client im LAN Netz bekommen kann)
  • Do you want to revert to HTTP as the webConfigurator protocol? → n (nein, soll HTTPS bleiben)

pfsense LAN ip address

Weitere Einstellungen in der Weboberfläche

Mit einem Rechner, der ebenfalls LAN Netz ist, kann man unter https://10.10.10.1 auf Weboberfläche von pfSense zugreifen, um einige wenige Grundeinstellungen vorzunehmen. Beim ersten Mal erscheint eine Zertifikatswarnung. Da es sich um ein selbst signiertes Zertifikat für die HTTPS-Verbindung handelt, muss man es noch akzeptieren. Die Standardzugangsdaten sind admin mit dem Passwort pfsense.

pfsense login

Nachdem Login wird man von einem Assistenten begrüßt. Im zweiten Schritt kann man der Firewall einen Hostname vergeben und die Domain eintragen. Weiterhin wichtig ist der primäre und Sekundäre DNS Server und ob der DNS-Server per DHCP an der WAN-Schnittstelle überschrieben werden darf (um z.B. den DNS des Internetproviders zu verwenden).

pfSense dns setup

In den nächsten Schritten stellt man die Zeitzone ein, überprüft noch einmal die Konfiguration der WAN und LAN Schnittstelle und sollte in Schritt 6 auf jeden Fall ein neues Admin-Passwort vergeben. Damit ist das Setup abgeschlossen.

Fazit

Die Installation von pfSense geht meist leicht von der Hand. Schwierigkeiten gibt es manchmal bei der Auswahl des richtigen Images für die Installation bzw. dem Booten vom USB-Stick oder der Einrichtung der seriellen Verbindung. Die Dokumentation von pfSense geht aber auf viele dieser Probleme ein und bietet Lösungsvorschläge an. Nach der anfänglichen Konfiguration ist die Firewall einsatzbereit. Allerdings kann man die Firewall noch stark erweitern und anpassen. Das soll Thema zukünftiger Artikel sein.

1 Kommentar

Der Beitrag pfSense installieren erschien zuerst auf .:zefanjas:..

Auto-Type in KeeWeb konfigurieren

Von: zefanja
22. Dezember 2018 um 00:15

KeeWeb ist ein Passwortmanager, der kompatibel zu KeePass ist und für sehr viele Plattformen verfügbar ist. Ich verwende ihn privat als auch beruflich seit einigen Jahren. Heute möchte ich ein geniales Feature vorstellen, das ich erst vor kurzem entdeckt habe: Auto-Type. Mit Auto-Type kann man automatisch seine Login-Daten eintragen lassen, egal ob es eine Website oder eine Desktopanwendung ist. Das Schöne ist, dass man kaum etwas tun muss, um Auto-Type in KeeWeb zu konfigurieren.

Wie funktioniert Auto-Type?

Animationen sagen mehr als 1000 Worte, deshalb hier ein kleines GIF, das die Funktionsweise von Auto-Type zeigt (im Bild Check_MK):

keeweb auto type

Wie der Name sagt, füllt KeeWeb automatisch die Eingabefelder aus und meldet einen an. KeeWeb muss dazu (im Hintergrund) geöffnet sein.

Auto-Type in KeeWeb konfigurieren

Auto-Type ist standardmäßig ab Version 1.2 für alle Einträge aktiviert. Die Einstellung dazu findet man unter mehr → Auto-Type Einstellungen.

KeeWeb Einstellungen

Es erscheint ein Eingabefeld in das man nun verschiedenen Platzhalter oder Befehle eingeben kann. Für alle Einträge lautet der Standardeintrag:

{USERNAME}{TAB}{PASSWORD}{ENTER}

Es wird also zuerst der Benutzername automatisch ausgefüllt, dann mit TAB in das Passwortfeld gewechselt und das Passwort eingegeben. Am Ende bestätigt Auto-Type mit Enter den Anmelde-Button.

Für die meisten Websites oder Anwendungen funktioniert diese Einstellung ganz gut. Allerdings gibt es auch Seiten (z.B. GMail), die erst den Benutzernamen überprüfen, bevor sie das Passwortfeld anzeigen. Hier kann man mit {DELAY X} eine Verzögerung einbauen. Statt X muss man einen Wert in Millisekunden angeben, z.B.

{USERNAME}{ENTER}{DELAY 3000}{PASSWORD}{ENTER}

Auto-Type kennt viele Befehle und Platzhalter. Eine Übersicht findet man hier.

Auto-Type verwenden

Damit Auto-Type funktioniert, muss man unter Linux erst noch ein Paket installieren:

$ sudo apt install xdotool

Danach kann man mit UMSCHALT+ALT+T Auto-Type aktivieren (KeeWeb muss (im Hintergrund) geöffnet sein). Falls KeeWeb nur einen passenden Eintrag findet (z.B. anhand des Fenstertitels oder der URL) füllt KeeWeb die Felder automatisch aus. Wenn keine Überstimmung mit einem Eintrag festgestellt wurde, erscheint ein weiteres Fenster. Dort kann man dann manuell den passenden Benutzernamen / Passwort auswählen.

Fazit

KeeWeb schätze ich v.a. aufgrund seiner Verfügbarkeit auf sehr vielen Plattformen als auch die vielen Möglichkeiten der Synchronisation der Passwortdatenbank. Egal ob Nextcloud, Google Drive oder Dropbox – mit KeeWeb hat man seine Passwörter überall zur Hand (auch im Team).

Kommentar hinzufügen

Der Beitrag Auto-Type in KeeWeb konfigurieren erschien zuerst auf .:zefanjas:..

WLAN Access Point mit pfSense verbinden

Von: zefanja
15. Januar 2019 um 13:36

pfSense ist eine Open Source Firewalllösung, die man gut zu Hause, in der Schule oder in einem Unternehmen einsetzen kann (siehe Installation + Hardwareempfehlungen). In den meisten Fällen möchte man Clients nicht ausschließlich per Netzwerkkabel verbinden, sondern auch kabellos. Am einfachsten geht es, wenn man dazu einen WLAN Access Point an die Firewall mit anschließt, die sich um die kabellosen Geräte kümmert (z.B. Smartphones).

Aufbau des Setups

Ein Bild sagt bekanntlich mehr als 1000 Worte:

pfSense AP Setup

 

Die LAN-Schnittstelle von pfSense verbindet man mit einem Switch, an dem man dann den Access Point und weitere kabelgebundene Clients anschließen kann.

Access Point einrichten

Nachdem der Access Point angeschlossen ist (in unserem Beispiel ein Access Point von tp-link), muss er noch eingerichtet werden. Jeder Access Point bringt meistens auch ein Webinterface mit, über dass man Einstellungen vornehmen kann. Die IP-Adresse des Access Point findet man in pfSense unter Status → DHCP-Leases heraus.

pfsense dhcp leases

Nun kann man auf das Webinterface des Access Point zugreifen.

accesspoint login

Nach dem Login (bei tp-link ist der Standardbenutzername und das Passwort admin) richtet man unter Quick Setup alle wichtigen Einstellungen ein:

  • Change the login accountJa (neuer Benutzername und Passwort festlegen)
  • Please select the proper operation mode according to your needsAccess Point
  • Access AP Mode Settings
    • Wireless Network Name(SSID)Name des WLAN-Netzes
    • ChannelAuto
    • Wireless Security ModeWPA2-PSK
    • Wireless PasswordWLAN Passwort
  • Type Static IP
  • IP Address → eine IP Adresse aus dem LAN auswählen, z.B. 10.10.10.253
  • DHCP ServerDisable (Da pfSense sich um die IP-Adressen kümmert).

access point dhcp

Fazit

Es gibt zwar auch Mini-Computer und -router für pfSense, die einen WLAN-Chip mitbringen, doch kann man davon nur sehr wenige im Access Point-Modus betreiben. Meistens unterstützen sie nur den Client-Mode, d.h. man kann sich damit mit einem WLAN-Netz verbinden, aber selbst keines aufspannen. PfSense unterstützt nur wenige Karten im Access Point-Modus. Eine Übersicht findet man hier. Schlussendlich ist es IMHO deutlich einfacher einen Access Point mit pfSense zu verbinden statt den richtigen WLAN Chip zu finden.

 

Kommentar hinzufügen

Der Beitrag WLAN Access Point mit pfSense verbinden erschien zuerst auf .:zefanjas:..

Netzwerkbrücke für LXD Container einrichten

Von: zefanja
07. Februar 2019 um 14:05

Die meisten unserer Webanwendungen laufen in LXD Containern. Nicht ohne Grund ist LXD für mich eines der wichtigsten Features von Ubuntu Server. Es gibt viele Wege um von außen auf eine Webanwendung in einem LXD Container zuzugreifen. So kann man z.B. einen Reverse Proxy nehmen und darüber die Zugriff auf die Container regeln (hier hatte ich schon mal davon berichtet). Eine andere Möglichkeit ist die Einrichtung einer Netzwerkbrücke, sodass sich die Container im gleichen Netz wie der Containerhost (Ubuntu Server) befinden. In diesem Artikel möchte ich kurz beschreiben, wie man eine Netzwerkbrücke für LXD Container einrichtet.

Netzwerkbrücke für LXD Container

Um eine Netzwerkbrücke unter Ubuntu einzurichten, muss man die bridge-utils installieren:

$ apt install bridge-utils

Danach kann man die Netzwerkbrücke einrichten.

bis Ubuntu 16.04

Bis Ubuntu 16.04 nutzt Ubuntu ifupdown um Einstellungen für die Netzwerkverbindungen festzulegen. Die Konfiguration nimmt man in den Dateien unter /etc/network/ vor. Eine einfache Netzwerkbrücke, um die Container in das Host-Netzwerk zu bekommen, könnte so aussehen:

$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The main Bridge
auto br0
iface br0 inet dhcp
    bridge-ifaces enp4s0
    bridge-ports enp4s0
    up ip link set enp4s0 up

# The primary network interface
iface enp4s0 inet manual

Hier bekommt die Brücke ihre Adresse vom DHCP-Server mitgeteilt. Die reale Netzwerkkarte enp4s0 wird in den manuellen Modus gesetzt und der Brücke zugewiesen.

ab Ubuntu 18.04

Ab Ubuntu 18.04 wird Netplan für die Konfiguration der Netzwerkverbindungen verwendet. Die Konfigurationsdateien befinden sich unter /etc/netplan/. Eine Definition für die Brücke könnte folgendermaßen aussehen:

$ cat /etc/netplan/50-cloud-init.yaml 
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        enp3s0:
            dhcp4: no
    version: 2
    bridges:
        br0:
            dhcp4: no
            addresses:
            - 10.10.10.5/24
            gateway4: 10.10.10.254
            nameservers:
                addresses:
                - 10.10.10.254
            interfaces:
            - enp3s0

Im oberen Teil konfiguriert man die reale Netzwerkkarte (enp3s0) und weißt ihr keine Adresse zu. Danach folgt die Definition der Netzwerkbrücke. Sie wird wie eine statische Netzwerkverbindung eingerichtet und enthält zusätzlich den Punkt interfaces. Dort legt man fest, welche reale Netzwerkkarte „überbrückt“ werden soll. Weitere (komplexere) Beispiele zu Netzwerkbrücken gibt es auf der offiziellen Website.

Nun werden mit dem folgenden Befehl die Änderungen an den Netzwerkeinstellungen angewendet:

$ netplan apply  --debug

Netzwerkbrücke zuweisen

Hat man die Netzwerkbrücke fertig eingerichtet und bekommt sie auch die richtige IP-Adresse, muss man dem LXD Container noch mitteilen, dass er seine IP-Adresse über die Netzwerkbrücke beziehen soll. Das erledigt man mit folgendem Befehl:

$ lxc config device add containername eth0 nic nictype=bridged parent=br0 name=eth0

Mit name=eth0 legt man fest, unter welchen Namen man die Netzwerkkarte im Container findet. Nun kann man im Container eth0 nach Belieben konfigurieren. Ab sofort sollte der Container eine IP-Adresse aus dem Host-Netzwerk bekommen.

Fazit

Eine einfache Netzwerkbrücke lässt sich schnell einrichten und man kann sie ohne Probleme einem Container zuweisen. Andere Benutzer im Netzwerk können so ohne die Einrichtungen eines Reverse-Proxys auf eine Webanwendung zugreifen. Auch komplexere Szenarien sind denkbar (VLANs, mehrere Brücken, um die Container in verschiedene Netz zu bekommen etc.), doch das würde den Rahmen dieses kurzen Artikels sprengen.

3 Kommentare

Der Beitrag Netzwerkbrücke für LXD Container einrichten erschien zuerst auf .:zefanjas:..

Wie wichtig ist Hochverfügbarkeit in einem Schulnetzwerk?

Von: zefanja
05. März 2019 um 13:35

Schulnetzwerke werden mit wachsenden Anforderungen komplexer. Ein Schulserver, schulweites WLAN, Einsatz von Tablets und Laptops im Unterricht, eine Schulcloud, einheitliche Logins für alle Dienste – die Anforderungen an einen Netzwerkbetreuer oder Dienstleister in der Schule sind vielfältig. Wenn alles funktioniert, ist meist auch alles gut. Aber was ist, wenn der Server, die Firewall oder ein Switch ausfällt? Die Konsequenzen können sehr unterschiedlich sein. Wie schnell kann der Normalbetrieb wiederhergestellt werden? Wie wichtig ist Hochverfügbarkeit in einem Schulnetzwerk?

Hochverfügbarkeit

Laut Wikipedia definiert sich Hochverfügbarkeit folgendermaßen

Hochverfügbarkeit (englisch high availability, HA) bezeichnet die Fähigkeit eines Systems, trotz Ausfalls einer seiner Komponenten mit einer hohen Wahrscheinlichkeit (oft 99,99 % oder besser) den Betrieb zu gewährleisten.

Es geht also darum, dass ein System („das Schulnetzwerk“) einsatzfähig bleibt, auch wenn eine oder mehrere Komponenten einmal ausfallen sollten. Dabei kann es durchaus zu Unterbrechungen kommen. Je nachdem wie lang so eine Unterbrechung ist, teilt man die Hochverfügbarkeit in verschiedene Klassen ein. Ein Schulnetzwerk muss vor allem an Schultagen einsatzfähig sein (ca. 180-200 Tage pro Jahr). Auch wenn eine 99,999% Verfügbarkeit in den wenigsten Schulen absolut notwendig ist, ist der reibungslose Betrieb für den Unterrichtsalltag sehr wichtig.

Single Point of Failures

Um Hochverfügbarkeit herzustellen, müssen sogenannte „Single Point of Failures“ reduziert werden. Es handelt sich dabei um Komponenten bei deren Ausfall das ganze Schulnetzwerk still stehen würde. Was können solche „Single Point of Failures“ sein?

  • Firewall → fällt sie aus, gibt es kein Zugang mehr zum Internet, je nach Konfiguration funktioniert auch das interne Netz nicht mehr
  • Switche (v.a. Hauptswitch) → siehe Firewall, Komplettausfall
  • Server → fällt er aus, sind viele Anwendungen nicht mehr zu erreichen, d.h. keine Anmeldung mehr im internen Logins, Webanwendungen, Schulcloud, …
  • Internetanschlüsse → fällt der einzige Zugang aus, ist man offline.

Kurze Geschichte am Rande:

Letzte Woche ist unsere Firewall ausgefallen (aufgrund des Atom C2000 Bugs). Das Netzwerk lag still, wir waren offline. Ein erster Versuch die Firewall zu virtualisieren scheiterte, sodass wir auf einen kleinen Minicomputer mit 2 Netzwerkkarten ausgewichen sind. Es waren ein paar zusätzliche Konfigurationen an unserem Hauptswitch nötig um alle WANs und VLANs auf zwei Netzwerkkarten aufzuteilen. Nach einigen Stunden lief das Netzwerk dann wieder (wir konnten das Backup der Konfiguration mit wenig Änderungen problemlos wiederherstellen).

Wie kann man die Ausfallsicherheit erhöhen?

Es gibt mehrere Möglichkeiten, wie man die Ausfallsicherheit erhöhen und das System „Schulnetzwerk“ besser gegen Ausfälle schützen kann. Allgemein geht es darum, dass man möglichst wenige (am besten keine) „Single Point of Failures“ hat und kritische Komponenten bei einem Ausfall fehlertolerant sind. Wie bereits oben erwähnt, hängen die Anforderungen an ein hochverfügbares Schulnetzwerk sehr von den Gegebenheiten und Wünschen des Schulträgers ab. Zum einen ist es eine Frage des Geldbeutels, zum anderen muss auch nicht jedes Netzwerk innerhalb weniger Minuten wieder verfügbar sein.

Hier einige Ideen, wie man die Ausfallsicherheit erhöhen kann:

  • qualitative Hardware → gute Hardware kostet zwar mehr, aber sie läuft oft stabiler
  • Backups, Backups → Konfigurationen, Daten, Virtuelle Maschinen, Container – an Backups führt kein Weg dran vorbei (Backups unbedingt auch testen!)
  • Monitoring → ein gutes Monitoring kann in manchen Fälle Fehler früh erkennen bzw. gibt einen Überblick, wo es im Netzwerk gerade Probleme gibt. So kann man schneller reagieren und ist nicht auf die Hinweise der Benutzer im Netzwerk angewiesen („Das Internet geht nicht mehr“, „Der Drucker ist kaputt“, …)
  • Fehlertoleranz erhöhen → auch „Failover“ genannt, d.h. zwei Netzteile im Server, mehrere Internetanschlüsse („Multi-WAN), zwei Firewalls, RAID, zwei Server, …
  • Ersatzteile vorhalten → Festplatten, Ersatzswitch, …
  • UPS/USW → Hardware bei Stromschwankungen schützen und Weiterbetrieb auch bei einem Stromausfall gewährleisten (für begrenzte Zeit)
  • „personelle Redundanz“ → besser zwei oder mehrere Administratoren bzw. Dienstleister (bei Abwesenheit durch Krankheit, Urlaub, …)
  • vorbeugende Wartungen

Fazit

Ein Schulnetzwerk ist sicher kein hochkritisches System, aber mit der fortschreitenden Digitalisierung der Schulen wird es immer wichtiger, dass die IT-Infrastruktur möglichst ohne Ausfälle erreichbar bleibt. An manchen Schulen wiegt ein Ausfall des Internets so schwer, dass kaum weiter gearbeitet werden kann (Onlinesysteme zur Verwaltung, Schulclouds, Online-Lernsysteme, Student Information Systems). Um die Ausfallsicherheit zu erhöhen, muss man nicht immer viel Geld in die Hand nehmen. Viel wichtiger ist, dass man auf einen Ausfall vorbereitet ist (v.a. bei den Single Point of Failures).

3 Kommentare

Der Beitrag Wie wichtig ist Hochverfügbarkeit in einem Schulnetzwerk? erschien zuerst auf .:zefanjas:..

Wie man ein mobiles Feinstaubmessgerät bauen kann

Von: zefanja
09. März 2019 um 09:45

Vor ca. einem Jahr habe ich beschrieben, wie man mit einem Raspberry Pi und einem Feinstaubsensor die Luftqualität messen kann. Das Setup setzen wir so seit einigen Jahren bei uns in der Schule bzw. auch privat ein. Einen Nachteil hat dieses Projekt allerdings: es ist nicht mobil, sondern abhängig von einem WLAN-Netz bzw. einer Netzwerkverbindung. Wenn der Raspberry Pi und das Smartphone / ein Rechner nicht im gleichen Netz sind, kann man nicht auf die Messdaten zugreifen. Deshalb haben wir vor einiger Zeit den Raspberry Pi um einen kleinen Bildschirm ergänzt, sodass man die Werte direkt am Gerät ablesen kann. Wie man diesen Bildschirm für unser mobiles Feinstaubmessgerät einrichtet und welche zusätzlichen Konfigurationen notwendig sind, möchte ich in diesem Artikel kurz vorstellen.

Bildschirm für den Raspberry Pi einrichten

Auf Amazon oder AliExpress gibt es verschiedene Displays für den Raspberry Pi. Diese reichen von ePaper-Screens bis hin zu LCDs mit Touchfunktion. Wir haben uns für einen 3,5″ LCD mit Touch entschieden, welcher eine Auflösung von 320×480 Pixel hat (Modell MPI3501). Man kann diesen Bildschirm einfach auf die GPIO Pins stecken. Dazu kostet er gerade mal 10-15€. Schön ist auch, dass er mit 3,5″ genauso groß wie ein Raspberry Pi ist.

Wenn man den Bildschirm aufsteckt und den Raspberry Pi startet, bleibt der Bildschirm weiß. Man muss zuerst noch die passenden Treiber für das Display installieren. Dazu meldet man sich per SSH an und führt folgende Befehle aus:

$ rm -rf LCD-show
$ git clone https://github.com/goodtft/LCD-show.git
$ chmod -R 755 LCD-show
$ cd LCD-show/

Je nach Bildschirmmodell muss man nun den passenden Befehl ausführen um die Treiber zu installieren. In unserem Fall (für das Modell MPI3501):

$ sudo ./LCD35-show

Dieser Befehl installiert die entsprechenden Treiber und startet den Raspberry Pi anschließend neu.

Pixel-Desktop installieren und Autostart einrichten

Damit wir die Website mit den Messwerten direkt beim Start auf dem Bildschirm angezeigt bekommen sind noch einige Schritte notwendig. Zuerst muss man die Pixel-Desktopumgebung installieren (falls man bisher Raspian Lite verwendet hat) mit

$ sudo apt install raspberrypi-ui-mods

Dann fehlt noch der Chromium-Browser, um die Website anzuzeigen:

$ sudo apt install chromium-browser

Standardmäßig ist der Autologin für das Benutzer „pi“ nicht eingerichtet. Dies ist aber notwendig, damit die Messwerte direkt nach dem Start angezeigt werden können, ansonsten begrüßt einen nur der Anmeldebildschirm. Den Autologin kann man über das raspi-config Programm einrichten:

sudo raspi-config

Im Menü wählt man dann 3 Boot OptionsB1 Desktop / CLI B4 Desktop Autologin.

Zu guter Letzt fehlt noch die Einrichtung des Autostarts, damit Chromium nach dem Booten automatisch mit der AQI-Seite gestartet wird. Dazu legt man den Ordner /home/pi/.config/lxsession/LXDE-pi/ an:

$  mkdir -p /home/pi/config/lxsession/LXDE-pi/

Anschließend erstellt man in diesem Ordner die Datei autostart

$ nano /home/pi/.config/lxsession/LXDE-pi/autostart

und fügt diesen Inhalt ein:

#@unclutter
@xset s off
@xset -dpms
@xset s noblank

# Chromium im Vollbild beim Start öffnen
@chromium-browser --incognito --kiosk http://localhost

Möchte man noch den Mauszeiger ausblenden, muss man noch das Paket unclutter installieren und am Anfang der autostart das Kommentarzeichen entfernen:

$ sudo apt install unclutter

mobiler Feinstaubsensor

Da ich im letzten Jahr ein paar kleine Änderungen am Code vorgenommen habe, empfiehlt es sich das Skript und die Dateien der AQI-Website neu herunterzuladen (wie das geht, steht im Originalartikel).

Fazit

Durch das Display hat man nun ein mobiles Feinstaubmessgerät. Wir setzen sie an unserer Schule ein um z.B. die Qualität der Luft in den Klassenzimmern zu überprüfen oder um Vergleichsmessungen durchzuführen. Mit diesem Setup ist man nicht mehr auf eine Netzwerkverbindung oder WLAN angewiesen, sondern kann die kleine Messstation überall einsetzen – mit einer Powerbank sogar noch unabhängig vom Stromnetz.

2 Kommentare

Der Beitrag Wie man ein mobiles Feinstaubmessgerät bauen kann erschien zuerst auf .:zefanjas:..

❌
❌