Lese-Ansicht

Es gibt neue verfügbare Artikel. Klicken Sie, um die Seite zu aktualisieren.

Facebook Fanpage How To

Facebook ist ja bekanntlich in aller Munde und die Zahl der Fanpages steigt ständig. Unter einer Fanpage versteht man die Alternative zu einer Gruppe. Die Fanpage bietet mehr bzw. andere Möglichkeiten einen Club, eine Band oder sich selbst zu promoten.

Voraussetzung für eine Fanpage ist, dass man einen eigene Facebookaccount hat. Des Weiteren sollte man ein offizieller Vertreter der Band, des Vereins, usw. sein, für den die Seite erstellt wird.

Um nun so eine Seite zu erstellen, navigiert ihr zuerst auf folgende Seite.

http://www.facebook.com/pages/create.php

Hier habt ihr nun die Möglichkeit zwischen drei Kategorien zu wählen. Sobald ihr eine Kategorie gewählt hab, erscheinen Unterkategorien, wobei am besten die gewählt werden sollte, die dem Thema am ehsten entspricht.

Ferner müsst ihr nun noch einen Namen für eure Seite festlegen. Dieser wird später Teil der Adresse unter der die Fanpage auf Facebook zu erreichen ist.

z.B. /pages/Ort-Land/Name

Sobald ihr alle Einstellungen getätigt habt und den Hacken bei den Facebook-Bedingungen gesetzt habt. Könnt ihr auf "Offizielle Seite erstellen" klicken und die Seite wird erstellt. Sie befindet sich aber fürs Erste im Wartungsmodus, damit man das Aussehen und den Inhalt anpassen kann, bevor man sie freischaltet.

 

Nun noch kurz zu etwas zu den Unterschieden zwischen einer Gruppe und einer Fanpage

Gruppe

  • Unter 5000 Mitgliedern kann man die Nutzer direkt anschreiben, sogenannte Massenmails
  • Es gibt oft noch Probleme Applikationen zur Gruppe hinzuzufügen
  • Googleindexierung

 

Fanpage

  • Gezielte Informationen über Updates
  • Nutzungsstatistiken
  • Widgets für Werbung
  • Googleindexierung
  • Feedintegration
  • Volle Applikationsunterstützung, wie z.B. eigene Tabs erstellen
  • "Gefällt mir"-Button

Ob man nun eine Gruppe oder Fanpage gründet, ist somit jedem selbst überlassen

pfBlockerNG – Werbung und unerwünschte Inhalte filtern

Von: zefanja

Besucht man heute eine durchschnittliche Website, so werden unzählige Skripte und Tracker nachgeladen. Dadurch können die Webseitenbetreiber, Google, Facebook, usw. Daten über mich sammeln und meinen Streifzug durch die Weiten des Internets verfolgen. Zum Glück muss man sich diesem Treiben nicht ergeben und es gibt viele sinnvolle Erweiterungen z.B. für den Browser (uBlock Origin, uMatrix, etc.). Diese Lösungen haben den Nachteil, dass ich sie auf jedem Gerät und für jeden Browser einzeln installieren muss. Deshalb möchte ich heute vorstellen, wie man Werbung und unerwünschte Inhalte mit pfSense und pfBlockerNG netzwerkweit filtern kann. Das ist z.B. sinnvoll in einem Heim- oder Schulnetzwerk.

pfBlockerNG installieren

Zuerst loggen wir uns in pfSense ein und öffnen den Package Manager. Dort wählen wir pfBlockerNG-devel unter „Available Packages“ aus:

pfBlockerNG installieren

Mit „Install“ können wir das Paket installieren. PfSense lädt nun das pfBlockerNG Paket herunter und fügt es der Firewall hinzu.

pfblockerng installation fertig

pfBlockerNG Ersteinrichtung

Als nächsten werden wir pfBlockerNG konfigurieren. Dazu gehen wir zu Firewall  → pfBlockerNG.

pfblockerNG Menü

Es begrüßt und ein Assistent, der uns bei der Einrichtung von pfBlockerNG helfen wird. Mit „Next“ geht es weiter.

pfBlockerNG Assistent Seite 1

