Wi-Fi Alliance zertifiziert Wi-Fi 7
Die für die Wi-Fi-Standards zuständige Wi-Fi Alliance hat offiziell mit der Zertifizierung von Wi-Fi 7 begonnen. Zertifizierte Geräte erhalten dann das Siegel Wi-Fi Certified 7.
Die für die Wi-Fi-Standards zuständige Wi-Fi Alliance hat offiziell mit der Zertifizierung von Wi-Fi 7 begonnen. Zertifizierte Geräte erhalten dann das Siegel Wi-Fi Certified 7.
Wer die interne WLAN-Funktion von Windows nutzt, der wird schnell feststellen, dass diese recht wenig Informationen zu den vorhandenen Netzwerken bereitstellt. Besonders, wenn der Empfang schlecht ist bzw. die Geschwindigkeit schwankt, ist oft guter Rat teuer.
Abhilfe schafft da ein kleines Tool namens WLANInfo. Das kleine Programm ist Freeware und benötigt keine Installation. Es ist somit sehr gut für den USB-Stick oder eine Boot-CD geeignet.
Das Programm zeigt zusätzlich zur Frequenz und der Geschwindigkeit die MAC Adresse an.
Außerdem besteht die Möglichkeit die Signalstärke in Tönen wiederzugeben.
Am Samstag, dem 15.10.2022 wurden neue Versionen des Linux-Kernels veröffentlicht, darunter 6.0.2, 5.19.16 und 5.15.74. Mit diesen Versionen werden verschiedene Sicherheitslücken geschlossen, die der Sicherheitsforscher Sönke Huster aufgedeckt hat.
Konkret geht es hierbei um den WLAN-Stack. Er ist im Kernel notwendig, um drahtlose Netzwerkzugriffe zu ermöglichen. Verschiedene Treiber unterstützen die verschiedenen WLAN-Chips, welche die Kommunikation zur Außenwelt bereitstellen. Trotzdem teilen sich die Treiber eine gemeinsame Infrastruktur – und in dieser Infrastruktur wurden einige Fehler gefunden.
Den Fehlern wurden verschiedene CVEs zugewiesen. Konkret geht es um:
Besonders ins Auge fällt eine Lücke, die einen Buffer Overflow beim Scannen verschiedener WLAN-Netze zur Anzeige verfügbarer Netze ermöglicht. Die Brisanz entsteht dadurch, dass die Lücke interaktionslos (Zero Click) ausgenutzt werden kann: dadurch, dass der Scan automatisch abläuft und ein Angreifer bösartige WLAN-Frames ausstrahlen kann, die dann automatisch verarbeitet werden, ist kein aktives Klicken auf eine ausführbare Datei nötig. Glücklicherweise existiert zum aktuellen Zeitpunkt noch kein bekannter Exploit, der diese Lücke bösartig ausnutzt. Die Updates sollten trotzdem eingespielt werden, um hier nicht unnötig einem Risiko ausgesetzt zu sein.
Weitere Details und die Geschichte hinter der Lücke gibt es in der Sonderepisode 6 meines Risikozone-Podcasts. In dieser Episode führen Prof. Dr. Andreas Noack und ich ein Interview mit Sönke Huster, dem Entdecker der Lücke. Sönke erklärt in der Episode die Lücken und erläutert, wie er sie entdeckt und gemeldet hat. Insbesondere der Disclosureprozess wird Thema der Episode sein, da hier die Arbeitsweise in einem Open-Source-Projekt wie dem Linux-Kernel bei so einem Vorfall deutlich wird. Die Podcastepisode ist ab sofort auf risikozone.de/rz006 als Audio und – extra für diese Episode – auf YouTube als Video verfügbar. Sie ist aufgrund des besonderen Themas mit etwa 90 Minuten etwas länger als die üblichen 40 Minuten, aber dennoch für den Ausklang des Wochenendes sehr empfehlenswert.
Konkrete Informationen zur Lücke in der E-Mail von Sönke verfügbar, LWN.net hatte bereits am Donnerstag darüber berichtet. Mittlerweile hat auch das BSI eine Warnung aufgrund der CVEs herausgegeben.
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).
Ein Bild sagt bekanntlich mehr als 1000 Worte:
Die LAN-Schnittstelle von pfSense verbindet man mit einem Switch, an dem man dann den Access Point und weitere kabelgebundene Clients anschließen kann.
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.
Nun kann man auf das Webinterface des Access Point zugreifen.
Nach dem Login (bei tp-link ist der Standardbenutzername und das Passwort admin) richtet man unter Quick Setup alle wichtigen Einstellungen ein:
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.
Der Beitrag WLAN Access Point mit pfSense verbinden erschien zuerst auf .:zefanjas:..
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.).
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
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.
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:
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.
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' ... }
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
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
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
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
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.
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!"
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)!
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 } } ... }
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.
Der Beitrag Wie man sein WLAN-Netzwerk mit Freeradius absichern kann erschien zuerst auf .:zefanjas:..