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
Topología

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
Topología

Warning

  • Crear un snapshot de la máquina virtual pfSense antes de realizar la configuración de los servicios de red.

pfSense#

Instalación#

  1. Descargar el sistema operativo pfSense, estableciendo el parametro DVD Image (ISO) y l arquitectura AMD64, posteriormente descomprimir el archivo.
Descarga pfSense
  1. 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#

  1. 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
  1. Seleccionar del menú la opción 1, para asignar las interfaces.
  2. Establecer que no se necesitan VLANs
  3. Definir interfaz WAN: em0
  4. Definir interfaz LAN: em1
  5. Definir interfaz OPT1: em2
  6. Aceptar los cambios
  7. Seleccionar del menú la opción 2, establecer las direcciones IP a cada interfaz.
  8. Seleccionar la interfaz 1 (WAN)
  9. Establecer dirección IP estática, máscara de red y gateway.
  10. No permitir el DHCP v6
  11. No permitir revertir al protocolo http.
  12. Finalizar
  13. Repetir pasos del 2 al 13 para las interfaces LAN.
  14. Establecer en la interfaz LAN el servidor DHCP y un rango de 10 IPs
  15. Repetir pasos del 2 al 13 para las interfaces OPT1 (DMZ).
  16. Cambiar nombre a la interfaz OPT1
Consola pfSense
Asignación de interfaces de red
Estado final de las interfaces de red
  1. 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)
  1. 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#

  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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#

  1. Identificar la dirección MAC del cliente en la red LAN.
Dirección MAC del Cliente Debian
  1. Ingresar al pfsense Services>DHCP Server> LAN
  2. En el apartado del final DHCP Static Mappings for this Interface, hacer clic en el botón add.
  3. 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#

  • Configurar una dirección IP estática en la interfaz host-only que está en la red DMZ (ver diagrama de red)

  • Instalar los paquetes httpd y mod_ssl

[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
  • Habilitar el servicio
[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?

Extra#

  • Elabora un video donde expliquen la topología de red utilizada y realicen las pruebas de conectividad.

    • Subir el video a YouTube y agregar la referencia de este video al archivo README.md
- [Video de la topología de red utilizada 📼](https://youtu.be/0123456789ABCDEF)
  • Agregar el servicio de VPN:

    • Conectar un cliente desde la red WAN a la VPN de tal manera que pueda acceder a los dispositivos de la red LAN por SSH, HTTP y HTTPS.