examen1 radius rdc215
DESCRIPTION
implementacion de servidor radius en debian squezze usando mysql y portal cautivo monowallTRANSCRIPT
EXAMEN #1
IMPLEMENTACION DE UN PORTAL CAUTIVO CON RADIUS Y PFSENSE
UNIVERSIDAD DE EL SALVADOR
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA
REDES DE COMPUTADORAS II
CICLO II 2011
P R O F E S O R : I N G . C A R L O S
P O C A S A N G R E
C I U D A D U N I V E R S I T A R I A
ESTUDIANTES:
David Samuel Martínez López
Tony Edwin Fuentes González
L U N E S 0 3 O C T U B R E 2 0 1 1
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
INTRODUCCIÓN
Con el pasar de los últimos años se ha venido implementando cada vez en más lugares la tecnología de acceso inalámbrico a redes de área local; en las empresas principalmente para brindarles a los usuarios movilidad y mediante ello puedan aumentar su productividad y eficiencia en el trabajo del día a día, y en lugares públicos (tales como aeropuertos, cafés, parques, entre otros) para brindarles, como un servicio de valor agregado, el acceso a la Internet por esta vía. Sin embargo, principalmente en el caso de las empresas que implementen redes inalámbricas en sus ambientes, suele descuidarse el aspecto de la seguridad, abriendo así una grieta por la cual sujetos ajenos a la empresa puedan acceder a la red, leer, escribir y hasta destruir uno de los activos más importantes que puede tener: la información (desde los proyectos que la empresa pretende llevar a cabo en un futuro cercano hasta las base de datos en la que puede mantener información confidencial sobre sus empleados y clientes más importantes). Con este documento se pretende explicar la implementación de un portal cautivo con la distribución libre de RADIUS y como base de datos a MySQL para el servidor de autenticación y como router usaremos pfSense instalado en una computadora el cual crearemos una isla para la seguridad de nuestra LAN por medio de políticas de acceso por medio de Access list y nuestro portal cautivo.
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
OBJETIVOS.
Estudiar la tecnología Wi-Fi (IEEE 802.11), enfocándonos en el análisis de los aspectos de seguridad que en ella se contemplan.
Diseñar e implementar una red inalámbrica considerando los más altos grados de seguridad: con autenticaciones usando FreeRadius y comunicaciones seguras implementando Access list con pfsense.
Implementar una red con el mínimo de interfaces en el router usando el concepto de vlan usando un switch capa tres para la programación de varias subredes.
MARCO TEORICO.
Introducción a pfSense
pfSense es una distribución basada en FreeBSD, derivada de m0n0wall. Su objetivo es tener un cortafuegos (firewall) fácilmente configurable a través de una interfase web e instalable en cualquier PC, incluyendo los miniPC de una sola tarjeta. Se trata, por tanto, de una solución muy completa, bajo licencia BSD y, por tanto, de libre distribución. El cortafuegos forma parte del Kernel del sistema. De hecho, se trata del Packet Filter (PF) originario de OpenBSD, considerado com el sistema operativo más seguro del mundo. Packet Filter (PF) está presente como estándar en FreeBSD desde noviembre de 2004. Incluye funcionalidades como el regulador de caudal ALTQ, que permite asignar prioridades por tipo de tráfico. Los desarrolladores de pfSense escogieron FreeBSD en lugar de OpenBSD por su facilidad de instalación en el mundo de lps PCs y porqué ya existía BSD Installer, una versión muy, muy reducida de FreeBSD. Todo ello da una gran flexibilidad a la solución pfSense, ya que se puede montar tanto en equipos miniPC (basados en una sola placa) que emplean como disco una Compact Flash como en PC estándar con disco duro. En este último caso se pueden añadir paquetes como Snort, Squid, Radius, etc.
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
La versión utilizada de PFSense fue la versión beta 2.0 descargada como una imagen ISO desde el sitio http://www.pfsense.org/ en la pestaña downloads selecciona una región y listo para ser utilizada para correrla desde el CD-ROM guardando todos los cambios en la USB.
Introducción a RADIUS
RADIUS (acrónimo en inglés de Remote Authentication Dial-In User Server). Es un protocolo de autentificación y autorización para aplicaciones de acceso a la red o movilidad IP. Utiliza los puertos 1812 y 1813 UDP para establecer sus conexiones (para autenticar/autorizar y contabilizar, respectivamente). Puntos importantes:
Los sistemas embebidos generalmente no pueden manejar un gran número de usuarios con información diferente de autenticación. Requiere una gran cantidad de almacenamiento.
RADIUS facilita una administración centralizada de usuarios. Si se maneja una enorme cantidad de usuarios, continuamente cientos de ellos son agregados o eliminados a lo largo del día y la información de autenticación cambia continuamente. En este sentido, la administración centralizada de usuarios es un requerimiento operacional.
Debido a que las plataformas en las cuales RADIUS es implementado son frecuentemente sistemas embebidos, hay oportunidades limitadas para soportar protocolos adicionales. Algún cambio al protocolo RADIUS deberá ser compatible con clientes y servidores RADIUS pre-existentes.
Un cliente RADIUS envía credenciales de usuario e información de parámetros de conexión en forma de un mensaje RADIUS al servidor. Éste autentica y autoriza la solicitud del cliente y envía de regreso un mensaje de respuesta. Los clientes RADIUS también envían mensajes de cuentas a servidores RADIUS.
Los mensajes RADIUS son enviados como mensajes UDP (User Datagram Protocol). El puerto UDP 1812 es usado para mensaje de autenticación RADIUS y, el puerto UDP 1813, es usado para mensajes de cuentas RADIUS. Algunos servidores usan el puerto UDP 1645 para mensajes de autenticación y, el puerto 1646, para mensajes de cuentas. Esto último debido a que son los puertos que se usaron inicialmente para este tipo de servicio.
Anteriormente habíamos mencionado que Radius autentica, autoriza y contabiliza La tupla “autenticación, autorización y registro” es más conocida como AAA, al ser éste su acrónimo de su denominación original inglesa “Authentication, Authorization, and Accounting”. Veamos a continuación a qué se refiere cada uno de estos términos:
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Autenticación (authentication) hace referencia al proceso por el cual se determina si un usuario tiene permiso para acceder a un determinado servicio de red del que quiere hacer uso. El proceso de autenticación se realiza mediante la presentación de una identidad y unos credenciales por parte del usuario que demanda acceso.
Autorización (authorization) se refiere a conceder servicios específicos (entre los que se incluye la “negación de servicio”) a un determinado usuario, basándose para ellos en su propia autenticación, los servicios que está solicitando, y el estado actual del sistema.
El proceso de autorización determina la naturaleza del servicio que se concede al usuario, como son: la dirección IP que se le asigna, el tipo de calidad de servicio (QoS) que va a recibir, el uso de encriptación, o la utilización obligatoria de túneles para determinadas conexiones.
Los métodos de autorización soportados habitualmente por un servidor de RADIUS incluyen bases de datos LDAP, bases de datos SQL (como Oracle, MySQL y PostgreSQL), o incluso el uso de ficheros de configuración locales al servidor.
No se debe confundir los términos autenticación con autorización. Mientras que la autenticación es el proceso de verificar un derecho reclamado por un individuo (persona o incluso ordenador), la autorización es el proceso de verificar que una persona ya autenticada tiene la autoridad para efectuar una determinada operación.
Registro (accounting, a menudo traducido también como contabilidad) se refiere a realizar un registro del consumo de recursos que realizan los usuarios. El registro suele incluir aspectos como la identidad del usuario, la naturaleza del servicio prestado, y cuándo empezó y terminó el uso de dicho servicio.
Es interesante el uso del protocolo RADIUS cuando tenemos redes de dimensiones considerables sobre las que queremos proporcionar un servicio de acceso centralizado (aunque posiblemente jerarquizado por medio de diversos servidores RADIUS). Por este motivo, uno de los principales usos de RADIUS se encuentra en empresas que proporcionan acceso a Internet o grandes redes corporativas, en un entorno con diversas de tecnologías de red.
Un Network Access Server (NAS) es un sistema que proporciona acceso a la red. En algunos casos también se conoce como Remote Access Server (RAS) o Terminal Server. En general, NAS es un elemento que controla el acceso a un recurso protegido, que puede ser desde un sencillo teléfono para VoIP o una impresora, hasta el acceso a una red inalámbrica o a Internet (proporcionado por un ISP).
Cuando un cliente quiere hacer uso de uno de estos servicios se conecta a NAS, quien a su vez se conecta a un servidor de AAA (típicamente RADIUS) preguntando si los credenciales proporcionados por el cliente son válidos. Basándose en su respuesta, NAS le permitirá acceder o no a este recurso protegido. El sistema NAS no contiene ninguna información sobre los usuarios
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
que se pueden conectar ni sus credenciales, sino que utiliza esta información para enviarla a RADIUS, y que éste le informe sobre los permisos del cliente.
Autenticación EAP/PEAP para FreeRadius EAP Extensible Authentication Protocol (EAP) es una autenticacion framework usada habitualmente en redes inalambricas. EAP una estructura de soporte, no un mecanismo especifico de autenticacion. Provee algunas funciones comunes y negociaciones para el o los mecanismos de autenticacion escogidos. Estos mecanismos son llamados metodos EAP, de los cuales se conocen actualmente unos 40. Los metodos modernos capaces de operar en ambientes inalámbricos incluyen EAP-TLS, EAP-SIM, EAP-AKA, PEAP, LEAP y EAP-TTLS. PEAP Protected Extensible Authentication Protocol (PEAP) es un metodo para transmitir de manera segura informacion de autenticacion, incluyendo contrasenas, sobre redes cableadas e inalambricas. Hay que tener en cuenta que PEAP no es un protocolo de encriptacion, sino que como otros tipos EAP solo autentica un cliente a una red. El servidor RADIUS comprueba que la información es correcta utilizando esquemas de autentificación como PAP, CHAP o EAP. Si es aceptado, el servidor autorizará el acceso al sistema del ISP y le asigna los recursos de red como una dirección IP. EAP es un marco general de autenticación, y no un mecanismo de autenticación concreto. EAP proporciona algunas funciones comunes y un método para negociar el mecanismo de autenticación a usar. Actualmente hay más de 40 métodos distintos. Es definida en el RFC 3748. Aunque el protocolo EAP no está limitado a LAN inalámbricas y puede ser usado para autenticación en redes cableadas, es más frecuentemente usado en redes inalámbricas. Recientemente los estándares WPA y WPA2 han adoptado cinco tipos de EAP como sus mecanismos oficiales de autenticación.
DESAROLLO. MATERIAL UTILIZADO Hardware:
Una PC con 4 tarjetas de red(solo son necesarias dos) y un CD-ROM donde correremos PFSense para que sirva como Router.
Una laptop con Debian squeeze(puede ser cualquier otra versión linux) donde se instalara el servidor RADIUS y MySQL.
Un Access point(ya sea linksys, DLINK, otros ).
Una minilaptop para prueba de portal caultivo
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Switch capa tres allied Telesis
USB donde se guardara la configuración de PFSENSE
CD con la ISO de PFSENSE para bootear la PC que servirá como router de frontera Software:
PfSense version Beta 2.0(http://www.pfsense.org/)
La versión de FreeRADIUS que vamos a instalar es la 2.1.1, que se puede bajar directamente de http://freeradius.org/download.html
Librerias OpenSSL para los módulos EAP de server RADIUS
MySQL server para la manipulación de base de datos de usuarios
PARTE I: Instalación y configuración del servidor FreeRADIUS FreeRADIUS FreeRADIUS es un paquete de software de código abierto y libre distribución que implementa diversos elementos relacionados con RADIUS, tales como una biblioteca BSD para clientes, módulos para soporte en apache, y lo que más nos interesa en este punto, un servidor de RADIUS. El servidor de FreeRADIUS es modular, para facilitar su extensión, y es muy escalable. Además, tiene casi todas las opciones que un usuario puede necesitar:
Para realizar las tareas de AAA puede almacenar y acceder a la información por medio de
múltiples bases de datos: LDAP (AD, OpenLDAP,…), SQL (MySQL, PostgreSQL, Oracle,…) y
ficheros de texto (fichero local de usuarios, mediante acceso a otros Reales, fichero de
sistema /etc/passwd,…)
Soporta prácticamente toda clase de clientes Radius (por ejemplo, ChilliSpot, JRadius, mod_auth_radius, pam_auth_radius, Pyrad, extensiones php de RADIUS, etc)
Se puede ejecutar en múltiples sistemas operativos: Linux (Debian, Ubuntu, Suse, Mandriva, Fedora Core, etc.), FreeBSD, MacOS, OpenBSD, Solaris, e incluso MS Windows por medio de cygwin.
Soporta el uso de proxies y la replicación de servidores.
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Instalación La versión de FreeRADIUS que vamos a instalar es la 2.1.1, que se puede bajar directamente de http://freeradius.org/download.html, sin embargo vamos a instalar previamente otros paquetes. Actualmente, FreeRADIUS permite su instalación mediante la descarga y compilación del código fuente. Sin embargo, para su mejor manejo, resulta más práctico convertir el código fuente en un paquete Debian e instalarlo desde el mismo sin embargo es un proceso que requiere mucho conocimientos de cómo funciona Debian por tanto lo haremos de una manera mas sencilla por medio de bajar el compilador. Cabe mencionar que buildessential no funciona en cualquier sistema Debian sin embargo es necesario para la debida compilación del paquete de freeradius. Instalación de MySQL FreeRadius puede trabajar con MySQL como base datos para los usuarios que se intenten autenticar. Para instalar MySQL en un sistema operativo basado en Debian, como root ingresemos el siguiente comando en una terminal: # apt-get install mysql-server Para descargar desde consola FreeRadius como root ponemos la siguiente línea: # wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.1.10.tar.gz Antes de compilar e instalar freeradius bajamos las librerias de encriptamiento SSL para establecer conexiones seguras ya que si no se encuentra instalado los modulos para EAP/PEAP de FreeRadius no se instalaran. Para instalar SSL en un sistema operativo basado en Debian, como root ingresemos el siguiente comando: # apt-get install libssl-dev Luego de descargar el codigo fuente de FreeRadius, se procede a descomprimirlo e instalarlo. En una terminal, ubíquese en el directorio donde descargo la fuente, y como root ejecute los siguiente comandos: # tar xzvf freeradius-server-2.1.10.tar.gz Recomendamos hacer una copia de seguridad del archivo por si existen errores en las modificaciones # cp -r freeradius-server-2.1.10.tar.gz /
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Antes que compilemos instalaremos el compilador # cd /freeradius-server-2.1.10.tar.gz / # apt-get install build-essential En primer lugar, debemos hacer una operación de configuración. Mediante la orden “./configure --help” podemos ver las opciones disponibles, con esto estamos listos y ejecutamos la siguiente linea: # ./configure –without-rlm_smb –without-rlm_perl –without-rlm_ldap –without-rlm_krb5 Una vez configurado el proceso, realizaremos la compilación mediante “make”, y posteriormente, si no ha ocurrido ningún error, instalaremos el software en el sistema mediante “make install” como superusuario. # make # make install Configuracion de FreeRadius Configuración de MySQL Vamos a configurar FreeRadius para que trabaje conjuntamente con MySQL. Para esto tenemos que crear la base de datos que usara FreeRadius, crear un usuario para conectarse a MySQL, agregar un usuario de prueba en la base de datos para conectarse a FreeRadius y por ultimo configurar FreeRadius para que trabaje con esta base de datos.
Los comandos necesarios para crear la base de datos llamada “radius” y crear un usuario con el
mismo nombre y contraseña “radpass”. Luego llenamos la base de datos a partir del esquema que trae FreeRadius:
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
en la línea de comandos, se hace lo explicado abajo, lo cual correrá un script que FreeRADIUS /etc/freeradius/sql/mysql y hay se encuentra las tables de nuestro sistema en schema.sql estan todas las tablas que se agregan a la base de datos mysql, así ya se cuenta con una base de datos para la autenticación. Las tablas más importantes son:
usergroup: Aquí se define a qué grupo pertenece cada usuario. Sus atributos son: id. Identificador de registro. UserName. Nombre de usuario. GroupName. Grupo al que pertenece el usuario.
radcheck: Aquí se definen las contraseñas de cada usuario. Sus atributos son:
id. Identificador de registro.
UserName. Nombre de usuario.
Attribute. Tipo de contraseña. En nuestro caso, ‘User-Password’.
Op. Es el operador que se usará para la comprobación. Para nosotros ‘==’.
Value. La contraseña.
radreply: En esta tabla se definen los atributos sobre la conexión y sesión de los usuarios; por ejemplo, IP asignada y tiempo de espera máximo. En nuestro caso, permitimos que se asignen los de DEFAULT contenidos en el archivo ‘users’.
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Ahora crearemos un usuario para hacer las pruebas de autenticación con FreeRadius que se explicaran más adelante, los comandos necesarios se muestran a continuación: mysql> INSERT INTO radcheck( 'username','attribute','op','value')VALUES('usuario','Cleartext-Password', ':=', 'usuario'); mysql> INSERT INTO radcheck VALUES (6,'david','Cleartext-Password',':=','david'); mysql> INSERT INTO radcheck VALUES (5,'francisco','Cleartext-Password',':=','francisco'); mysql> INSERT INTO radcheck VALUES (4,'rodrigo','Cleartext-Password',':=','rodrigo'); mysql> INSERT INTO radcheck VALUES (3,'user3','Cleartext-Password',':=','usuario3'); mysql> INSERT INTO radcheck VALUES (2,'user2','Cleartext-Password',':=','usuario');
Al ejecutar dentro de MySQL la primera línea les dará error debido a que ya existe este formato dentro de la tabla Radcheck por lo que solo necesitamos crear los siguientes usuarios con el ID incrementándolo al final tendremos una tabla como la siguiente: mysql> use radius; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select * from radcheck; +----+-----------+--------------------+----+-----------+ | id | username | attribute | op| value | +----+-----------+--------------------+----+-----------+ | 1 | usuari | Cleartext-Password | := | usuario | | 2 | user2 | Cleartext-Password | := | usuario | | 3 | user3 | Cleartext-Password | := | usuario3 | | 4 | rodrigo | Cleartext-Password | := | rodrigo | | 5 | Francisco | Cleartext-Password | := | Francisc | | 6 | david | Cleartext-Password | := | david | +----+-----------+--------------------+-----+----------+ 6 rows in set (0.00 sec)
Configuración FreeRADIUS cuenta con diversos archivos que deben configurarse para lograr que funcione como se requiere. Los principales son: radiusd.conf, users, clients.conf, sql.conf y eap.conf, todos localizados en /etc/freeradius. A continuación se describe la configuración que debe haber en cada uno de ellos. Radiusd.conf habilitaremos la autenticacion de usuarios en mysql, para ello editamos el archivo /etc/freeradius/radiusd.conf; allí descomentamos la linea include sql.conf
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
root@samaeldebian:/home/david# cd /usr/local/etc/raddb/
root@samaeldebian:/usr/local/etc/raddb# ls
acct_users attrs.pre-proxy eap1.conf huntgroups preproxy_users sql
attrs certs eap.conf ldap.attrmap proxy.conf sql.conf
attrs.access_challenge clients1.conf example.pl modules radiusd.conf sqlippool.conf
attrs.access_reject clients.conf experimental.conf policy.conf sites-available templates.conf
attrs.accounting_response dictionary hints policy.txt sites-enabled users
root@samaeldebian:/usr/local/etc/raddb# nano radiusd.conf
GNU nano 2.2.4 Fichero: radiusd.conf
$INCLUDE clients.conf
$INCLUDE eap.conf
$INCLUDE sql.conf
Sql.conf Se decidió usar MySQL como backend para los usuarios de RADIUS debido a que permite administrarlos de forma simple y flexible. Es más sencillo agregar campos a una base de datos (que puede hacerse incluso desde una aplicación de escritorio o web) que modificar los archivos de configuración de FreeRADIUS. Una vez que en el archivo de configuración ‘radiusd.conf’ se ha activado el soporte para SQL, debemos configurar el archivo ‘sql.conf’ que contiene información sobre el servidor SQL y las consultas que se deben hacer para obtener la información de los usuarios, las modificaciones son:
GNU nano 2.2.4 Fichero: sql.conf
# Connection info:
server = "localhost" #el servidor donde está la base de datos
port = "1812" #el número de Puerto de radius
login = "radius" #el usuario creado para manipular MySQL
password = "radpass" #la contraseña del usuario de MySQL no del cliente
Eap.conf Se configura este archivo para que EAP (Extensible Authentication Protocol) funcione como protocolo de autenticación. EAP se utilizará como PEAP (Protected EAP). El cual, a su vez, usará MSCHAPV2 (Microsoft Challenge-Handshake Authentication Protocol), la única modificación que se debe hacer es en la línea siguiente cambiar su valor por peap como se muestra a continuación: GNU nano 2.2.4 Fichero: eap.conf
.
.
default_eap_type = peap
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Otro archivo que configuraremos es /usr/local/etc/raddb/sites-available/default Acá configuraremos las siguientes secciones, asegurándonos de tener des comentado los parámetros que se encuentran en rojo así como el parámetro sql en cada una de ellas: root@samaeldebian:/usr/local/etc/raddb# cd sites-available/
root@samaeldebian:/usr/local/etc/raddb/sites-available# ls
buffered-sql copy-acct-to-home-server default1 example proxy-inner-tunnel status
coa decoupled-accounting dhcp inner-tunnel README
virtual.example.com
control-socket default dynamic-clients originate-coa robust-proxy-accounting vmps
root@samaeldebian:/usr/local/etc/raddb/sites-available# nano default
GNU nano 2.2.4 Fichero: default
authorize {
preprocess
chap
mschap
digest
suffix
sql
eap {
files
sql
pap
accounting {
detail
radutmp
sql
session {
radutmp
sql
post-auth {
sql
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Users
Este archivo es el que contiene la información de los usuarios que pueden acceder a la red, en caso de que no se use otro método. En nuestro caso, este archivo no tiene mucho uso puesto que se usó una base de datos en MySQL. Para lograr hacer las pruebas desde localhost necesitamos configurar el archivo /usr/local/etc/raddb/users donde definimos la linea test de la siguiente forma: GNU nano 2.2.4 Fichero: users
test cleartext-password :="test"
NOTA: el fichero “users” contiene información sobre la autenticación de suplicantes, de forma que incluso podemos añadir credenciales en forma de usuario y contraseña para permitir una configuración sencilla de usuarios (ten en cuenta que estos usuarios serán realmente clientes del NAS, y no directamente del servidor RADIUS).
mschap Ahora necesitamos modificar la configuracion del fichero mschap en el directorio modules Esta configuracion en versiones anteriores se hacia en el fichero radiusd.conf ahora tenemos que hacerlo bajo este directorio cambiamos los valores de la siguiente forma:
root@samaeldebian:/usr/local/etc/raddb# cd modules/
root@samaeldebian:/usr/local/etc/raddb/modules# ls
acct_unique checkval detail.log exec ippool mac2ip opendirectory perl
smbpasswd unix
always counter digest expiration krb5 mac2vlan otp policy smsotp
wimax
attr_filter cui dynamic_clients expr ldap mschap pam preprocess
sqlcounter_expire_on_login
attr_rewrite detail echo files linelog mschap1 pap radutmp sql_log
chap detail.example.com etc_group inner-eap logintime ntlm_auth passwd realm
sradutmp
root@samaeldebian:/usr/local/etc/raddb/modules# nano mschap
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
GNU nano 2.2.4 Fichero: mschap
mschap {
use_mppe = yes
require_encryption = yes
require_strong = yes
with_ntdomain_hack = yes
Clients.conf
Aquí se especifican los IPs o subredes desde las cuales se aceptarán peticiones. Si llega una
petición de acceso desde un IP que no esté registrado aquí, el servidor RADIUS simplemente la
ignora, negándole el acceso.
Este es el archivo que enlaza nuestra red con el servidor por medio de que se define el cliente de
radius es decir desde que IP estará escuchando las peticiones y recibiendo los paquetes del cliente
para nuestra configuración que explicaremos posteriormente.
Aquí para nuestro testing vamos a definir localhost la IP asignada a la tarjeta de red de nuestro
server y el Gateway del router de frontera como lo demostramos en las siguientes líneas de
código:
root@samaeldebian:/usr/local/etc/raddb# nano clients.conf
client 172.16.0.1 {
secret = root
shortname = pfsense
}
client 172.16.0.5 {
secret = pincho
shortname = nic
}
NOTA: si se requiere adicionales configuraciones para un server radius mas coplejo se tiene que descomentarizar otras líneas en este y en todos los demás ficheros mencionados anteriormente.
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Esta secret es la que se definirá ya sea en tu AP o en nuestro router de frontera(gateway).
Ahora solo nos resta actualizar las rutas de las nuevas librerías instaladas y levantar el servicio del
demonio de radius, ejecutamos las siguientes lineas:
root@samaeldebian:/usr/local/etc/raddb# ldconfig
root@samaeldebian:/usr/local/etc/raddb# radiusd -f -X
NOTA: Puede que sea necesario en algunos casos reiniciar tu ordenador antes de lanzar el
demonio.
PRUEBAS
Primeramente debemos hacer que nuestra IP de la NIC de nuestro server debe ser la misma
siempre por lo tanto debemos modificar el archivo:
root@samaeldebian:/home/david# nano /etc/network/interfaces
dentro del archivo editamos las siguientes líneas:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 172.16.0.5
netmask 255.255.255.224
gateway 172.16.0.1 con estos cambios restablecemos la tarjeta de red por medio de:
root@samaeldebian:/usr/local/etc/raddb# /etc/init.d/networking restart
Running /etc/init.d/networking restart is deprecated because it may not enable again some
interfaces ... (warning).
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Reconfiguring network interfaces...done.
Probamos que los cambios sean efectivos:
root@samaeldebian:/usr/local/etc/raddb# ifconfig
eth0 Link encap:Ethernet HWaddr 00:26:22:a0:fc:d2
inet addr:172.16.0.5 Bcast:172.16.0.31 Mask:255.255.255.224
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:28 Base address:0xc000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:126 errors:0 dropped:0 overruns:0 frame:0
TX packets:126 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9868 (9.6 KiB) TX bytes:9868 (9.6 KiB)
wlan0 Link encap:Ethernet HWaddr 00:26:82:33:a8:00
inet addr:192.168.2.3 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::226:82ff:fe33:a800/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1492 Metric:1
RX packets:1894 errors:0 dropped:0 overruns:0 frame:0
TX packets:1337 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1712218 (1.6 MiB) TX bytes:359792 (351.3 KiB)
Ahora ya podemos hacer las pruebas respectivas ejecutamos los commandos siguientes:
Lanzamos el demonio de radius mostrandonos algo similar como:
root@samaeldebian:/usr/local/etc/raddb# radiusd -f -X
.
.
rlm_sql (sql): Reserving sql socket id: 3
rlm_sql (sql): Released sql socket id: 3
++[sql] returns ok
++[exec] returns noop
Sending Access-Accept of id 95 to 172.16.0.5 port 48816
Finished request 0.
Going to the next request
Waking up in 4.9 seconds.
Cleaning up request 0 ID 95 with timestamp +20
Ready to process requests.
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
En otra solapa como root “testeamos” a radius nos mandara mensajes como los siguientes:
root@samaeldebian:/home/david# radtest user2 usuario localhost 1812 testing123
root@samaeldebian:/home/david# radtest rodrigo rodrigo 172.16.0.5 1812 pincho
Sending Access-Request of id 95 to 172.16.0.5 port 1812
User-Name = "rodrigo"
User-Password = "rodrigo"
NAS-IP-Address = 127.0.1.1
NAS-Port = 1812
rad_recv: Access-Accept packet from host 172.16.0.5 port 1812, id=95, length=20
Con estas pruebas vemos que esta listo nuestro server para enlazarlo con nuestro router y crear
nuestra red de vlan. La configuración de dicho router se muestra a continuación.
PARTE II: Instalación y configuración de PFSense
Booteando con PFSense
Ahora ya puedes arrancar el PC que va a servir de Host para PFSense desde el Cdrom con la iso de
PFSense en su interior y con la USB puesta, ya que es aquí donde en un pequeño archivo .xml
PFSense guardará todas las configuraciones que hagamos.
Verificando Interfaces
Iniciamos una computadora desde el cd-rom, se verán varias opciones de cómo iniciar pfsense y se
selecciona la de correr en usb (opción 3).
Lo primero que se tiene que hacer al haber entrado en pfsense es seleccionar una tarjeta de red
para la WAN y para la LAN, también nos pregunta que si queremos crear otras opciones de LAN
pero en nuestro caso eso lo haremos después.
Ahora asignamos IP a la LAN para así poder accesar al modo de interfaz web del router ya que su
configuración en interfaz web es mucho más fácil.
webGUI PFSense
Ya cuando nuestra LAN tiene una ip asignada necesitamos una PC con una ip del mismo rango que
la que se asigno a la LAN para poder accesar a su interfaz web. Para conectar el router con la una
PC utilizamos un switch. Se abre el navegador web de una computadora y colocamos la ip que
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
asignamos a la LAN del router, en seguida nos abre una ventana que nos pedirá un usuario y un
password para que podamos acceder al router, en nuestro caso tanto el usuario como el password
eran “admin”.
Una vez entremos a la interfaz web comenzamos la configuración. Nosotros necesitamos crear
tres VLANs, una VLAN contendrá un servidor de autenticación (servidor radius), otra de las VLAN
tendrá a los usuarios de nuestra red y en la última conectaremos un Access point para poder
proporcionar internet inalámbrico.
Antes de comenzar la configuración de las VLAN previamente configuramos nuestro switch como
se explicó anteriormente.
Definiendo Interfaces
Para crear una VLAN en pfsense nos vamos a INTERFACES VLAN, le colocamos a cada VLAN un ID que es el número con el que se va identificar cada VLAN, también escogemos que tarjeta de red va ser nuestro troncal y para terminar colocamos una descripción de la VLAN:
Después vamos a INTERFACES ASSIGN NETWORK PORTS y agregamos tres nuevas interfaces
y seleccionamos el puerto por el que se van a conectar al router, al ver las opciones vamos a ver
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
que tenemos para seleccionar todas las tarjetas de red que tenga nuestro router y las tres VLANs
que acabamos de crear, vamos a seleccionar una VLAN como puerto para cada interfaz que
acabamos de crear y tendremos algo como esto:
Al agregar las nuevas interfaces nos aparece como OPT1, OPT2 y OPT3, para ponerles otro nombre
nos dirigimos a INTERFACES y ahí se nos mostrara una lista de todas las interfaces que tenemos:
WAN, LAN OPT1, OPT2 y OPT3, seleccionamos OPT1 y damos clic. Ahora seleccionamos la casilla
de ENABLE INTERFACE y podremos cambiar el nombre de nuestra interfaz.
Para asignarle una IP en TYPE seleccionamos STATIC y nos permitirá asignar IP y mascara, hay otras
opciones que nos ofrece pfsense pero nosotros solo configuraremos estas opciones, abajo al final
de la ventana y damos clic en SAVE.
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Al guardar nos mostrara la opción aplicar cambios pero nos dice que antes de aplicarlos si vamos a
necesitar un DHCP para nuestra VLAN y lo configuremos primero y después apliquemos los
cambios:
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Configurando DHCP para interfaz LAN
Para esto nos vamos a SERVICES DHCP SERVER, seleccionamos la pestaña de la interfaz a la
que le queremos activar DHCP y damos clic en la casilla ENABLE DHCP SERVER. Para tener un DHCP
necesitamos un rango de IPs que van a ser que va usar el servidor, entonces colocamos un rango
de las IPs que tengamos disponibles después de esto guardamos:
Regresamos a INTERFACE y ahora si aplicamos los cambios.
Ya tenemos casi configurado lo que necesitamos, seguiremos entonces con el portal cautivo.
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Configurando Portal Cautivo (Captive Portal) en PFSense
Primero, una breve explicación de lo que es un portal cautivo:
Captive Portal (o portal cautivo en español) es una técnica que fuerza a un cliente HTTP dentro de
una Red a ver una página en especial, generalmente con propósitos de autentificación, antes de
poder navegar libremente. Esto se hace interceptando todo el tráfico HTTP, independiente de la
dirección a la cual se intente acceder, hasta que al usuario se le permite salir del portal y pude
navegar libremente, si es que no existen otras restricciones.
Para la configuración del portal cautivo nos vamos a SERVICES CAPTIVE PORTAL y ahí
seleccionamos la casilla de ENABLE CAPTIVE PORTAL, después seleccionamos la interfaz en la que
queremos poner el portal cautivo, en nuestro caso es en la interfaz WIFI:
Pfsense nos da muchas opciones más para la configuración pero nos la saltaremos y bajamos con
el scroll hasta llegar a una casilla que dice ENABLE LOGOUT POPUP WINDOW, seleccionamos la
casilla, esto es para que después de autenticarnos y navegar si queremos salirnos de internet no
quede abierta nuestra sesión y si necesitamos acceder a internet de nuevo tengamos que
autenticarnos otra vez.
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Seguimos bajando hasta una sección de autenticación y seleccionamos la opción de RADIUS
AUTHENTICATION, esto es si nuestro servidor es externo, es decir, que nuestro router aunque
puede servir de servidor de autenticación nosotros queremos un servidor externo, a continuación
colocamos la IP de la PC en la que está montado el servidor RADIUS, el puerto por el que se va a
comunicar el router con el servidor y una SHARED SECRET que es la misma que se configura en el
servidor RADIUS:
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Para terminar bajamos hasta la sección PORTAL PAGE CONTENS y subimos un archivo html, este
será la página que veremos cuando queramos acceder a internet, se nos pedirá un usuario y un
password para poder autenticarnos y poder acceder a internet
Damos clic en SAVE y listo.
Lo que nos resta por hacer, es configurar un archivo HTML para la página Portal, este archivo debe
contener 2 campos de formulario, uno para el User y otro para el Password, a continuación voy a
poner un código de ejemplo que puedes copiar y pegar:
<html> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> <title>Ejemplo Portal Cautivo</title> <meta content="Ejemplo de Portal Cautivo" name="PuLpo"> </head> <body style="color: rgb(204, 204, 204); background-color: rgb(33, 56, 90);" alink="#000088" link="#cccccc" vlink="#ff0000"> <div style="text-align: center;"><span style="font-family: arial; font-weight: bold;"><span style="color: rgb(204, 204, 204);">Ejemplo de página de Autentificación <br> <br> Captive Portal<br> <br> m0n0wall</span></span><br> </div> <br> <br> <form method="post" action="$PORTAL_ACTION$">
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
<blockquote> <p align="left"> <font style="font-size: 9pt;" color="#ffffff" face="Arial"><span style="color: rgb(0, 0, 0);"><small><span style="color: rgb(255, 255, 255);">User </span> </small><span style="color: rgb(255, 255, 255);"> </span></span><span style="color: rgb(255, 255, 255);" lang="es-cl"> </span></font><span style="font-size: 9pt; color: rgb(255, 255, 255);"><input name="auth_user" size="15"> <br> </span> <font style="font-size: 9pt;" color="#ffffff" face="Arial"><small style="color: rgb(255, 255, 255);"><br> </small><span style="color: rgb(0, 0, 0);"><small style="color: rgb(255, 255, 255);">Password</small><span style="color: rgb(255, 255, 255);"> </span> </span> </font> <span style="font-size: 9pt;"> <input name="auth_pass" size="15" type="password"> <input name="redirurl" value="$PORTAL_REDIRURL$" type="hidden"><br> <br> </span> <span style="font-size: 9pt;"><br> </span> <span lang="es-cl"> </span><br> <input value="Ingresar" name="accept" type="submit"></p> </blockquote> </form> </body> </html>
Debería verse algo similar a esto:
NOTA: dicho código se modificó por uno más acuerdo a requerimientos de práctica.
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Si en nuestro archivo html colocamos imágenes como fuente tenemos que colocar “captiveportal-
nombredeimag.jpg” después colocar las imágenes dentro del router, para esto seleccionamos la
pestaña FILE MANAGER siempre en SERVICE CAPTIVE PORTAL y aquí las subimos:
Esta configuración es porque si ponemos otra dirección o no subimos las imágenes al router
cuando alguien accese por WIFI a internet y le muestre la ventana de autenticación no se verán las
imágenes que se hallan puesto.
Configurando políticas de acceso a la red
Para que nuestro router quede totalmente configurado solamente nos falta el firewall, para la
configuracion nos vamos a FIREWALL RULES, seleccionamos la interfaz a la que le
configuraremos el firewall y agregamos una lista de acceso.
Para la WAN permitiremos que todo pueda salir pero que de internet hasta nuestra red nada
pueda entrar
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
En la interfaz de WIFI solo permitiremos paso por el puerto 80(HTTP), puerto 53(DNS), puerto
443(HTTPS) y puerto 8000(radius) lo demás esta denegado:
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Nuestra interfaz de usuario tendrá acceso a el puerto 80(HTTP), puerto 53(DNS) y del rango de IP
una que tendrá acceso a todo, esto es porque funcionara como puerta trasera:
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
UNIVERSIDAD DE EL SALVADOR EXAMEN # 1 REDES DE COMPUTADORAS II – CICLOII 2011 IMPLEMENTACION DE PORTAL CAUTIVO CON
RADIUS Y PFSENSE
Configurando ponto de acceso
La configuración del punto de acceso se remite solo con los valores por defecto que trae el punto
de acceso y cambios solo el SSID con un nombre con el cual se identificara la red que se desea
acceso independiente de cual estemos usando ya sea un CISCO u D-LINK ya que este no lo
utilizaremos(en este caso) como un router solo como un acceso inalámbrico a nuestra LAN por
tanto no requiere mayor configuración porque hasta el DHCP lo controlara nuestro Router de
frontera tampoco necesitaremos una IP para este router.
Esquema de nuestra red
WAN
LAN
ELEMENTOS UTILIZADOS:
1. Nuestro router es PFSense el cual fue una computadora booteda con CD-ROM Con dos elementos importantes definidos como LAN y WAN que se asignaron a tarjetas de red una al switch y la otra a un acceso a internet.
2. El switch capa 3 fue uno marca allied telesis con tres VLAN denominadas Usuarios, servidores,WI-FI
3. Nuestro server Radius 4. Nuestro Access-point que no fue un Linksys 5. Minilaptop como suplicante 6. La nube fue la red del centro de computo el cual fue nuestro acceso a internet