class: center, middle # (Free)RADIUS-Grundlagen ### Hauke Goos-Habermann #### https://goos-habermann.de --- ### Über mich - Entwickler des
Softwareverteilungssystems m23
- Organisator der
Kieler Open Source und Linux Tage
-
Dienstleister zu m23, Linux und Freier Software
- Softwareentwicklung (PHP, BASH, C/C++, JS, Python und was sonst so gebraucht wird...) - Administration - Schulungen - Support - Beratung - quasi **alles**, *was mit Linux zu tun hat* - Wöchentlicher Livestream *"Jean und Hauke Show"* auf https://www.youtube.com/c/LinuxGuides - Community-Video-Serie *"Nicht der Weisheit letzter Schluß"* auf
tube.tchncs.de
und
YouTube
mit **beruflichen** oder **privaten Projekten** - Hat einen FreeRADIUS/FreeIPA-Online-Vortrag für Kunden gehalten. --- ### RADIUS-Komponenten * **Supplicant**: Endgerät (Laptop, Tablet, PC, etc.) mit dem auf das Netzwerk (LAN/WLAN) zugegriffen werden soll. * **Authenticator**: Ein Switch oder AccessPoint, der den Zugriff auf das phys. Netzwerk herstellt, wenn dies erlaubt ist. Auch: **NAS** (**N**etwork **A**ccess **S**erver) * **Authentication Server**: RADIUS-Server (RADIUS), der anhand von Zugangsdaten (ggf. mit externem LDAP/FreeIPA) überprüft, ob ein Endgerät auf das Netzwerk zugreifen darf.  --- ### Protokolle: 802.1X **
802.1X
**: Protokoll zwischen Supplicant (Endgerät) und Authenticator (AP/Switch), das **vor dem Aufbau einer TCP/IP-Verbindung** verwendet wird. ➀  --- ### Protokolle: RADIUS **
RADIUS
**: Verschlüsseltes (gemeinsames Geheimnis) und signiertes Protokoll (UDP+TCP/IP: 1812, UDP/1813)) zwischen Authenticator (AP/Switch) und Authentication Server (RADIUS), das **vor dem Aufbau einer TCP/IP-Verbindung** verwendet wird. ➁  --- ### Protokolle: EAP **
EAP
** (**E**xtensible **A**uthentication **P**rotocol): Verwendet *802.1X* und *RADIUS* zwischen Supplicant (Endgerät) und Authentication Server (RADIUS) zur **Authentifizierung** (Benutzername und Paßwort oder Client-Zertifikat). Der Authenticator (AP/Switch) übersetzt die EAP-Informationen von/zu 802.1X ➀ und von/zu RADIUS ➁.  --- ### Protokolle: LDAP/Kerberos **
LDAP
/
Kerberos
**: Zwischen Authentication Server (RADIUS) und FreeIPA-Server werden Berechtigungen mittels LDAP/Kerberos überprüft ➃.  --- ### Verbindungsaufbau 1. **Supplicant** (Endgerät), baut über **802.1X** eine Verbindung zum **Authenticator** (AP/Switch) auf. 2. **Authenticator** (AP/Switch) gibt die Zugangsinformationen (z.B. TLS-verschlüsselt) an den **Authentication Server** weiter. **Zwischen Endgerät und Authentication Server gibt es keine *direkte Kommunikation*, da das Endgerät noch *keine IP* zugewiesen bekommen hat.** 3. **Äußerer EAP-Tunnel** sichert die Verbindung mittels TLS und verwendet zur Authentifizierung ein EAP-Verfahren (EAP-TLS, EAP-TTLS, EAP-PEAP, ...) 4. Im äußerer EAP-Tunnel werden die Zugangsdaten mittels PAP, MD5, MSCHAPv2 oder einem der anderen ca. 40 Verfahren überprüft. 5. Verwaltet der **Authentication Server** die Benutzerkonten nicht selbst, so findet die Überprüfung mittels LDAP/Kerberos über einen externen (FreeIPA)-Server statt. 6. Wenn die Zugangsdaten korrekt sind, sendet der **Authentication Server** die Freigabe an den **Authenticator**, der dem Endgerät den Zugriff auf das WLAN oder den Netzwerkport am Switch erlaubt ➂. Bei WLAN wird ein individueller PTK (**P**airwise **T**ransient **K**ey) für jedes Endgerät aus den EAP-Parametern berechnet. --- ### FreeIPA-Server #### Basisinstallation * AlmaLinux 8.5 * Statische IP: 192.168.1.224 * Hostname: ipa.m23.local #### FreeIPA konfigurieren Mit
FreeIPA-konfig.sh
(als root ausgeführt) stellen wir FreeIPAs Paßworthashalgorithmus auf SSHA512 um und legen einen Radius-Benutzer an, der lesend auf das userPassword-Attribut zugreifen darf. --- ### FreeRADIUS-Server #### Basisinstallation * Debian 11 * Statische IP: 192.168.1.226 * Hostname: radius.m23.local * Paketauswahl: Minimal + SSH #### FreeRADIUS einrichten Mit
Radius-install.sh
FreeRADIUS installieren, einrichten und mit FreeIPA-Server verbinden. --- ### Testen/Debuggen #### LDAP-Zugriff (auf FreeRADIUS-Server) zu FreeIPA ```bash ldapsearch -h ipa.m23.local -p 389 -v -b 'dc=m23,dc=local'\ -D "uid=radius,cn=users,cn=accounts,dc=m23,dc=local"\ -w radiusTest | less ``` #### Testbenutzer in FreeIPA erstellen (auf FreeIPA-Server) ```bash yes test | ipa user-add "radiustest" --first=Radius --last=Test\ --shell=/usr/bin/false --password # Ablaufdatum und Authentifizierungsarten setzen ipa user-mod radiustest --password-expiration="2050-01-01Z"\ --user-auth-type=password --user-auth-type=radius ``` #### LDAP-Zugriff nochmal testen * Nach "radiustest" suchen --- ### Testen/Debuggen 2 #### Debug-Modus für den FreeRADIUS (auf FreeRADIUS-Server) ```bash systemctl stop freeradius.service sudo -u freerad freeradius -fxX ``` #### Testbenutzer in FreeIPA erstellen (auf FreeRADIUS-Server) ```bash radtest radiustest test 127.0.0.1 0 testing123 ``` **testing123** ist das Paßwort für einen *Network Access Server (NAS)* (z.B. einen AccessPoint oder Switch), der als Beispiel in der *clients.conf* definiert ist. --- class: center, middle ### Informationen zu mir und meinen Dienstleistungen, m23, ... ### https://goos-habermann.de