martes, 19 de octubre de 2021

Portal cautivo con pfSense.

Hola queridos lectores. Hoy vamos a ver como implementar un portal cautivo en nuestra red con Pfsense.

PfSense es una solución de software que ya vimos en una entrada anterior. Para mas detalles os recomiendo que la visitéis.
 

Pero primero ¿que es un portal cautivo y porque tendríamos que usarlo?


Un portal cautivo es básicamente es un sistema informático alojado en alguna máquina dentro de una red (normalmente el router) que vigila el tráfico web y fuerza a los usuarios a pasar por una página especial si quieren navegar por Internet de forma normal. El portal cautivo se ilustra como una página web, también conocida como login, que el usuario ve antes de acceder la red Wi-Fi pública donde los usuarios pueden autenticarse utilizando sus propias credenciales. 
 
 



 
 
Aunque he tenido oportunidad de leer muchas opiniones contrarias a su uso (?) lo cierto es que en redes públicas son muy prácticos para tener cierto control sobre los usuarios de la misma sin negarles el acceso, pues las cuentas se pueden gestionar fácilmente y también tenemos la opción de usar sistemas de tickets o vouchers con lo que podemos generar sesiones en los sitios donde usuarios externos a la red se conecten frecuentemente, como bibliotecas, bares y restaurantes, oficinas o empresas. Según el caso que se presente, es mucho mas fácil implantar un sistema con portales cautivos que implantar un Windows Server con RADIUS y/o usar GPOs para gestionar las conexiones, por ejemplo.



Los portales cautivos se pueden desplegar con Http o Https, y en mi humilde opinión, le añade a las conexiones WIFI un extra de seguridad; pues para la mayoría de atacantes de redes inalámbricas puede ser disuasorio el que, aunque obtengan la contraseña, además necesiten un usuario y una contraseña para navegar.

Hoy veremos como implementar este servicio con pfSense que tiene un sistema bastante rápido, aunque luego las configuraciones son extensas y tienen muchos matices. Intentaré explicar lo máximo posible sin complicarlo demasiado.


Empezamos.


Para este ejercicio he preparado una red con un router pfSense con tres interfaces de red para implementar dos zonas LAN, una para administración (LAN) y otra para invitados (OPT1), que será donde lanzaremos el portal cautivo, os dejo aquí debajo un esquema de la red (nada complicado para vosotr@s). 
 
 
 

 
 
 
Durante la instalación de pfSense aplicaremos DHCP a los interfaces LAN y OPT1, aunque podríamos configurar esto a posteriori sin ningún problema.


Tras instalar pfSense y logearnos en la interfaz, lo primero que haremos es un grupo para el portal cautivo. Yo le he llamado hotspot ustedes pueden llamarlo como les convenga.
 
 

 
 
 
 
A continuación hacemos un par de usuarios para que puedan conectarse y los unimos al grupo recién creado. PfSense nos da la opción de asignar un certificado para cada usuario. Que no se nos olvide incluir los usuarios en el nuevo grupo hotspot.
 
 
 

 
 
Creamos un par de usuarios.

 
 
 
Con los usuarios listos volvemos a la gestión de grupos donde ahora nos ha aparecido una opción que antes estaba oculta, la asignación de permisos al grupo. Le asignamos permisos a este grupo para usar el portal.
 
 
 

 
 
 
Asignamos al grupo permiso para usar el portal.

 
 


Si no hemos configurado el servidor DHCP durante la instalación, deberíamos hacerlo  ahora, sobre todo prestamos atención a los valores “Default lease time” y “Maximun lease time” donde establecemos durante cuanto tiempo queremos ceder direcciones ip a los equipos conectados. El menú del servidor está en “Servicios” >> “DHCP Server”.





Sería conveniente asignar algunas direcciones DNS para el interfaz OPT1 en el servidor DHCP, para que este se las pase a los equipos que se conecten.
 
 

 
 
 
Ahora desde “Services” >> “Captive Portal” vamos a levantar nuestro portal cautivo, hacemos clic en “Add” y le asignamos un nombre y una descripción.
 
 

 
 
 
Haciendo clic en “Enable Captive Portal” aparecen opciones que antes estaban ocultas. Mejor lo vemos con imágenes.
 
 
 
 
 
 
(1) Elegimos el interfaz donde queremos que actúe el portal; en este caso OPT1

(2) En “Idle timeout” podemos establecer si queremos cerrar el portal a los usuarios que estén inactivos. El tiempo se establece en minutos

(3) En “Hard timeout” podemos establecer si queremos cerrar la conexión, independientemente del uso, a los usuarios del portal tras este tiempo.

Los valores (2) y (3) deben ser inferiores a los tiempos de cesión por defecto y máximo del servidor DCHP.


(4) “Traffic cuota” podemos asignar una cuota en Megabytes para los usuarios. Me parece muy canina esta opción, pero puede ser útil con conexiones limitadas. Los usuarios podrán conectarse otra vez cuando agoten su cuota.
 
 

 
 
 
(5) Con “Pre-authentication redirect URL” si tenemos un servidor web en la red, podemos redirigir a una landing page a los usuarios para darles la bienvenida antes del login.

