En este primer artículo vamos a explicar la instalación de este firewall basado en FreeBSD (), así como las múltiples opciones de instalación de paquetes que contiene. PFsense deriva de otra distribución anterior llamada monowall, más centrada en instalación de equipos embebidos (se ejecuta por completo en memoria RAM), ya que PFsense se puede instalar prácticamente en cualquier PC y tiene la capacidad de poder ser instalado en un disco duro.
Entre las funciones más destacables de PFsense se encuentran:
Firewall: Filtrado (por IP, protocolo, puerto etc…), Limitación de conexiones, enrutamientos por regla, creación de alias.
Tabla de estado: informa del estado de los servicios y conexiones.
NAT (Network Address Translation): con cuatro tipos de configuraciones.
Multi-WAN: Se pueden agregar varias conexiones de Internet con diferentes proveedores para poder usar balanceo de carga, usándose para distribuir equitativamente el ancho de banda o utilizar otra conexión en caso de que un ISP falle.
Servidor VPN: con OpenVPN, IPsec o PPTP.
PPPoE Server.
Gráficos RDP.
Soporte de DNS dinámico.
Servidor DHCP.
Portal cautivo, servidor Radius, Proxy Squid, IDS/IPS Snort etc.
Pfsense soporta la instalación de diversos addons que le aportan gran variedad de utilidades. Tanto PFsense o cualquier distribución basada en OpenBSD usa en el corazón de su firewall Packet Filter (PF), a diferencia de los sistemas con kernel de linux, que usan IPtables. La diferencia a grandes rasgos es que PF es mucho más rápido, pero IPtables tiene características más avanzadas en su configuración, que en este caso pueden ser prescindibles.
La configuración de PFsense se puede hacer íntegramente por HTTP, aunque siempre podemos configurar más a fondo el sistema desde el propio terminal, por ejemplo conectando por SSH. Se puede descargar o bien una imagen ISO o bien una imagen preparada para utilizar en compact flash. Para el ejemplo de este post hemos descargado la imagen ISO.
Para la instalación voy a usar una máquina virtual con VMware. La Opción de instalar el Sistema Operativo desde una imagen ISO:
Código: Seleccionar todo
https://www.pfsense.org/download/index.html
En la configuración asignamos 1 Gb de RAM, 20 Gb de disco duro y 3 interfaces de red una WAN (la que se conecta directamente a Internet) y dos más, una para una red interna más protegida y otra para una zona DMZ donde habrá servidores web accesibles desde Internet
En Edit-> Virtual Network Editor creamos las 3 interfaces y aplicamos un rango a todas menos a la primera (vmnet0), ya que ésta se conecta directamente a internet a través de wlan0 (la interfaz inalámbrica del equipo anfitrión), para vmnet1 (192.168.1.0/24) y para vmnet2 (192.168.2.0/24):
Ahora se asocian las interfaces creadas para la máquina virtual con las interfaces vmnet creadas en el editor virtual, mediante “Edit virtual machine settings”, quedando de la siguiente forma:
na vez está la máquina virtual configurada la encendemos. En el primer menú presionamos enter para efectuar el arranque por defecto. Poco después nos aparecerá la opción de instalar, para ello pulsamos “I”:
Una vez finalizada la instalación, se puede deshabilitar el arranque desde imagen ISO y reiniciar la máquina virtual. Una vez hecho, el sistema empezara preguntandonos por la configuración de las interfaces de red.
En este caso se puede ver que ha reconocido 3 interfaces. La configuración de las VLANs de momento no la vamos a efectuar, por tanto pulsamos “n”. Ahora nos pregunta por las interfaces físicas, y asignamos cada una a emX, siendo X=0,1 o 2:
Ya tenemos nuestra interfaz WAN asignada a em0, y las otras dos interfaces a em1 y em2.
En el menú principal escogemos la opción de asignar IP a las otras dos interfaces (opción 2):
Quedando de la siguiente manera:
A partir de ahí, basta con acceder a nuestro firewall desde el navegador poniendo
Código: Seleccionar todo
http://192.168.1.2
Código: Seleccionar todo
http://192.168.2.2
Para acceder solo debemos poner en el navegador
Código: Seleccionar todo
http://192.168.1.2
Nos aparecerá una ventana como esta:
La primera vez que se entra, se accede a un “Wizard”, es decir a una configuración paso a paso:
La primera parte es donde se configuran las direcciones de los Servidores DNS, el nombre de la máquina y el nombre del dominio, en este caso se configura con las DNS de Google.
El dominio llamado en este caso “mired”, facilita mucho las cosas a la hora de acceder a un equipo, ya que podemos comunicarnos por ejemplo con un equipo llamado “oficina”, poniendo únicamente oficina.mired, o en este caso para acceder a pfsense en lugar de poner
Código: Seleccionar todo
http://192.1681.2
Código: Seleccionar todo
http://pfsense.mired
En esta misma página de configuración existen otras opciones que en este caso no nos hacen falta como es la configuración PPOE. En el caso de que queramos conectar un router en modo “bridge”, es decir que tenga NAT deshabilitado y todo el tráfico vaya directo hacia el firewall pfsense, pero este no es el caso.
Por último la sincronización de la hora y fecha del equipo se hace a través de un servidor ntp, podemos elegir la zona horaria.
Seguidamente, una vez que procedemos a dar “next” se pasa a la configuración de las interfaces previamente seleccionadas antes en la configuración.
La primera interfaz (WAN), la interfaz que se conecta a internet (vinculada a la interfaz wlan0 del anfitrión), está configurada por DHCP, siempre se podrá configurar de forma estática, simplemente deberá coincidir con el rango de esta red (
Código: Seleccionar todo
192.168.0.0/24
En la configuración general es importante incluir la dirección MAC de la interfaz WAN, es decir en este caso la MAC de wlan0. Si pfsense estuviera conectado a un router, deberíamos poner la MAC de la boca de red a la que está conectada el router, para evitar posibles ataques de tipo “spoofing”.
En la parte de abajo aparece una opción llamada “Block logonnetworks”, si esta opción está activada, se bloquearán redes a través de la interfaz WAN que sean de tipo privado, es decir, no dejará que una dirección IP de fuera del tipo
Código: Seleccionar todo
10.0.0.0/8
Código: Seleccionar todo
172.16.0.0/12
Código: Seleccionar todo
192.168.0.0/16
Código: Seleccionar todo
169.254.0.0/16
Configuración de la red interna:
El último paso es cambiar la clave de acceso web, algo muy recomendable.
Al terminar la configuración, pfsense muestra una “Dashboard”, donde se muestra un resumen de la configuración, de la carga de CPU y memoria utilizada y el estado de las interfaces de red.
La manera más habitual de acceder a estas configuraciones es a través del navegador. Es importante que al acceder al navegador lo hagamos de manera segura (por https), para ello ya existe un certificado creado por defecto en nuestro pfsense, pero es recomendable que nos creemos uno nosotros, para ello se accede al siguiente bloque:
Código: Seleccionar todo
system –> cert manage
Ahora con esta CA podemos crear un certificado llamado “mycert”, en la pestaña Certificates:
Con el certificado ya creado, lo podemos usar en las configuraciones de acceso de administrador:
Código: Seleccionar todo
system -> advanced -> admin access
Max processes pondremos un valor de 1, ya que solo queremos que a la configuración vía https acceda una sola persona a la vez.
WebGUI redirect debe estar marcado para deshabilitar la escucha por el puerto 80, a la vez que escucha por el 10443, ya que solo se quiere acceso exclusivo por https.
WebGUI Login Autocomplete se selecciona para deshabilitar el autocompletado por parte del navegador ya que es preferible que éste no guarde las credenciales por seguridad.
Las demás opciones se dejan por defecto.
Ahora una vez guardados los cambios ya se puede acceder al navegador con la URL
Código: Seleccionar todo
https://192.168.1.2:10443/
Activamos el acceso por ssh a través del puerto 10022
En Console menú seleccionamos la opción de que pida password al acceder a la consola y configuración desde el equipo local (serán las mismas credenciales que usamos para acceder con el navegador). Para configurar las opciones del Firewall y NAT accedemos al siguiente bloque:
Código: Seleccionar todo
system -> advanced -> Firewall NAT
Existen 4 tipos de optimización:
Normal: optimización equilibrada.
Alta latencia: para conexiones lentas, como las satelitales.
Agresiva: las conexiones inactivas expiran más rápido, mayor eficiencia en el uso de CPU.
Conservativa: más uso de CPU con el fin de alargar una conexión inactiva.
También se pueden configurar el tamaño de las tablas del sistema:
Firewall Maximum States: número máximo de conexiones en la tabla del firewall. Digamos que es como un netstat de la propia máquina, por defecto el tamaño máximo es de 10000 estados. En este caso ya depende mucho del entorno donde se va a usar, si es algo casero lo ponemos a 4000 para optimizar.
Firewall Maximum Tables: máximo número de tablas posibles (en pfsense se usan tablas, para crear alias, snort, reglas del firewall…). Por defecto el valor es de 3000 tablas, pero para optimizar, se puede poner 500, ya que no llegaremos a muchas más.
Firewall Maximum Table Entries. Por defecto viene con 20000 y lo ponemos a 10000. Es el número de entradas por cada tabla que antes hemos comentado.
Las demás opciones definen el comportamiento multiwan o la generación de auto reglas de filtrado del firewall a la hora de configurar una VPN o red privada virtual.
De momento se dejan las demás opciones por defecto.
En la sección NAT, también se puede agregar la generación automática para la traducción de direcciones de red de forma automática, según las reglas creadas en el firewall, pero se recomienda hacer después de forma manual.
En el bloque system -> advanced -> networking no tocamos nada, a no ser que exista incompatibilidad con alguna interfaz de red.
En el bloque system -> advanced -> miscellaneous es donde podemos configurar la conexión de nuestro pfsense con un proxy, el balanceo de carga, sensores de temperatura y cómo actuar según ésta, ahorros de energía, disminuyendo usos de CPU, opciones IPsec, así como usar parte de la memoria física para emularse como memoria RAM. Estas opciones no son demasiado importantes así que no se detallarán.
En el bloque system -> advanced -> notifications podemos hacer que las notificaciones nos lleguen por correo, via SMTP.