Download - Free radius coovachilli y daloradius

Transcript
Page 1: Free radius  coovachilli y daloradius

Área de la Energía, las Industrias y los Recursos

Naturales No Renovables

“TESIS PREVIA A LA OBTENCIÓN

DEL TÍTULO EN INGENIERO EN

SISTEMAS”

AUTORES:

Fabricio Alejandro Flores Gallardo

Lisset Alexandra Neyra Romero

DIRECTOR:

Ing. Juan Manuel Galindo Vera

Loja-Ecuador

2012

Page 2: Free radius  coovachilli y daloradius

2

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

MANUAL TÉCNICO

1. ÍNDICE GENERAL

1. ÍNDICE GENERAL ........................................................................................ 2

2. INDICE DE FIGURAS................................................................................... 4

3. INTRODUCCIÓN........................................................................................... 5

4. ¿A QUIÉN VA DIRIGIDO EL MANUAL? ................................................... 5

5. CONSIDERACIONES PREVIAS ................................................................ 5

6. REQUERIMIENTOS DEL SISTEMA .......................................................... 5

7. CONFIGURACIONES PREVIAS ................................................................ 6

7.1. Instalación de paquetes ............................................................................ 6

7.2. Configuración de interfaces de red ......................................................... 9

7.3. Configuración del ip_forward ................................................................. 10

7.4. Activación del modo tun .......................................................................... 11

8. CONFIGURACIÓN DEL SERVIDOR ....................................................... 11

8.1. FreeRADIUS ............................................................................................. 12

8.1.1. Instalación de paquetes de FreeRADIUS ........................................ 12

8.1.2. Configuración de la base de datos .................................................... 12

8.1.3. Configuración de la conexión con la base de datos ....................... 14

8.1.4. Configuración de la Autorización y Contabilidad ............................. 15

8.1.5. Conexión con el web services del S.G.A .......................................... 16

8.1.6. Configuración del cliente localhost .................................................... 17

8.1.7. Arrancando FreeRADIUS .................................................................... 18

8.2. Coovachilli ................................................................................................. 20

8.2.1. Instalación .............................................................................................. 20

8.2.2. Configuración del archivo principal de CoovaChilli ......................... 20

8.2.3. Configuración del portal cautivo ......................................................... 23

8.2.4. Archivo hotspotlogin.php ..................................................................... 24

Page 3: Free radius  coovachilli y daloradius

3

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

8.2.5. Creación del archivo ipup.sh .............................................................. 35

8.2.6. Generación de certificados SSL apache2 ....................................... 38

8.2.7. Creación de host virtual ....................................................................... 39

8.3. daloRADIUS .............................................................................................. 43

8.3.1. Instalación .............................................................................................. 43

8.3.2. Configuración ........................................................................................ 44

8.4. Errores Comunes ..................................................................................... 46

8.4.1. Error al crear el directorio /var/log/freeradius/radacct .................... 46

8.4.2. Error de reinicio de servicio FreeRADIUS ....................................... 47

8.4.3. Error al leer los logs de daloRADIUS ................................................ 48

Page 4: Free radius  coovachilli y daloradius

4

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

2. INDICE DE FIGURAS

Figura 1. Taskel ............................................................................... 7

Figura 2. Introducir Contraseña MySQL para el usuario root ........... 8

Figura 3. Ventana de configuración de certificado SSL ................. 39

Figura 4. Dirección de Ingreso con IP ........................................... 45

Figura 5. Dirección de Ingreso con dominio .................................. 45

Figura 6. Ventana de Logeo .......................................................... 46

Figura 7. Error al levantar el servicio FreeRADIUS ....................... 47

Figura 8. Archivo rc.local ............................................................... 48

Page 5: Free radius  coovachilli y daloradius

5

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

3. INTRODUCCIÓN

El presente manual técnico tiene como objetivo fundamental

presentar de una manera detallada y concreta los pasos a seguir

para poder configurar adecuadamente el servidor RADIUS con un

portal cautivo para la Universidad Nacional de Loja.

4. ¿A QUIÉN VA DIRIGIDO EL MANUAL?

El manual va dirigido a los administradores de red de la Unidad de

Telecomunicaciones e Información de la Universidad Nacional de

Loja. Además se plantea como una solución para personas que

deseen implementar una solución similar en cualquier otro ámbito.

5. CONSIDERACIONES PREVIAS

Para configurar adecuadamente el servidor se debe tomar en

cuenta que primeramente se debe tener ciertas consideraciones

como:

Conocimientos previos en Linux Ubuntu Server (Instalación y

Configuración)

Conocimientos previos de networking (redes, NAT, iptables)

6. REQUERIMIENTOS DEL SISTEMA

Para la instalación y configuración del servidor RADIUS con un

portal cautivo para la Universidad Nacional de Loja es necesario

ciertos requerimientos importantes tanto en hardware como en

software.

Tomando en cuenta el estudio realizado durante el desarrollo del

presente proyecto se ha considerado que los requerimientos

Page 6: Free radius  coovachilli y daloradius

6

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

mínimos para el correcto funcionamiento del servidor son los

siguientes:

Hardware:

Procesador: Intel Core2Duo CPU E7500 @ 2.93 GHz x 2

2 GB de Memoria RAM

320 GB de Disco Duro

Dos tarjetas de red Ethernet

Software:

Ubuntu Server 12.04

FreeRADIUS versión 2.1.10

CoovaChilli versión 1.2.6

daloRADIUS versión 0.9.9

7. CONFIGURACIONES PREVIAS

Para la configuración adecuada del servidor es necesario realizar

primeramente unas configuraciones al sistema operativo.

7.1. Instalación de paquetes

Luego de la instalación del sistema operativo lo primero que se

debe hacer es actualizar el listado de paquetes, lo que se realiza

con el siguiente comando.

$ sudo apt-get update

Posteriormente procedemos a instalar tasksel, que es un sistema

de instalación de paquetes por consola. Tasksel agrupa los

Page 7: Free radius  coovachilli y daloradius

7

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

paquetes de software por tareas y ofrece un modo sencillo de

instalar todos los paquetes que son necesarios para dicha tarea.

Se Instala tasksel con el siguiente comando:

$ sudo apt-get install tasksel

Ahora se ejecuta Tasksel:

$ sudo tasksel

A continuación se presentará dentro del terminal una pantalla con

varios paquetes de software, en donde se va a seleccionar los

paquetes que interesan: LAMP server y OpenSSH server.

Figura 1. Taskel

Tasksel se encargará de descargar todos los paquetes y

dependencias tanto del LAMP Server (Apache, MySQL y Php) y de

