Práctica 7: Configuración de un firewall de red con pfSense
Objetivo
El alumno realizará la instalación y configuración de una máquina virtual pfSense con los servicios de red NAT, DHCP, DMZ y Port Forwarding para permitir que otras máquinas tengan salida a Internet, así como que otros dispositivos de Internet tengan acceso a servicios en la DMZ.
Elementos de apoyo
Restricciones
- La fecha límite de entrega es el viernes 11 de noviembre de 2022 a las 23:59 horas
*
- Esta actividad debe ser entregada en equipo de acuerdo al flujo de trabajo para la entrega de tareas y prácticas
- Crear una nueva rama llamada
practica-7
- Utilizar la carpeta
docs/practicas/practica-7/Equipo-ABCD-EFGH-IJKL-MNOP
para entregar la práctica
- Donde
Equipo-ABCD-EFGH-IJKL-MNOP
representa el nombre del equipo que debió anotarse previamente en la lista del grupo
- Crear un merge request en el repositorio de tareas para entregar la actividad
Entregables
-
Archivo README.md
- Explicación de la topología de red utilizada
- Procedimiento de configuración de NAT, Port Forwarding, servidor DHCP y DMZ
- Procedimiento para reservar una dirección IP en el servidor DHCP
- Explicación de las bitácoras generadas
- Explicación de las reglas
- Procedimiento básica de seguridad del pfsense
- Nombre del host: debe ser el del equipo
- Visualización del nombre completo
- Acceso a consola solicitando credenciales de seguridad (agregar las nuevas credenciales)
- Configuración segura del servicio SSH
- Limitación de acceso a la WEB de administración, solo desde la DMZ
- Visualizar la configuración de pfSense al conectarse via SSH:
- Reglas PF (
pfctl -sr
)
- Tablas (
pfctl -s Tables
)
- Estados de NAT (
pfctl -ss
)
- Reglas de NAT (
pfctl -s NAT
)
- Conclusiones sobre las capturas de tráfico de red
-
Carpeta files
- Archivo de configuración
config.xml
del pfSense
- Cliente DHCP (CentOS, Debian o Alpine/otro)
- Tabla ARP
- Tabla de rutas
- Salida de los comandos de configuración de red
- Salida de los comandos con las pruebas de conectividad local
- Salida de los comandos con las pruebas de conectividad externa
- Salida (imágenes) de las consultas mediante los navegadores del cliente WAN a servicios de la DMZ HTTP, HTTPS y de acceso al servicio SSH
- Estados del pfsense donde se indiquen las conexiones de NAT
Introducción
PfSense versión Community Edition es una plataforma de la compañía Netgate, desarrollada en el sistema FreeBSD UNIX con licencia de código libre, que proporciona servicios como firewall, router, red privada virtual (VPN por sus siglas en inglés),sistema de prevención/detección de Intrusos (IPS/IDS). DNS entre otros.
Procedimiento
Se presentan los pasos para elaborar la configuración de un NAT, forwarder de DNS, DHCP y DMZ utilizando la plataforma pfSense con base en la topología de red que se muestra a continuación:
Diagrama de Red |
 |
Diagrama de interfaces de red en VirtualBox |
 |
Para la red WAN, crear una NatNetwork, donde se debe conectar la interfaz em0 del pfSense y cliente Alpine/etc (eth0).
Adaptador de red NAT Network |
 |
Warning
- Crear un snapshot de la máquina virtual pfSense antes de realizar la configuración de los servicios de red.
pfSense
Instalación
- Descargar el sistema operativo pfSense, estableciendo el parametro DVD Image (ISO) y l arquitectura AMD64, posteriormente descomprimir el archivo.
Descarga pfSense |
 |
- Crear una máquina virtual en Virtualbox con 3 interfaces de red:
Propiedades MV pfSense |
 |
Arranque del ISO |
 |
Términos y condiciones de la Política de uso |
 |
Instalación del sistema |
 |
Distribución de teclado |
 |
Sistema de archivos |
 |
Resumen de las opciones de instalación |
 |
Instalación |
 |
Solicitud de reinicio |
 |
Configuración inicial
- Ingresar a la consola y establecer las direcciones IP de acuerdo a los parámetros indicados a continuación:
Interfaz |
Red |
Tipo |
Dirección IP |
DHCP VirtualBox |
em0 - WAN |
NAT Network |
DHCP |
10.0.2.Y |
No aplica |
em1 - LAN |
Host-Only (vboxnet0 )¹ |
Estática |
192.168.56.254 |
Deshabilitado |
em2 - DMZ |
Host-Only (vboxnet1 )² |
Estática |
172.16.1.254 |
Deshabilitado |
Warning
¹
: La red vboxnet0
ya debería estar creada
²
: Crear la red vboxnet1
con el direccionamiento adecuado
- Seleccionar del menú la opción 1, para asignar las interfaces.
- Establecer que no se necesitan VLANs
- Definir interfaz WAN:
em0
- Definir interfaz LAN:
em1
- Definir interfaz OPT1:
em2
- Aceptar los cambios
- Seleccionar del menú la opción 2, establecer las direcciones IP a cada interfaz.
- Seleccionar la interfaz 1 (WAN)
- Establecer dirección IP estática, máscara de red y gateway.
- No permitir el DHCP v6
- No permitir revertir al protocolo http.
- Finalizar
- Repetir pasos del 2 al 13 para las interfaces LAN.
- Establecer en la interfaz LAN el servidor DHCP y un rango de 10 IPs
- Repetir pasos del 2 al 13 para las interfaces OPT1 (DMZ).
- Cambiar nombre a la interfaz OPT1
Consola pfSense |
 |
Asignación de interfaces de red |
 |
Estado final de las interfaces de red |
 |
- Configurar los clientes disponibles CentOS, Debian, etc., a la interfaz LAN para obtener una dirección IP mediante el DHCP:
Servidor CentOS (Red DMZ) |
 |
Cliente Debian (Red LAN) |
 |
Cliente Alpine (Red LAN) |
 |
- Abrir un navegador WEB en el cliente de su elección e ingresar a la interfaz WEB de administración
- Las credenciales de acceso por defecto son
admin
/pfsense
:
Administración web |
 |
Configuración inicial |
 |
Información general |
 |
Cambio de contraseña |
 |
Finalizar configuración |
 |
Terminos y condiciones |
 |
Dashboard principal |
 |
Configuración de las reglas para la DMZ
- Generar regla de bloqueo de tráfico de la DMZ a la LAN, en la interfaz DMZ.
- Firewall->Rules->DMZ.
- Hacer clic en el botón add para agregar nuevas reglas, considerar los siguientes parámetros :
- Action: Block
- Interface: DMZ.
- Address Family: IPv4
- Protocol: Any.
- Source : DMZ Net.
- Destination : LAN net.
- Al finalizar hacer clic en el botón save, posteriormente aplicar cambios con el botón apply Changes.
Regla DMZ parámetros |
 |
Reglas DMZ |
 |
- Generar Alias para los puertos de acceso de internet al servidor WEB y conexión remota segura
- Firewall -> Alias->Ports.
- Hacer clic en el botón add para agregar alias, considerar los siguientes parámetros :
- Name: WEB_SSH.
- Description : Acceso servidor WEB y SSH.
- Puertos y descripcion: http, https, DNS y SSH
- Click en el botón add ports.
- Al finalizar hacer clic en el botón save, posteriormente aplicar cambios con el botón apply Changes.
Alias Puertos |
 |
- Generar Alias para los servidores WEB que tendrán acceso desde Internet
- Firewall -> Alias->IP.
- Hacer clic en el botón add para agregar alias, considerar los siguientes parámetros :
- Name: DMZ_WEB_ACCESO
- Description : Dispositivos DMZ Acceso.
- Host: dirección IP y descripción
- Al finalizar hacer clic en el botón save, posteriormente aplicar cambios con el botón apply Changes.
Alias IP |
 |
- Generar regla de acceso de internet al servidor WEB
- Firewall->Rules->DMZ.
- Hacer clic en el botón add para agregar nuevas reglas, considerar los siguientes parámetros :
- Action: Pass
- Interface: DMZ.
- Address Family: IPv4
- Protocol: TCP/UDP
- Source : DMZ Net.
- Destination : Any.
- Al finalizar hacer clic en el botón save, posteriormente aplicar cambios con el botón apply Changes.
Regla Acceso Internet |
 |
