Escolar Documentos
Profissional Documentos
Cultura Documentos
HERRAMIENTAS Ubuntu 11.10 Desktop Laptop con tarjeta inalmbrica y puerto ethernet Laptop/PC con puerto ethernet Cable ethernet cruzado Freeradius v. 2.1.10 Chillispot Apache2 v. 2.2.20 phpMyAdmin MySQL DNS SSH OpenSSL 1.0
PROCEDIMIENTO
Para hacer esto abrir una shell de root dando clic en Inicio y en la caja de texto Buscar escribir Terminal.
Una vez que se abra la terminal, ingresar sudo xterm y teclear la contrasea cuando nos lo solicite
Una vez ingresada la contrasea de root, se abrir una shell de root, como se muestra en la figura, en la cual se pueden ingresar todos los comandos con privilegios de root, es decir, sin tener que empezar dichos comandos con la instruccin sudo.
Al tener abierta la Shell de root (Xterm) ya no es necesaria la ventana de terminal, as que podemos cerrarla.
En la shell ingresar el comando apt-get install tasksel para instalar esta aplicacin.
Nos muestra lo siguiente, elegir de la lista los servidores y programas ya mencionados, desplazndonos con las flechas del teclado y con la barra de espaciado ir seleccionando cada uno de ellos, cuando hayamos terminado de seleccionar pulsar la tecla Tabulador y presionar Intro para aceptar.
Reiniciar si es necesario.
Dentro de la ventana de modconf, pulsar Aceptar: En caso de no funcionar el modconf: Descargar el archivo de la siguiente pagina: https://kaunchpad.net/ubuntu/hardy/+package/modconf (Escoger la versin dependiendo de la arquitectura del procesador.)
En la Shell ingresar el siguiente comando: modprobe tun Editar el archivo modules con el siguiente comando: gedit /etc/modules Dentro de este archivo, verificar que en una lnea aparezca el mdulo tun, en caso de que no exista, se debe ingresar.
La interfaz que est conectada a Internet, es la interfaz wlan0 , segn los resultados arrojados por el comando ifconfig. Esta es la interfaz de la tarjeta inalmbrica de la laptop (en otros equipos esta etiqueta puede variar). La interfaz eth0 (o eth1, segn el resultado del comando ifconfig), es la interfaz del servidor (laptop) a travs de la cual los clientes solicitan acceso a Internet va ethernet. Cuando un cliente se conecta al servidor va ethernet, Chillispot acta como un DHCP y le proporciona al cliente una direccin IP. Despus, le manda al usuario una pantalla de autenticacin. Chillispot reenva estos datos al servidor FreeRADIUS, entonces ste consulta los datos almacenados en la base de datos de MySQL, y dependiendo de estos datos, se le permite o se le niega al cliente acceder al servicio de Internet. Una vez que se han verificado las interfaces mediante el comando ifconfig, se procede a modificar el archivo interfaces mediante el siguiente comando: gedit /etc/network/interfaces
El contenido de este archivo debe quedar similar a lo siguiente: # The loopback network interface auto lo iface lo inet loopback Interfaz inalmbrica de laptop (wlan0) Router inalmbrico del ISP Interfaz eth0 de laptop Internet # La interfaz que est conectada a Internet auto wlan0 # La interfaz mediante la cual los clientes intentan acceder a Internet auto eth0 Levantar la interfaz ethernet mediante el comando: ifconfig eth0 up
8) INSTALAR FREERADIUS.
Utilizar el siguiente comando para instalar freeRADIUS: apt-get install freeradius apt-get install freeradius-mysql Nota: Una vez que se tiene instalado freeRADIUS, se puede ingresar el siguiente comando para verificar la versin instalada de freeRADIUS: freeradius v
Solo resta auto firmar el CSR mediante los comandos: openssl x509 -req -days 365 -in portal.csr -signkey portal.key -out portal.crt mv portal.crt /etc/ssl/certs/
Order allow,deny Allow from all </directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On 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> </virtualhost>
12) VERIFICAR QUE APACHE2 EST CONFIGURADO PARA ESCUCHAR EN LOS PUERTOS 80 Y 443
Ingresar el siguiente comando: gedit /etc/apache2/ports.conf Se debe tener este archivo de la siguiente forma: NameVirtualHost *:80 Listen 80 <IfModule mod_ssl.c> # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here Listen 443 </IfModule> Habilitar el SSL y reiniciar el servidor Apache2 con los comandos: a2ensite ssl /etc/init.d/apache2 reload
Abrir otra shell de root en Accesorios > Terminal, ingresar el comando sudo xterm y probar que freeRADIUS funcione correctamente con el usuario steve y contrasea testing ingresando el siguiente comando en esta terminal: radtest steve testing 127.0.0.1 1812 testing123 Al ingresar este comando, en la shell de root que se acaba de abir, se debe indicar que el paquete ha sido aceptado (Access-Accept). Mientras tanto, en la primer shell de root, se arroja la informacin de depuracin del freeRADIUS.
Nota: En el comando radtest utilizado anteriormente, testing123 es la contrasea que se encuentra configurada por default en el archivo /etc/freeradius/clients.conf. El parmetro secret de este archivo por default se encuentra de la siguiente manera: secret = testing123
Si previamente esta contrasea ha sido modificada, el comando radtest debe modificarse indicando la nueva contrasea.
A continuacin se pregunta si se desea configurar la base de datos para phpMyAdmin con dbconfig-common, por lo que se elige S.
El siguiente paso de la instalacin de phpMyAdmin, es ingresar la contrasea de root que se configur previamente para MySQL, en este caso, dicha contrasea es mysql:
Ahora se debe escribir una contrasea para el usuario phpmyadmin que se crea automticamente en MySQL. Si no se escribe ninguna, se generar una automticamente. Elegir establecer la contrasea manualmente, e ingresar la contrasea mysql. Despus pulsar Aceptar. Por ltimo en la instalacin de phpMyAdmin, simplemente se confirma la contrasea. El siguiente paso es crear la estructura de la base de datos que se comunicar con freeradius. Ingresar el comando: mysql -u root p
Ingresar el password mysql. El prompt ahora cambia a mysql>, indicando que podemos ingresar instrucciones de MySQL. Ingresar la siguiente instruccin para crear una base de datos llamada radius, la cual es la que almacenar los usuarios que pueden autenticarse, e informacin relativa a la conexin: CREATE DATABASE radius; La siguiente instruccin, crea un usuario cuyo nombre es usuario y su password es usuario. GRANT ALL PRIVILEGES ON radius.* to 'usuario'@'localhost' IDENTIFIED BY 'usuario'; FLUSH PRIVILEGES ; Quit En cualquier instante, se puede comprobar que los usuarios, bases de datos, tablas, o cualquier elemento creado, efectivamente se haya creado en MySQL. Ingresar al navegador Web, y en la barra de direcciones introducir la url http://localhost/phpmyadmin, a continuacin aparecer una pantalla de autenticacin. En esta pantalla, se ingresa el usuario root, con contrasea mysql.
En la ventana de phpMyAdmin, se puede observar que se ha creado una base de datos llamada radius. Se puede dar clic en ella para ingresar tablas o modificarlas si es que as se desea. Tambin se observa un rea en la parte superior derecha llamada Privilegios, se puede acceder a esta rea para verificar que se haya creado el usuario usuario ingresado previamente desde el shell de root. Crear la estructura de la base de datos ingresando los siguientes comandos en el shell de root: Nota: Para los siguientes comandos, se tiene que ingresar la contrasea mysql cuando el sistema pregunte por la contrasea de root de MySQL. cd /etc/freeradius/sql/mysql/ mysql -u root -p radius < admin.sql mysql -u root -p radius < ippool.sql mysql -u root -p radius < nas.sql mysql -u root -p radius < schema.sql Editar el archivo sql.conf con el comando: gedit /etc/freeradius/sql.conf Editar el archivo sql.conf como se muestra a continuacin, descomentando la lnea readclients=yes:
server = localhost login = usuario password = usuario readclients = yes Despus, editar el archivo default, mediante el comando: gedit /etc/freeradius/sites-available/default Agregar la variable sql en las secciones de authorize{}, accounting{}, session{} y postauth{}, esto para traer los datos desde las tablas en la base de datos radius. Nota: Tambin es necesario comentar la lnea files, de la seccin authorize{}.
Tan solo resta ingresar algunos usuarios de prueba dentro de la tabla radcheck, de la base de datos radius, para verificar que freeRADIUS funcione con MySQL. Para ello, ingresar los siguientes comandos: Nota: Cada vez que se ingresa el comando mysql -u root -p, se tiene que ingresar la contrasea de root de MySQL, en este tutorial dicha contrasea es mysql. mysql -u root -p use radius; INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('usuario1','Password','usuario1'); INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('usuario2','Password','usuario2'); Donde se ingres un usuario denominado usuario1 con password usuario1, y un usuario usuario2 con password usuario2. Nota: Tambin se pueden ingresar los usuarios directamente en la tabla radcheck utilizando phpMyAdmin. Despus de realizar todos estos cambios, es imprescindible reiniciar freeRADIUS, de lo contrario, al hacer un radtest con el usuario1, freeRADIUS no funcionar correctamente (se obtendr un Access-Reject como respuesta), a pesar de que el usuario1 efectivamente existe en la base de datos y se encuentra todo perfectamente configurado. Para reiniciar el servicio de freeRADIUS, hay que salirse del modo de depuracin en el cual se encuentra la primera shell de root, para esto, simplemente se ingresa la combinacin de teclas Ctrl + C, y se introducen los siguientes comandos: /etc/init.d/freeradius restart /etc/init.d/freeradius stop freeradius -X Estos comandos reinician el servicio de freeRADIUS, y la primera shell de root ya se encuentra otra vez en modo de depuracin del RADIUS. Ahora, en la segunda shell de root, se ingresa el comando: radtest usuario1 usuario1 127.0.0.1 1812 testing123 Y con esto, se obtiene como respuesta un Access-Accept, indicando que efectivamente ya se comunican freeRADIUS y MySQL.
En la segunda pantalla, se ingresa la contrasea contenida en el archivo /etc/freeradius/clients.conf, la cual, en este caso, es testing123, es decir, la contrasea por default. En la tercera pantalla se ingresa eth0, para indicar la interfaz DHCP de Chillispot.
Nota: Esta pgina (portal.html) se crear ms adelante en el tutorial. En la sexta pantalla, ingresar la contrasea para Chillispot. La cual, en este tutorial, ser chilli.
gedit /etc/init.d/chilli.iptables Y dentro de este archivo, ingresar la siguiente informacin: #!/bin/sh # # Firewall script for ChilliSpot # A Wireless LAN Access Point Controller # # Uses $EXTIF (eth0) as the external interface (Internet or intranet) and # $INTIF (eth1) as the internal interface (access points). ## # SUMMARY # * All connections originating from chilli are allowed. # * Only ssh is allowed in on external interface. # * Nothing is allowed in on internal interface. # * Forwarding is allowed to and from the external interface, but disallowed # to and from the internal interface. # * NAT is enabled on the external interface. #Added by Ransomed to enable ip_forwarding echo 1 > /proc/sys/net/ipv4/ip_forward IPTABLES="/sbin/iptables" EXTIF="wlan0" INTIF="eth0" $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD ACCEPT $IPTABLES -P OUTPUT ACCEPT #Allow related and established on all interfaces (input) $IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #Allow releated, established and ssh on $EXTIF. Reject everything else. $IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 22 --syn -j ACCEPT $IPTABLES -A INPUT -i $EXTIF -j DROP #Allow related and established from $INTIF. Drop everything else. $IPTABLES -A INPUT -i $INTIF -j DROP #Allow http and https on other interfaces (input). #This is only needed if authentication server is on same server as chilli $IPTABLES -A INPUT -p tcp -m tcp --dport 80 --syn -j ACCEPT $IPTABLES -A INPUT -p tcp -m tcp --dport 443 --syn -j ACCEPT #Allow 3990 on other interfaces (input). $IPTABLES -A INPUT -p tcp -m tcp --dport 3990 --syn -j ACCEPT #Allow everything on loopback interface. $IPTABLES -A INPUT -i lo -j ACCEPT # Drop everything to and from $INTIF (forward) # This means that access points can only be managed from ChilliSpot
$IPTABLES -A FORWARD -i $INTIF -j DROP $IPTABLES -A FORWARD -o $INTIF -j DROP #Enable NAT on output device $IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE Nota: Asegurarse de que las interfaces en EXTIF y en INTIF en este archivo, coincidan correctamente con las interfaces de salida a Internet, y de entrada local respectivamente, de acuerdo con su equipo. Posteriormente, ingresar los comandos: chmod 700 /etc/init.d/chilli.iptables ln -s /etc/init.d/chilli.iptables /etc/rcS.d/S40chilli.iptables /etc/init.d/chilli.iptables
DEL
ARCHIVO
Ahora se edita el archivo hotspotlogin.cgi utilizando el siguiente comando: gedit /usr/lib/cgi-bin/hotspotlogin.cgi Y se descomentan y modifican las siguientes lneas como se muestra: $uamsecret = "chilli"; $userpassword=1;
gedit /var/www/portal.html <html> <body> <center> <h1><img src="yourlogo.png"></h1> <font face="verdana,arial,sans-serif"><a href="http://192.168.182.1:3990/prelogin">Click here to login and agree to the terms below</a></font> <p> <p align="middle"><font face="verdana,arial,sans-serif"> This is a private network. This network, including all related equipment,<br> networks, and network devices (specifically including Internet access) are<br> provided only for authorized use. <br> <br> Use of this network, authorized or unauthorized, constitutes consent<br> to monitoring of this network. Unauthorized use will subject you to criminal<br> prosecution. Evidence of unauthorized use collected during monitoring may be<br> used for administrative, criminal, or other adverse action. Use of this system<br> constitutes consent to monitoring for these purposes.<br> </font> </center> </body> </html> Nota: Esta pgina html, puede crearse de acuerdo a las necesidades personales, y hacerla tan sencilla o tan compleja como se requiera.
Tambin se puede observar que el gateway de la PC cliente es la direccin 192.168.182.1, sta es la direccin de la interfaz ethernet del servidor. Ingresar cualquier url en la ventana del navegador. A continuacin se le preguntar si desea aceptar el certificado de seguridad; se acepta y automticamente Chillispot mostrar al cliente la pgina portal.html. En esta pgina, el cliente dar clic en el enlace para ir a la pgina de autenticacin.
Dentro de la pgina Hotspot de autenticacin (figura 36), el cliente ingresar su usuario y contrasea y dar clic en Login. Esta solicitud llegar a Chillispot, quien a su vez enviar esta informacin al servidor freeRADIUS, entonces se comprobarn estos datos de acuerdo a la informacin almacenada en la base de datos radius de MySQL, y dependiendo de si existe o no el usuario y contrasea, freeRADIUS le autorizar o le negar el servicio de Internet.
Nota: Recordar que previamente el freeRADIUS se debe encontrar en modo de depuracin. Y tambin, slo debe haber una ventana de depuracin abierta. Si el usuario y la contrasea fueron correctos, ahora el cliente ya puede navegar por Internet, hasta que se desconecte del servicio dando clic en Logout. Cuando el sistema del servidor se reinicia, Chillispot y freeRADIUS no se cargan automticamente. Por este motivo, como paso final, se debe editar el archivo rc.local ingresando el comando: gedit /etc/rc.local Dentro de este archivo, aadir la lnea freeradius -X como se muestra: #!/bin/sh -e # rc.local # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # By default this script does nothing. freeradius -X exit 0 Cada que inicie debe reiniciar chillispot y freeradius, posteriormente detener freeradius para ponerlo en modo de depuracin.
Contraseas utilizadas en este tutorial: MySQL usuario = root contrasea = mysql FreeRADIUS contrasea = testing123 phpMyAdmin usuario = phpmyadmin contrasea = mysql Usuario para base de datos radius usuario = usuario contrasea = usuario Chillispot contrasea = chilli Usuarios registrados con acceso a Internet: usuario: usuario1 contrasea: usuario1 usuario: usuario2 contrasea: usuario2
Archivos utilizados en este tutorial: SSL (Certificado) /etc/ssl/private/portal.key /etc/ssl/private/portal.key.org /etc/ssl/private/portal.csr /etc/ssl/certs/portal.crt Apache2 /etc/apache2/sites-available/ssl /etc/apache2/ports.conf Freeradius 2.1.0 /etc/freeradius/clients.conf /etc/freeradius/users /etc/freeradius/sites-available/default /etc/freeradius/sql.conf /etc/freeradius/radiusd.conf Chillispot /etc/init.d/chilli.iptables /etc/default/chillispot /etc/chilli.conf Sistema /etc/network/interfaces /etc/modules /etc/rc.local /usr/lib/cgi-bin/hotspotlogin.cgi /var/www/portal.html