Configurar un hotspot con portal captivo CHILLISPOT en DEBIAN.

Para configurar este hotspot he decidido usar chillispot por su sencillez en la instalación y por lo pocos requisitos de software y configuración de la red.

Si disponemos de un Access Point y queremos que los clientes que accedan a él sean recibidos por una Web de presentación en la que ofrezcamos los servicios de nuestro NODO o información variada, podemos utilizar este software sin mayor problema, si necesitamos mas opciones podemos optar por alguno mas completo como nocat.

Cualquier petición http es redirigida por el firewall contra un script que presenta una Web de bienvenida y toda la información que queramos.

Una de las principales opciones de este software es el acceso a la red.

Se le puede configurar para permitir libre acceso a ciertos servicios y a ciertas ips. Así como no permitir accesos no deseados a otras ips.  De esta forma, podemos dejar libre acceso a desconocidos a la Web de nuestro grupo  o al servidor local pero no al resto de servicios (internet, ftp, etc.) El sistema controla en todo momento los accesos y presenta una pantalla con el estado del cliente logeado o no logeado.

Chillispot se encuentra en chillispot.org es open source y se mantiene bajo licencia GPL.

Tal y como informa en su Web, es un portal captivo para control de accesos wireless a una red LAN. Soportando WPA. Tiene binarios creados para Redhat, Febora, Debian y OpenWRT (AP). Su configuración es sencilla y permite la instalación de todo el sistema sin problemas en un mismo equipo.

A continuación explicare su instalación sobre una maquina con Debian .Para mas info,la web oficial donde aparece la documentación completa y detallada. ……….

REQUISITOS

Tal y como aparece en su Web principal, estos son los requisitos:
# Internet connection
# Wireless LAN access point
# ChilliSpot software for your PC
# Radius Server

# Web server

La conexión a Internet la vamos a limitar solo para nosotros, los propietarios del nodo y demás familia. Por lo tanto, vamos captar los equipos que acceden a nuestro NODO y presentarles una Web informativa.

– Necesitamos un S.O. Linux, en este caso, se ha instalado sobre Debian GNU/LINUX.

– Un servidor radius, en este caso, sobre freeradius, tal y como aparece en al documentación (es GPL y aparece en las sources debian)

– Un servidor web. Claramente APACHE. Necesita soporte para SSL para autenticación con el servidor radius. Podemos bien instalar el modulo ssl al apache o instalar el apache-ssl. (haremos lo segundo)

– Un punto de acceso wireless. (en este caso, el nodo funciona con un DLINK900AP+ a la intemperie)

En este caso, todos los servidores se encuentran sobre la misma maquina, pudiendo estar separados (seria lo mejor por temas de seguridad, pero no le pidamos peras al olmo )

CONFIGURACIÓN DEL OS

Deberemos tener un Debian instalado. (mas info)
descargamos el .deb de chillispot en la siguiente dirección http://www.chillispot.org/download.html –(el .deb).

Ejecutamos “apt-get install freeradius apache-ssl” configurando el apache con la configuración mínima contestando todo lo bien que queramos a las preguntas necesarias para las ssl (lugar, nombre, mail….) que aparecerán posteriormente en la info del certificado al acceder al nodo.

Instalamos también el chillispot con “dpkg -i chillispot_VERSION.deb” los archivos de chillispot se van a localizar en /etc/chilli.conf y en /usr/share/doc/chillispot/

Después copiamos hotspotlogin.cgi a nuestro sitio de cgi, /usr/lib/cgi.bin/

Podemos también editar el firewall.iptables a nuestro gusto con reglas propias (en este caso no lo tocaremos). Lo que si debemos hacer es procurar que las reglas de firewall.iptables se carguen al arranque

editamos el /etc/network/options con ip_forward=yes
reiniciamos la red con “/etc/init.d/networking restart”

y de esta parte, una cosa importante, tener configurado en el kernel el soporte para tun/tap para levantar la interface tun0 en este caso. p-t-p.

Tal como aparece en la configuración realizaremos lo siguiente:

mkdir /dev/net
mknod /dev/net/tun c 10 200 para crear el dispositivo

y ahora: añadir la siguiente linea a /etc/modules.conf  “alias char-major-10-200 tun”

