802.1x WPA2 FreeRadius con control de acceso con OpenLdap
De LuniWiki
Contenido |
Resumen
En este articulo se describe como montar un entorno Wifi seguro por certificado digital, pero controlando los usuarios que admitimos por wifi mediante nuestro Ldap.
OpenLdap
A nuestro Ldap tenemos que añadir el esquema de Radius que encontramos dentro de la documentación, y lo copiamos en la carpeta '/etc/openldap/schemas/radius.schema'. Editamos el fichero '/etc/openldap/slapd.conf' y se añade el siguiente include
include /etc/openldap/schema/radius.schema /etc/init.d/slapd restart
A nuestro usuario le añadimos el 'ObjectClass' radiusprofile, y le asignamos dos atributos
dialupAccess: usuario@luniel.com (Tiene que coincidir con el Distinguish Name del Certificado que generaremos.) radiusGroupName: WPA2Enterprise (Los usuarios de este grupo tendran acceso al Red Wifi
Certificados
Mediante 'Openssl' tenemos que crear varios certificados:
ca.crt (clave publica de nuestra CA) radius.luniel.com.key (Clave privada del servidor radius) radius.luniel.com.crt (Clave publica del servidor) dh1024.pem (fichero Hoffman) random (fichero aleatorio, necesario para el radius) usuario@luniel.com.p12 (Contenedor PKCS#12 para instalar en Windows XP)
No nos extendemos sobre el uso de openssl.
FreeRadius
La configuración de Free Radius tiene multitud de ficheros de configuración, no vamos a realizar accounting. compilamos freeradius con las opciones USE snmp ldap edirectory.
radiusd.conf
Comentamos la parte de Listen del accounting
# This second "listen" section is for listening on the accounting
# port, too.
#
#listen {
# ipaddr = *
# ipv6addr = ::
# port = 0
# type = acct
# interface = eth0
# clients = per_socket_clients
#}
En la sección de log, le decimos que 'loggue' las autenticaciones
auth = yes
En la sección de proxy, le indicamos que no realizamos proxy (es nuestro unico servidor radius
proxy_requests = no #$INCLUDE proxy.conf
Habilitamos el snmp
snmp = yes
En la sección de modules deshabiliamos el modulo SQL, ya que no vamos a realizar acceso a BD
#$INCLUDE sql.conf #$INCLUDE sql/mysql/counter.conf
client.conf
Editamos el fichero 'clients.conf', y le damos el acceso a nuestro router wifi con la contraseña.
client 192.168.1.10 {
secret = testing123 (esta es la contraseña de acceso del router al servidor radius
shortname = LunielEnterprise
}
eap.conf
Windows XP se autentica mediante EAP-TLS y PEAP.
eap {
default_eap_type = peap
#md5 { Quitamos md5
#}
#leap { Quitamos el protocolo leap de cisco
#}
#gtc { Quitamos el GTC
# auth_type = PAP
#}
tls{
certdir = ${confdir}/certificados
cadir = ${confdir}/certificados
private_key_file = ${certdir}/radius.luniel.com.key
certificate_file = ${certdir}/radius.luniel.com.crt
CA_file = ${cadir}/ca.crt
dh_file = ${certdir}/dh1024.pem
random_file = ${certdir}/random
cipher_list = "DEFAULT"
}
#ttls{ Quitamos ttls
#}
EAP-TLS-Require-Client-Cert = Yes
peap {
default_eap_type = mschapv2
copy_request_to_tunnel = no
use_tunneled_reply = no
}
mschapv2 {
}
}
modules/ldap
Este fichero nos permite configurar el acceso al Ldap, realizamos la siguientes modificaciones.
ldap {
server = "altair.luniel.com"
basedn = "ou=Users,dc=luniel,dc=com"
filter = "dialupAccess=%u" (El nombre del usuario está en el campo dialupAccess)
groupname_attribute = radiusGroupName (Campo donde le indicamos el grupo de acceso)
groupmembership_filter = (dialupAccess=%u)
groupmembership_attribute = radiusGroupName
edir_account_policy_check = yes
access_attr_used_for_allow = yes
}
users
En este fichero damos acceso a los usuario que tienen el atributo de grupo correcto. Comentamos todas la lineas del fichero e insertamos las siguientes:
DEFAULT Ldap-Group == WPA2Enterprise
Fall-Through = no
DEFAULT Auth-Type := Reject
Reply-Message = "Please call the helpdesk."
Dejamos pasar los usuarios que pertencen al grupo WPA2Enterprise (del Ldap), y descartamos todos los demás.
Directorio sites-available
Realizamos una copia del fichero default
cp default luniel
Directorio sites-enabled
Borramos los links y realizamos un link a nuestro fichero de configuración.
rm * ln -s ../sites-available/luniel luniel
Editamos el fichero y le dejamos unicamente con el siguiente contenido
authorize {
preprocess
auth_log
files (Estable las reglas del fichero users)
ldap (Permite el Ldap para los grupo del fichero users)
eap (Permite realmente la autenficación)
}
authenticate {
Auth-Type MS-CHAP {
mschap
}
eap (Realiza la autenticación)
}
post-auth {
Post-Auth-Type REJECT {
attr_filter.access_reject (Rechaza los usuario no validos del fichero users
}
}
Router
Configuramos el router para que acceda a nuestro servidor radius y con encriptación WPA2.
Referencias
- FreeRADIUS + 802.1x/WPA + OpenLDAP HOWTO
- HowTo:OpenLDAP+FreeRADIUS
- OpenWrtDocs/KamikazeConfiguration
- Freeradius
- 802.1X Port-Based Authentication HOWTO
- FreeRadius Wiki
--Daniel Simao 02:13 30 may 2009 (UTC)
