Configuración servidor Radius.

Hemos elegido FreeRadius como servidor Radius para la validación de los usuarios en la red inalámbrica. ¿Esto qué quiere decir?

A una red inalámbrica nos podemos conectar de diferentes modos, puede estar abierta, sin ningún cifrado, puede estar cifrada por wep, cifrado débil, puede estar cifrada por wap2, cifrado más robusto y costoso de desmantelar. Dentro del wap2 se puede tener una contraseña común para todos los dispositivos que se conectan, esto se conoce como PSK, es una clave compartida. El problema es que la clave puede ser distribuida facilmente y esto puede ser una ventaja o un inconveniente. Nosotros optamos por el acceso a través de usuario y contraseña individual:

Tenemos un servidor ldap y queremos utilizar el usuario y la contraseña de los usuarios que ya existen o los que vendrán, para las conexiones inalámbricas, a parte de para iniciar sesión en los equipos y web del centro. Para esto necesitamos un servidor Radius.

¿Qué hace el servidor Radius?

El servidor Radius hace de intermediario entre los clientes y una lista de usuarios y contraseñas, la lista puede estar en diferentes formas, mysql, archivos de texto, ldap,... en nuestro caso nuestra base de datos ldap con los usuarios y contraseñas.

Vamos con lo que hemos hecho:

Instalación del servidor, FreeRadius, nuestro equipo tiene un CentOS instalado, con lo que:


# yum install freeradius2 freeradius2 freeradius2-ldap freeradius2-utils

Con esto tenemos el servidor, el módulo para ldap y unas herramientas para hacer pruebas de la instalación.

Configuración del servidor:

Archivos que hay que cambiar:

/etc/raddb/clients.conf
/etc/raddb/modules/ldap
/etc/raddb/sites-enabled/default
/etc/raddb/sites-enabled/inner-tunnel
/etc/raddb/certs/
/etc/raddb/eap.conf

Comenzamos por el principio:
El servidor está preparado desde el comienzo para validar usuarios, pero hay que cambiar un par de cosillas:

/etc/raddb/clients.conf

Este es el archivo donde hay que dar de alta a los clientes radius, que pueden ser equipos o los puntos de acceso que queremos que pidan las credenciales. El punto de acceso es el cliente, aunque nosotros nos conectemos al punto de acceso para establecer la conexión: secret es la contraseña que hay que poner en el cliente para que el cliente establezca la conexión con el servidor.

client 192.168.1.0/24 {
        secret          = test
        shortname       = private-network-2
}
client 192.168.0.253 {
        secret          = test
        shortname       = Punto-de-acceso
}

/etc/raddb/modules/ldap

Hay que establecer un par de parámetros para que la validación encriptada tenga lugar:

        server = "ip del servidor ldap"
        basedn = "ou=Usuarios,dc=dominio"
        identity = "cn=UsuarioPermisos,dc=dominio"
        password = password

Es necesario que haya un usuario con permisos de lectura de las contraseñas para que la validación encriptada funcione.

/etc/raddb/sites-enabled/default

Activamos la validación ldap, en el apartado authorize hay que descomentar la línea donde aparece ldap:
authorize {
...
ldap
...
}


/etc/raddb/sites-enabled/inner-tunnel

En el apartado authorize hay que descomentar la línea donde aparece ldap, esto se utiliza para la encriptación de los datos con el certificado:
authorize {
...
ldap
...
}

Hay que generar los certificados para la encriptación de los datos hasta el radius desde el equipo que se quiere validar.

/etc/raddb/certs/server.cnf

[ req ]
prompt                  = no
distinguished_name      = server
default_bits            = 2048
input_password          = contraseña
output_password         = contraseña

[server]
countryName             = ES
stateOrProvinceName     = Radius
localityName            = Escuelas
organizationName        = EscuelasSJ
emailAddress            = tic@escuelassj.com
commonName              = escuelassj.com         ###(este es el dominio que validará CAcert.org)


Dentro de /etc/raddb/certs/ hay unos archivos de configuración *.cnf para establecer los parámentros de nuestro equipo y la clave del certificado. Después de establecer los parámetros hacemos, dentro del directorio:

# cd /etc/raddb/certs/
# make  server.csr

Con este archivo nos vamos a CAcert.org y solicitamos un certificado para el servidor, ojo hay que tener un dominio para poder hacer esto.

Con el certificado del servidor server.pem lo sustituimos por el que hay. Descargamos el certificado root de CAcert.org, https://www.cacert.org/certs/root.crt y lo ponemos en la carpeta /etc/raddb/certs/ el nombre lo podemos cambiar, está en formato pem.

Con los cambios realizados hay que generar otra vez los archivos dh y random:

openssl dhparam -out dh 2048
dd if=/dev/urandom of=random count=2
chmod 640 random

Hay que cambiar los permisos del archivo random para que pueda ser leído por el grupo radius
Ahora cambiamos la configuración de:

/etc/raddb/eap.conf

Hay que cambiar la clave, según lo establecido en server.cnf como contraseña en el apartado req.

                        private_key_password = contraseña
                        private_key_file = ${certdir}/server.key

Si no hemos cambiado el nombre del archivo root.crt descargado desde CAcert.org habrá que especificarlo en el apartado:

                        CA_file = ${cadir}/ca.pem

Ahora sólo queda probar, aunque es conveniente ir probando poco a poco, cada vez que se modifica un archivo:

# raddius -X

Fuentes:











0 comentarios :