Radius, RadSec und Certmgr¶
Stand: 2026-06-11
Diese Seite ist die zentrale MkDocs-Referenz fuer die Lanstyle Radius-/RadSec-Plattform und den Certmgr-Zertifikatspfad. Sie ersetzt keine Secret-Ablage; Passwoerter, Private Keys und Token gehoeren ausschliesslich nach Vaultwarden.
Kurzstand¶
| Bereich | Wert |
|---|---|
| Radius/RadSec VM | VM 601 sgo-radius |
| Interner Zielname | radius.ad.lanstyle.de |
| EAP/Public Name | radius.lanstyle.de |
| Interne IP | 10.222.40.36/24 |
| RadSec Public NAT | 80.155.133.58 TCP 2083 nach 10.222.40.36 |
| Certmgr | LXC 112 certmgr, 10.222.40.51/24 |
| WLAN Onboarding/Hinweisportal | LXC 128 wlan-onboarding, 10.222.40.52/24, https://wlan-onboarding.lanstyle.de |
| Proxmox Deploy-Pfad | Proxmox 10.0.0.220 plus QEMU Guest Agent in VM 601 |
| RadSec DynDNS Watcher | radsecproxy-dyndns-watch.timer, prueft SMS/SGO alle 5 Minuten |
Dienste¶
| Dienst | Port | Zweck |
|---|---|---|
| FreeRADIUS | UDP 1812/1813 |
RADIUS Auth/Accounting |
| FreeRADIUS local auth | UDP 127.0.0.1:18120 |
lokale Auth-Instanz |
| radsecproxy | TCP 2083 |
RadSec TLS von Aruba-Standorten |
| Nginx/UI | TCP 80 |
Radius-Weboberflaeche |
| MariaDB | TCP 127.0.0.1:3306 |
lokale Radius-Datenbank, nicht remote exponiert |
Kundenzuordnung¶
| Kunde | Status | Bestaetigte RadSec-Quelle |
|---|---|---|
| SGO Sportgymnasium Oberhof | aktiv | DynDNS sgo.fortidyndns.com, aktuell 176.52.192.249, radsecproxy Clientname sgo |
| SMS Salzmannschule Schnepfenthal | aktiv | DynDNS sms.dyndns64.de, aktuell 80.153.196.109, radsecproxy Clientname sms |
| SGJ Sportgymnasium Jena | aktiv | extern 82.119.173.50, radsecproxy Clientname sgj |
Zertifikatsmodell¶
BYOD- und Schuelergeraete koennen keine interne Lanstyle-Root-CA voraussetzen. FreeRADIUS EAP verwendet deshalb ein oeffentlich vertrautes Let's-Encrypt-Zertifikat fuer radius.lanstyle.de.
RadSec bleibt davon getrennt:
- radsecproxy nutzt ebenfalls das Let's-Encrypt-Serverzertifikat fuer
radius.lanstyle.de. - Aruba RadSec-Clientzertifikate der Schulen bleiben auf interner Lanstyle-CA.
- Auf Aruba-Controllern ist kein Upload des LE-Serverzertifikats erforderlich, solange die oeffentliche LE-Kette akzeptiert wird.
- Windows-/BYOD-Clients zeigen beim ersten PEAP-Verbindungsaufbau ohne vorab verteiltes WLAN-Profil ggf. eine Vertrauensabfrage. Erwartet ist
Ausgestellt fuer: radius.lanstyle.de, aktuellAusgestellt von: YR2. Das ist kein Fehler, solange der Name und die oeffentliche LE-Kette passen.
Aktive Pfade auf VM 601:
| Komponente | Pfad |
|---|---|
| FreeRADIUS Fullchain | /etc/freeradius/3.0/certs/le_fullchain.pem |
| FreeRADIUS Key | /etc/freeradius/3.0/certs/le_privkey.pem |
| radsecproxy Fullchain | /etc/radsecproxy/certs/le/fullchain.pem |
| radsecproxy Key | /etc/radsecproxy/certs/le/privkey.pem |
Certmgr-Automatisierung¶
certmgr-renew.timer auf LXC 112 startet certmgr-renew.service.
Der Service fuehrt zwei produktive Renewal-Pfade aus:
/opt/certmgr/certmgr-renew.sh productionfuerad.lanstyle.deund*.ad.lanstyle.de/opt/certmgr/certmgr-renew-radius.sh productionfuerradius.lanstyle.de
Bei geaendertem Radius-Zertifikat ruft der Radius-Pfad /opt/certmgr/deploy-radius.sh auf. Das Deploy-Script kopiert ueber SSH auf Proxmox 10.0.0.220 und nutzt dort den QEMU Guest Agent fuer VM 601.
Deploy-Ablauf:
- Zertifikat und Key nach VM
601schreiben. - Backup der bisherigen Radius-Zertifikatsdateien anlegen.
freeradius -Causfuehren.radsecproxyneu starten.freeradiusneu starten.- Dienststatus pruefen.
Graylog-Anbindung¶
Lanstyle Radius/RadSec 10.222.40.36 sendet FreeRADIUS-/RadSec-Logs an Graylog:
- Ziel:
10.222.60.20:1514/tcp - Mechanismus:
rsyslog - FreeRADIUS-Dateilog:
/var/log/freeradius/radius.logwird perimfilegespiegelt - Live-Mitschnitt 2026-06-07: Payloads und ACK am Graylog-LXC bestaetigt
- Seit 2026-06-08 filtert
/etc/rsyslog.d/90-graylog-radius-radsec.conferwartbaren radsecproxy Idle-/Reconnect-Chatter vor dem Graylog-Forwarding. - Gefiltert werden
tlsservernew: incoming TLS connection, erfolgreicheTLS connection ... upundtlsserverrd ... no requests. - Lokales Journal bleibt vollstaendig; echte radsecproxy Fehler/Warnungen werden weiter nach Graylog gesendet.
- FreeRADIUS-Auth-Logging ist aktiv (
auth = yes), Passwortlogging bleibt deaktiviert (auth_badpass = no,auth_goodpass = no). Damit landenLogin OK,Login incorrectundInvalid userueber den FreeRADIUS-Dateimirror in Graylog, ohne Passwoerter zu protokollieren. - Backup der Filteraenderung:
/root/rsyslog-radsec-noise-filter-backup-20260608-010251
RadSec DynDNS und Idle-Verhalten¶
radsecproxy nutzt fuer SMS und SGO bewusst DynDNS-Namen, weil die oeffentlichen Standort-IP-Adressen wechseln koennen:
| Standort | radsecproxy Client | Hostname |
|---|---|---|
| SMS | sms |
sms.dyndns64.de |
| SGO | sgo |
sgo.fortidyndns.com |
Wichtig: radsecproxy loest FQDNs laut lokaler Manpage nur beim Start auf und uebernimmt spaetere DNS-Aenderungen nicht automatisch. Deshalb laeuft auf VM 601 der Timer radsecproxy-dyndns-watch.timer.
Der Watcher:
- prueft alle 5 Minuten die DNS-Aufloesung von SMS und SGO,
- speichert den letzten Stand in
/var/lib/radsecproxy/dyndns-client-ips.state, - startet
radsecproxynur bei tatsaechlicher IP-Aenderung neu, - loggt Aenderungen mit Tag
radsecproxy-dyndns-watch.
Backup/Einrichtung:
/root/radsecproxy-dyndns-hosts-cleanup-20260608-150636/hosts/root/radsecproxy-dyndns-watch-backup-*
Die Logmeldung tlsserverrd: timeout ... no requests, closing connection ist erwartbares Aruba-/RadSec-Idle-Verhalten, wenn eine TLS-Verbindung aufgebaut, aber kein RADIUS-Request gesendet wird. TCPKeepalive on ist in den RadSec-Client-Bloecken gesetzt; das verhindert tote TCP-Sessions, ersetzt aber kein echtes RADIUS-Status-/Keepalive-Paket. StatusServer ist in radsecproxy fuer ausgehende Server-Bloecke relevant, nicht fuer eingehende Aruba-Clients.
Aruba Controller Timing¶
Stand 2026-06-08:
| Standort | Controller | Enterprise-SSID | RadSec-Ziel | Accounting | Interim-Accounting |
|---|---|---|---|---|---|
| SGO | 192.168.30.32 |
SGO |
radius.lanstyle.de |
aktiv | 5 Minuten |
| SMS | 10.64.2.65 |
SMS |
radius.lanstyle.de |
aktiv | 5 Minuten |
| SGJ | 10.128.16.204 |
SGJ |
radius.lanstyle.de |
aktiv | 5 Minuten |
Der Aruba-Parameter radius-interim-accounting-interval ist in Minuten angegeben. Fuer das RadiusDesk-Ziel "Passwort plus registrierte MAC-Adresse, Geraetebegrenzung ueber MACs statt Session-Limit" ist 5 Minuten der operative Sollwert fuer entfernte Standorte. 30 Minuten ist funktional, aber zu traege fuer zeitnahe Accounting-/Statussicht nach Roaming, Abbruch oder Geraetewechsel.
RadSec laeuft standortseitig ueber den oeffentlichen Namen radius.lanstyle.de; WAN-seitig wird nur TCP 2083 zum radsecproxy benoetigt. Auth und Accounting werden danach lokal auf VM 601 an FreeRADIUS UDP 1812/1813 weitergereicht. Es ist keine separate oeffentliche UDP-Freigabe fuer 1812/1813 vorgesehen.
Backups/Readbacks der letzten Controller-Aenderungen:
- SGO:
/Users/vinc32/Documents/Syslog/backups/aruba-sgo-accounting-20260607_234729 - SGO Live-Verify:
/Users/vinc32/Documents/Syslog/backups/aruba-sgo-live-verify-20260608_000002 - SMS/SGJ:
/Users/vinc32/Documents/Syslog/backups/aruba-remote-timing-20260607_235931
VLAN999 Hinweis- und Onboarding-Portal¶
Stand 2026-06-11:
- Portal-LXC:
128 wlan-onboarding, IP10.222.40.52, URLhttps://wlan-onboarding.lanstyle.de. - Healthcheck:
/healthz. SGOundSMSsindhint_only: kein M365-Login, keine MAC-Selbstregistrierung.SGJnutzt M365-Self-Service mit Admin-GUI, RadiusDesk-Sync und CoA/Disconnect fuer automatische Reauth.- Falsches Passwort bleibt
Access-Reject. - Korrektes Passwort plus unbekannte/private MAC ist fuer SGO/SMS kein Reject mehr, sondern
Access-Acceptmit VLAN999und Aruba-Hinweisrolle.
FreeRADIUS/RadiusDesk:
RADIUSdesk_mac_quarantine_vlansetzt bei MAC-Quarantaene zusaetzlich:@SGO:Aruba-User-Role := "SGO-MAC-Hinweis"@SMS:Aruba-User-Role := "SMS-MAC-Hinweis"- Backup vor der Aenderung:
/root/backups/radiusdesk-hint-role-20260611-004126/auf VM601. - Session-Limits sind auf
0; die Geraetebegrenzung erfolgt ueber registrierte MACs.
Aruba:
| Standort | Captive-Profil | Hinweisrolle | Portal-URL |
|---|---|---|---|
| SGO | SGO-Hinweisportal |
SGO-MAC-Hinweis |
https://wlan-onboarding.lanstyle.de/?site=sgo |
| SMS | SMS-Hinweisportal |
SMS-MAC-Hinweis |
https://wlan-onboarding.lanstyle.de/?site=sms |
| SGJ | Captive-/Onboarding-Flow mit M365 | SGJ PreAuth/Onboarding | https://wlan-onboarding.lanstyle.de/?site=sgj |
UDM/Firewall fuer SGO/SMS:
| Standort | VLAN999-Netz | Gateway | UDM/API | Stand |
|---|---|---|---|---|
| SGO | 192.168.255.0/24 |
192.168.255.1 |
https://10.3.0.1 |
Legacy-Regeln fuer Portal/DNS/DHCP allow, danach local/routed block |
| SMS | 10.64.255.0/24 |
10.64.255.1 |
https://10.64.0.1 |
Zone-Policies fuer Portal/DNS/DHCP allow, danach Internal/VPN/DMZ/Hotspot/Gateway/External block |
Portal-Ports: TCP 80, 443, 8088 zu 10.222.40.52. Fuer SGO/SMS gibt es keine Microsoft-Allowlist und kein freies Internet in VLAN 999.
Backups/Readbacks:
- Portal-App/Doku: Lanstyle-Projekt
ops/wlan_onboarding. - SGO UDM:
ops/unifi/backups/sgo-vlan999-hint-lockdown-20260611_062640. - SMS UDM:
ops/unifi/backups/sms-vlan999-hint-lockdown-20260611_061720. - SGO/SMS Aruba:
ops/wlan_onboarding/backups/aruba-*-hintportal-20260611-*. - SGO UniFi API-Key liegt in Vaultwarden als
SGO / UniFi UDM Pro API. - SMS UniFi API-Key liegt in Vaultwarden als
SMS / UniFi UDM Pro API.
RadiusDesk MAC- und Session-Policy¶
Stand 2026-06-11:
- Alle vorhandenen
permanent_usershabenRd-Mac-Check := 1. - Damit muss die Client-MAC als Device/MAC in RadiusDesk eingetragen sein.
- Lehrerprofile haben
session_limit = 0undRd-Fup-Session-Limit = 0. - Nicht-Lehrerprofile haben ebenfalls
session_limit = 0; die Limitierung erfolgt nicht ueber parallele Sessions, sondern ueber registrierte MACs/Geraete. - EAP/PEAP und TTLS kopieren die aeussere
Calling-Station-Idin deninner-tunnel, damit die MAC-Pruefung bei Benutzer/Passwort-Authentifizierung greifen kann. - Der
inner-tunnelnormalisiertCalling-Station-IdvorRADIUSdesk_mainueberRADIUSdesk_rewrite_calling_station_id.
Aktiver Zielstand: Session-Limits blockieren nicht mehr; die MAC-Pflicht gilt weiterhin fuer alle Profile. Unterschiede zwischen Lehrer/Schueler/Trainer werden ueber erlaubte/registrierte Geraete bzw. Profilregeln abgebildet, nicht ueber offene Accounting-Sessions.
MAC-Format:
- Aruba kann
Calling-Station-Idz.B. alsaabbccddeeff,aa:bb:cc:dd:ee:ffoderaa-bb-cc-dd-ee-ffliefern. - RadiusDesk speichert Devices ueberwiegend als
aa-bb-cc-dd-ee-ff. - Die aktive Policy normalisiert die Anfrage vor dem DB-Vergleich auf Bindestrichformat.
- Offene Alt-/Stale-Sessions in
radacctsind weiterhin ein Monitoring-/Cleanup-Thema. Stand 2026-06-08 waren 32 offene Sessions mit 2 unbekannten MACs sichtbar; Cleanup muss wegen RadiusDesk-Triggern separat sauber umgesetzt werden.
RadiusDesk Accounting und Trigger¶
Am 2026-06-08 wurde ein Accounting-Folgefehler behoben: FreeRADIUS meldete bei Accounting-Stop/Update rlm_sql_mysql: ERROR 1136 (Column count doesn't match value count at row 1). Ursache war nicht die FreeRADIUS-Accounting-Query, sondern der RadiusDesk-Trigger auf radacct, der per INSERT INTO radacct_history SELECT * FROM radacct kopiert. radacct hatte 34 Spalten, radacct_history nur 30.
Korrektur:
radacct_historyum die fehlenden IPv6-Spalten ergaenzt:framedipv6addressframedipv6prefixframedinterfaceiddelegatedipv6prefix- Trigger-Test mit Stop-Update erfolgreich.
- Backup:
/root/radiusdesk-radacct-history-schema-fix-20260608-150939
radpostauth und radacct schreiben wieder; radpostauth zeigt Access-Accept/Access-Reject, radacct dient weiter als Grundlage fuer Session-Limits.
Backup/Readback der Umstellung:
/Users/vinc32/Documents/Syslog/backups/radiusdesk-enforce-mac-limit-20260608_001055/Users/vinc32/Documents/Syslog/backups/radiusdesk-inner-tunnel-mac-normalize-20260608_003256- Server-Backup:
/root/radiusdesk-enforce-mac-limit-backup-20260608-001056 - Server-Backup inner-tunnel:
/root/radiusdesk-inner-tunnel-mac-normalize-backup-20260608-003257
Verifikation¶
Zertifikats- und Serviceverifikation vom 2026-06-08:
radius.lanstyle.de: Let's Encrypt, SANDNS:radius.lanstyle.de, aktuelle CAYR2, RSA-Zertifikat.- FreeRADIUS:
active. - radsecproxy:
active. - MariaDB:
active. - systemd-resolved:
active. - rsyslog:
active. radsecproxy-dyndns-watch.timer:active.- Key/Cert-Match per Public-Key-Hash bestaetigt.
- Keine neuen
unknown CA,More than 50 roundtrips,No EAP sessionoder SQL-1136-Fehler im Nachbeobachtungsfenster nach den Fixes. - SMS-Testuser
test.wifi@SMSwurde mit registrierter MAC erfolgreich authentifiziert; dynamisches VLAN2020wurde geliefert und Accounting geschrieben.
Backups der letzten Umstellung:
- Certmgr:
/root/certmgr-radius-deploy-backup-20260607-204423 - Radius vor Deploy:
/root/radius-certmgr-predeploy-backup-20260607-224424 - Radius lokaler ACME-Cron:
/root/radius-disable-local-acme-backup-20260607-225523
Betriebsregeln¶
- Keine Radius-/RadSec-Secrets in MkDocs oder Obsidian speichern.
- FreeRADIUS EAP fuer BYOD bleibt auf oeffentlichem LE-Zertifikat.
- Interne Lanstyle-CA bleibt fuer RadSec-Clientzertifikate und verwaltete interne Zertifikate relevant.
- Lokalen
acme.sh-Cron auf Radius nicht wieder aktivieren, solangecertmgrzentrale Zertifikatsquelle ist. - MariaDB bleibt lokal gebunden auf
127.0.0.1:3306. - Firewall-Freigaben fuer TCP
2083nur fuer berechtigte RadSec-Clients fuehren. - Statische
/etc/hosts-Eintraege fuer SMS/SGO duerfen nicht dauerhaft verwendet werden; wechselnde Standort-IP-Adressen muessen ueber DynDNS und den Watcher verarbeitet werden. auth_badpassundauth_goodpassnicht aktivieren, damit keine Passwoerter in lokalen Logs oder Graylog landen.