Freeradius Notes
Put FreeRadius into Debug Mode
If radtest or eapol tests don’t work, you need to put FreeRadius into debug mode and read the output. However debugging process is very comfortable and easy.
systemctl stop freeradius
# or /etc/init.d/freeradius stop
freeradius -X
Test login
Login with plaintext:
radtest testing password 127.0.0.1:18120 testing123
Login with mschap:
radtest -t mschap testing password 127.0.0.1:18120 0 testing 123
Eapol Testing
radtest
is great for testing simple scenarios, but to test the whole process, like from a Wifi access point, there is a utility eapol_test
. It is a part of wpa_supplicant.
Download wpa_supplicant at https://w1.fi/wpa_supplicant/ and compile (./configure && make
)and then you get eapol_test at wpa_supplicant-2.2/wpa_supplicant/eapol_test
.
Copy the binary somewhere, e.g. home directory.
Test EAP-TTLS/PAP
# file: ttls-pap.conf
#
# eapol_test -c ttls-pap.conf -s testing123
#
network={
ssid="lulzcats"
key_mgmt=WPA-EAP
eap=TTLS
identity="ivan"
anonymous_identity="anonymous"
password="" # fill this in
phase2="auth=PAP"
#
# Uncomment the following to perform server certificate validation.
# ca_cert="/etc/raddb/certs/ca.der"
}
And them fire up the test. You need to enable “testing123” line in client.conf
. Then it can be disabled again.
./eapol_test -c ttls-pap.conf -s testing123
And you should see this:
RADIUS packet matching with station
MS-MPPE-Send-Key (sign) - hexdump(len=32): fc 0c df 50 ff d6 10 fa a0 87 3f cf 04 46 f0 9e 53 de 51 6e a0 39 30 42 aa df 16 32 55 30 e7 49
MS-MPPE-Recv-Key (crypt) - hexdump(len=32): ea 38 2c 5d ff 19 85 a8 59 96 11 0f 12 dc 74 9f 5e 07 48 f4 e1 18 df 7f 8d 5c 51 50 c8 51 38 38
decapsulated EAP packet (code=3 id=6 len=4) from RADIUS server: EAP Success
EAPOL: Received EAP-Packet frame
EAPOL: SUPP_BE entering state REQUEST
EAPOL: getSuppRsp
EAP: EAP entering state RECEIVED
EAP: Received EAP-Success
EAP: Status notification: completion (param=success)
EAP: EAP entering state SUCCESS
CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
EAPOL: IEEE 802.1X for plaintext connection; no EAPOL-Key frames required
WPA: EAPOL processing complete
EAPOL: SUPP_PAE entering state AUTHENTICATED
EAPOL: SUPP_BE entering state RECEIVE
EAPOL: SUPP_BE entering state SUCCESS
EAPOL: SUPP_BE entering state IDLE
eapol_sm_cb: result=1
EAPOL: Successfully fetched key (len=32)
PMK from EAPOL - hexdump(len=32): ea 38 2c 5d ff 19 85 a8 59 96 11 0f 12 dc 74 9f 5e 07 48 f4 e1 18 df 7f 8d 5c 51 50 c8 51 38 38
No EAP-Key-Name received from server
EAP: deinitialize previously used EAP method (21, TTLS) at EAP deinit
ENGINE: engine deinit
MPPE keys OK: 1 mismatch: 0
SUCCESS
And not this:
RADIUS packet matching with station
decapsulated EAP packet (code=4 id=6 len=4) from RADIUS server: EAP Failure
EAPOL: Received EAP-Packet frame
EAPOL: SUPP_BE entering state REQUEST
EAPOL: getSuppRsp
EAP: EAP entering state RECEIVED
EAP: Received EAP-Failure
EAP: Status notification: completion (param=failure)
EAP: EAP entering state FAILURE
CTRL-EVENT-EAP-FAILURE EAP authentication failed
EAPOL: SUPP_PAE entering state HELD
EAPOL: SUPP_BE entering state RECEIVE
EAPOL: SUPP_BE entering state FAIL
EAPOL: SUPP_BE entering state IDLE
eapol_sm_cb: result=0
EAPOL: EAP key not available
EAPOL: EAP Session-Id not available
EAP: deinitialize previously used EAP method (21, TTLS) at EAP deinit
ENGINE: engine deinit
MPPE keys OK: 0 mismatch: 1
FAILURE
If EAP-TTLS works, then EAP-TLS works too. Unless configuration is modified too heavily.
Test EAP-PEAP/MSSCHAP2
Much less secure than EAP-TTLS, but you know, compatibility with old Windowses (<=7).
# file: peap.conf
#
# eapol_test -c ttls-pap.conf -s testing123
#
network={
ssid="lulzcats"
key_mgmt=WPA-EAP
eap=PEAP
identity="ivan"
anonymous_identity="anonymous"
password=""
phase2="auth=MSCHAPv2"
#
# Uncomment the following to perform server certificate validation.
# ca_cert="/etc/raddb/certs/ca.der"
}
Test command:
./eapol_test -c peap.conf -s testing123
iOS or macOS cannot log in, but Windows, Android or Linux can
If you put freeradius into debug mode, you will see:
Module-Failure-Message -> eap: Tried to start unsupported EAP type MD5 (4)
Bizzare bug, but apparently only Apple devices try to use EAP-MD5. I disabled MD5 in the configuration, but left it as a default authentication method.
So….
# /etc/freeradius/3.0/mods-enabled-eap
eap {
default_eap_type = ttls
....
}
Add Comment