Auf der nächsten Seite wird erklärt, welche Dinge nun eingerichtet werden:

  • Es wird ein Standard-Setup für Anfänger mit pfBlockerNG eingerichtet.
  • Falls man vorher schon einmal pfBlockerNG installiert hatte, werden alle Einstellungen gelöscht.
  • Zwei Komponenten werden installiert:
    • IP: Firewall-Regeln für die WAN-Schnittstelle, um die schlimmsten bekannten Angreifer zu sperren.
    • DNSBL: Werbung und andere bekannte bösartige Domains werden geblockt.

Mit „Next“ geht es wieder weiter.

pfBlockernNG Assistent Seite 2

Im nächsten Schritt müssen wir die eingehende Schnittstelle (WAN) und ausgehende Schnittstelle (LAN) auswählen. Wenn man mehrere interne Schnittstellen hat, kann man alle diejenigen auswählen für die man pfBlockerNG einrichten will. Möchte man z.B. das Gäste-WLAN filtern, aber nicht das WLAN für die Lehrkräfte, kann man hier die entsprechenden Schnittstellen aus bzw. abwählen.

pfBlockerNG Schnittstellen

Als nächstes müssen wir eine sogenannte VIP-Adresse festlegen. Auf dieser läuft der Webserver von pfBlockerNG und sollte unter keinen Umständen eine IP aus einem verwendeten Netzwerk sein! Wenn das LAN-Netz z.B. 192.168.1.1/24 ist, sollte die VIP-Adresse nicht in diesem Bereich liegen. Hier in unserem Beispiel lassen wir die Adresse bei 10.10.10.1. Die Ports muss man i.d.R. nicht ändern.

pfBlockerNG VIP Adresse

Das Setup ist nun fertig und wir können den Assistenten mit einem Klick auf „Finish“ beenden.

pfBlockerNG Setup Ende

Danach öffnet sich die pfBlockerNG Updateseite und es werden automatisch alle aktivierten Blocklisten heruntergeladen und aktiviert.

pfBlockerNG einrichten

Wir haben nun ein fertig eingerichtetes pfBlockerNG Setup, dass unerwünschte Werbung und bösartige Domains und Webseiten blockiert. pfBlockerNG ist aber ein sehr mächtiges & flexibles Werkzeug. Deshalb möchte ich gern ein paar Einstellungen hervorheben.

Wichtig: Damit geänderte Einstellungen auch wirksam werden (egal, ob DNSBL oder IP), müssen wir unter Update → Reload → All → Run ausführen, damit die (geänderten) Listen heruntergeladen und aktiviert werden.
pfblockerng update

IP

Im IP Reiter, empfehle ich folgende Einstellungen:

  • Floating Rules → Enable. Wenn man nur eine interne Schnittstelle hat, kann man es auch deaktiviert lassen. Bei vielen Schnittstellen (z.B. in einem Schulnetzwerk), macht es Sinn, diesen Punkt zu aktivieren, damit die Firewallregeln übersichtlicher bleiben.
  • Kill States → Enable. Wenn pfBlockerNG die Blocklisten aktualisiert, werden alle aktiven Verbindungen zu IPs in den Listen zurückgesetzt.pfblockerNG IP Einstellungen

GeoIP Blocking

Möchte man Zugriffe aus bestimmten Regionen der Erde verbieten, muss man sich zuallererst einen kostenloses Konto bei MaxMind erstellen. Daraufhin erhält man einen Lizenzschlüssel, den man unter IP → MaxMind GeoIP Configuration eintragen. Danach muss man einmal unter Update → Reload → IP die GeoIP Datenbanken herunterladen.

pfblocker geoip

Nun können wir unter IP → GeoIP die gewünschten Kontinente oder Top-Spammer auswählen. Dazu klicken wir auf den kleinen Stift rechts und wählen dann in der Liste alle Einträge aus. Unten wählen wir noch „Deny Both“ (List Action). Top Spammer

Hinweis zu „Deny Inbound“ und „Deny Outbound“: „Deny Inbound“ bedeutet, dass die IPs für alle eingehenden Verbindungen geblockt werden. Wenn man z.B. einen Webserver betreibt und man möchte bestimmte Länder blocken, dann kann man das mit „Deny Inbound“ machen. „Deny Outbound“ gilt für alle ausgehenden Verbindungen, d.h. ich kann mich von einem Rechner im Netzwerk nicht zu dieser IP verbinden. Hier muss man aufpassen! Wenn ich z.B. alle IPs Nordamerikas mit „Deny outbound“ sperre, kann ich ab sofort keine Webseiten mehr erreichen, die auf diesem Kontinent gehostet sind!

