der Freeradius funktioniert vom Server aus. Ein Anmeldungsversuch über das Wlan liefert immer folgende Fehlermeldung:
Auth: (9) Login incorrect (mschap: FAILED: No NT/LM-Password. Cannot perform authentication): [foer] (from client Unifi AP's port 0 via TLS tunnel)
Prinzipiell funktioniert endlich alles (das Routing und die Firewallregeln) nur die Authentifizierung hängt. Nach Stunden des Debuggens, internetrecherchierens und herumprobierens gebe ich auf! Hat irgendjemand von euch eine Idee wo es hängen könnte?
hast du den RADIUS Server mal im Debug-Modus gestartet (/usr/local/etc/rc.d/radiusd stop and dann radiusd -X? Evtl. gibt das mehr Aufschluss.
Mit welchem Protokoll fragst du vom Server aus an? Und mit welchem fragt dein Unifi-Controller an? Hast du von einem Windows oder Linuxrechner versucht dich im WLAN anzumelden?
verstehe ich nicht? Vom Server frage ich mit radtest was klappt. Vom Unifi Controller klappt auch alles. Bei Unifi ist es allerdings so, dass die AP’s selber beim Radius nachfragen. Das läuft ein OpenWRT drauf…keine Ahnung was für ein Protokoll.
Hier ist die Fehlermeldung die kommt, wenn ich mich versuche zu verbinden (die 10.20.50.19 ist ein Unifi AP AC Pro):
(30) Received Access-Request Id 180 from 10.20.50.19:46389 to 10.16.1.254:1812 length 260
(30) User-Name = "foer"
(30) NAS-Identifier = "802AA8C01C2A59E5CD93"
(30) Called-Station-Id = "82-2A-A8-C2-1C-2A:wlan-windeck"
(30) NAS-Port-Type = Wireless-802.11
(30) Service-Type = Framed-User
(30) Calling-Station-Id = "6C-C7-EC-63-8C-B2"
(30) Connect-Info = "CONNECT 0Mbps 802.11b"
(30) Acct-Session-Id = "87E8B375AADF9C37"
(30) WLAN-Pairwise-Cipher = 1027076
(30) WLAN-Group-Cipher = 1027076
(30) WLAN-AKM-Suite = 1027073
(30) Framed-MTU = 1400
(30) EAP-Message = 0x027d002e190017030300230000000000000003b5c6d8d695b53fd4543e066ce9d1820794405b268224e1135e130d
(30) State = 0x064e7dd80e33640504b43f114e933253
(30) Message-Authenticator = 0x2ed9123ad6b5d2f10ecbed55fd8d14d6
(30) Restoring &session-state
(30) &session-state:TLS-Session-Cipher-Suite = "ECDHE-RSA-AES128-GCM-SHA256"
(30) &session-state:TLS-Session-Version = "TLS 1.2"
(30) &session-state:Module-Failure-Message := "mschap: FAILED: No NT/LM-Password. Cannot perform authentication"
(30) # Executing section authorize from file /usr/local/etc/raddb/sites-enabled/default
(30) authorize {
(30) policy filter_username {
(30) if (&User-Name) {
(30) if (&User-Name) -> TRUE
(30) if (&User-Name) {
(30) if (&User-Name =~ / /) {
(30) if (&User-Name =~ / /) -> FALSE
(30) if (&User-Name =~ /@[^@]*@/ ) {
(30) if (&User-Name =~ /@[^@]*@/ ) -> FALSE
(30) if (&User-Name =~ /\.\./ ) {
(30) if (&User-Name =~ /\.\./ ) -> FALSE
(30) if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/)) {
(30) if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/)) -> FALSE
(30) if (&User-Name =~ /\.$/) {
(30) if (&User-Name =~ /\.$/) -> FALSE
(30) if (&User-Name =~ /@\./) {
(30) if (&User-Name =~ /@\./) -> FALSE
(30) } # if (&User-Name) = notfound
(30) } # policy filter_username = notfound
(30) [preprocess] = ok
(30) [chap] = noop
(30) [mschap] = noop
(30) [digest] = noop
(30) suffix: Checking for suffix after "@"
(30) suffix: No '@' in User-Name = "foer", looking up realm NULL
(30) suffix: No such realm "NULL"
(30) [suffix] = noop
(30) eap: Peer sent EAP Response (code 2) ID 125 length 46
(30) eap: Continuing tunnel setup
(30) [eap] = ok
(30) } # authorize = ok
(30) Found Auth-Type = eap
(30) # Executing group from file /usr/local/etc/raddb/sites-enabled/default
(30) authenticate {
(30) eap: Expiring EAP session with state 0x991965d899ca7f5d
(30) eap: Finished EAP session with state 0x064e7dd80e336405
(30) eap: Previous EAP request found for state 0x064e7dd80e336405, released from the list
(30) eap: Peer sent packet with method EAP PEAP (25)
(30) eap: Calling submodule eap_peap to process data
(30) eap_peap: Continuing EAP-TLS
(30) eap_peap: [eaptls verify] = ok
(30) eap_peap: Done initial handshake
(30) eap_peap: [eaptls process] = ok
(30) eap_peap: Session established. Decoding tunneled attributes
(30) eap_peap: PEAP state send tlv failure
(30) eap_peap: Received EAP-TLV response
(30) eap_peap: ERROR: The users session was previously rejected: returning reject (again.)
(30) eap_peap: This means you need to read the PREVIOUS messages in the debug output
(30) eap_peap: to find out the reason why the user was rejected
(30) eap_peap: Look for "reject" or "fail". Those earlier messages will tell you
(30) eap_peap: what went wrong, and how to fix the problem
(30) eap: ERROR: Failed continuing EAP PEAP (25) session. EAP sub-module failed
(30) eap: Sending EAP Failure (code 4) ID 125 length 4
(30) eap: Failed in EAP select
(30) [eap] = invalid
(30) } # authenticate = invalid
(30) Failed to authenticate the user
(30) Using Post-Auth-Type Reject
(30) # Executing group from file /usr/local/etc/raddb/sites-enabled/default
(30) Post-Auth-Type REJECT {
(30) attr_filter.access_reject: EXPAND %{User-Name}
(30) attr_filter.access_reject: --> foer
(30) attr_filter.access_reject: Matched entry DEFAULT at line 11
(30) [attr_filter.access_reject] = updated
(30) [eap] = noop
(30) policy remove_reply_message_if_eap {
(30) if (&reply:EAP-Message && &reply:Reply-Message) {
(30) if (&reply:EAP-Message && &reply:Reply-Message) -> FALSE
(30) else {
(30) [noop] = noop
(30) } # else = noop
(30) } # policy remove_reply_message_if_eap = noop
(30) } # Post-Auth-Type REJECT = updated
(30) Login incorrect (eap_peap: The users session was previously rejected: returning reject (again.)): [foer] (from client Unifi AP's port 0 cli 6C-C7-EC-63-8C-B2)
(30) Delaying response for 1.000000 seconds
Waking up in 0.3 seconds.
Waking up in 0.5 seconds.
(10) Cleaning up request packet ID 63 with timestamp +44
(30) (30) Discarding duplicate request from client Unifi AP's port 46389 - ID: 180 due to delayed response
(30) Sending delayed response
(30) Sent Access-Reject Id 180 from 10.16.1.254:1812 to 10.20.50.19:46389 length 44
(30) EAP-Message = 0x047d0004
(30) Message-Authenticator = 0x00000000000000000000000000000000
(11) Cleaning up request packet ID 64 with timestamp +44
Der Fehler könnte damit zusammenhängen, dass er das Passwort nicht findet / erkennt. Für die LMN v6.2 musste ich bei freeradius v3 noch folgendes im ldap module einfügen, damit der Login von einem Windows-Client funktionierte:
Welche freeradius Version läuft auf der OPNSense? Hast du den AP als Client zugelassen in deiner Freeradius config? Stimmt das RADIUS Secret für die APs?
Versteh ich das richtig, dass Du auf den Unifi APs OpenWRT laufen hast? Geht das und falls ja, was versprichst Du Dir davon? Hast Du’s mal mit der Original-Firmware versucht?
Ich frag so dumm, weil ich das demnächst auch mit Unifi-APs machen möchte.
in deiner Logfile versucht der AP per EAP-TLS zu authentifizieren. Ist das fertig eingerichtet? Mit den entsprechenden Zertifikaten und so?
Ich empfehle dir unbedingt das Tool eapol_test zu installieren/bauen (http://deployingradius.com/scripts/eapol_test/). Damit kannst du bequemer vom Server die verschiedenen Protokolle testen.
Wenn du mit dem gleichem Benutzer aus vom Server ein Access-Accept bekommst (mit radtest) heißt das erst einmal nur, dass PAP funktioniert, also die Klartextvariante.
Kannst du bitte mal deine clients.conf schicken? Haben die APs Zugriff auf den Radius-Server in der Firewall?
Danke Dominik für die Logs, interessant wäre noch, was gleichzeitig auf dem RADIUS Server passiert (radius -X).
Wir nutzen leider kein OPNSense, deshalb kann ich grad nicht sagen, ob es evtl. an OPNSense bzw. dem dortigem freeradius-Paket liegt. Wenn du die Ressourcen hast, würde ich dir empfehlen, eine VM oder einen Container mit freeradius zu installieren. Auf dem Server direkt geht sicher auch - mach ein Snapshot vorher
also ich habe jetzt so ziemlich alles getestet und vermute mal es liegt wirklich am Radius der Opnsense. So wie ich das sehe gibt es zwei Fehler. Erstens wird eap-tls benutzt, obwohl in der Konfiguration mschapv2 steht und zum zweiten wird für peap-msvchapv2 das Programm ntlm_auth benötigt welches es nicht auf der opnsense gibt.
Es wäre toll, wenn nochmal jemand anders das testet um zu prüfen ob ich nicht doch was falsch gemacht habe.
Spricht sicherheitstechnisch was dagegen einen Radius direkt auf dem Server zu betreiben? Sonst würde ich es mal mit einem Radius auf dem Unificontroller versuchen. Ich kenne mich allerdings nicht aus…wenn jemand sich besser mit Radius peap-mschapv2 mit AD auskennt wäre ich für Hilfe (Doku, Musterconfig) sehr dankbar.