FreeRadius con WPA+PEAP-TLS

35
FreeRadius con WPA+PEAP-TLS Roberto Jose A. Velo Santos

Transcript of FreeRadius con WPA+PEAP-TLS

Page 1: FreeRadius con WPA+PEAP-TLS

FreeRadius con WPA+PEAP-TLS

Roberto

Jose A. Velo Santos

Page 2: FreeRadius con WPA+PEAP-TLS

Introducción

Nuestro objetivo es configurar una red wifi

de forma segura usando un servidor

FreeRadius

Page 3: FreeRadius con WPA+PEAP-TLS

Radius

Radius (Remote Authentication Dial-In User Server) es un protocolo usado en redes, para dispositivos como routers. Nos permite gestionar la AAA (Autenticación, Autorización y registro. En ingles sería Authentication, Authorization and Accounting) de usuarios remotos sobre un determinado recurso.

Page 4: FreeRadius con WPA+PEAP-TLS

¿Qué es AAA?

Authentication (Autenticación) Authorization (Autorización) Accounting (Registro)

Page 5: FreeRadius con WPA+PEAP-TLS

Authentication

Authentication (Autenticación): determina si un usuario tiene permiso para acceder a un determinado servicio de red del que quiere hacer uso. El proceso de autenticación se realiza mediante la presentación de una identidad y unos credenciales por parte del usuario que esta demandando el acceso. Un tipo habitual de credencial es el uso de una contraseña (password) que junto al nombre del usuario nos permite acceder a recursos determinados.

El método que usamos en nuestro proyecto es EAP Protegido (PEAP).

Page 6: FreeRadius con WPA+PEAP-TLS

Authorization

Authorization (Autorización): Se refiere a conceder servicios específicos (incluyendo la negación de servicio) a un determinado usuario, basándose para ello en su propia autenticación, los servicios que esta solicitando, y el estado actual del sistema. Los métodos actualmente soportados en un servidor radius son:

- Bases de datos LDAP

- Bases de datos SQL

- El uso de ficheros de configuración locales al servidor (/usr/local/etc/raddb/users), que ademas es el

que usamos nosotros.

Page 7: FreeRadius con WPA+PEAP-TLS

Accounting

Accounting (Registro):se refiere a realizar un registro del consumo de recursos que realizan los usuarios. El registro suele incluir aspectos como la identidad del usuario, la naturaleza del servicio prestado, y cuando empezó y terminó el uso de dicho servicio. Es muy interesante el uso del protocolo Radius cuando tenemos redes de dimensiones considerables sobre las que queremos proporcionar un servicio de acceso centralizado. Ejemplo: empresas que proporcionan acceso a Internet o grandes redes corporativas.

Page 8: FreeRadius con WPA+PEAP-TLS

Seguridad en tecnologías de red inalámbrica

La seguridad es un tema importante en las redes inalámbricas porque, al contrario que en una red cableada, a la que solo tiene acceso las personas que físicamente pueden conectarse, cualquier persona de la calle o pisos o edificios vecinos pueden conectarse a una red inalámbrica o ver el contenido de los paquetes que circulan por ella si esta no está convenientemente protegida.

Hay varios protocolos estándar que proporcionan seguridad en redes inalámbricas IEEE 802.1X, pero nosotros solo hemos usado WPA2.

Page 9: FreeRadius con WPA+PEAP-TLS

WPA2

Se basa en el nuevo estándar 802.11i, y el cambio mas significativo con respecto a WPA es que usa el protocolo de cifrado AES en lugar de RC4.

Page 10: FreeRadius con WPA+PEAP-TLS

Protected EAP (PEAP)

Otro concepto relacionado con la seguridad en redes inalámbricas es EAP (Extensible Authentication Protocol). EAP es un marco general de autenticación, y no un mecanismo de autenticación concreto. Proporciona algunas funciones comunes y un método para negociar el mecanismo de autenticación a usar. En este proyecto haremos uso del denominado EAP protegido (PEAP) para la autenticación de nuestro usuario en la red inalambrica. Como nuestro suplicante es una máquina con Windows XP, usaremos MSCHAPv2, la versión de PEAP empleada por Microsoft en este SO.

Page 11: FreeRadius con WPA+PEAP-TLS

Funcionamiento del Radius

El cliente radius envía credenciales de usuario e información de parámetros de conexión en forma de un mensaje radius al servidor. Este autentica la solicitud del cliente y envía de regreso un mensaje de respuesta. Los clientes radius también envían mensajes de cuentas a servidores radius.

Page 12: FreeRadius con WPA+PEAP-TLS

