jump to navigation

HotSpot con chillispot y Freeradius 2 noviembre, 2009

Posted by Fredy Ruiz Ondre in Wi-Fi.
trackback

Un hotspot es una zona de cobertura de Wi-Fi, es decir esta ubicado en un punto normalmente un lugar publico donde irradia la señal y  la gente puede salir a internet conectandose inalambricamente a la central de manera gratuita o previo pago.

En esta ocasion vamos a configurar un hotspot usando chillispot instalandolo sobre CentOS 5, la autenticasion sera a traves del un servidor Radius, nosotros usaremos freeradius, todo esto vamos a instalarlo en un mismo servidor.

red_wifi_1

Instalaremos las herramientas necesarias

# yum install freeradius openssl php httpd mod_ssl

Descargamos el paquete chillispot

# wget http://www.chillispot.info/download/chillispot-1.1.0.i386.rpm
# rpm -Uvh chillispot-1.1.0.i386.rpm

Una ves que instalemos lo necesario vamos a configurarlo, empezamos a configurar el chillispot editando el archivo chilli.conf

[root@ns ~]# vim /etc/chilli.conf


net 172.16.0.0/24
dns1 200.48.225.130
domain http://www.dominio.com
radiuslisten 127.0.0.1
radiusserver1 127.0.0.1
radiusauthport 1812
radiussecret contraseña1
radiusnasid nas01
dhcpif eth1
uamserver https://172.16.0.1/cgi-bin/hotspotlogin.cgi
uamhomepage https://172.16.0.1/spot
uamsecret contraseña2
uamallowed 172.16.0.1

Siguiendo con la configuracion del chilli

# cp /usr/share/doc/chillispot-1.1.0/hotspotlogin.cgi /var/www/cgi-bin/
# chown apache.apache /var/www/cgi-bin/hotspotlogin.cgi
# chmod 700 /var/www/cgi-bin/hotspotlogin.cgi

Ahora instalamos el soporte TUN/TAP necesario para el funcionamiento de chilli. Esta interface virtual creada tun0 se comunicará con la interface eth1 para autenticar los usuarios, para ello editamos  el archivo modprobe.conf agregando lo siguiente:

# vim /etc/modprobe.conf

alias char-major-10-200 tun

# modprobe tun

En la documentacion del chilli /usr/share/doc/chillispot-1.1.0/ hay un script para el firewall, bueno yo lo modifique ya que yo uso un proxy con Squid, quedando de la siguiente manera:

#!/bin/sh
IPT=”/sbin/iptables”
EXTIF=”eth0″ # Interfaz externa
INTIF=”eth1″ # Interfaz interna

$IPT -F
$IPT -F -t nat
$IPT -F -t mangle

$IPT -P INPUT DROP
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT

$IPT -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT

$IPT -A INPUT -i $EXTIF -p tcp -m tcp –dport 22 –syn -j ACCEPT
$IPT -A INPUT -i $EXTIF -j REJECT

$IPT -A INPUT -i $INTIF -j DROP

$IPT -A INPUT -p tcp -m tcp –dport 80 –syn -j ACCEPT
$IPT -A INPUT -p tcp -m tcp –dport 443 –syn -j ACCEPT
$IPT -A INPUT -p tcp -m tcp –dport 3128 –syn -j ACCEPT
$IPT -A INPUT -p tcp -m tcp –dport 22 –syn -j ACCEPT
$IPT -A INPUT -p tcp -m tcp –dport 3990 –syn -j ACCEPT

# Redireccionar al squid
$IPT -t nat -A PREROUTING -i tun0 -p tcp –dport 80 -j REDIRECT –to-port 3128

$IPT -A INPUT -p icmp –icmp-type echo-request -j ACCEPT
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A FORWARD -i $INTIF -j DROP
$IPT -A FORWARD -o $INTIF -j DROP

$IPT -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

Obviamente esre script es algo basico, pero este post no trata de iptables asi que lo dejamos tal cual, ahora activamos el forwarding

# vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

Hecho esto nos dedicamos al servidor radius, para ello nos ubicamos en el directorio raddb

# cd /etc/raddb/
# vim clients.conf

client 127.0.0.1 {
secret          = contraseña1
shortname       = localhost
nastype     = other
}

Editamos las cuentas de usuarios

# vim users

fruiz   Auth-Type := Local, User-Password == “clave”

Antes de iniciar los servicios debemos tener en cuenta la dirección IP de la interfaz eth1 el cual  debe ser 0.0.0.0 pero debe estar activa

# ifconfig eth1 0.0.0.0 up

# /etc/init.d/chilli start
# /etc/init.d/radiusd start
# /etc/init.d/httpd start

red_wifi_2

En la consola podemos ejecutar lo siguiente para ver si la autenticacion al servidor radius esta bien configurada

# radtest fruiz clave localhost 1645 contraseña1

Sending Access-Request of id 65 to 127.0.0.1 port 1812
User-Name = “fruiz”
User-Password = “clave”
NAS-IP-Address = 255.255.255.255
NAS-Port = 1645
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=65, length=71
Service-Type = Framed-User
Framed-Protocol = PPP
Framed-IP-Address = 172.16.0.170
Framed-IP-Netmask = 255.255.252.0
Framed-Routing = Broadcast-Listen
Filter-Id = “std.ppp”
Framed-MTU = 1500
Framed-Compression = Van-Jacobson-TCP-IP