OpenSSH.

Durante la instalación del LAMP Server va a pedir la contraseña de

root para MySQL, entonces se procederá a colocarla.

Page 8: Free radius  coovachilli y daloradius

8

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

Figura 2. Introducir Contraseña MySQL para el usuario

root

Además de los paquetes anteriores, es también necesario instalar

algunos paquetes indispensables para el correcto funcionamiento

de todas las aplicaciones que van a funcionar en el servidor.

$ sudo apt-get install debhelper libltdl3-dev

libpam0g-dev libmysqlclient15-dev build-essential

libgdbm-dev libldap2-dev libsasl2-dev libiodbc2-

dev libkrb5-dev snmp autotools-dev dpatch libperl-

dev libtool dpkg-dev libpq-dev libsnmp-dev libssl-

dev php5 php5-mysql php-pear php5-gd php-DB

libxml-simple-perl libxml-libxml-simple-perl

libtest-xml-simple-perl libdbi-perl libwww-perl

Page 9: Free radius  coovachilli y daloradius

9

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

7.2. Configuración de interfaces de red

Como se dijo anteriormente, el equipo necesita dos tarjetas de red.

Una tarjeta de red (eth0) tiene que estar conectada a la red y

configurada para internet.

La otra tarjeta de red tiene que dejarse sin configuración. Esto

significa, no IP estática y no DHCP. Esto se logra previniendo que el

Administrador de Red, manipule la tarjeta.

Para evitar que el Administrador de Red manipule la tarjeta, se tiene

que editar /etc/network/interfaces.

$ sudo vi /etc/network/interfaces

En el archivo se debe añadir la interfaz como una tarjeta de

configuración manual.

En este caso, la tarjeta de red en la que funcionara con el portal

cautivo (hacia la red inalámbrica) es eth1, y con la configuración

estática de la interfaz de red eth0 para que se conecte a internet, el

archivo quedará de la siguiente manera.

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet static

address x.x.x.x

netmask x.x.x.x

network x.x.x.x

broadcast x.x.x.x

Page 10: Free radius  coovachilli y daloradius

10

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

gateway x.x.x.x

dns-nameservers x.x.x.x

dns-search unl.edu.ec

iface eth1 inet manual

Luego se procede a reiniciar los servicios de red para que se

apliquen los cambios con el siguiente comando:

$ sudo /etc/init.d/networking restart

De esta forma se esta configurando el interfaz eth0 para que tenga

una dirección IP estática, dejando la interfaz eth1 (que estará

conectada a los puntos de acceso) a merced del portal cautivo, que

será el que la administre.

7.3. Configuración del ip_forward

El mecanismo de IP forwarding se encarga de la retransmisión de

los paquetes que se reciben por una interfaz física y de

retransmitirlos por otra interfaz. El IP forwarding debe ser habilitado,

pues una vez que el usuario se autentique a través del portal

cautivo se redireccionará su tráfico hacia la interfaz de red eth0,

permitiendo así que el usuario pueda navegar. Para habilitar la

función de IP forwarding se necesita configurar el archivo

/etc/sysctl.conf con el siguiente comando:

$ vi /etc/sysctl.conf

Allí se busca la línea net.ipv4.ip_forward=1 y se la descomenta.

net.ipv4.ip_forward=1

Page 11: Free radius  coovachilli y daloradius

11

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

Además, es necesario cambiar el valor a 1 del IP forwarding en

/proc/sys/net/ipv4/ip_forward con el siguiente comando:

$ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

Y se reinicia nuevamente el servicio de networking.

$ sudo /etc/init.d/networking restart

7.4. Activación del modo tun

Para finalizar con la configuración de las interfaces de red, se debe

habilitar el módulo tun, ya que este permitirá a Coovachilli hacer un

“túnel” entre las interfaces eth0 y la red virtual que crea en eth1.

Para ello ejecutamos los siguientes comandos:

$ sudo modprobe tun

Con esta orden cargamos el módulo tun en el kernel del sistema

directamente sin tener que reiniciar. Además tenemos que

agregarlo la palabra “tun” al final del archivo /etc/modules

$ sudo vi /etc/modules

8. CONFIGURACIÓN DEL SERVIDOR

Luego de dejar preparado el servidor con todas las configuraciones

anteriormente explicadas se procederá a instalar y configurar los

paquetes de software utilizados para el correcto funcionamiento del

servidor. Ellos son: FreeRADIUS, CoovaChilli y daloRADIUS.

Page 12: Free radius  coovachilli y daloradius

12

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

8.1. FreeRADIUS

A continuación se describirá el procedimiento correcto para la

instalación y configuración del servidor RADIUS usando

FreeRADIUS.

8.1.1. Instalación de paquetes de FreeRADIUS

La instalación de FreeRADIUS sobre Ubuntu no es compleja,

puesto que se encuentran los paquetes dentro de los repositorios.

$ sudo apt-get install freeradius freeradius-mysql

freeradius-utils

Con el comando anterior se realiza el proceso de instalación de

FreeRADIUS y de las librerías adicionales que va a requiere para su

correcto funcionamiento.

8.1.2. Configuración de la base de datos

Luego de la instalación de los paquetes de FreeRADIUS se tiene

que realizar la configuración de la base de datos que va a usar

FreeRADIUS para obtener los usuarios. Cabe resaltar que

primeramente los usuarios los va a obtener mediante el web

services del Sistema de Gestión Académica de la Universidad

Nacional de Loja, pero se van a almacenar en una base de datos

local, para asegurar conectividad así el web services no esté

disponible.

Se accede a la consola de MySQL, se digita la contraseña y se crea

la base de datos que va a utilizar FreeRADIUS en este caso se

llama radius.

Page 13: Free radius  coovachilli y daloradius

13

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

$ mysql –u root –p

Enter password:

Welcome to the MySql monitor. Commands end with ;

or \g.

mysql> CREATE DATABASE radius;

Luego se debe de crear un usuario para que pueda acceder a la

base de datos con todos los privilegios.

mysql> GRANT ALL ON radius.*TO radius@localhost

IDENTIFIED BY ”clavesegura”;

En este caso se asume que la Base de datos se llama "radius" y se

creó un usuario también "radius" con la contraseña "clavesegura".

Finalmente se debe de salir del promp de MySQL.

mysql> exit;

Las tablas que usa FreeRADIUS se encuentran almacenadas

dentro del directorio /etc/freeradius/sql/mysql/. Para ello

primeramente se tiene que loguear como superusuario (root) para

acceder a ese directorio.

radius@radius:~# sudo su

[sudo] password for radius:

root@radius:/home/radius# cd

/etc/freeradius/sql/mysql/

Se debe ejecutar los scripts sql que se encuentran en ese directorio.

root@radius:/etc/freeradius/sql/mysql# mysql –u

root –p radius < ippool.sql

Page 14: Free radius  coovachilli y daloradius

14

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

root@radius:/etc/freeradius/sql/mysql# mysql –u

root –p radius < nas.sql

root@radius:/etc/freeradius/sql/mysql# mysql –u

root –p radius < schema.sql

8.1.3. Configuración de la conexión con la base de datos

Aquí se configurará los parámetros para se conecte FreeRADIUS

con la base de datos ya creada anteriormente para lo cual se realiza

lo siguiente:

Se edita el archivo /etc/freeradius/sql.conf que es un archivo

donde se encuentran todas las configuraciones de conexión de

FreeRADIUS con MySQL.

root@radius:#~ vi /etc/freeradius/sql.conf

En el archivo se debe modificar las líneas correspondientes a la

conexión con el server de MySQ como lo son:

Server: “localhost”

Login: “radius” que es el usuario que se creó anteriormente.

Password: “clavesegura” que es la clave que corresponde a ese

usuario.

sql {

database = “mysql”

driver = “rlm_sql_${database}”

server = “localhost”

login = “radius”

password = “clavesegura”

Page 15: Free radius  coovachilli y daloradius

15

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

Además dentro del mismo archivo se descomenta la variable:

readclients = yes. El descomentar esta línea permite que se lea

los clientes radius desde la base de datos.

readclients = yes

8.1.4. Configuración de la Autorización y Contabilidad

Se debe editar el Archivo: /etc/freeradius/sites-available/default y

agregar la variable "sql" en las secciones de: authorize{},

accounting{}, session{}, post-auth{}. También se agrega la variable

“perl” antes de “sql” en authorize. Esto permitirá que primero se

realice la conexión con el web services del S.G.A. y luego realizar la

autorización y la contabilidad desde MySQL.

root@radius:#~ vi /etc/freeradius/sites-

available/default

authorize {

preprocess

chap

mschap

digest

suffix

eap {

ok = return

}

files

perl

sql

expiration

logintime

pap

}

accounting {

detail

unix

Page 16: Free radius  coovachilli y daloradius

16

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

radutmp

sql

exec

attr_filter.accounting_response

}

Luego se edita el archivo de configuración principal de

FreeRADIUS, y se procede a descomentar la línea $INCLUDE

sql.conf

root@radius:#~ vi /etc/freeradius/radiusd.conf

# Include another file that has the SQL-related

configuration.

# This is another file only because it tends to be

big.

#

$INCLUDE slq.conf

8.1.5. Conexión con el web services del S.G.A

Para la conexión de FreeRADIUS con el web services del S.G.A. es

necesario desarrollar un script en el lenguaje Perl, en el cual se

deben enviar como parámetros el usuario y la contraseña obtenidos

de la solicitud (request) y agregarlos a la base de datos local. El

código del scipt Perl se encuentran en el CD ajunto a la

documentación.

El script debe estar ubicado dentro del directorio principal de

FreeRADIUS /etc/freeradius/ y se debe editar el archivo

/etc/freeradius/modules/perl

root@radius:#~ vim /etc/freeradius/modules/perl

Page 17: Free radius  coovachilli y daloradius

17

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

Y en la línea module especificar la ruta del archivo.

Perl {

module = ${confdir}/example.pl

8.1.6. Configuración del cliente localhost

Es necesario agregar un cliente en FreeRADIUS para que el portal

cautivo se comunique con el servidor RADIUS, ya que en este caso

tanto FreeRADIUS como el portal cautivo estarán instalados en el

mismo equipo el cliente va a ser localhost en caso de que estén en

distintos equipos ahí se debería de configurar la dirección IP del

portal cautivo.

Para mayor seguridad, se requiere que se coloque una contraseña

para el cliente localhost puesto que ese cliente va a ser el portal

cautivo que va a estar en el mismo servidor. Para ello se modifica el

archivo clients.conf

root@radius:#~ vi /etc/freeradius/clients.conf

Se edita la contraseña que se encuentra en el parámetro secret

dentro del cliente localhost.

client localhost {

ipaddr = 127.0.0.1

secret = clavesegura2

Page 18: Free radius  coovachilli y daloradius

18

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

8.1.7. Arrancando FreeRADIUS

Es importante saber que cuando se instaló FreeRADIUS se ejecutó

el servicio es por eso que se debe de parar para poder iniciarlo

nuevamente con el sript de perl.

root@radius:#~ /etc/init.d/freeradius stop

La razón por la que se para el servicio y no se lo reinicia es porque

para arrancar correctamente es necesario que antes del comando

de iniciar el servicio se coloque un comando, el cual hace que las

librerías que utiliza el script perl se carguen antes de la ejecución de

freeRadius y se pueda levantar el servicio y ejecutar el script.

Para ver que versión de perl que esta en el equipo se ejecuta el

siguiente comando.

root@radius:#~ perl -V | grep libperl

Cuando se conoce la versión de perl en este caso libperl.so.5.14.2

se puede ejecutar el comando para iniciar, reiniciar o detener

FreeRADIUS.

root@radius:#~

LD_PRELOAD=/usr/lib/libperl.so.5.14.2

/etc/init.d/freeradius restart

Para comprobar la conexión y funcionalidad tanto del script perl

como la configuración de FreeRADIUS existe el comando radtest el

Page 19: Free radius  coovachilli y daloradius

19

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

cual permite simular una solicitud de acceso RADIUS y comprueba

tanto conectividad como parámetros de envío.

root@radius:#~ radtest usuarioSGA claveSGA

127.0.0.1 1812 clavesegura2

Donde:

radtest: nombre del comando

usuarioSGA: usuario almacenado en el Sistema de Gestión

Académico

claveSGA: clave del usuario almacenado en el Sistema de

Gestión Académico

127.0.0.1: cliente de FreeRADIUS

1812: Puerto por donde escucha la solicitud FreeRADIUS

clavesegura2: clave del cliente de FreeRADIUS

Una vez enviada la solicitud de acceso, FreeRADIUS se encarga de

receptar esta solicitud y dar una respuesta.

Sending Access-Request of id 42 to 127.0.0.1 port

1812

User-Name = “usuarioSGA”

User-Password = “claveSGA”

NAS-IP-Address = x.x.x.x

NAS-Port = 1812

rad_recv: Access-Accept packet from host 127.0.0.1

port 1812, id=42, length=20

En este caso, al ser correctas las credenciales la solicitud de

acceso receptada se acepta al usuario.

Page 20: Free radius  coovachilli y daloradius

20

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

8.2. Coovachilli

A continuación de detalla cuidadosamente el procedimiento de la

instalación y configuración de CoovaChilli (portal cautivo) lo que

permitirá su adecuado funcionamiento.

8.2.1. Instalación

Para configurar Coovachilli lo primero que hay que realizar es

descargar la última versión desde la página oficial de Coovachilli.

root@radius:#~ wget

hhtp://ap.coova.org/chilli/coova-

chilli_1.2.6_i386.deb

Luego se procede a instalar del paquete descargado.

root@radius:#~ dpkg –i coova-chilli_1.2.6_i386.deb

8.2.2. Configuración del archivo principal de CoovaChilli

Dentro de los archivos de CoovaChilli viene un archivo de ejemplo

donde están todas las configuraciones globales del portal cautivo.

Se procede a copiar el archivo de muestra y renombrarlo como

config.

root@radius:#~ cp /etc/chilli/defaults

/etc/chilli/config

Se edita el archivo anteriormente creado en donde se encuentran

todas las directivas, las cuales se modificaran de acuerdo a las

necesidades.

Page 21: Free radius  coovachilli y daloradius

21

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

root@radius:#~ vi /etc/chilli/config

En este caso se seleccionó la red 10.1.0.0 /24 para la interfaz eth1

que es donde se va a recibir las solicitudes de acceso y la interfaz

eth0 es donde va tener la conexión con la red de la universidad y el

internet.

A continuación se muestra los parámetros configurados.

HS_WANIF=eth0 #WAN Interface toward the

Internet

HS_LANIF=eth1 #Subscriber Interface for

client devices

HS_NETWORK=10.1.0.0 #HotSpot Network (must

include HS_UAMLISTEN)

HS_NETMASK=255.255.255.0 #HotSpot Network Netmask

HS_UAMLISTEN=10.1.0.1 #HotSpot IP Address (on

subscriber network)

HS_UAMPORT=3990 #HotSpot UAM Port (on

subscriber network)

HS_DNS1=x.x.x.x

HS_DNS2=10.1.0.1

###

# HotSpot settings for simple Captive Portal

#

HS_NASID=nas01

HS_RADIUS=127.0.0.1 #o localhost

HS_RADIUS2=127.0.0.1

HS_UAMALLOW=10.1.0.1/24

HS_RADSECRET=clavesegura2 # Set to be your

RADIUS shared secret

HS_UAMSECRET=clavesegura3 # Set to be your UAM

secret

HS_UAMALIASNAME=chilli

HS_UAMFORMAT=https://\$HS_UAMLISTEN/cgi-

bin/hotspotlogin.php

HS_DEFSESSIONTIMEOUT=7200

Page 22: Free radius  coovachilli y daloradius

22

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

HS_DEFIDLETIMEOUT=1800

Donde:

HS_LANIF: Interfaz de red donde se va a escuchar las peticiones

DHCP y donde se conecta los puntos de acceso en este caso es la

eth1.

HS_NETWORK: Dirección de red del portal cautivo.

HS_NETMASK: Dirección de mascara de la red del portal cautivo.

HS_UAMPORT: Puerto donde escucha CoovaChilli.

HS_DNS1: Dirección IP del DNS (Sistema de Nombres de

Dominio).

HS_RADIUS: Aquí se define la dirección IP del servidor RADIUS en

este caso como el servidor esta en el mismo equipo que el portal

cautivo se define la IP del localhost.

HS_RADIUS2: Dirección de IP del servidor RADIUS.

HS_RADSECRET: Clave secreta del cliente localhost de

FreeRADIUS que se agregó anteriormente en el archivo

clients.conf.

HS_UAMSECRET: clave segura del portal cautivo.

HS_UAMFORMAT: Ruta donde se ubica el archivo que se muestra

al usuario al momento de conectarse al servidor RADIUS, en este

caso se llama hotspotlogin.php el cual se lo describe más adelante.

HS_DEFSESSIONTIMEOUT: tiempo que va a durar las sesiones

de los usuarios logeados definido en segundos.

Page 23: Free radius  coovachilli y daloradius

23

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

HS_DEFIDLETIMEOUT: tiempo de inactividad para desconectar a

un usuario, también esta definido en segundos.

8.2.3. Configuración del portal cautivo

Se crea el directorio donde van a estar almacenados archivos

propios del portal cautivo.

root@radius:#~ mkdir –p /var/www/hotspot/uam

Luego se debe de copiar los archivos necesarios para el

funcionamiento de Coovachilli al directorio anteriormente creado.

root@radius:#~ cp /etc/chilli/www/*

/var/www/hotspot

Se accede al directorio en donde se va a descargar archivos

adicionales para el correcto funcionamiento del portal cautivo.

root@radius:#~ cd /var/www/hotspot/uam

Y se procede a descargarlas

root@radius:#~ wget http://ap.coova.org/uam/

Se hace un cambio dentro del archivo

/var/www/hotspot/uam/index.html ubicando la dirección IP del

portal cautivo.

root@radius:#~ sed –i

‘s/coova.org\/js\/chilli.js/10.1.0.1\/uam\/chilli.

js/g’ /var/www/hotspot/uam/index.html

Page 24: Free radius  coovachilli y daloradius

24

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

Se edita el archivo /etc/default/chilli y se modifica la ruta del

archivo de configuración.

root@radius:#~ vi /etc/default/chilli

Para que inicie coovachilli automáticamente se debe poner 1 en

START_CHILLI y además para no tener problemas con el usuario

que va a manipular el Coovachilli se coloca root en HS_USER

START_CHILLI=1

CONFFILE=”/etc/chilli.conf”

HS_USER=”root”

8.2.4. Archivo hotspotlogin.php

Para la parte visible al usuario donde ingresara los credenciales

(Cedula de identidad y clave del SGA) se procedió a modificar un

archivo proporcionado por chillispot.org que originalmente esta

hecho en perl el cual se lo convirtió a un archivo php.

Este archivo se encuentra ubicado en el directorio del servidor web

apache2 en /var/www/hotspot/cgi-bin/. tambien se adecuó de

acuerdo a las sugerencias de los administradores del departamento

de redes de la Unidad de Redes y Telecomunicaciones.

A continuación se muestra el archivo hotspotlogin.php $uamsecret

debido a que aquí se pone la clave que se configuró en el archivo

principal de CoovaChilli en HS_UAMSECRET, también se fijó en

la variable $redirurl = 'http://www.unl.edu.ec'; ya que esto

permitirá que después de logearse el portal cautivo lo redireccione a