(6) Con “After authentication Redirect URL” lo mismo que (5) pero redirigimos a los usuarios a una web DESPUES del login.

(7) Preservamos las sesiones activas de los usuarios en caso de reinicio del router pfSense.
 
 

 
 

(8) y (9) Elegimos que tipo de autentificación queremos usar para las sesiones, podemos elegir la base de datos local de usuarios (que es la que vamos a usar ahora), LDAP o RADIUS. 
 
Para usar LDAP o RADIUS vamos al menú “System” >> “User Manager” >> “Authentication Servers”. Pero esto lo veremos en una futura entrada.
 
 

 
 
 
 
 
Cuando terminemos con la configuración hacemos clic en guardar y vamos a configurar el cortafuegos. Este paso es necesario porque en pfSense, el interfaz OPT1 viene cerrado por defecto.

Añadiremos varias reglas: 
 
 

 
 
(a) Bloqueamos el tráfico desde la red OPT1 a la ip del intefaz, así no permitimos a los usuarios de esta LAN entrar al panel de configuración de pfSense.
 
 
(b) Dejamos pasar el tráfico TCP/UDP desde el la red OPT1 a internet.

(c) y (d) Permitimos el tráfico TCP, UDP y ICMP desde el interfaz de administración LAN al OPT1, puede ser interesante para acceder a recursos compartidos o para permitir a los administradores monitorizar los equipos conectados directamente.

Hay mas opciones disponibles pero vamos a dejarlas de lado por el momento y vamos a probar el portal cautivo. Arrancamos la máquina cliente y abrimos el navegador. Después de unos breves minutos nos aparece el login. En Firefox y Edge veremos una pestaña en la parte superior donde el navegador nos avisa que necesitamos login para acceder a la red.
 
 

 
 
 

 
 
Una vez logeados con el usuario creado anteriormente ya podemos acceder a internet.
 
 
 

 
 
 
Otra opción interesante es personalizar el fondo de la pantalla de login. Simplemente subimos una archivo .png y listo. También tenemos la opción de cambiar el logo de pfSense por el nuestro propio, pero es bastante doloroso; pfSense no admite en el logo cualquier .png y tampoco hay mucha documentación sobre esto. Encima cuando subimos imágenes que no cumplan estos requisitos, obtenemos un extraño error “CFRS token error” que despista bastante. Lo mejor es dejar el logo de pfSense de momento y cambiaremos el fondo por uno que nos guste mas. Hay plantillas para logins en html5 gratis para descargar e incluso he encontrado plantillas ex profeso para pfSense.






Tenemos disponible la posibilidad, de usar certificados para proteger las conexiones de los usuarios, bueno de hecho sería lo mas recomendable para completar la seguridad de la instalación. El problema es que los navegadores para W10 no aceptan los certificados autofirmados de pfSense de ninguna manera. Actualmente los navegadores llevan protección contra los intentos de robos de sesión y los certificados autofirmados de pfSense encienden todas las alarmas.
 
 
La opción para poder usarlos sería importar un certificado que si acepte Windows10, como los generados por OpenSSL por ejemplo; en el menú “System” >> “Certificate Manager” >> “CAs” >> “Edit” y en “method” >> “import an existing Certificate Authority”. Solo hay que copiar y pegar el contenido de el archivo .PEM el el formulario. 
 
 

 
 
Como ya dije al principio del post, el motivo de implementar un portal cautivo es el control de los usuarios; y podemos efectuar esta tarea en los menús “Status” >> “DHCP leases” donde vemos que equipos están conectados, direcciones MAC, direcciones IP, nombres de HOST etc. y para el portal cautivo en “Status” >> Captive Portal” >> “Hotspot” podemos ver quien está conectado en el portal e incluso podremos desconectarlo desde aquí.
 
 
 
Panel de status de portales cautivos.
 

En el Dashboard de pfSense podemos añadir gráficas de red para ver el uso de los interfaces del router en tiempo real.
Para añadir las gráficas hacemos clic en el “+” del menú del Dashboard, os lo señalo en la imagen. 
 
 

 
 
 
Gráficas de uso de red en el Dashboard.

 
 
 
 
Como podéis ver, implementar un portal cautivo en pfSense es cosa de minutos aunque luego las configuraciones son extensas y nos llevará mas tiempo afinar el desempeño del portal. Luego esta el asunto del uso de certificados, que sería muy necesario para no exponer a los usuarios a un robo de sesión. Necesitaríamos usar algún certificado que acepten los navegadores para Windows10. Si tenemos un Windows Server o un Zentyal como controlador de dominio, se pude configurar con estos una entidad certificadora CA, pues estos certificados si los aceptan los equipos con Windows, que son la mayoría. Pero eso ya es otra historia....




Y bueno con esto me despido, hasta la próxima.

No hay comentarios:

Publicar un comentario