Cómo configurar Freeradius con MySQL en CentOS 5

———————————————————————————–

RADIUS (Remote Authentication Dial-In User Service) es un protocolo de autenticación, autorización y manejo de cuentas de usuario originalmente desarrollado por Livingston Enterprises y publicado en 1997 como los RFC 2058 y 2059. Es utilizado para administrar el acceso remoto y la movilidad IP, como ocurre en servicios de acceso por modem, DSL, servicios inalámbricos 802.11 o servicios de VoIP (Voice over IP o Voz sobre IP). Este protocolo trabaja a través del puerto 1812 por UDP.

La autenticación gestionada por este protocolo se realiza a través del ingreso de un nombre de usuario y una clave de acceso. Esta información es procesada por un dispositivo NAS (Network Access Server) a través de PPP (Point-to-Point Protocol o Protocolo Punto-a-Punto) siendo posteriormente validada por un servidor RADIUS a través del protocolo correspondiente valiéndose de diversos esquemas de autenticación, como PAP (Password Authentication Protocol o Protocolo de Autenticación de Clave de acceso), CHAP (Challenge-Handshake Authentication Protocol) o EAP (Extensible Authentication Protocol), y permitiendo el acceso al sistema.

Freeradius.

Proyecto iniciado en 1999 por Alan DeKok y Miquel van Smoorenburg (quien colaboró anteriormente en el desarrollo de Cistron RADIUS), es una alternativa libre hacia otros servidores RADIUS, siendo uno de los más completos y versátiles gracias a la variedad de módulos que le componenen. Puede operar tanto en sistemas con recursos limitados así como sistemas atendiendo millones de usuarios.

Freeradius inició como un proyecto de servidor RADIUS que permitiera una mayor colaboración de la comunidad y que pudiera cubrir las necesidades que otros servidores RADIUS no podían. Actualmente incluye soporte para LDAP, SQL y otras bases de datos, así como EAP, EAP-TTLS y PEAP. Actualmente incluye soporte para todos los protocolos comunes de autenticación y bases de datos.

Daloradius Es una avanzada aplicación HTTP que sirve de sistema de administración para RADIUS, y está diseñada para ser utilizada para administrar hotspots (puntos calientes, es decir zona de cobertura Wi-Fi, en el que un punto de acceso o varios proveen servicios de red a través de un Proveedor de Servicios de Internet Inalámbrico o WISP) y uso general para la autenticación de Proveedores de Acceso a Internet (ISP). Incluye gestión de usuarios, reportes gráficos, contabilidad, motor de cobranza e integración con GoogleMaps para Geolocalización.

Procedimientos

———————–

Instale los paquetes necesarios:

yum -y install freeradius2 freeradius2-mysql freeradius2-utils
yum -y install mysql mysql-server

Generar los certificados predeterminados ejecutando el mandato radiusd con la opción -X:

radiusd -X

Lo anterior iniciará el servicio radiusd e iniciará la generación de los certificados. Cuando el diálogo lo pida, definir los datos de país, estado, nombre del anfitrión y cuenta de correo del administrador. Al concluir pulsar CTRL-C para terminar el servicio y continuar configuración.

Inicie el servicio MySQL:

service mysqld start

Añada el servicio MySQL al arranque del sistema:

service mysqld on

Asigne clave de acceso al usuario root de MySQL:

mysqladmin -uroot password ’123qwe’

Genere una nueva base de datos denominada radius:

mysqladmin -uroot -p123qwe create radius

Acceda al intérprete de mandatos de MySQL:

mysql -uroot -p123qwe

Designe el usuario y clava de acceso para acceder a la base de datos recién creada:

GRANT all ON radius.* TO radius@localhost IDENTIFIED BY ’123qwe’;

Salga de MySQL:

exit;

Utilizando el usuario radius, o el que haya designado para utilizar la base de datos recién creada, pueble la base de datos que acaba de crear con los esquemas incluidos con Freeradius:

mysql -uradius -p123qwe radius < /etc/raddb/sql/mysql/cui.sqlmysql -uradius -p123qwe radius < /etc/raddb/sql/mysql/ippool.sqlmysql -uradius -p123qwe radius < /etc/raddb/sql/mysql/nas.sqlmysql -uradius -p123qwe radius < /etc/raddb/sql/mysql/schema.sql

mysql -uradius -p123qwe radius < /etc/raddb/sql/mysql/wimax.sql

Edite el archivo /etc/raddb/radiusd.conf:

vim /etc/raddb/radiusd.conf

Descomente la línea que dice $INCLUDE sql.conf, lo cual se localiza aproximadamente alrededor de la línea 801:

        $INCLUDE sql.conf

Edite el archivo /etc/raddb/sql.conf:

vim /etc/raddb/sql.conf

Definir los valores para acceder a la base de datos, lo cual se localiza aproximadamente alrededor de la línea 35:

        # Connection info:server = “localhost”#port = 3306login = “radius”

password = “123qwe”

Descomente el parámetro readclients con valor yes, lo cual se localiza aproximadamente alrededor de la línea 100:

readclients = yes

Edite el archivo /etc/raddb/sites-enabled/default:

vim /etc/raddb/sites-enabled/default

Descomente en la sección authorize, lo cual se localiza aproximadamente alrededor de la línea 159:

        sql

Descomentar en la sección accounting, lo cual se localiza aproximadamente alrededor de la línea 365:

        sql

Reegrese al símbolo de sistema y acceda a MySQL para dar de alta un usuario para probar:

mysql -uradius -p123qwe radius

Desde el símbolo de sistema de MySQL, ejecute lo siguiente para dar de alta un usuario de pruebas (fulano) con una clave de acceso (123qwe en el ejemplo):

INSERT INTO radcheck (username, attribute, value) VALUES (‘fulano’, ‘Password’, ’123qwe’);

Lo anterior equivale a añadir fulano Cleartext-Password := “123qwe” en el archivo /etc/raddb/users.

Verifique que el usuario se dio de alta correctamente:

select * from radcheck where username=’fulano’;

Debe regresar algo similar a los siguiente:

+—-+———-+———–+—-+——–+| id | username | attribute | op | value  |+—-+———-+———–+—-+——–+|  6 | fulano   | Password  | == | 123qwe |

+—-+———-+———–+—-+——–+

1 row in set (0.00 sec)

Salga de mysql:

exit;

Inicie el servicio radiusd:

service radiusd start

Añada el servicio radiusd a los servicios de arranque del sistema:

chkconfig radiusd on

Verifique que el servicio puede autenticar a través de MySQL:

radtest fulano 123qwe localhost 1812 testing123

Lo anterior debe devolver algo similar como lo siguiente:

Sending Access-Request of id 222 to 127.0.0.1 port 1812User-Name = “fulano”User-Password = “123qwe”NAS-IP-Address = 127.0.0.1

NAS-Port = 1812

rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=222, length=20

A partir de este punto, solo podrá autenticar usuarios de manera local. Para poder conectar el punto de acceso hacia el servidor Freeradius, vuelva a conectarse MySQL:

mysql -uradius -p123qwe radius

Ejecute lo siguiente, definiendo la dirección IP del punto de acceso, nombre corto, tipo de NAS (other, cisco, livingston, computon, max40xx, multitech, natserver, pathras, patton, portslave, tc o usrhiper). Si utiliza un pinto de acceso casero, defina el tipo other.

INSERT INTO nas (nasname, shortname, type, secret) VALUES (‘192.168.0.1‘, ‘Mi-Ruteador‘, ‘other‘, ‘123qwe‘);

Para verificar, ejecute desde el símbolo de sistema de MySQL lo siguiente:

select * from nas where shortname=’Mi-Ruteador’;

Lo anterior debe regresar algo similar a lo siguiente::

+—-+—————+———–+——-+——-+——–+———–+—————+| id | nasname       | shortname | type  | ports | secret | community | description   |+—-+—————+———–+——-+——-+——–+———–+—————+|  3 | 192.168.0.1   | WRT54G    | other |  NULL | 123qwe | NULL      | RADIUS Client |

+—-+—————+———–+——-+——-+——–+———–+—————+

1 row in set (0.00 sec)

Lo anterior equivale a editar el archivo /etc/raddb/clients.conf y añadir la dirección IP del punto de acceso, una clave de acceso, nombre corto y tipo de NAS como other.

client 192.168.0.1{secret = cualquier-clave-de-accesoshortname = WRT54Gnastype = other

}

Para que surta efecto el cambio, hay que reiniciar el servicio radiusd:

service radiusd restart

Para añadir otro punto de acceso, solo basta repetir las línea con los datos que correspondan:

INSERT INTO nas (nasname, shortname, type, secret) VALUES (‘192.168.0.254‘, ‘Otro-Ruteador‘, ‘other‘, ‘123qwe‘);

Para realizar pruebas de conectividad remota, añada un equipo siguiendo el procedimiento anterior, y desde este equipo ejecute el mandato radtest (incluido en el paquete freeradius2-utils, si se utiliza CentOS 5 o Red Hat Enterprise Linux 5, o bien freeradius-utils, si se utiliza una versiñón reciente de Fedora) de la siguiente forma, donde x.x.x.x corresponde a la dirección IP del servidor Freeradius:

radtest fulano 123qwe x.x.x.x 1812 123qwe

Lo anterior debería devolver algo similar a lo siguiente.

Sending Access-Request of id 225 to x.x.x.xport 1812User-Name = “fulano”User-Password = “123qwe”NAS-IP-Address = 127.0.0.1

NAS-Port = 1812

rad_recv: Access-Accept packet from host x.x.x.x port 1812, id=225, length=20

Instalar Daloradius para administración a través de HTTP.

Se requiere instalar Apache, PHP y sus ligaduras para MySQL, la biblioteca GD y Pear-DB:

yum -y install httpd php php-mysql php-gd php-pear php-pear-DB

Inicie el servicio httpd:

service httpd start

Añada el servicio httpd a los servicios de arranque del sistema:

chkconfig httpd on

Cambie al directorio /var/www/:

cd /var/www

Descargue desde sourceforge.net/projects/daloradius el archivo correspondiente a la versión más reciente de Daloradius:

Descomprima el archivo descargado:

tar zxvf daloradius-0.9-8.tar.gz

Cambie los permisos de todo el contenido del directorio recién descomprimido para que pertenezcan al usuario y grupo apache:

chown -R apache:apache daloradius-0.9-8

Cambie al directorio daloradius-0.9-8:

cd daloradius-0.9-8

cargue las tablas de Daloradius en la base de datos utilizada por Freeradius.

mysql -uradius -p123qwe < contrib/db/mysql-daloradius.sql

Edite el archivo library/daloradius.conf.php:

vim library/daloradius.conf.php

Edite los valores correspondientes a los necesarios para la conexión ala base de datos utilizada por Freeradius.

$configValues['CONFIG_DB_HOST'] = ’127.0.0.1′;$configValues['CONFIG_DB_USER'] = ‘radius’;$configValues['CONFIG_DB_PASS'] = ’123qwe’;$configValues['CONFIG_DB_NAME'] = ‘radius’;

Genere un nuevo archivo denominado /etc/httpd/conf.d/daloradius.conf:

vim /etc/httpd/conf.d/daloradius.conf

Añada el siguiente contenido, donde x.x.x.x (ejemplo: 192.168.0.2) corresponde al al dirección IP del sistema desde el cual se realizará la administración remota de Daloradius:

Alias /daloradius “/var/www/daloradius-0.9-8/”Options Noneorder deny,allowdeny from all

allow from 127.0.0.1

allow from x.x.x.x

Reinicie el servicio httpd:

service httpd restart

Acceda con cualquier navegador moderno hacia http://direción-ip-servidor/radius/. Ingrese con el usuario Administrator y la clave de acceso radius. Desde esta interfaz podrá añadir y administrar las cuentas de usuarios y administrar y añadir los puntos de acceso.

Configuracion de Red en un Cliente Windows XP

Una vez que ya hemos configurado el servidor RADIUS y el Access Point nos queda configurar un cliente con tarjeta inalámbrica. Importante destacar que para esta configuración necesitamos, para el caso de Windows XP tener el Service Pack 2. Otros sistemas operativos tiene soporte nativo.

Para configurar nuestra conexión inalámbrica debemos hacer los siguientes cambios en su configuración:

  1.  Abrir las propiedades de la conexión inalámbrica y seleccionar Redes Inalámbricas.
  2.  Configurar el mecanismo de autenticación de red y el tipo de encriptación.
  3. El tipo de EAP a utilizar.
  4. Deshabilitar la validación del certificado del servidor y seleccionar el método de autenticación para EAP.
  5. Deshabilitar utilizar el usuario y clave de windows.
  6. Seleccionar la red radius.
  7. Windows no indicará que hagamos click sobre el mensaje para que ingresemos nuestras credenciales.
  8. En User name y Password ingresamos test.
  9. Esperamos a quedar conectados.

PASO 1

PASO2

PASO3

PASO4

PASO5

PASO6

PASO7

PASO8

PASO9

PASO10

VIDEO TUTORIAL


REFERENCIAS DE DOCUMENTOS A CONSULTAR

———————————————————————–

Documento ==>Radius

Documento==> Radisu_Wifi_IAS_WPA