Autenticazione utenti tramite EAP-MD5 con FreeRadius e LDAP
Per poter attuare quanto descritto il queste pagine, occorre avere pronto un sistema con un database LDAP. Tale sistema deve essere modificato per potersi integrare con FreeRadius, quindi occorre includere al file di configurazione di LDAP il file radius.schema. Aggiungiamo al file /etc/ldap/slapd.confquesta riga:
nano /etc/ldap/slapd.conf include /etc/ldap/schema/radius.schema
Copiamo il file radius.schema nella directory dove si trovano gli altri schema, quindi riavviamo il server LDAP.
cp radius.schema /etc/ldap/schema /etc/init.d/slapd restart
Ora possiamo avviare l’installazione sul sistema di FreeRadius utilizzando i pacchetti forniti con Debian.
apt-get install freeradius freeradius-ldap -y
Per comodità creiamo un utente radius in locale, per controllare il corretto funzionamento di FreeRadius indipendentemente da LDAP. Dopo la creazione del nuovo utente occorre riavviare il servizio radius.
nano /etc/freeradius/users testuser Auth-Type := Local, User-Password == "password" /etc/init.d/freeradius restart
Eseguendo il comando radtest, possiamo verificare il funzionamento di radius con l’utente appena creato.
radtest testuser password localhost 1812 testing123
Dovremmo ricevere un messaggio simile a questo, che ci conferma il corretto funzionamento.
Sending Access-Request of id 166 to 127.0.0.1 port 1812 User-Name = "testuser" User-Password = "password" NAS-IP-Address = 255.255.255.255 NAS-Port = 1812 rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=166, length=20
Ora possiamo attivare in radius il supporto per LDAP. Occorre specificare le impostazioni per connettersi al server LDAP e in quali campi andare a cercare le informazioni per autenticare gli utenti.
nano /etc/freeradius/radiusd.conf
log_auth = yes
log_auth_badpass = yes
log_auth_goodpass = yes
ldap {
server = "192.168.0.7"
identity = "cn=admin,dc=ced,dc=local"
password = pwdads31
basedn = "dc=ced,dc=local"
filter = "(uid=%{Stripped-User-Name:-%{User-Name}})"
base_filter = "(objectclass=posixAccount)"
start_tls = no
#access_attr = "dialupAccess"
password_attribute = userPassword
}
authorize {
ldap
}
authenticate {
Auth-Type PAP {
pap
}
#
# Most people want CHAP authentication
# A back-end database listed in the 'authorize' section
# MUST supply a CLEAR TEXT password. Encrypted passwords
# won't work.
Auth-Type CHAP {
chap
}
#
# MSCHAP authentication.
Auth-Type MS-CHAP {
mschap
}
# Allow EAP authentication.
eap
}
Per il corretto funzionamento dell’autenticazione degli utenti occorre modificare due file ed aggiungere rispettivamente queste istruzioni, quindi riavviare FreeRadius.
nano /etc/freeradius/dictionary # Non-Protocol Integer Translations VALUE Auth-Type Local 0 VALUE Auth-Type System 1 VALUE Auth-Type SecurID 2 VALUE Auth-Type Crypt-Local 3 VALUE Auth-Type Reject 4 VALUE Auth-Type ActivCard 5 VALUE Auth-Type LDAP 6
nano /etc/freeradius/ldap.attrmap checkItem User-Password userPassword replyItem Tunnel-Type radiusTunnelType replyItem Tunnel-Medium-Type radiusTunnelMediumType replyItem Tunnel-Private-Group-Id radiusTunnelPrivateGroupId
Ora tutto è pronto per poter autenticare gli utenti tramite 802.1x e EAP-MD5. Per qualche motivo che ancora non capisco, gli utenti presenti nel database LDAP devono avere impostato il campo password in CLEAR altrimenti non si avrà l’autenticazione dell’utente. E’ ovvio che il supporto per l’autenticazione 802.1x deve essere impostato sulla porta dello switch che ci collega alla LAN (oppure nell’Access Point wireless). I test di autenticazione sono stati condotti con macchine Windows XP Pro SP2 e uno switch Cisco Catalyst della famiglia 2950.