Tipos de mensajes RadiusPrimero el cliente le envía al servidor el mensaje:

Acces-Request: Enviado por un cliente radius para solicitar autenticación y autorización para conectarse a la red. Debe contener el usuario y contraseña.

Si todo va bien, entonces el servidor le reponde con: Access-Accept: Enviado por un servidor radius en respuesta a un

mensaje de Access-Request. Informa que la conexión está autenticada y autorizada y le envía la información de configuración para comenzar a

usar el servicio. Y si falla en el intento de conexión…

Access-Reject: enviado por un servidor radius en respuesta a un mensaje de Access-Request. Este mensaje informa al cliente radius que el intento de conexión ha sido rechazado.

Page 13: FreeRadius con WPA+PEAP-TLS

Accounting-Request: Enviado por un cliente radius para especificar información de cuenta para una conexión que fue aceptada.

Accounting-Response: Enviado por un servidor radius en respuesta a un mensaje de Accounting-Request. Este mensaje reconoce el procesamiento y recepción exitosa de un mensaje de Accounting-Response.

Existen otros mensajes, pero no los vamos a mencionar dado que no han aparecido en nuestro caso.

Page 14: FreeRadius con WPA+PEAP-TLS

Ejemplo de secuencia cuando un cliente se conecta a una red implementada con radius hasta que se desconecta:

1. El cliente envía su usuario/contraseña. Esta información es encriptada con una llave secreta y enviada en un access-request al servidor radius (Fase de autenticación).

2. Cuando la relacion usuario/contraseña es correcta, entonces el servidor envía un mensaje de aceptación, access-accept, con información extra (Fase de autorización).

3. El cliente ahora envía un mensaje de accounting-request (Start) con la información correspondiente a su cuenta y para indicar que el usuario está reconocido dentro de la red (Fase de accounting).

Page 15: FreeRadius con WPA+PEAP-TLS

4. El servidor radius responde con un mensaje accounting-response, cuando la información de la cuenta es almacenada.

5. Cuando el usuario ha sido identificado, este puede acceder a los servicios proporcionados. Finalmente cuando desee desconectarse, enviará un mensaje de acccounting-request (Stop).

6. El servidor radius responde con un mensaje de accounting-response

cuando la información de cuenta es almacenada.

Page 16: FreeRadius con WPA+PEAP-TLS

Instalación Antes de nada, mencionar lo que necesitamos:

Un ordenador con Linux que funcionará como servidor radius Un Acces Point – Router Un par de maquinas con Windows xp que funcionaran como clientes. Freeradius 1.1.2 (Usamos esta versión porque no nos ha dado tantos

problemas como otras mas recientes) Openssl (Para los certificados) PEAP-TLS

IMPORTANTE: Hay dos formas de instalar el freeradius. La primera y mas

recomendable es descargarlo de la pagina del fabricante. La segunda, y la

que nos ha dado muchos problemas (con las licencias de OpenSSL) es

instalandolo de los repositorios (no recomendable).

Page 17: FreeRadius con WPA+PEAP-TLS

Empezando a instalar

Antes de nada instalamos lo necesario de Open ssl:

apt-get install openssl libssl-dev Libpq-dev

Descargamos el freeradius:

wget http://freeradius.portal-to-web.de/old/freeradius-1.1.2.tar.gz

Lo descomprimimos:

tar xvfz freeradius-1.1.2.tar.gz

Page 18: FreeRadius con WPA+PEAP-TLS

Entramos en el directorio que nos ha descomprimido y con la opción configure le estamos diciendo que nos instale los módulos TLS y PEAP:

cd freeradius-1.1.2/./configure –without-rlm_perl –with-rlm_eap_peap –with-rlm_eap_tls

Una vez hecho esto, compilamos y si todo esta correcto instalamos:

make

make install

Y ya estaria el freeradius instalado.

Page 19: FreeRadius con WPA+PEAP-TLS

Explicación básica del freeradius (comandos, directorio…) El freeradius, cuando se instala, se aloja en el siguiente directorio:

/usr/local/etc/raddb

Aquí es donde encontramos los ficheros que necesitamos modificar:

radiusd.conf, clients.conf, eap.conf y users

Y también se encuentra el directorio donde van a ir los certificados:

/certs

Page 20: FreeRadius con WPA+PEAP-TLS

Comandos

Radius –X : Modo de depuración. Un consejo: ten siempre una Terminal ejecutando radiusd –X . Así podras ver lo que esta pasando en el freeradius.

radtest nombreUsuario contraseña ip puerto claveSecreta : Usado para hacer pruebas de usuario. Si te dice Acces-reject entonces no funciona. Si te dice Access-Accept, si que funciona.

radiusd start/restart/stop : Usado para iniciar/reiniciar/detener el servicio del freeradius.

OTROS COMANDOS QUE ME AYUDARON: ps –aux | grep radius : Para buscar el servicio del radius. kill -9 “pidDelRadius” : para matar el servicio.

Los dos comandos anteriores los pongo porque hay veces en que no funciona para el servicio, y para no tener que reiniciar la máquina es mejor matar el proceso.

Page 21: FreeRadius con WPA+PEAP-TLS

Para mirar los errores que puede dar el radius, usamos el “log” . Se encuentra en el siguiente directorio:

cd /usr/local/var/log/radius

Y para verlo usas un editor de unix como gedit, pico…

pico radius.log

Page 22: FreeRadius con WPA+PEAP-TLS

Configuración

Configuramos los ficheros:

Radiusd.conf Clients.conf: añadimos el cliente AP Users : añadimos los usuarios Eap.conf : Configuramos para que sea PEAP y le

indicamos la ruta de los certificados

Page 23: FreeRadius con WPA+PEAP-TLS

Configuración del AP

Simplemente tienes que entrar en la pagina de configuración del AP y en wireles security poner las opciones radius, clave WPA, metodo de cifrado TKIP y la ip del servidor y puerto donde instalaste el freeradius (en nuestro caso la máquina de ubuntu) .

Page 24: FreeRadius con WPA+PEAP-TLS

Configuración de los clientes de Windows XP

1- Vamos a propiedades de conexión de red inalámbrica

Page 25: FreeRadius con WPA+PEAP-TLS

2- Le damos a agregar

Page 26: FreeRadius con WPA+PEAP-TLS

3- Ponemos como esta en la imagen excepto en el nombre, que puedes poner el que quieras

Page 27: FreeRadius con WPA+PEAP-TLS

4- Ahora vamos a la pestaña “autenticación” y la dejamos igual que en la imagen tambien. Luego pinchamos en propiedades

Page 28: FreeRadius con WPA+PEAP-TLS

5- Ahora desmarcamos todas las opciones y donde pone “seleccione metodo de autenticación” elegimos “EAP-MSCHAP v2”

Page 29: FreeRadius con WPA+PEAP-TLS

6- Le damos a configurar y desmarcamos la casilla

Page 30: FreeRadius con WPA+PEAP-TLS

7- En la pestaña conexión también desmarcamos la casilla. Aceptamos todo y ya esta configurado

Page 31: FreeRadius con WPA+PEAP-TLS

8- Ahora cuando intentes conectarte a esa red te aparecería lo siguiente. Pones usuario y contraseña del radius y ya está.

Page 32: FreeRadius con WPA+PEAP-TLS

Creación de los certificados

Los creamos mediante OpenSSL.

Page 33: FreeRadius con WPA+PEAP-TLS

Problemas que hemos tenido

Con el freeradius de los repositorios oficiales: aparte de tener los ficheros distintos, tiene poblemas con las licencias de openssl. No recomiendo usarlo. Es mas comodo aunque cueste mas instalarlo la versión de la página oficial.

Poblemas con distros de Linux: En suse por ejemplo nos ha dado mas problemas que en ubuntu y en debian juntos.

Problema con la ip de establecida en radiusd.conf: este problema se da cuando usas el comand radiusd –i “unaIP” –p “unPuerto” . No es necesario usar este comando, si no te puede dar problemas diciendo “bind ip address”.

Problemas con los puertos: En ubuntu 8.04 tiene problema con los puertos del freeradius. Intentamos abrirlos con el iptables pero no funcionaba. En ubuntu 9.10 no hay ese problema.

Page 34: FreeRadius con WPA+PEAP-TLS

Problema al intentar construir un paquete .deb para instalar freeradius: No habia forma de construirlo. Daba errores.

Problema al intentar hacer make a la última versión del radius: decía que make se salía del directorio actual. Tuvimos que instalar una versión mas antigua (1.1.2).

Problema al intentar detener el servicio del freeradius: no se detenía. Hay que matar el proceso.

Problema al generar los certificados por defecto del radius: cuando estaba introduciendo los datos, al terminar daba error. Creaba el certificado igual pero no funcionaba.

Hemos probado freeradius en varias distros (ubuntu, suse, debian, freebsd, Windows…) y donde mejor nos ha funcionado es en ubuntu.

Cuanto queremos emitir los certificados a partir de los que trae el freeradius, que estan ubicados en ../raddb/certs. Nos termina dando un problema con la private key.

Page 35: FreeRadius con WPA+PEAP-TLS

FIN