la pagina de la universidad.

Page 25: Free radius  coovachilli y daloradius

25

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

<head>

<style type="text/css">

#body{

background-image:

url(https://10.1.0.1/fondo3.jpg);

background-repeat: no-repeat;

background-attachment: fixed;

background-position: 50% 0%;

}

</style>

</head>

<div id="body">

<?php

$uamsecret = "clavesegura3";

$userpassword=1;

$loginpath = "hotspotlogin.php";

$titel = '';

$headline = '';

$bodytext = '';

$body_onload = '';

$footer_text = '<center>

<br><img src="https://10.1.0.1/1.png">

<br><br><br>Si experimenta errores en

conexion contactarse

<br>por favor al (07) 2547252 ext. 127 o

envie un correo a

<br><A

HREF="mailto:[email protected]">[email protected]

c</A>

</center>';

# attempt to login

if ($_GET['login'] == login) {

$hexchal = pack ("H32", $_GET['chal']);

if (isset ($uamsecret)) {

$newchal = pack ("H*", md5($hexchal .

$uamsecret));

} else {

$newchal = $hexchal;

}

Page 26: Free radius  coovachilli y daloradius

26

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

$response = md5("\0" . $_GET['Password'] .

$newchal);

$newpwd = pack("a32", $_GET['Password']);

$pappassword = implode ("", unpack("H32",

($newpwd ^ $newchal)));

$titel = 'Inicio de Sesion red UNL';

$headline = 'Inicio de Sesion red UNL';

$bodytext = '';

print_header();

if ((isset ($uamsecret)) &&

isset($userpassword)) {

print '<meta http-equiv="refresh"

content="0;url=http://' . $_GET['uamip'] . ':' .

$_GET['uamport'] . '/logon?username=' .

$_GET['UserName'] . '&password=' . $pappassword .

'">';

} else {

print '<meta http-equiv="refresh"

content="0;url=http://' . $_GET['uamip'] . ':' .

$_GET['uamport'] . '/logon?username=' .

$_GET['UserName'] . '&response=' . $response .

'&userurl=' . $_GET['userurl'] . '">';

}

print_body();

print_footer();

}

# 1: Login successful

if ($_GET['res'] == success) {

$result = 1;

$titel = 'Registrado en red UNL';

$headline = 'Registrado en red UNL';

$bodytext = 'Bienvenido';

$body_onload = 'onLoad="javascript:popUp(' .

$loginpath . '?res=popup&uamip=' . $_GET['uamip']

Page 27: Free radius  coovachilli y daloradius

27

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

. '&uamport=' . $_GET['uamport'] . '&timeleft=' .

$_GET['timeleft'] . ')"';

print_header();

print_body();

if ($reply) {

print '<center>' . $reply .

'</BR></BR></center>';

}

print '<center><a href="http://' .

$_GET['uamip'] . ':' . $_GET['uamport'] .

'/logoff">Cerrar Sesion</a></center>';

print_footer();

}

# 2: Login failed

if ($_GET['res'] == failed) {

$result = 2;

$titel = 'Registro Fallido';

$headline = 'Registro Fallido';

$bodytext = 'Disculpe, intente nuevamente<br>';

print_header();

print_body();

if ($_GET['reply']) {

print '<center>' . $_GET['reply'] .

'</center>';

}

print_login_form();

print_footer();

}

# 3: Logged out

if ($_GET['res'] == logoff) {

Page 28: Free radius  coovachilli y daloradius

28

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

$result = 3;

$titel = 'Desconectado de red UNL';

$headline = 'Desconectado de red UNL';

$bodytext = '<a href="http://' . $_GET['uamip']

. ':' . $_GET['uamport'] . '/prelogin">Login</a>';

print_header();

print_body();

print_footer();

}

# 4: Tried to login while already logged in

if ($_GET['res'] == already) {

$result = 4;

$titel = 'Sesion ya iniciada en red UNL';

$headline = 'Sesion ya iniciada en red UNL';

$bodytext = '<a href="http://' . $_GET['uamip']

. ':' . $_GET['uamport'] . '/logoff">Logout</a>';

print_header();

print_body();

print_footer();

}

# 5: Not logged in yet

if ($_GET['res'] == notyet) {

$result = 5;

$titel = 'Bienvenido a la red UNL';

$headline = 'Bienvenido a la red UNL';

$bodytext = 'Usted esta intentando acceder a la

red de la UNL<br>Por favor use sus datos del

S.G.A.';

print_header();

print_body();

print_login_form();

print_footer();

}

Page 29: Free radius  coovachilli y daloradius

29

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

#11: Popup1

if ($_GET['res'] == popup1) {

$result = 11;

$titel = 'Ingresando a red UNL';

$headline = 'Ingresando a red UNL';

$bodytext = 'por favor espere...';

print_header();

print_body();

print_footer();

}

#12: Popup2

if ($_GET['res'] == popup2) {

$result = 12;

$titel = 'Sesion iniciada en red UNL';

$headline = 'Sesion iniciada en red UNL';

$bodytext = '<a href="http://' . $_GET['uamip']

. ':' . $_GET['uamport'] . '/logoff">Cerrar

Sesion</a>';

print_header();

print_body();

print_footer();

}

#13: Popup3

if ($_GET['res'] == popup3) {

$result = 13;

$titel = 'Desconectado de red UNL';

$headline = 'Desconectado de red UNL';

$bodytext = '<a href="http://' . $_GET['uamip']

. ':' . $_GET['uamport'] . '/prelogin">Iniciar

Sesion</a>';

print_header();

print_body();

print_footer();

}

# 0: It was not a form request

# Send out an error message

if ($_GET['res'] == "") {

Page 30: Free radius  coovachilli y daloradius

30

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

$result = 0;

$titel = 'Atencion. No debe estar aqui';

$headline = 'Inicio de Sesion Fallido';

$bodytext = 'Salga de aqui inmediatamente. El

logueo debe realizarse mediante el demonio';

print_header();

print_body();

print_footer();

}

# functions

