Radius and integrated with AD for Wireless AP
Freeradius and integrated with AD, with Wireless (Aruba-controller)
Here you go, FreeRADIUS, an open-sourced project that will please you.
Prerequisite
- Active Directory domain
 - Ubuntu server 
 
Below are the used settings assuming 
FreeRADIUS 192.168.1.12
mydomain.com: domain name
mydc.mydomain.com: domain controller
MYNTDOMAIN: nt domain name
Radiussrv : Radius server hostname
            
1. Install samba, winbind, krb5-user:
sudo apt install samba winbind krb5-user
2. Config samba by editing:
a. /etc/samba/smb.conf:
...
[global]
## Browsing/Identification ###
# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = MYNTDOMAIN
# need to add these
   security = ads
   password server = mydc.mydomain.com
   realm = MYDOMAIN.COM
   winbind use default domain = true
...
b. /etc/krb5.conf:
[libdefaults]
        default_realm = MYDOMAIN.COM
...
[realms]
        MYDOMAIN.COM = {
                kdc = mydc.mydomain.com
                admin_server = mydc.mydomain.com
                default_domain = mydomain.com
        }
...
[domain_realm]
        .mydomain.com = MYDOMAIN.COM
        mydomain.com = MYDOMAIN.COM
...
c. /etc/hosts
127.0.0.1 radiussrv.mydomain.com radiussrv localhost
3. Restart samba service:
sudo systemctl restart smbd
4. Join domain (MYNTDOMAIN)
net join -U Administrator
5. Test samba AD authentication:
a. Using winbind:
wbinfo -a <user>%<password>
You will get the following message if everything is correct:
plaintext password authentication succeeded
challenge/response password authentication succeeded
or
b. Using ntlm_auth:
ntlm_auth --request-nt-key --domain=MYNTDOMAIN --username=<user> --password=<password>
Success message:
NT_STATUS_OK: Success (0x0)
6. Install freeradius 3.0.X:
sudo add-apt-repository ppa:freeradius/stable-3.0
sudo apt update
sudo apt install freeradius freeradius-config easy-rsa
7. Generate and config the server certificates with easy-rsa, remember to enter your server's FQDN as common name when asked:
a. Generate the certs
sudo cp -R /usr/share/easy-rsa /etc/freeradius/certs/
cd /etc/freeradius/certs/easy-rsa
Mkdir keys
source vars
./clean-all
./build-ca
./build-key-server server
sudo cp keys/ca.crt /etc/freeradius/certs/
sudo cp keys/server.* /etc/freeradius/certs/
sudo chown freerad /etc/freeradius/certs/server*
sudo chmod +r /etc/freeradius/certs/server*
b. Config FreeRADIUS to use those new certs:
sudo nano /etc/freeradius/mods-enable/eap
change the below setting 
...
        tls-config tls-common {
                private_key_password =
                #private_key_file = ${certdir}/server.pem
                private_key_file = ${certdir}/server.key
...
                #certificate_file = ${certdir}/server.pem
                certificate_file = ${certdir}/server.crt
...
                #ca_file = ${cadir}/ca.pem
                ca_file = ${cadir}/ca.crt
...
8. Grant permission for freerad user on winbind's socket:
sudo usermod -a -G winbindd_priv freerad
sudo chgrp winbindd_priv /var/lib/samba/winbindd_privileged/
9. Tell FreeRADIUS to use ntlm_auth for MSCHAP by editing:
a. /etc/freeradius/modules/ntlm_auth:
program = "/usr/bin/ntlm_auth --request-nt-key --domain=MYNTDOMAIN --username=%{mschap:User-Name} --password=%{User-Password}"
b. /etc/freeradius/modules/mschap:
mschap {
...
    ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --domain=MYNTDOMAIN --username=%{%{Stripped-User-Name}:-%{%{User-Name}:-None}} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00}"
...
c. /etc/freeradius/sites-enabled/default and /etc/freeradius/sites-enabled/inner-tunnel:
authenticate {
...
    ntlm_auth
...
d. /etc/freeradius /mods-config/files/authorize
DEFAULT     Auth-Type = ntlm_auth
10. Configure RADIUS client, /etc/freeradius/clients.conf. For example:
client 192.168.1.10 {
        secret                = 123456
}
11. Re start FreeRADIUS:
sudo systemctl restart freeradius
12. Test FreeRADIUS and MSCHAP:
radtest -t mschap <user> <password> localhost 0 testing123
The results will be like:
Sent Access-Request Id 9 from 0.0.0.0:59244 to 127.0.0.1:1812 length 134
        User-Name = "user"
        MS-CHAP-Password = "password"
        NAS-IP-Address = 172.100.99.100
        NAS-Port = 0
        Message-Authenticator = 0x00
        Cleartext-Password = "password"
        MS-CHAP-Challenge = 0x163bc4c900360a08
        MS-CHAP-Response = 0x0001000000000000000000000000000000000000000000000000382764ceb05312077d21d71bf53ce917ef2e72a4ff83ca96
Received Access-Accept Id 9 from 127.0.0.1:1812 to 0.0.0.0:0 length 84
        MS-CHAP-MPPE-Keys = 0x000000000000000065c53b0540ab884edc6779a1f370c0cb
        MS-MPPE-Encryption-Policy = Encryption-Allowed
        MS-MPPE-Encryption-Types = RC4-40or128-bit-Allowed
13. Configure your Aruba Controller as below

14. Try to connect to your wifi network using your AD account and enjoy.

Comments