Ahora como ultimo paso, nos ubicamos en el directorio /var/www/html y editamos una pagina que sera la de bienvenida, y ahi ubicamos un link que apunte al chilli para poder realizar la autenticacion

# cd /var/www/html/
# mkdir spot/
# cd spot/
# vim index.html

Aqui editamos nuestra pagina de bienvenida en donde debe haber un link que apunte a http://172.16.0.1:3990/prelogin, pondre parte de mi humilde html donde enlaza para la autenticacion

<a href=”http://172.16.0.1:3990/prelogin”>Click aqui para acceder</a>

Luego de realizar nuestra pagina de bienvenida, guardamos los cambios y empezamos a probar, para esto desde una maquina cliente accedemos a la red, el chilli nos debería asignar un IP de manera automática y cuando abramos un navegador nos debe mostrar nuestra pagina de bienvenida, en dicha pagina le demos clic en “Click aqui para acceder” deberá mostrarnos la siguiente ventana para poder autenticarnos.

chillispot

Anuncios

Comentarios»

1. kei - 27 marzo, 2010

hola buen howto!!..

una pregunta crees que puede ser posible hacer un hotspost sin dhcp, por que quiero hacerlo pero cono ip estatica .. para hacerlo mas seguro.. ya que con dhcp .. chillispot le entrega una ip a todo que se conecte al server y luego recien le pide user y password..
entonces lo mejor seria con ip estatica..pero la verdad no encuentro la forma..

Fredy Ruiz Ondre - 27 marzo, 2010

No he configurado con IP’s estaticas, esto es lo que dice en las FAQ de chillispot..

copio y pego

How do I enable static IP?
With both WPA and MAC authentication you can include the Radius attribute Framed-IP-Address in the Access-Accept message sent back to ChilliSpot by the Radius server. For this to work
you also need to specify the statip option in /etc/chilli.conf.

Revisa ese tema ….

El Framed-IP-Address esta en el archivo /etc/raddb/users me parece que ahi puedes poner la IP estatica y luego en el archivo /etc/chilli.conf en la opcion statip puedes poner el rango o la IP de tu LAN …

Comentas como te fue …

Salu2

2. .::Edward::. - 22 agosto, 2010

Hola amigo Fred
Muy bueno e interezante la configuracion, y creo que es una buena referencia para empezar a levantar un hotspot; pero tengo una preguntita esta configuracion se puede realizar en CentOS 5.5 o hay alguna variacion, porque estoy pensando implementarlo en esta version pero nose si sera la correcta.
Te contare que ya lo intente en la version 5.3 haces unos mese atras y tuve algunos problemas que no los pude resolver, no me alcanzo el tiempo y lo deje pendiente.
Bueno ahora voy a empezar de nuevo pero con la version 5.5, si pudieras guiar seria excelente, yo te envio luego el manual de como lo estoy configurando.
De ante mano Muchas gracias

3. Albert - 21 noviembre, 2010

Hola, muy bueno tu post, te agradezco porque esclarece muchas dudas, más aun tengo algunas, y tal vez puedan ayudarme, al momento de levantar el sistema, me asigna la ip del dhcp del chillispot, pero al momento de autenticar, no aparece el mensaje de logeo correcto, he configurado las cuentas en el radius, pero nada.
aparece el mensaje de login failed 😦

Gracias por cualquier comentario al respecto.

4. Fredy Ruiz Ondre - 10 enero, 2011

Sorry habia estado ausente por buen tiempo …

Haber, que te sale cuando ejecutas el test de autenticacion con el comando radtest…

5. Carlos - 3 septiembre, 2011

Hola a todos, soy estudiante de Ingenieria en sistemas y estoy realizando un proyecto sobre la implemantacion de un portal cautivo usando chillispot con autenticacion freeradius el mismo que guarda los usuarios en una BD postgresql.
Al instalar todos los servicios en un solo servidor funciona, es decir al intentar un cliente ingresar a internet mediante la wirelles lo redirige hacia la pagina de login que ofrece chillispot y si los datos q ingresa coinciden con los almacenados en la BD se autentica y puede navegar por internet, hasta ahi todo bien…
El problema que tengo es al separar los servicios en distintos servidores, ya se configura para freeradius el archivo sql.conf para que se conecte con el servidor de base de datos, si se hace una prueba con el radtest freeradius funciona encuentra los usuarios, chillispot configure el archivo chilli.conf para especificarle la direccion del servidor radius, tambien ejecute el scrip de iptables que trae chilli e igualmente el archivo hotspotlogin.cgi…
ahora se supone que deberia funcionar todos los servidores tienes conexion(probe haciendo un ping entre todas las maquinas, y si hay respuesta), desde una portatil trato de acceder a internet y me redirecciona a la pagina de usuario y contraseña, pero al logearme no pasa nada, no autentica y por lo tanto no accede a internet…
No se que sucede si funciona localmente, cual seria la razon para que no funcione remotamente, he buscado el problema pero ya se me acaban los recursos, talves alguien en el foro me podria brindar algun consejo por lo menos para entender q problema es el que tengo q solucionar por que no tengo idea…
Saludos de antemano y gracias por cualquier respuesta


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: