.Qué es mysqlRadius
.Que no es mysqlRadius
.Audiencia
.Instalación de mysqlradiusd0.6-cistron-1.6.6.tar.gz
.Instalación de mysqlRadius
.Como Agregar un NAS (Network Access Server)
.Como Agregar un Usuario
.Como Testear el Funcionamiento de mysqlRadius y el Cistron RADIUS Server
.Proximamente
mysqlRadius es una aplicación web pensada para manejar desde uno a cientos del (muy usado) Cistron 1.6.6+ RADIUS server. La misma trabaja con una base de datos MySQL en la cual se lleva el control de todos los datos relevantes en cuanto a la configuración de los servidores RADIUS bajo su mando.
mysqlRadius se encarga de llevar el control y administrar los siguientes 5* archivos que pueden estar tanto en una maquina local como remota. Por ejemplo si el raddb esta en su sitio mysqlRadius por defecto los archivos serían los sigiuentes:
/usr/local/etc/raddb/users
/usr/local/etc/raddb/clients
/usr/local/etc/raddb/naslist
/usr/local/etc/raddb/naspasswd
/usr/local/etc/raddb/realms (*todavia no, recien en versiones 2.x)
Ademas soporta cualquier tipo de perfile (RADIUS profile) que Cistron radiusd soporte por medio de templates de perfiles (ver mysqlRadius.tProfile y mysqlRadius.tProfileName.) Estos templates pueden tener un valor default para todos los servidores o ser especificos para cada servidor y/o cada usuario (como tambien si son para CHAP o PAP.) Inclusive se puede usar creativamente como para implementar perfiles avanzados como:
Calling-Station-Id (identificacion de llamada junto al usuario y passwd) para autenticación.
Perfiles (profiles) especiales para RADIUS proxy servers para multiples realms....
*Actualmente solo 4 archivos. La version 2.0 sera el primer mysqlRadius en automatizar completamente un sistema de "RADIUS proxy servers."
No es un patch de un Cistron RADIUS server, ni depende de un servidor RADIUS que acceda directamente* a una base de datos MySQL .
La experiencia ha demostrado que es mejor tener archivos estáticos para controlar servidores en producción. Nuestras aplicaciones mysqlISP proveen de esta forma una mejor accesibilidad para la auditoria de los mismos, facilitan las secuencias de booteo y brindan un servicio de backup de archivos -los cuales hacen mas simples las migraciones tanto como la recuperación de datos cruciales ("mission critical data") ante una baja del sistema.
...
*La aplicación mysqlRadacct relacionada, con mysqlRadius, sí utiliza una versión alterada del Cistron RADIUS server 1.6.6 (ver abajo) para guardar los datos relacionados a la contabilidad en una base de datos central -o "mySQL cluster"- para "failover protection when using multiple backup RADIUS servers", nuestra versión del Cistron RADIUS también realiza SMTP-AFTER-AUTH para poder trabajar en conjunto con mysqlSendmail. También tenemos una versión modificada del respetado Qualcomm (tm) qpopper que realiza SMTP-AFTER-POP también en conjunto con nuestra aplicación mysqlSendmail.
Todo aquel que quiera proveer un sistema RADIUS de calidad de ISP. Y que sepa ingles...lol
Webconsole setup: You will need to have an httpd daemon running on a non standard port and restricted to access only from your authorized intranet workstations and used in a switched hub setting for some security. For correct ISP security the httpd should be SSL. If you don't know how to setup all this or do not even know what we are talking about, find someone who can do it for you. The good part is that it can be easily replicated across all your ISP servers and used by all your mysqlISP subsystem or standalone cgi's.
You will have to have some BASH shell knowledge (or learn it) and be able to do simple file edits with "vi" - or another easier to learn editor like "pico."
Not required for basic linux setups on, for example, RH 9 with a full developer install: But you should have at least some experience with tar and compiling tar.gz software distributions. And some understanding of linking, paths to libs and include files will help if you are trying to install on non linux systems.
Antes de instalar mysqlRadius es conveniente instalar un Cistron RADIUS server. mysqlRadius funciona con cualquier versión de Cistron RADIUS server, sin embargo, mysqlRadacct y mysqlSendmail, necesitan de una versión modificada por nosotros para poder funcionar a pleno. mysqlRadacct utiliza la versión modificada del Cistron RADIUS server para llevar el registro de la contabilidad del uso por los usuarios de sus cuentas -con reportes automaticos y manuales, como tambien provee la posibilidad de dar de baja automaticamente a usuarios que excedan su quota de uso mensual. Ademas provee un sistema de "data warehousing" de periodos contables en formato muy comprido y de facil acceso, y mysqlSendmail utiliza el mismo para realizar SMTP-AFTER-AUTH.
Lo primero que debe hacer es bajar el software de la pagina web de OpenISP (notar que la version 0.6 es usado aqui como un ejemplo, puede haber versiones mas nuevas. En general versiones nuevas serán anunciadas en www.freshmeat.net)
$wget http://openisp.net/mysqlRadius/mysqlradiusd0.6-cistron-1.6.6.tar.gzLuego deberá descomprimir y instalar el contenido del mismo:
$tar xzf mysqlradiusd0.6-cistron-1.6.6.tar.gzLuego deberá ir al directorio src dentro del directorio creado arriba:
$cd mysqlradiusd-cistron-1.6.6/src/Y compilar los archivos fuente del programa: (Si usted desea, editando el archivo src/conf.h puede definir algunos parámetros del programa a su gusto, como por ejemplo el directorio default del RADIUS server u otras opciones más avanzadas antes del "make.")
$makeFinalmente, deberá instalar los ejecutables así como los archivos de configuración y las man pages. Por default en nuestra distribución los binarios se instalan en /usr/local/bin y /usr/local/sbin asi como las man pages serán instaladas en /usr/local/man y los archivos de configuración en /usr/local/etc/raddb. Sin embargo estos path pueden ser seteados a gusto modificando en el archivo makefile las variables BINDIR, SBINDIR, MANDIR, RADIUS_DIR. (Por favor notar que el cambio de estos variables puede afectar la configuracion por defecto de otras partes del sistema asi que se recomienda que solo se haga si uno ya es experto en el tema.) Ejecutar el comando:
$make installOpcionalmente, si desea poder utilizar mysqlRadacct en conjunto con este RADIUS server, debeá verificar que el archivo raddb/sqlserver (en nuestra distro se instala por defecto en /usr/local/etc/raddb/sqlserver) este configurado correctamente como ejemplo:
server localhost login mysqlradacct password wsxedc acct_db mysqlradacct acct_table tRadacct doacct yes keepopen yesNotar que password, login y el server deberán estar seteados en concordancia con los valores definidos para los mismos en el archivo local.h de las fuentes de mysqlRadacct.
Bajar el software de la pagina de OpenISP (Notar que 1.4 es un ejemplo puede haber versiones nuevas en cualquier momento, pero en general anunciadas en www.freshmeat.net.)
$wget http://openisp.net/mysqlRadius/mysqlRadius1.4.tar.gzDescomprimir y instalar el contenido del mismo:
$tar xzf mysqlRadius1.4.tar.gzSetear las variables de entorno ISMROOT y CGIDIR. ISMROOT deberá contener el path al directorio donde se encuentran la fuentes de mysqlRadius. Supongamos que las mismas están en /home/openisp/mysqlRadius entonces ISMROOT será igual a /home/openisp. CGIDIR deberá contener el path a el directorio en donde se instalará el ejecutable mysqlRadius.cgi. Este directorio deberá estar seteado en los archivos de configuración del "web server webconsole" con permisos para ejecutar cgi.
Es necesario finalizar el path contenido en la variable CGIDIR con "/".Por ejemplo:
Entorno BASH
$export ISMROOT=/home/openisp $export CGIDIR=/home/openisp/cgi-bin/Entorno csh o tcsh
$setenv ISMROOT /home/openisp $setenv CGIDIR /home/openisp/cgi-bin/Típicas lineas de configuración del servidor http del webconsole (Ejemplo en el httpd.conf que corresponda):
ScriptAlias /cgi-bin/ "/home/openisp/webconsole/../cgi-bin/" <Directory "/home/openisp/webconsole/../cgi-bin/"> AllowOverride None Options FollowSymLinks Order allow,deny Allow from 192.168.0.226 Allow from 192.168.0.225 Allow from 192.168.0.222 </Directory>El comando Allow from <ip> especifica desde cuales IPs se podrá utilizar la interfaz mysqlRadius -ver tema de seguridad interna y externa.
Verificar que las variables "#DEFINE" del archivo local.h estén configuradas correctamente:
.DBIP: La dirección IP del servidor donde se encuentra la base de datos. NULL para localhost. .DBNAME: Nombre de la base de datos, usualmente "mysqlradius". .DBLOGIN: Nombre del usuario usado para acceder a la base de datos, usualmente "mysqlradius". .DBPASSWD: Password utilizado por DBLOGIN para acceder a la base de datos.Ó de lo contrario setearlas manualmente editando el archivo local.h manualmente con algún editor de texto.
Compilar el programa utilizando el comando make dentro del directorio que contiene la distribución:
$cd mysqlRadius/makeInstalar los archivos ejecutables:
$make installLuego deberá inicializar la base de datos. Para esto lo primero que deberá hacer es verificar que el "daemon" de la base de datos (mysqld) tenga acceso al directorio mysqlRadius/data. Verificar también el acceso a los directorios que contienen al mismo, supongamos que el directorio data se encuentra en /home/openisp/mysqlRadius/data entonces los permisos de los demás directorios deberán lucir más o menos así:
drwxr-xr-x 7 root root 4096 Aug 20 18:18 /home drwx-----x 12 openisp root 4096 Oct 3 15:58 /home/openisp drwxr-xr-x 3 openisp openisp 4096 Oct 3 15:58 /home/openisp/mysqlRadius drwxrwxr-x 2 openisp openisp 4096 Oct 3 16:02 /home/openisp/mysqlRadius/dataLos archivos contenidos en el directorio data deberán poder ser leídos por el mysqld (usualmente corriendo bajo el usuario mysql.) Están seteados por default así.
Una vez hecho esto deberá correr el comando: mysqlRadius.cgi Initialize <mysq root passwd>, donde <mysq root passwd> es el password del usuario root de la base de datos MySQL.
$/home/openisp/cgi-bin/mysqlRadius.cgi Initialize wsxedcAhora debemos empezar a configurar nuestra aplicación para que funcione junto con el servidor RADIUS Cistron.
mysqlRadius es una poderosa herramienta de ISP pensada para manejar desde uno a cientos de servidores RADIUS, implementar replicación de los mismos, asi como tareas de backup. Por tanto habrá possiblemente configuraciones individuales para cada servidor como globales que afecten a todos.
Lo primero que debemos hacer es agregar el nombre (o el nombre con el cual lo identificaremos) del servidor RADIUS para el cual accederemos a la aplicación atravez de nuestro brwser de internet -se recomienda solo usar los de www.mozilla.org para las applicaciones mysqlISP y con una pantalla de 17 y resolucion minima de 1024x768. Y una vez logeados, a la tabla tServer (Ver menu superior derecho.) Para ello iremos al panel tServer y crearemos un nuevo registro en el mismo (para nuestro ejemplo el servidor será localhost). Notar que ya viene todo esto preseteado, pero igual sirve como ejemplo.
Ir al panel tServer, presionar el botón [new], setear al parámetro cLabel con el nombre por el cual identificaremos al servidor que estamos configurando, y luego presionar el botón [create new record].
Luego configuraremos las opciones principales para este servidor en la table tConfiguration.
Ir al panel tConfiguration, en el mismo setearemos las siguientes variables:
.cRaddbDir contiene el path al directorio raddb donde son guardados los archivos de configuración del servidor Cistron radiusd. .cRadiusdPath contiene el path al comando que ejecuta el servidor RADIUS (usualmente radiusd). .cRadiusdArgs contiene los argumentos con los cuales será ejecutado el servidor RADIUS. .cRadiusdPID contiene el path archivo que guarda el PID del servidor. .cRadiusdUID contiene el UID (user ID) con el cual se ejecutara el servidor RADIUS. .cCryptMethod especifica el método de encripción utilizado para guardar los passwords de los usuarios. los métodos de encripción DES y MD5 son soportados actualmente.Tener en cuenta que estas variables actúan globalmente sobre todos los servidores configurados, para especificar una de estas variables para un servidor determinado debemos concatenar al nombre de la misma el sufijo -<tServer.cLabel> a cada de las mismas. Donde <tServer.cLabel> será el nombre con el cual identificamos a nuestro servidor en la tabla tServer.
Veamos como sería esto para el servidor localhost de nuestro ejemplo:
Ir al panel tConfiguration y presionar el botón [new]. Setear el campo cLabel con el nombre cRaddbDir-localhost y el campo cValue con el path /usr/local/etc/raddb. Presionar el botón [create new record].
Ir al panel tConfiguration y presionar el botón [new]. Setear el campo cLabel con el nombre cRadiusdPath-localhost y el campo cValue con el path /usr/local/sbin/radiusd. Presionar el botón [create new record].
Ir al panel tConfiguration y presionar el botón [new]. Setear el campo cLabel con el nombre cRadiusdArgs-localhost y el campo cValue con los siguientes datos: -D -y -i 192.168.0.226 -p 1645 -l /home/openisp/logs. Donde 192.168.0.226 será el Ip y 1645 el puerto donde escuchara nuestro servidor RADIUS. En el archivo /home/openisp/logs se registraran los logs. Tener en cuenta de que exista este archivo y que el usuario con el que corre el servidor tenga acceso al mismo. Presionar el botón [create new record].
Ir al panel tConfiguration y presionar el botón [new]. Setear el campo cLabel con el nombre cRadiusdUID-localhost y el campo cValue con el el UID del usuario con el cual correrá el server. Tener en cuenta de que el usuario debe existir. Presionar el botón [create new record].
Configurar los demás parámetros de manera similar.
Una vez configurados estos parámetros se debe poner en funcionamiento el servidor RADIUS mediante el modo comando de linea mysqlRadius.cgi
$/cgi-bin/mysqlRadius.cgi Start localhostPor ultimo, antes de comenzar a utilizar el mismo, sólo faltan configurar las entradas al archivo crontab que se encargarán de realizar el backup de los datos, y que ejecutarán las tareas guardadas en la tabla tJob, esenciales para el funcionamiento correcto del sistema.
Primero ocupémonos de la entrada encargada de ejecutar las tareas de la cola de trabajos (tareas). Estas tareas deberán ser ejecutadas con un usuario que posea permiso para modificar los archivos de configuración del servidor RADIUS. Para editar el archivo crontab utilizaremos el comando crontab -e.
$crontab -eLuego agregaremos la siguiente linea en el mismo:
*/1 * * * * /home/openisp/cgi-bin/mysqlRadius.cgi ProcessJobQueue localhost >>/home/openisp/logs/mysqlRadius.log 2>&1;Esta linea correrá el comando mysqlRadius.cgi ProcessJobQueue <tServer.cLabel> cada un minuto, para especificar un rango de tiempo distinto ver man 5 crontab. Los mensajes de log del comando serán guardados en el archivo /home/openisp/logs/mysqlRadius.log.
Luego agregaremos la entrada encargada de generar el backup de los datos.
20 4 * * * export ISMROOT=/home/openisp;/cgi-bin/mysqlRadius.cgi Backup <mysql root passwd> > /dev/nullDonde <mysql root passwd> deberá ser el passwd del usuario root de la base de datos mysql.Este comando hará un backup de los datos todos los días a las 4:20 horas. Los datos serán guardados en el directorio /home/openisp/mysqlRadius/data. La variable de entorno ISMROOT le indica dicho comportamiento.
Ahora ya está listo para empezar a utilizar mysqlRadius.
Para poder empezar a utilizar nuestro servidor RADIUS lo primero que debemos hacer es configurar la lista de NAS que pueden acceder al mismo. Si un NAS desea acceder al mismo y no esta agregado a la configuración del mismo no podrá hacerlo.
Para agregar un NAS a la configuración de nuestro RADIUS server ir al panel tNAS y presionar el botón [new].Luego deberán configurarse los siguientes parámetros:
.cLabel: el nombre por el cual identificaremos al NAS.
.cKey: en este campo se guarda el parámetro llamado secret, usado para encriptar passwdords entre el NAS y el servidor.
Ver en man clients el parámetro secret para mas detalles.
.cType: en este campo se guarda el tipo del NAS identificado. Ver el campo NAStype en man naslist.
.cIP: dirección IP del NAS.
.cLogin y cPasswd: losvalores guardados en el archivo naspasswd.
Para configurar nuestro host como unNAS para poder testear nuestro RADIUS server estos parámetro deberían configurarse de la siguiente manera:
.cLabel: localhost
.cKey: testing123
.cType: radtest
.cIP:192.168.0.1 #nuestra dirección ip, en nuestro ejemplo.
.cLogin y cPasswd: dejar vacíos estos campos.
Luego debe presionarse el botón [create new record]. Una vez hecho esto podemos o bien, esperar a que la tarea agregada a la tabla tJob sea ejecutada automáticamente por el comando mysqlRadius ProcesJobQueue que en nuestro ejemplo fue configurado para correr cada un minuto, o bien presionar los botones [make local clients file] y [make local naslist file] y luego [Reload Radius Files] en el panel tUser si se trata de el servidor local, en ese caso serán automáticamente ejecutadas las tareas necesarias para agregar el NAS a nuestra lista.
Agregar un NAS a la configuración de nuestro server actualiza los siguientes archivos:
raddb/naslist raddb/naspasswd raddb/clients
Notar que el sector izquierdo del panel tNAS de mysqlRadius uno puede setear a que server uno esta agregando el NAS indicado. También puede agregar un NAS a mas de un server mediante el botón [add server] que se encuentra en el sector izquierdo debajo de la herramienta de selección de server.
.Crear un nuevo usuario en el panel tUser oprimiendo el botón [new].
.Setear el parámetro cLogin con login de usuario.
.Setear el parámetro cEnterPasswd con el passwdord del
usuario. .Elegir un profile adecuado para el mismo en el campo uProfileName
.Asegurarse de que el profile existe y es correcto para las características del usuario asi como.
.Setear el parámetro uSimulUse, un valor de 1 es recomendado.
.Setear el parámetro cIP con el IP estatico asignado al usuario. Para expertos! Dejar en blanco cIP (lo mas recomendado).
.Presionar el botón [create new record].
.Asegurarse de haberlo asignado al server correcto. En caso contrario utilizar las herramientas del panel de la izquierda para conseguir esto. ([add server] , [remove server]).
.Hacer click en el panel tUser en el botón [Make Local Users] y en el panel tNAS los botones [Make Local Clients File] y [Make Local NasList File] y luego [Reload Radius Files] en caso de estar configurando un server local o de lo contrario esperar que la función mysqlRadius RunJobQueue ejecute las tareas adecuadas. .Utilizar el comando radtest o la aplicación nph-radtest.cgi para verificar que el usuario haya sido correctamente agregado a la configuración del RADIUS server.
.Verificar que este todo en orden en el logfile (tail -f etc...)
Para checkear el funcionamiento de nuestro RADIUS server utilizaremos el comando radtest. Su uso es muy simple:
Usage: radtest user passwd radius-server nas-port-id secret [ppphint] [nasname]
Ver man radtest para mas datos.
Por tanto supongamos que agregamos un usuario tester cuyo passwd es tester_passwd a nuestro server y queremos comprobar si el mismo ha sido realmente incluido en nustro server. Entonce podemos ejecutar el siguiente comando desde la linea de comandos para comprobar si realmente el mismo puede logearse en nuestro server:
$ radtest tester tester_passwd 192.168.0.226:1645 4 testing123Sending request to server 192.168.0.226, port 1645. radrecv: Packet from host 192.168.0.226 code=2, id=149, length=56 Service-Type = Framed-User Framed-Protocol = PPP Framed-IP-Address = 255.255.255.254 Framed-IP-Netmask = 255.255.255.255 Framed-Routing = None Framed-MTU = 1500En caso de que el usuario no exista en nuestro RADIUS server recibiremos un mensaje similar al siguiente:Sending request to server 192.168.0.226, port 1645. radrecv: Packet from host 192.168.0.226 code=3, id=161, length=20 Access denied.Qué es lo que debemos hacer en dicho caso:
. Verificar el logfile del RADIUS server. (/home/openisp/logs/radius.log)
. Verificar el logfile de mysqlRadius. (/home/openisp/logs/mysqlRadius.log)
. Comprobar que el host desde el cual ejecutamos el comando radtest este gregado como NAS
a nuestro server. Chequear los archivos raddb/naslist y /raddb/clients para comprobar esto.
. Chequer que el usuario exista en el archivo raddb/users.
. Chequear que el servidor RADIUS este levantado (ps -ef |grep radiusd)
. Reiniciar el servidor RADIUS para que vuelva a leer los archivos de configuracion.
. No desesperar, replantearse calmadamente cual puede haber sido el error, y relajarse, que poniendose nervioso no conseguira nada.
Otra forma de comprobar el funcionamiento del mismo es utilizando el scritp cgi nph-radtest que viene junto con mysqlRadius. El mismo se instala en el mismo directorio que mysqlRadius (CGIDIR) y puede ser accedido via web. Para poder utilizarlo tan solo deben hacerse unas minimas modificaciones al mismo, editandolo para poder setear las siguientes variables con la informacion adecuada:
. SERVER1= direccion IP del server
. SERVER1PORT= puerto en el cual escucha radiusd
. TITLE1= un titulo para la pagina (opcional)
En nuestro ejemplo estas variables deberian quedar seteadas de la siguiente manera:
SERVER1= "192.168.0.226" SERVER1PORT= "1645"
TITLE1= "Test radius server on host 192.168.0.226"Para utilizar este script se debe ingrsar el la barra d direcciones del browser la direccion en la cual ha sido instalado el script y luego itroducir el simbolo ? seguido por el nombre de usuario a chequear seguido del simbolo + seguido del password del mismo, en nuestro ejemplo quedaria asi:
http://192.168.0.226/cgi-bin/nph-radtest.cgi?tester+tester_passwd
En proximas versiones expanderemos sobre el tema complejo de los perfiles ("profiles") de RADIUS. Como tambien arreglar errores de ortografia y estilo como conceptuales. Mandenos sus opiniones al respecto, desde ya gracias!
Divertanse y no tomen a las computadoras (o ordenadores en España) demasidadas en serio. Son sola maquinas bastante tontas que solo hacen cosas si les decis de la forma exacta... :)