DNSBL / Feeds

pfBlockerNG blockt neben IPs auch Domains. Es findet also keine Man-in-the-Middle-Attacke statt, um Inhalte zu filtern, sondern es wird einfach in eine lange Liste geschaut, ob eine Domain erlaubt ist oder nicht (funktioniert auch mit HTTPS). Unter Feeds können wir einstellen, welche Listen aktiv genutzt werden sollen. Es gibt dabei Feeds für IP Blocklisten, als auch für DNSBL, also Blocklisten für DNS / Domains.

Alle aktivierten Feeds haben einen Haken am Ende der Zeile. Wenn wir nun einen noch nicht aktiven Feed hinzufügen wollen, klicken wir einfach auf das „+“:

Feed hinzufügen

Es öffnet sich eine Seite auf der wir Details zu dem Feed einstellen können. Folgende Felder sind wichtig:

  • State: ON
  • Action: Unbound
  • Update Frequency: Once a day

Feed Details

Manchmal möchte man einen Feed hinzufügen, der nicht in der Liste ist (z.B. einzelne Feeds von Steven Black). Dazu gehen wir zu DNSBL → DNSBL Groups und klicken unten auf „Add“:

Feed hinzufügen

Auf der nächsten Seite geben wir der DNSBL Gruppe einen Namen und fügen und DNSBL Source Definitions unseren Feed (oder mehrere) hinzu.

  • Name: StevenBlack
  • State: ON
  • Source: https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling/hosts
  • Header / Label: Glückspiel
  • Action: Unbound
  • Update Frequency: Once a day

Mit „Save“ schließen wir den Vorgang ab.

Custom Feed

Whitelists

Wenn eine Domain nicht geblockt werden soll, muss man sie unter DNSBL → DNSBL Whitelist in die Whiteliste aufnehmen. Wenn man einen Punkt („.“) vor den Domainnamen setzt, werden auch alle Subdomains freigeschaltet, sonst nur genau die (Sub)Domain, die man eingetragen hat.

DNSBL whitelist

SafeSearch

Unter DNSBL → DNSBL SafeSearch kann man SafeSearch für die bekanntesten Suchmaschinen einstellen. Weiterhin können wir auch noch DNS over HTTPS von Firefox blockieren sowie Beschränkungen für Youtube einstellen.

DNSBL SafeSearch

pfSense als DNS Server erzwingen

Damit auch alle Anfragen in unserem Netzwerk durch pfBlockerNG gefiltert werden, müssen wir verhindern, dass jemand im Netzwerk einen anderen DNS-Server als den DNS-Server von pfSense verwendet. Dazu erstellen wir 2 Regeln für die LAN-Schnittstelle (mehr Details hier):

DNS Regel

Fazit

pfBlockerNG ist ein tolles Open Source Projekt. Es hilft Werbung, unerwünschte Inhalte und ganze Netzbereiche zu filtern. Egal ob IPs oder DNS-Blocklisten – mit pfBlockerNG kann man beides verwalten und so konfigurieren, wie man es für sein Netzwerk haben möchte. Es gibt aber auch Alternativen für pfBlockerNG, z.B. pi-hole, welches sich gut auf einem Raspberry Pi oder in einer VM bzw. Container installieren lässt. Unter Strich bleibt, dass ein werbefreies Netzwerk möglich ist!

Nutzt du pfBlockerNG oder pi-hole in deinem (Schul)Netzwerk?

 

Der Beitrag pfBlockerNG – Werbung und unerwünschte Inhalte filtern erschien zuerst auf zefanjas.

Zeiterfassung mit Watson

Von: zefanja

Heute möchte ich ein Kommandozeilen-Werkzeug vorstellen, dass ich seit einigen Monaten zur Zeiterfassung benutze. Bis Ubuntu 18.04 habe ich immer das Hamster-Applet verwendet, was wirklich toll war. Unter 20.04 funktioniert dieses Applet aber nicht mehr. Deshalb habe ich mich nach Alternativen umgeschaut und bin bei Watson gelandet – ein Werkzeug für die Kommandozeile. Die Zeiterfassung mit Watson ist anders als mit dem Hamster-Applet, doch schauen wir uns zuerst die Installation an.

Installation

Watson ist ein Python-Programm und man installiert es am besten mit dem Python Paket Manager pip:

$ sudo apt install python3-pip
$ sudo pip3 install td-watson

Damit die Bedienung einfacher wird, installieren wir noch die Bash-Autovervollständigung:

$ cd /etc/bash_completion.d/
$ wget https://raw.githubusercontent.com/TailorDev/Watson/master/watson.completion

Damit die Autovervollständigung auch funktioniert, muss man den Terminal neu starten.

Bedienung von Watson

Es gibt eine Reihe von Befehlen, die einem helfen, die Zeit zu erfassen, Zusammenfassungen anzuzeigen oder einzelne Projekte zu verwalten. Die wichtigsten stelle ich kurz vor:

Zeit eines Projekts erfassen

$ watson start Projektname +Schlagwort1 +Schlagwort2

Im Hintergrund wird damit ein „Frame“ oder Zeitabschnitt angelegt für das Projekt inkl. der beiden Schlagwörter. Mit Schlagwörtern kann man z.B. die Zeit für Unterprojekte / Teilaufgaben erfassen.

Mit

$ watson stop

beende ich die Zeiterfassung für das Projekt wieder.

Andere hilfreiche Befehle

Manchmal kommt es vor, dass ich vergesse „watson stop“ auszuführen. Mit

$ watson edit

kann ich den letzten Zeitabschnitt / „Frame“ bearbeiten:

watson edit

Um das letzte Projekt neu zu starten, reicht ein:

$ watson restart

Um mir eine Zusammenfassung meiner Projekte anzuschauen, kann ich folgende Befehle benutzen:

$ watson report // letzte 7 Tage
$ watson report -m // aktueller Monat
$ watson report -f "2020-08-01" -t "2020-08-31" // Report vom 01.08. bis 31.08.2020
$ watson aggregate // zeigt eine Zusammenfassung der letzten 7 Tage an (für jeden Tag einzeln)

Weitere nützliche Befehle erhält man mit

$ watson --help
$ watson Befehl --help

Fazit

Watson ist ein wirklich einfach zu bedienendes Kommandozeilen-Werkzeug. Die Zeiterfassung mit Watson gefällt mir wirklich gut, obwohl ich das Hamster-Applet auch sehr praktisch fand. Es gibt einzelne Community-Projekte rund um Watson, die die Arbeit damit noch einmal verbessern, z.B. ein GUI und andere nette Kleinigkeiten. Ein Feature, welches meiner Meinung nach noch fehlt, ist die Möglichkeit Notizen zu einem Zeitabschnitt hinzuzufügen. Es gibt dafür einen Pull Request, aber er ist noch nicht im Projekt.

Welches Tool benutzt du zur Zeiterfassung?

Der Beitrag Zeiterfassung mit Watson erschien zuerst auf zefanjas.

Koha LDAP / AD Verbindung einrichten

Von: zefanja

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.

Koha an Active Directory / AD anbinden (ab linuxmuster.net v7)

Linuxmuster.net v7 bringt einen Samba 4 Active Directory mit sich. Dadurch hat sich auch die Anbindung an Koha im Vergleich zur Vorgängerversion geändert. Die Einstellungen befinden sich immer noch in der /etc/koha/sites/library/koha-conf.xml (falls die Koha-Instanz library heißt). Diese Datei müssen wir nun wie folgt bearbeiten:

<ldapserver id="ldapserver"  listenref="ldapserver">
  <hostname>ldaps://10.16.1.1</hostname>
  <base>ou=schools,dc=linuxmuster,dc=net</base>
  <user>cn=global-binduser,ou=Management,ou=GLOBAL,dc=linuxmuster,dc=net</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 -->
  <anonymous_bind>0</anonymous_bind>
  <auth_by_bind>1</auth_by_bind> <!-- set to 1 to authenticate by binding instead of password comparison -->
  <principal_name>%s@linuxmuster.net</principal_name>
  <update_password>0</update_password>
  <!-- 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="samAccountName"></userid>
   <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/linuxmuster/.secret/global-binduser
  • <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. Für Active Directory muss diese Option 1 sein.
  • <principal_name>: Das ist wahrscheinlich der schwierigste Teil. Am besten eignet sich der userPrincipalName aus dem AD. Bei linuxmuster.net v7 steht dort user@linuxmuster.net (Domain wieder anpassen!). User wird hier durch %s ersetzt (das wiederrum durch das mapping weiter unten bestimmt wird).
  • <mapping>: Hier können wir festlegen, welche Daten aus dem LDAP welches Attribut in Koha überschreiben soll. Wichtig ist vor allem userid, denn diese wird verwendet, um das %s in <principal_name> zu ersetzen. Bei Samba 4 / AD sieht das Mapping so aus: <userid is=“samAccountName„></userid>

Konfiguration für Koha LDAP Verbindung anpassen (bis linuxmuster.net v6.2)

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=linuxmuster,dc=net</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 / AD 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

Koha LDAP / AD Verbindung per Kommandzeile testen

Gerade beim Einrichten der Verbindung zum LDAP / AD Server geht es schneller, wenn man direkt auf der Kommandozeile testen kann, ob die Konfiguration richtig ist. Dazu gibt man die folgenden Befehle ein:

$ service koha-common restart && service memcached restart
$ export PERL5LIB=/usr/share/koha/lib/ && export KOHA_CONF=/etc/koha/sites/library/koha-conf.xml && perl /usr/share/koha/opac/cgi-bin/opac/opac-user.pl userid=user1 password=foo

Der Pfad zur koha-conf.xml, sowie user und password müssen wir natürlich noch anpassen.

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.

Der Beitrag Koha LDAP / AD Verbindung einrichten erschien zuerst auf zefanjas.

Wekan – eine Open Source Trello Alternative

Von: zefanja

In den letzten Wochen habe ich eine Software ausprobiert, die schon lange auf meiner Liste stand: Wekan. Wekan ist eine Open Source Alternative für Trello, einer Kanban-Software. Mit ihr lassen sich mit der Kanban-Methode Projekte oder Abläufe managen. Manche verwenden es auch als Aufgabenmanagementsystem. Es gibt verschiedene Open Source Alternativen zu Trello – Wekan ist eine, die dem Original am nächsten kommt. Ich möchte heute zeigen, wie man Wekan installiert und einrichtet.

Installation

Wekan kann man auf verschiedene Art und Weise installieren (manuell, Docker, snap, …). Wir werden es heute in einem LXD Container (Ubuntu 18.04) einrichten (LXD Container waren hier schon mehrmals Thema im Blog). Als erstes erstellen wir einen Container für Wekan:

$ lxc launch ubuntu:b wekan

Nachdem der Container erstellt und gestartet ist, loggen wir uns im Container ein:

$ lxc exec wekan bash

Wir werden Wekan als Snap installieren. In den Ubuntu LXD Container ist snapd schon installiert. Wir können also direkt Wekan installieren mit

$ snap install wekan

Nun legen wir die Haupt-URL und den Port für Wekan fest:

$ snap set wekan root-url="http://wekan.example.com"
$ snap set wekan port="80"

Optional kann man noch einstellen, das Updates automatisch installiert werden:

$ snap set core refresh.schedule=02:00-04:00

Fertig 🙂

Einrichtung

Nun können wir unter der IP unseres LXD Containers Wekan aufrufen. Wenn man LXD nicht lokal, sondern auf einem Server betreibt, kann es unter Umständen hilfreich sein eine Netzwerkbrücke für den Container einzurichten. Alternativ kann man auch Nginx als Reverse Proxy verwenden. Hinweise zur Einrichtung findet man im Wiki von Wekan.

Wekan Login

Hinweis: Der erste Benutzer, den wir einrichten, ist Administrator für Wekan.

Wir klicken als auf Registrieren und legen einen neuen Benutzer an.

Wekan Registrieren

Wenn wir nun auf Registrieren klicken, erscheint eine Fehlermeldung („Internal Server Error“). Das liegt daran, weil wir noch keinen EMail-Server eingerichtet haben.

Wekan Error

Wekan funktioniert aber auch ohne einen EMail-Server, deswegen öffnen wir einfach wieder unsere Hauptseite (wekan.example.com bzw. die IP des Containers) und können uns mit den eben angelegten Benutzer anmelden.

wekan open source

Nun können wir neue Boards in diesen neue Listen und Karten erstellen. Die Funktionsweise ist dem von Trello sehr ähnlich.

Fazit

Wer nach einer Open Source Alternative für Trello sucht, die man selber hosten kann, findet in Wekan einen guten Ersatz. Ich habe bisher oft Trello verwendet. Mit Wekan habe ich endlich einen Ersatz gefunden, der so ziemlich ein 1:1 Ersatz für Trello ist.

Der Beitrag Wekan – eine Open Source Trello Alternative erschien zuerst auf zefanjas.

Wie man Telegram in Zammad integrieren kann

Von: zefanja

An unserer Schule verwenden wir Zammad als Support-Plattform bzw. Helpdesk. Zammad ist eine wirklich tolle Software, die mit jedem Release neue Features mitbringt. Mittlerweile gehört auch ein Wissensdatenbank (aka Knowlegdebase) zum Angebot von Zammad. Mit Zammad bekommt alles man (und mehr), was man sich von einer Support-Plattform in der Schule wünscht. Zammad bietet verschiedene Supportkanäle an. Neben eMail, Chat, SMS, Twitter oder Facebook gibt es auch die Möglichkeit über Telegram Supporttickets zu erhalten. Heute möchte ich zeigen, wie man Telegram in Zammad integrieren kann.

Hinweis: Die Integration von Telegram klappt nur, wenn Zammad öffentlich per HTTPS erreichbar ist!

Telegram-Bot erstellen

Um über Telegram Supportanfragen erhalten zu können, muss man zuerst einen Telegram-Bot erstellen. Telegram-Bots sind Telegram-Konten, die von Computern bedient werden (Roboter-Accounts), oft in Verbindung mit künstlicher Intelligenz. Wie man einen Bot erstellt, steht hier.

Zuerst sucht man den „Vater aller Bots“ – Botfather und gibt folgenden Befehl ein:

/newbot

Telegram Bot erstellen

Man muss nun einen Namen für den Bot angeben und einen Benutzernamen, der

  1. nicht vergeben sein darf und
  2. auf _bot endet.

Zammad Telegram Bot Neu

Am Ende erhält man einen Link zum Bot und den API Key, den wir gleich brauchen werden.

Telegram in Zammad integrieren

In Zammad befinden sich die Einstellungen zu Telgram unter Admin → Kanäle → Telegram. Mit einem Klick auf Bot hinzufügen kann nun der eben erstellte Bot hinzugefügt werden. Dazu gibt man den API Key ein und kann bei Bedarf noch die Willkommensnachricht und die Gruppe anpassen, der die Tickets zugeordnet werden sollen.

Telegram Bot hinzufügen

Nach dem Klick auf Übermitteln ist der Bot nun einsatzbereit und neue Tickets können per Telegram erstellt werden.

Telegram Bot aktiv

Telegram-Kanal benutzen

Um ein neues Ticket zu erstellen, muss der Benutzer bzw. Kunde nur den Telegram-Bot suchen. In unserem Fall heißt er myschool_support_bot.

Telegram-Bot suchen

Wenn man den Bot ausgewählt hat, muss man nur unten einmal auf Starten klicken und schon begrüßt einen Zammad mit der Willkommensnachricht, die wir vorher festgelegt haben:

Telegram Zammad Ticket erstellen

Sobald man nun eine weitere Nachricht schreibt, erstellt Zammad daraus ein Ticket.

Telegram Zammad Ticket erstellen

Eine entsprechende Benachrichtigung erscheint nun in Zammad.

Zammad neues Ticket

In Zammad kann man nun direkt auf das Ticket antworten. Wichtig ist, das man nicht einfach in das Textfeld unten schreibt, sondern vorher auf antworten klickt. Neben dem Textfeld erscheint nun auch das Telegram-Symbol.

Zammad Telegram Ticket beantworten

Mit einem Klick auf Aktualisieren wird die Nachricht an den Kunden bzw. Telegram-Benutzer geschickt.

Telegram Ticket aktualisiert

Wünsche

Die Integration Telegram in Zammad funktioniert zuverlässig. Trotzdem ist die bisherige Implementation nur rudimentär. Folgende Features finde ich wünschenswert:

  • mehr Befehle für den Bot, um z.B. den Status des Tickets abzurufen, alle Tickets anzeigen zu lassen, …
  • aktuell kann immer nur ein Ticket gleichzeitig erstellt werden. Es wäre schön, wenn man mit Hilfe des Bots auch parallel mehrere Tickets erstellen könnte.
  • Möglichkeit für Agents Tickets direkt in Telegram beantworten zu können
  • Telegram zusätzlich als Integration um z.B. Benachrichtigungen über neue Tickets zu erhalten

Fazit

Tickets zu melden (so meine Erfahrungen aus dem Schulumfeld) ist für viele eine Herausforderung. Früher hatten wir ein Webformular, dass nur wenige genutzt haben. Dann haben wir mit Zammad einen eMail-Kanal eingerichtet. Die Hürde ein Ticket zu erstellen wurde dadurch niedriger. Mit der Integration von Telegram in Zammad ist diese Hürde noch einmal geringer geworden – zumindest für alle die diesen Messenger benutzen.

1 Kommentar

Der Beitrag Wie man Telegram in Zammad integrieren kann erschien zuerst auf .:zefanjas:..

Zammad sichern und wiederherstellen

Von: zefanja

Seit einigen Jahren verwenden wir Zammad als Support- bzw. Helpdesk-Software in unserer Schule. Wir sind damit sehr zufrieden, denn Zammad bietet viele Features und ein angenehm zu bedienende Benutzeroberfläche. Vor einiger Zeit mussten wir unseren Server umziehen und somit auch unsere Zammad-Installation. In diesem Artikel möchte ich kurz zeigen, wie man Zammad sichern und wiederherstellen kann.

Zammad sichern

Zammad bietet von Haus aus ein Backup-Skript, welches aber standardmäßig deaktiviert ist. Man kann das Skript dazu benutzen, um regelmäßige Backups anzulegen. Es befindet sich unter /opt/zammad/contrib/backup/. Das Backup-Skript greift auf eine Konfigurationsdatei zu, in der alle wichtigen Einstellungen vorgenommen werden. Diese Datei muss man zuerst umbenennen:

$ mv /opt/zammad/contrib/backup/config.dist /opt/zammad/contrib/backup/config

Anschließend öffnet man die Datei und kann einige wenige Dinge einstellen:

$ nano /opt/zammad/contrib/backup/config 

...
BACKUP_DIR='/var/tmp/zammad_backup'
HOLD_DAYS='10'
DEBUG='no'

BACKUP_DIR legt fest, wohin die Backups gespeichert werden sollen. Das Verzeichnis muss existieren! HOLD_DAYS gibt an, wie lange ein bzw. wie viele Backup(s) aufbewahrt werden sollen.

Nun kann man das Backup-Skript ausführen:

$ cd /opt/zammad/contrib/backup
$ ./zammad_backup.sh

Das Skript legt zwei Archive an (Datenbanksicherung und Zammad-Ordner), die sich nun im konfigurieren Backup-Ordner befinden.

Hinweis: Wenn man eine Installation migrieren möchte, ist es sinnvoll, Zammad vorher anzuhalten und erst dann das Backup zu erstellen. Das spielt aber nur bei größeren Installationen eine Rolle.

Zammad wiederherstellen

Wenn man ein Backup auf dem gleichen Host wiederherstellen möchte, kann man das mit dem Wiederherstellungsskript erledigen:

$ cd /opt/zammad/contrib/backup
$ ./zammad_restore.sh

Fertig 🙂

Wenn man allerdings eine Zammad-Installation umziehen möchte (Migration, Neuinstallation), gibt es einige Dinge zu beachten:

  • Zammad muss installiert sein (inklusive Elasticsearch)
  • die Zammad-Version sollte gleich oder höher sein (als die vom Backup)
  • es sollte die gleiche Datenbank verwendet werden (ein Wechsel ist wohl möglich, aber sehr aufwändig, da die Daten abgepasst werden müssen).
  • Es sollte genügend freier Speicherplatz vorhanden sein (ca. 2x so viel wie die Größe des Backups)

Wenn alle Bedingungen erfüllt sind, muss man zuerst die Konfiguration auf dem Zielsystem aktivieren:

$ mv /opt/zammad/contrib/backup/config.dist /opt/zammad/contrib/backup/config

Danach die Backupdateien in den konfigurierten Backup-Ordner kopieren (mit cp oder wenn man LXD-Container verwendet mit lxc file push/pull) und letztendlich das Wiederherstellungsskript laufen lassen:

$ cd /opt/zammad/contrib/backup
$ ./zammad_restore.sh

Weitere Informationen finden sich in der offiziellen Dokumentation.

Fazit

Zammad bringt einen einfachen Sicherungs- und Wiederherstellungsmechanismus mit, der zuverlässig funktioniert. Wer seine Zammad-Installation nicht anderweitig sichert, kann für das Backup-Skript auch einen Cron-Job einrichten, um regelmäßig ein Backup zu erstellen.

 

1 Kommentar

Der Beitrag Zammad sichern und wiederherstellen erschien zuerst auf .:zefanjas:..

Xen Orchestra installieren und aktualisieren (Vollversion)

Von: zefanja

An unserer Schule verwenden wir  Citrix Hypervisor (ehemals XenServer) (bald xcp-ng) für die Virtualisierung unseres Schulservers und anderer Anwendungen. Citrix liefert mit XenCenter ein Verwaltungstool für Windows. Damit kann man bequem alle virtuellen Maschienen verwalten und Einstellungen am Citrix Hypervisor vornehmen. Eine andere Möglichkeit ist Xen Orchestra. Es ist ein webbasiertes Tool, was noch einiges mehr als XenCenter kann. Auf der Website kann man sich eine fertig eingerichtete Appliance herunterladen. Diese ist allerdings von den Features stark eingeschränkt (man hat ca. 2 Wochen Zeit alle Features zu testen). Deshalb möchte ich einen kleinen Tipp weitergeben, wie man Xen Orchestra installieren kann – mit allen Features der Enterprice und Premium Edition.

Xen Orchestra installieren

Xen Orchestra ist eine Open Source Projekt, deshalb kann es sich jeder selbst den Quellcode nehmen und installieren. Die Anleitung dazu findet man in der offiziellen Dokumentation. Auf Github findet man auch ein Installationsskript, welches die Installation automatisch durchführt. Damit kann man Xen Orchestra in wenigen Schritten installieren. Auf einem frischen Ubuntu LTS Server muss man nur die folgenden Befehle ausführen:

$ sudo bash
$ curl https://raw.githubusercontent.com/Jarli01/xenorchestra_installer/master/xo_install.sh | bash

Das war es auch schon 🙂 Xen Orchestra kann man nun unter IP des Servers erreichen. Der Standard-Benutzername ist admin@admin.net, das Password admin.

Xen Orchestra installieren

Xen Orchestra aktualisieren

Wenn man Xen Orchestra fertig eingerichtet hat und sollte man es natürlich aktuell halten, um alle Sicherheitsupdates und neue Features zu bekommen. Eigentlich bringt jede Version einige neue Features mit, welche die Arbeit mit dem XenServer (bzw. xcp-ng) erweitern oder erleichtern. Der Autor des Installationsskript stellt ein weiteres Skript für die Aktualisierungen bereit. Zu finden ist es ebenfalls auf Github.

Das Aktualisierungsskript bietet verschiedene Optionen an. Zum einfachen Aktualisieren reicht der folgende Aufruf:

$ sudo bash
$ sudo curl https://raw.githubusercontent.com/Jarli01/xenorchestra_updater/master/xo-update.sh | bash

Nach wenigen Minuten ist Xen Orchestra wieder auf den aktuellen Stand!

Wer sich unwohl dabei fühlt ein Skript aus dem Netz als root laufen zu lassen, kann sich das Skript natürlich vorher noch genau anschauen, was es macht bzw. nicht macht 🙂

Fazit

Xen Orchestra ist ein tolles Projekt. Unser XenServer lässt sich damit leicht verwalten. Backups sind schnell angelegt (seit neustem auch Backups der Konfiguration von Xen Orchestra) inklusiver Benachrichtigungen (eMail oder nach Slack / Mattermost). Diese beiden Skripts haben uns das Leben sehr erleichtert. Ein großes Dankeschön an Jarli01!

1 Kommentar

Der Beitrag Xen Orchestra installieren und aktualisieren (Vollversion) erschien zuerst auf .:zefanjas:..

Wie man ein mobiles Feinstaubmessgerät bauen kann

Von: zefanja

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:..

Netzwerkbrücke für LXD Container einrichten

Von: zefanja

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:..

WLAN Access Point mit pfSense verbinden

Von: zefanja

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:..

Auto-Type in KeeWeb konfigurieren

Von: zefanja

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:..

pfSense installieren

Von: zefanja

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:..

Wie man sein WLAN-Netzwerk mit Freeradius absichern kann

Von: zefanja

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:..

❌