function print_header(){

global $titel, $loginpath;

$uamip = $_GET['uamip'];

$uamport = $_GET['uamport'];

print "

<html>

<head>

<title>$titel</title>

<meta http-equiv=\"Cache-control\"

content=\"no-cache\">

<meta http-equiv=\"Pragma\" content=\"no-

cache\">

<meta http-equiv=\"Content-Type\"

content=\"text/html; charset=ISO-8859-

1\">

<SCRIPT LANGUAGE=\"JavaScript\">

var blur = 0;

var starttime = new Date();

var startclock = starttime.getTime();

var mytimeleft = 0;

function doTime() {

window.setTimeout( \"doTime()\", 1000 );

t = new Date();

Page 31: Free radius  coovachilli y daloradius

31

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

time = Math.round((t.getTime() -

starttime.getTime())/1000);

if (mytimeleft) {

time = mytimeleft - time;

if (time <= 0) {

window.location =

\"$loginpath?res=popup3&uamip=$uamip&uamport=$uamp

ort\";

}

}

if (time < 0) time = 0;

hours = (time - (time % 3600)) / 3600;

time = time - (hours * 3600);

mins = (time - (time % 60)) / 60;

secs = time - (mins * 60);

if (hours < 10) hours = \"0\" + hours;

if (mins < 10) mins = \"0\" + mins;

if (secs < 10) secs = \"0\" + secs;

title = \"Online time: \" + hours + \":\" +

mins + \":\" + secs;

if (mytimeleft) {

title = \"Remaining time: \" + hours +

\":\" + mins + \":\" + secs;

}

if(document.all || document.getElementById){

document.title = title;

}

else {

self.status = title;

}

}

function popUp(URL) {

if (self.name != \"chillispot_popup\") {

chillispot_popup = window.open(URL,

'chillispot_popup',

'toolbar=0,scrollbars=0,location=0,statusbar=0,men

ubar=0,resizable=1,width=500,height=375');

}

}

function doOnLoad(result, URL, userurl,

redirurl, timeleft) {

Page 32: Free radius  coovachilli y daloradius

32

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

if (timeleft) {

mytimeleft = timeleft;

}

if ((result == 1) && (self.name ==

\"chillispot_popup\")) {

doTime();

}

if ((result == 1) && (self.name !=

\"chillispot_popup\")) {

chillispot_popup = window.open(URL,

'chillispot_popup',

'toolbar=0,scrollbars=0,location=0,statusbar=0,men

ubar=0,resizable=1,width=500,height=375');

}

if ((result == 2) || result == 5) {

document.form1.UserName.focus()

}

if ((result == 2) && (self.name !=

\"chillispot_popup\")) {

chillispot_popup = window.open('',

'chillispot_popup',

'toolbar=0,scrollbars=0,location=0,statusbar=0,men

ubar=0,resizable=1,width=400,height=200');

chillispot_popup.close();

}

if ((result == 12) && (self.name ==

\"chillispot_popup\")) {

doTime();

if (redirurl) {

opener.location = redirurl;

}

else if (opener.home) {

opener.home();

}

else {

opener.location = \"about:home\";

}

self.focus();

blur = 0;

}

if ((result == 13) && (self.name ==

\"chillispot_popup\")) {

Page 33: Free radius  coovachilli y daloradius

33

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

self.focus();

blur = 1;

}

}

function doOnBlur(result) {

if ((result == 12) && (self.name ==

\"chillispot_popup\")) {

if (blur == 0) {

blur = 1;

self.focus();

}

}

}

</script>";

}

function print_body(){

global $headline, $bodytext, $body_onload,

$result, $loginpath;

$uamip = $_GET['uamip'];

$uamport = $_GET['uamport'];

$userurl = $_GET['userurl'];

$redirurl = 'http://www.unl.edu.ec';

$userurldecode = $_GET['userurl'];

$redirurldecode = $_GET['redirurl'];

$timeleft = $_GET['timeleft'];

print "

</head>

<body onLoad=\"javascript:doOnLoad($result,

'$loginpath?res=popup2&uamip=$uamip&uamport=$uampo

rt&userurl=$userurl&redirurl=$redirurl&timeleft=$t

imeleft','$userurldecode', '$redirurldecode',

'$timeleft')\" onBlur =

\"javascript:doOnBlur($result)\" bgColor =

'#ffffff'>

<h1 style=\"text-align:

center;\">$headline</h1>

<center>$bodytext</center><br>";

}

function print_login_form(){

global $loginpath;

print '

Page 34: Free radius  coovachilli y daloradius

34

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

<FORM name="form1" METHOD="get" action="' .

$loginpath . '?">

<INPUT TYPE="HIDDEN" NAME="chal" VALUE="' .

$_GET['challenge'] . '">

<INPUT TYPE="HIDDEN" NAME="uamip" VALUE="' .

$_GET['uamip'] . '">

<INPUT TYPE="HIDDEN" NAME="uamport" VALUE="' .

$_GET['uamport'] . '">

<INPUT TYPE="HIDDEN" NAME="userurl" VALUE="' .

$_GET['userurl'] . '">

<center>

<table border="0" cellpadding="5" cellspacing="0"

style="width: 217px;">

<tbody>

<tr>

<td align="right">C.I.:</td>

<td><input type="text" name="UserName"

size="20" maxlength="255"></td>

</tr>

<tr>

<td align="right">Clave:</td>

<td><input type="password"

name="Password" size="20" maxlength="255"></td>

</tr>

<tr>

<td align="center" colspan="2"

height="23"><input type="submit" name="login"

value="login"></td>

</tr>

</tbody>

</table>

</center>

</form>';

}

function print_footer(){

global $footer_text;

print $footer_text . '</body></html>';

exit(0);

}

exit(0);

?>

</div>

Page 35: Free radius  coovachilli y daloradius

35

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

8.2.5. Creación del archivo ipup.sh

En el paquete CoovaChilli, existen archivos con reglas tipo iptables

ya creadas. Se usó estas mismas reglas y se añadió más reglas

acordes con las políticas de seguridad de la Unidad de

Telecomunicaciones e Información.

Existen dos scripts de shell que contienen las reglas de iptables que

maneja CoovaChilli los que son up.sh y down.sh, estos scripts se

ejecutan al instante en que se levanta el proceso de CoovaChilli.

Para agregar mas reglas de iptables se debe a crear el scripts de

Shell llamado ipup.sh donde se establecieron los siguientes

aspectos:

Conexión ssh

Para permitir administrar remotamente el servidor mediante SSH

desde la interfaz eth0, ya que por defecto está inhabilitado se

procedió a abrir el puerto que se usa dentro de la unidad de

telecomunicaciones.

Resolución de Nombres (DNS)

Se procedió a abrir el puerto 53 udp donde el DNS trabaja y ahí se

especifico la dirección IP del DNS de la universidad.

Peticiones http

Para que se permita la navegación se procedió a abrir el puerto 80

tcp.

Page 36: Free radius  coovachilli y daloradius

36

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

Conexión segura

Para que el servidor web escuche por el puerto de conexión segura

se procedio a abrir el puerto 443 tcp.

Puerto por el que escucha CoovaChilli

Para que CoovaChilli escuche las peticiones de los usuarios se

procedió a abrir el puerto 3990 tcp.

NAT (Traducciones de direcciones de red)

El NAT permite la traducciones de direcciones ip en este caso se da

con la Red 10.1.0.0/24, de modo que todo el trafico generado en

esta red pueda salir por la IP x.x.x.x/x, ya que esta ip esta configura

en la interfaz eth0 que es el medio por el cual se da acceso a

internet.

A continuación se detalla las reglas que se aplicó en el archivo.

#! /bin/sh

echo "Iniciando Script | aplicancdo reglas"

#Interfaces eth0: x.x.x.x eth1: 10.1.0.1

IPTABLES="/sbin/iptables"

IPETH0="eth0"

IPETH1="eth1"

DNS=x.x.x.x

INTRANET=x.x.x.x/x

HOST=x.x.x.x

CERO=0.0.0.0/0

#Limpiando todo filter - nat

$IPTABLES -F

$IPTABLES -X

$IPTABLES -Z

$IPTABLES -t nat -F

Page 37: Free radius  coovachilli y daloradius

37

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

$IPTABLES -t nat -X

$IPTABLES -t nat -Z

#estableciendo politicas por default DROP

#$IPTABLES -P INPUT DROP

#$IPTABLES -P OUTPUT DROP

#$IPTABLES -P FORWARD DROP

##Estableciendo reglas en las cadenas INPUT y

OUTPUT

##aceptar todas las acciones en localhost

127.0.0.1

$IPTABLES -A INPUT -i lo -j ACCEPT

$IPTABLES -A OUTPUT -o lo -j ACCEPT

#acciones sobre ICMP todos "type" 0-8

$IPTABLES -A INPUT -i eth0 -p icmp --icmp-type 8 -

s $INTRANET -d $HOST -j ACCEPT

$IPTABLES -A OUTPUT -o eth0 -p icmp --icmp-type 0

-s $HOST -d $INTRANET -j ACCEPT

$IPTABLES -A INPUT -i eth0 -p icmp --icmp-type 0 -

s $CERO -d $HOST -j ACCEPT

$IPTABLES -A OUTPUT -o eth0 -p icmp --icmp-type 8

-s $HOST -d $CERO -j ACCEPT

#abriendo puerto 3779 para desconectar usuarios

$IPTABLES -A INPUT -p udp -m udp --dport 3779 -j

ACCEPT

#DNS

$IPTABLES -A INPUT -s $DNS -d x.x.x.x -i eth0 -p

udp --sport 53 --dport 1024: -j ACCEPT

$IPTABLES -A OUTPUT -s x.x.x.x -d $DNS -o eth0 -p

udp --sport 1024: --dport 53 -j ACCEPT

#abriendo el puerto 80

$IPTABLES -A INPUT -p tcp -m tcp --sport 80 -j

ACCEPT

$IPTABLES -A OUTPUT -p tcp -m tcp --dport 80 -j

ACCEPT

#abriendo puerto 443

Page 38: Free radius  coovachilli y daloradius

38

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

$IPTABLES -A INPUT -p tcp -m tcp --sport 443 -j

ACCEPT

$IPTABLES -A OUTPUT -p tcp -m tcp --dport 443 -j

ACCEPT

# puerto 3990

$IPTABLES -A INPUT -p tcp -m tcp --dport 3990 --

syn -j ACCEPT

#nat

$IPTABLES -t nat -A POSTROUTING -o $IPETH0 -j

MASQUERADE

echo final

8.2.6. Generación de certificados SSL apache2

Como se va a usar conexiones SSL para mayor seguridad. Se

tiene que instalar el módulo SSL.

root@radius:~# apt-get install apache2 ssl-cert

Se debe crear un directorio llamado ssl dentro de /etc/apache2

root@radius:~# mkdir /etc/apache2/ssl

Es necesario saber el nombre del equipo esto va a servir al generar

el certificado. Se lo obtiene con el siguiente comando.

root@radius:~# hostname -f

A continuación, habrá que hacer un certificado SSL que será

utilizado por el host virtual que se detalla más adelante. El sistema

preguntará por una serie de parámetros (Localidad, Provincia, etc.),

siendo el más importante el nombre del host. En este caso será

“10.1.0.1”. De esta forma se consigue que el nombre del host y el

Page 39: Free radius  coovachilli y daloradius

39

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

del certificado coincidan, ya que los navegadores dan avisos de

posibilidad de intrusión en caso de que no coincidan:

root@radius:~# make-ssl-cert /usr/share/ssl-

cert/ssleay.cnf /etc/apache2/ssl/apache.pem

Aparecerá una ventana donde se debe escribir el nombre del

equipo que ya anteriormente se obtuvo con el comando hostname –

f. En este caso es radius.unl.edu.ec.

Figura 3. Ventana de configuración de certificado SSL

Para activar el módulo ssl se debe ejecutar el siguiente comando.

root@radius:~# a2enmod ssl

8.2.7. Creación de host virtual

Para la configuración correcta del virtual host es necesario tener en

cuenta los siguientes aspectos.

NameVirtualHost: se indica la dirección IP de la tarjeta de red y el

puerto.

Page 40: Free radius  coovachilli y daloradius

40

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

DocumentRoot: Directorio principal que contiene la estructura de

directorios visible desde la Web Esta directiva especifica el

directorio desde el cuál apache2 servirá los ficheros.

ServerName: La directiva ServerName especifica el nombre de

host y el puerto que usa el servidor para identificarse.

Directory index: Engloba a un grupo de directivas que se aplicarán

solamente al directorio del sistema de ficheros especificado y a sus

subdirectorios. Aquí es donde se indica el nombre de la página

principal del sitio.

ServerAdmin: Dirección de email que el servidor incluye en los

mensajes de error que se envían al cliente.

ErrorLog: Ubicación del fichero en el que se almacenan los

mensajes de error.

CustomLog: Ubicación de donde esta el archivo en el cual se

registran los accesos al sitio.

SSLCertificateFile: Aquí se ubica la ruta del certificado ssl.

Se procede a crear un archivo llamado hotspot donde se va a

agregar el host virtual dentro del directorio /etc/apache2/sites-

available.

root@radius:~# vim /etc/apache2/sites-

available/hotspot

A continuación se muestra la configuración del virtual host . Aquí se

agrega la ruta donde se creó el certificado ssl.

<IfModule mod_ssl.c>

Page 41: Free radius  coovachilli y daloradius

41

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

<VirtualHost 10.1.0.1:443>

ServerAdmin webmaster@localhost

DocumentRoot /var/www/hotspot

ServerName radius.unl.edu.ec

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory /var/www/hotspot/>

Options Indexes FollowSymLinks

MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

Alias "/dialupadmin/"

"/usr/share/freeradius-

dialupadmin/htdocs/"

<Directory "/usr/share/freeradius-

dialupadmin/htdocs/">

Options Indexes FollowSymLinks

MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /var/www/hotspot/cgi-

bin/

Page 42: Free radius  coovachilli y daloradius

42

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

<Directory "/var/www/hotspot/cgi-bin/">

AllowOverride None

Options +ExecCGI -MultiViews

+SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

LogLevel warn

CustomLog ${APACHE_LOG_DIR}/ssl_access.log

combined

Alias /doc/ "/usr/share/doc/"

<Directory "/usr/share/doc/">

Options Indexes MultiViews

FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

Allow from 127.0.0.0/255.0.0.0

::1/128

</Directory>

SSLEngine on

SSLCertificateFile

/etc/apache2/ssl/apache.pem

LogLevel warn

CustomLog ${APACHE_LOG_DIR}/ssl_access.log

combined

Alias /doc/ "/usr/share/doc/"

Page 43: Free radius  coovachilli y daloradius

43

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

Se ejecuta los siguientes comandos para finalizar la configuración

de apache2

root@radius:~# a2ensite hotspot

root@radius:~# apache2ctl -t

root@radius:~# /etc/init.d/apache2 reload

Finalmente se reinicia todos los servicios (FreeRADIUS y

CoovaChilli) y se tendrá al servidor RADIUS funcionando con el

portal cautivo. Es importante tener en cuenta que al reiniciar el

servicio de FreeRADIUS debe de ser con las instrucciones ya

anteriormente mencionadas.

8.3. daloRADIUS

A continuación se detalla el proceso de instalación y configuración

del daloRADIUS, al ser una herramienta de administración web, el

uso correcto se detalla en el manual de usuario.

8.3.1. Instalación

El siguiente paso es descargar daloRADIUS desde su Web .

root@radius:~#wget

http://sourceforge.net/projects/daloradius/files/d

aloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz

Una vez descargado el paquete de daloRADIUS se procede a

descomprimir la aplicación y se debe crear la base de datos con las

tablas pertinentes. Como root se ejecuta los siguientes comandos:

Se descomprime el paquete descargado

Page 44: Free radius  coovachilli y daloradius

44

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

root@radius:~# tar xvzf daloradius-0.9-9.tar.gz

Se copia la carpeta daloradius-0.9-9 al directorio de /var/www/

root@radius:~# cp daloradius-0.9-9

/var/www/daloradius –R

Se da permiso al apache sobre el directorio del daloRADIUS que

esta en el directorio /var/www/daloradius

root@radius:~# chown www-data:www-data

/var/www/daloradius/ -R

Se cambian los permisos del archivo daloradius.conf.php

root@radius:~# chmod 644

/var/www/daloradius/library/daloradius.conf.php

8.3.2. Configuración

Para que daloRADIUS funcione correctamente, se requiere agregar

algunas tablas más a la base de datos de MySQL. Estas tablas ya

están incluidas en el directorio de daloRADIUS, por lo que solo es

necesario ejecutar el siguiente comando:

root@radius:~# mysql -u root -p radius <

/var/www/daloradius/contrib/db/fr2-mysql-

daloradius-and-freeradius.sql

Page 45: Free radius  coovachilli y daloradius

45

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

Seguidamente se edita el archivo daloradius.conf.php para poner

los valores de la conexión al server de la base de datos:

root@radius:~# vi /var/www/daloradius/

daloradius.conf.php

$configValues[‘CONFIG_DB_ENGINE’] = ‘mysql’;

$configValues[‘CONFIG_DB_HOST’] = ‘127.0.0.1’;

$configValues[‘CONFIG_DB_USER’] = ‘radius’;

$configValues[‘CONFIG_DB_PASS’] = ‘clavesegura’;

$configValues[‘CONFIG_DB_NAME’] = ‘radius’;

Una vez esto, se reinicia el apache:

root@radius:~# /etc/init.d/apache2 restart

Para poder visualizar la interfaz de daloRADIUS se debe ingresar a

un navegador de prefencia Mozilla Firefox y se coloca la dirección

IP del servidor o el dominio: http://172.16.32.20/daloradius o

http://radius.unl.edu.ec/daloradius

Figura 4. Dirección de Ingreso con IP

Figura 5. Dirección de Ingreso con dominio

y en la sección de password se ingresa la contraseña: radius

Page 46: Free radius  coovachilli y daloradius

46

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

Figura 6. Ventana de Logeo

8.4. Errores Comunes

A continuación se detallan algunos de los errores más comunes y

se presenta la solución correspondiente.

8.4.1. Error al crear el directorio /var/log/freeradius/radacct

Uno de los errores que aparece al leer los log de FreeRADIUS en

daloRADIUS es el siguiente:

Failed to create directory

/var/log/freeradius/radacct: Permission denied

Para corregir el error se debe seguir los siguientes pasos:

root@radius:~# mkdir /var/log/freeradius/radacct/

Page 47: Free radius  coovachilli y daloradius

47

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

root@radius:~# touch

/var/log/freeradius/radacct/sql-relayOpen

8.4.2. Error de reinicio de servicio FreeRADIUS

Es importante recordar que el reinicio del servicio de freeradius no

se lo puede ejecutar con los comandos comunes sino que se debe

ejecutar un comando especial como lo es:

LD_PRELOAD=/usr/lib/libperl.so.5.14.2

/etc/init.d/freeradius restart /etc/init.d/chilli

restart

Es por esto que cada vez que se reinicie el equipo se va a dar el

siguiente error por el scrip que se agregó de perl.

Figura 7. Error al levantar el servicio FreeRADIUS

Este error se lo solucionó agregando unas líneas en el archivo

/etc/rc.local que se ejecuta al reiniciar el equipo. A continuación se

muestra los comandos agregados:

Page 48: Free radius  coovachilli y daloradius

48

FreeRADIUS, CoovaChilli y daloRADIUS

Universidad Nacional de Loja

Lisset Neyra

Fabricio Flores

Figura 8. Archivo rc.local

8.4.3. Error al leer los logs de daloRADIUS

Este error aparece al momento de visualizar los logs de daloradius

mediante su interfaz gráfica debido a que se guardan dentro de

/tmp/daloradius.log y como es un archivo temporal se lo debe de

crear dar permisos cada vez que se reinicie el equipo. Por esto se

procedió a agregar en /etc/rc.local los siguientes comandos.

touch /tmp/daloradius.log

chown www-data:www-data /tmp/daloradius.log