- Configuración de Port forwarding para acceso a la DMZ
- Firewall->NAT->Port Forward
- Hacer clic en el botón add para agregar nuevas reglas, considerar los siguientes parámetros :
- Interface: WAN.
- Address Family: IPv4
- Protocol: TCP
- Destination : WAN address
- Destination port range: http
- Redirect target IP: 172.16.1.101
- Redirect target port: http
- Description: Port forwarding DMZ Web Server
- Al finalizar hacer clic en el botón save, posteriormente aplicar cambios con el botón apply Changes.
- Replicar configuración de Port Forwarding para los servicios https y ssh.
Port Forwarding servicio http |
 |
Regla en interfaz WAN para Port Forwarding http |
 |
- Pruebas de conectividad desde la WAN a los servicios de la DMZ
Conexión desde cliente WAN al servicio http |
 |
Conexión desde cliente WAN al servicio https |
 |
Conexión desde cliente WAN al servicio SSH |
 |
Estados de conexión en el pfSense |
 |
Configuración de DHCP Reservado
- Identificar la dirección MAC del cliente en la red LAN.
Dirección MAC del Cliente Debian |
 |
- Ingresar al pfsense Services>DHCP Server> LAN
- En el apartado del final DHCP Static Mappings for this Interface, hacer clic en el botón add.
- Llenar los siguientes parámetros:
- MAC Address
- IP Address
- Hostname
- Descripción: un nombre descriptivo
- Seleccionar la casilla Create an ARP Table Static para enlazar la IP y MAC.
- Al finalizar hacer clic en el botón save, posteriormente aplicar cambios con el botón apply Changes.
DHCP Static Mapping parámetros |
 |
DHCP Static Mapping Verificación |
 |
Estado del servicio DHCP |
 |
Validar dirección IP en virtual. |
 |
Servidor CentOS
[root@centos ~]# dnf -y install httpd mod_ssl
...
- Reiniciar el servicio
httpd
[root@centos ~]# systemctl restart httpd
- Revisar que mod_ssl esté instalado y configurado
[root@centos ~]# cat /etc/httpd/conf.modules.d/00-ssl.conf
LoadModule ssl_module modules/mod_ssl.so
[root@centos ~]# grep '^SSLCertificate*' /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
[root@centos ~]# ls -la /etc/pki/tls/certs/localhost.crt /etc/pki/tls/private/localhost.key
-rw-r--r--. 1 root root 3871 Nov 1 12:13 /etc/pki/tls/certs/localhost.crt
-rw-------. 1 root root 1704 Nov 1 12:13 /etc/pki/tls/private/localhost.key
[root@centos ~]# apachectl -M | grep ssl
ssl_module (shared)
Note
- En esta práctica no importa que el certificado sea auto-firmado
- Verificar que los puertos estén abiertos
[root@centos ~]# netstat -ntulp | egrep '^Proto|httpd'
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::80 :::* LISTEN 3310/httpd
tcp6 0 0 :::443 :::* LISTEN 3310/httpd
[root@centos ~]# systemctl enable --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
- Edita los archivos HTML que necesites en el directorio
/var/www/html
, estos serán visibles en la URL http://IP-CENTOS/ARCHIVO.html
Conclusiones
- Comparar las ventajas y desventajas de utilizar pfSense contra realizar la configuración manual en GNU/Linux
- Comparar la configuración de un appliance de firewall como pfSense utilizando la consola web contra hacer la configuración de cada servicio a mano en un sistema operativo GNU/Linux de propósito general (router con
sysctl
, NAT con iptables
, DNS forwarder, servidor DHCP) y mencionar las ventajas y desventajas de cada opción
- Al analizar las reglas de pfSense, ¿Cuándo se usa reject o block?
- ¿Qué tipo de política se usa en la práctica: permisiva o restrictiva? Justifica la respuesta
- ¿Cúal se considera mejor?
- [Video de la topología de red utilizada 📼](https://youtu.be/0123456789ABCDEF)