luego “depmod -a ” para actualizar cambios.

Ahora, ya tenemos configurado el equipo.

FREERADIUS

Vamos a modificar la configuración del freeradius en /etc/freeradius/ :
modificamos clients.conf y cambiamos la clave de secret= …123 por una propia como por ejemplo “linuxpower”:)(no está de mas aunque sea en local)

Modificamos users para añadir los usuarios, para no dar muchas vueltas, copiemos y modifiquemos el usuario que sugiere chillispot , el usuario steve. En el pondremos nuestro propio nombre de usuario, quedando algo asi como :

clipse Auth-Type := Local, User-Password == “atitelovoyadecir”
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 172.16.3.33,
Framed-IP-Netmask = 255.255.255.0,
Framed-Routing = Broadcast-Listen,
Framed-Filter-Id = “std.ppp”,
Framed-MTU = 1500,
Framed-Compression = Van-Jacobsen-TCP-IP

Como se puede observar, basta con modificar user y password, para mas usuarios, copiamos lo mismo y cambiamos la IP-address

CHILLISPOT

Debemos modificar también el archivo /usr/lib/cgi-bin/hotspotlogin.cgi para personalizarlo, observaremos partes de código como las siguientes :
if (!($ENV{HTTPS} =~ /^on$/)) { print “Content-type: text/htmlnn meta http-equiv=””Pragma”” content=””no-cache””>
h1 style=”” center=””>Acceso a hotspot erroneo. , pirate zaragatas /h1> p>
NO ACEPTA ACCESOS NO AUTORIZADOS. NODO SANTOÑA/p> center> Se debe usar encriptación. /center> “; exit(0); }

Es html puro, así que podemos modificarlo a nuestro gusto con la Web que queramos, bien pegándolo en este archivo o incluyéndolo desde otro archivo, en este caso, que es poco, lo dejamos

Ahora, lo que nos queda, editar /etc/chilli.conf para que case con la clave que hemos cambiado en el servidor radius, este archivo se encuentra en el apartado de la configuración del servidor radius “radiussecret ” donde pondremos la clave del freeradius “radiussecret linuxpower”, reiniciamos /etc/init.d/freeradius restart (debemos estar atentos a los mensaje igual hace falta añadirle un -x para reiniciarlo)
/etc/init.d/chilli restart
y el apache también

(en mi caso)

/etc/init.d/apache2 restart

Si asociamos cualquier cliente al AP y le decimos que obtenga la ip automáticamente mediante dhcp, las peticiones a cualquier web nos llevarían a la Web de presentación que hemos metido en hotspotlogin.cgi (hotspotlogin almacena varias webs y solo una es la de presentación, el resto es para mensajes de error y aceptación) por defecto, las dns serán las configuradas en el servidor. Y una de las cosas que tiene de bueno (que tambien lo tiene el resto de portales captivos como el nocat ) es el poder dejar acceso a ciertas paginas sin necesidad de estar logeado, para el resto de cosas, se puede editar la configuración del firewall.iptables.

Si modificamos /etc/chilli.conf , al final del archivo :
TAG: uamallowed
# Comma separated list of domain names, IP addresses or network segments
# the client can access without first authenticating.
# Normally you do not need to uncomment this tag.
#uamallowed www.chillispot.org,10.11.12.0/24 uamallowed www.postech.com.mx,www.jpdiaz.com

Dejamos acceso libre a estas Web. Y dejaríamos a grandes rasgos configurado el sistema para cualquier petición.

FINALIZANDO

Uno de los grandes problemas del wifi, es la seguridad. Este sistema solo nos cubre de accesos no deseados, no de ser escaneados ni evitar el snifing. Tampoco de un man-in-the-middle y que nos vuelvan locos y consigan los passwords (aunque el login y pass de acceso si viaja encriptado). Deberemos entonces estar revisando periódicamente el certificado por si aparecen nuevos certificados de alguien que quiera entrar o controlar el portal. Para asegurarlo mejor, se podría configurar un proxy seguro con un squid y ssl de forma que todas las peticiones al web estén encriptadas y procurar utilizar puertos seguros para el resto… pero eso es para otro post.

Publicado en Wireless y etiquetado , , , .

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *