Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Reglas del Firewall en OPNsense


Usando los alias del firewall te permite agrupar una o más direcciones IP, direcciones de red, puertos y nombres de host y utilizarlos en reglas. Así podrás escribir reglas más fáciles de leer, entender y mantener. Los alias pueden ayudar a reducir el número total de reglas que necesitas escribir porque puedes usar un solo alias que contenga múltiples elementos.





Esquema básico firewall:


Reglas Firewall



Acciones Firewall


Las reglas pueden establecerse en tres tipos de acción diferentes:

  • Pasar -> permitir el tráfico
  • Bloquear -> denegar el tráfico y no dejar que el cliente sepa que ha sido descartado (lo que suele ser aconsejable para redes que no son de confianza)
  • Rechazar -> denegar tráfico y dejar que el cliente lo sepa. (sólo tcp y udp soportan rechazar paquetes, lo que en el caso de TCP significa que se devuelve un RST, para UDP se devuelve ICMP UNREACHABLE).

Floating Rules

Las reglas flotantes son un tipo especial de regla avanzada que puede realizar acciones complicadas que no son posibles con las reglas de las pestañas de interfaz o grupo. Las reglas flotantes pueden actuar sobre múltiples interfaces en las direcciones de entrada, salida o ambas. El uso de filtrado entrante y saliente hace que el diseño de las reglas sea más complejo y propenso a errores del usuario, pero pueden ser deseables en aplicaciones específicas.


Las reglas flotantes pueden ser mucho más potentes que otras reglas, pero también más confusas, y es más fácil cometer un error que podría tener consecuencias no deseadas al pasar o bloquear tráfico.

Las reglas flotantes en la dirección de entrada, aplicadas a múltiples WANs, no obtendrán respuestas añadidas como lo harían con reglas de interfaz individuales, por lo que aquí existe el mismo problema que existía con los grupos de interfaz: El tráfico siempre saldrá de la WAN con la puerta de enlace predeterminada, y no volverá correctamente por la WAN por la que entró.

Dada la relativa falta de familiaridad de muchos usuarios con las reglas flotantes, puede que no se les ocurra buscar allí las reglas cuando mantengan el cortafuegos. Como tal, pueden ser un poco más difíciles para la administración ya que puede no ser un lugar obvio para buscar reglas.

Ten cuidado al considerar el origen y el destino de los paquetes en función de la dirección de entrada y salida. Por ejemplo, las reglas en la dirección de salida en una WAN tendrían un origen local del cortafuegos (después de NAT) y un destino remoto.

Orden de procesamiento


En la dirección de entrada, las reglas flotantes funcionan esencialmente igual que las reglas de interfaz o de grupo, excepto que se procesan primero. En la dirección de salida, sin embargo, las cosas se ponen un poco más confusas.

Las reglas del cortafuegos se procesan después de las reglas NAT, por lo que las reglas en la dirección saliente en una WAN nunca pueden coincidir con una dirección IP local/privada de origen si la NAT saliente está activa en esa interfaz. En el momento en que llega a la regla, la dirección de origen del paquete es ahora la dirección IP de la interfaz WAN. En la mayoría de los casos, esto puede solucionarse utilizando las opciones de coincidencia para etiquetar un paquete en la LAN en el camino de entrada y luego haciendo coincidir esa etiqueta en el camino de salida del cortafuegos.

Las reglas flotantes se procesan antes que las reglas de grupo de interfaces y las reglas de interfaz, por lo que esto también debe tenerse en cuenta.

Anti DDoS


  • Activar syncookies

Esta opción es bastante similar a la configuración del kernel syncookies, previniendo la asignación de memoria para servicios locales antes de que se realice un handshake apropiado.


Cuando los syncookies están activos, OPNSense responderá a cada TCP SYN entrante con un syncookie SYNACK, sin asignar ningún recurso.

En modo adaptativo, OPNSense activará el modo syncookie cuando un determinado porcentaje de la tabla de estado esté ocupado por conexiones TCP a medio abrir, es decir, aquellas que vieron el SYN inicial pero no terminaron el handshake de tres vías.


En este caso pf estará protegido contra el agotamiento de la tabla de estados.

Están disponibles los siguientes modos:

  • nunca (por defecto)
  • siempre
  • adaptativo - en cuyo caso se debe especificar un porcentaje inferior y superior referido al uso de la tabla de estado (Firewall States)

Entrada man de pf.conf:
           never     pf will never send syncookie SYNACKs (the default).
           always    pf will always send syncookie SYNACKs.
           adaptive  pf will enable syncookie mode when a given percentage of
                     the state table is used up by half-open TCP connections,
                     as in, those that saw the initial SYN but didn't finish
                     the three way handshake.  The thresholds for entering and
                     leaving syncookie mode can be specified using

                           set syncookies adaptive (start 25%, end 12%)

Prefiero configurarlo como adaptativo, para que en escenarios normales sólo use syncookies cuando haya un problema real.

Ves a Firewall -> Configuración -> Avanzado

Habilitar syncookies: adaptativo:

Inicio (%): 70
Fin (%): 30



Valor recomendado:



Firewall States



Un poquito más lleno xD




Puedes aumentar el número de máximo de "States" (por defecto 1609000) en;

  • Firewall Maximum States

Número máximo de conexiones a mantener en la tabla de estado del cortafuegos, normalmente el valor por defecto está bien, cuando se sirven muchas conexiones se puede considerar aumentar el tamaño por defecto que se menciona en el texto de ayuda.

La base de datos de estados del cortafuegos tiene un tamaño limitado para evitar la fatiga de memoria. Cada estado consume alrededor de 1 KB de memoria. El tamaño predeterminado de la tabla de estado en pfSense se determina utilizando alrededor del 10% de la RAM disponible del cortafuegos. Para un cortafuegos con 1 GB de memoria, la tabla de estado puede contener unas 100.000 entradas por defecto.

Normalmente, cada conexión de usuario consta de dos estados: uno formado cuando la conexión entra en el cortafuegos y otro cuando sale del cortafuegos. Por lo tanto, con un tamaño de base de datos de estados de 1.000.000, el cortafuegos puede soportar unas 500.000 sesiones de usuario activas que transiten por el cortafuegos antes de descartar nuevas conexiones. Este límite puede ampliarse según sea necesario, siempre que no supere la capacidad de RAM del cortafuegos.

Puedes aumentar el tamaño de la tabla de estado siguiendo los siguientes pasos::

Ves a Sistema > Avanzado > Cortafuegos y NAT en la interfaz de usuario de pfSense.

Introduzca el número deseado para Firewall Maximum States, o deje la casilla en blanco para el valor calculado por defecto.

Opciones avanzadas - Límite de conexiones


Las opciones avanzadas contienen algunos ajustes para limitar el uso de una regla o especificar tiempos de espera específicos para la misma. La mayoría de los ajustes genéricos (por defecto) para estas opciones se pueden encontrar en Cortafuegos ‣ Configuración ‣ Avanzado

  • Estados máximos

Limita el número de estados concurrentes que la regla puede crear. Cuando se alcanza este límite, los paquetes adicionales que crearían estados no coincidirán con esta regla hasta que los estados existentes caduquen.

  • Nodos de origen máximos

Limita el número máximo de direcciones de origen que pueden tener simultáneamente entradas en la tabla de estados.

  • Máximo establecido (Max established)

Limita el número máximo de conexiones TCP simultáneas que han completado el handshake de 3 vías que puede realizar un único host.

  • Número máximo de estados de origen (Max source states)

Limita el número máximo de entradas de estado simultáneas que una única dirección de origen puede crear con esta regla.

  • Máximo de nuevas conexiones (Max new connections)

Limita la tasa de nuevas conexiones en un intervalo de tiempo. La tasa de conexiones es una aproximación calculada como media móvil. (número de conexiones / segundos) Sólo se aplica a conexiones TCP. (aka Rate Limit)

Este método de limitación de velocidad ayuda a garantizar que una alta velocidad de conexión TCP no sobrecargue un servidor o la tabla de estado del cortafuegos. Por ejemplo, se pueden poner límites a las conexiones entrantes a un servidor de correo, reduciendo la carga de ser sobrecargado por spambots. 

También se puede utilizar en reglas de tráfico saliente para establecer límites que impidan que una sola máquina cargue la tabla de estado del cortafuegos o realice demasiadas conexiones rápidas, comportamientos que son comunes con los virus. 

Se puede configurar para la regla una cantidad de conexiones y un número de segundos para el periodo de tiempo. Cualquier dirección IP que exceda el número especificado de conexiones dentro del periodo de tiempo dado será bloqueada por el cortafuegos durante una hora. Entre bastidores, esto es manejado por la tabla virusprot, llamada así por su propósito típico de protección contra virus. Esta opción sólo está disponible para conexiones TCP.

  • Tiempo de espera de estado

Tiempo de espera de estado en segundos (sólo se aplica a TCP)

max-src-nodes <number>
Limits the maximum number of source addresses which can simultaneously have state table entries.

max-src-states <number>
Limits the maximum number of simultaneous state entries that   a single source address can create with this rule.

For stateful TCP connections, limits on established connections (connections which have completed the TCP 3-way handshake) can also be enforced per source IP.

max-src-conn <number>
Limits the maximum number of simultaneous TCP connections which have completed the 3-way handshake that a single host can make.

max-src-conn-rate <number> / <seconds>
Limit the rate of new connections over a time interval.  The connection rate is an approximation calculated as a moving averag
Puede establecer límites de velocidad en las reglas del cortafuegos para:
  • Maximum number of established connections per host (TCP only)
  • Maximum number of unique source hosts
  • Maximum new connections per host / per second(s) (TCP only)

Alias Firewall


Lo mejor es utilizar los alias (aliases) para crear reglas o abrir varios puertos, o permitir o denegar un montón ip's, algo parecido a ipset.

Los alias permiten:

Tipos de Alias

Descripción

Hosts

Single hosts by IP or Fully Qualified Domain Name or host exclusions (starts with “!” sign)

Networks

Entire network p.e. 192.168.1.1/24 or network exclusion eg !192.168.1.0/24

Ports

Port numbers or a port range like 20:30

MAC addresses

MAC address or partial mac addresses like f4:90:ea

URL (IPs)

A table of IP addresses that are fetched once

URL Tables (IPs)

A table of IP addresses that are fetched on regular intervals.

GeoIP

Select countries or whole regions

Network group

Combine different network type aliases into one

Dynamic IPv6 Host

A Host entry that will auto update on a prefixchange

BGP ASN

Maps autonomous system (AS) numbers to networks where they are responsible for.

OpenVPN group

Map user groups to logged in OpenVPN users

Internal (automatic)

Internal aliases which are managed by the product

External (advanced)

Externally managed alias, this only handles the placeholder. Content is set from another source (plugin, api call, etc)





Por ejemplo si queremos banear (drop) un listado de Ip's podemos utilizar un alias a partir de una URL



Paso 1 - Creación de un alias para una lista de bloqueo externa


OPNsense admite el uso de listas de bloqueo externas dentro de alias y los alias se pueden utilizar para reglas de cortafuegos. El comienzo es, por tanto, crear un alias para la lista de bloqueo deseada y seleccionar el tipo de tabla URL (IPs).

Elegir usar un alias distinto para cada tipo de lista de bloqueo para poder configurar el intervalo de actualización individualmente y poder activar/desactivar cada una independientemente. Para el intervalo de actualización, asegúrese de respetar las recomendaciones del proveedor de la lista para no crear una carga innecesaria en su infraestructura.

Sugerencia: Utiliza un prefijo de alias en mayúsculas para que sus alias personalizados aparezcan antes que los creados por el sistema y así encontrarlos en la parte superior de la lista.


Para este ejemplo se utilizó spamhaus drop y edrop con una frecuencia de actualización de 12 horas.


Inspecciona siempre el contenido de las listas antes de utilizarlas por primera vez para evitar sorpresas desagradables. Algunas listas contienen IPs privadas que pueden provocar el bloqueo del tráfico local e incluso, en última instancia, bloquearte en tu cortafuegos si no tienes cuidado.
 

 
 
Asegúrate de probarlos primero porque FireHOL1, por ejemplo, también bloquea las IP privadas. 
 
Cuando utilice listas grandes asegúrese de configurar Firewall : Configuración : Avanzada : Estados Máximos de Firewall a un valor superior a 1Mio.

Paso 2 - Configurar una regla de cortafuegos


Esta es una de las situaciones en las que puede tener sentido configurar una regla flotante ya que quieres bloquear el tráfico hacia y desde cualquiera de estas IPs independientemente de la interfaz o dirección desde la que se origine lo antes posible. Dicho esto, una regla WAN también sería suficiente para bloquear el tráfico desde y hacia la(s) interfaz(es) WAN.

Nota: El uso de la regla de tipo flotante requiere que tenga mucho cuidado con el contenido de las listas de bloqueo, ya que podría bloquearse a sí mismo si la lista contiene rangos de direcciones IP privadas. En teoría, OPNsense debería evitar que se bloquee con la configuración estándar, pero es posible que no desee probarlo.

Rule category: Floating
Action: Block
Direction: Any
TCP Version: IPv4+IPv6
Protocol: any
Logging: Active
Asegúrese de que elige la configuración correcta para Dirección, Versión TCP, Protocolo para que la regla se aplique a todo el tráfico, direcciones, Versiones TCP y Protocolos.

También se recomienda activar el registro (log) además de una descripción significativa de su regla para poder consultar fácilmente el registro y entender lo que está sucediendo en cualquier momento. Especialmente después de unos meses puede que ya no recuerde todo tan bien sin una descripción clara.

Nota: Si utilizas ampliamente esta función, puede que sea necesario aumentar las Entradas máximas de la tabla del cortafuegos u otros valores en «Configuración -> Avanzada» en la sección del cortafuegos.

This Firewall «Este Firewall» es un Alias para TODAS las IPs del OPNsense en todas las interfaces disponibles.

Paso 3 - Verificación de la nueva regla del cortafuegos


Durante los próximos minutos/horas querrá vigilar el registro para asegurarse de que todo funciona como se desea. No obstante, queremos verificar rápidamente que la nueva regla funciona como deseamos. Para ello, elegimos una IP de una de las listas de bloqueo e intentamos conectarnos.

ping -c 3 24.236.0.1

    PING 24.236.0.1 (24.236.0.1) 56(84) bytes de datos. --- 24.236.0.1 estadísticas de ping --- 3 paquetes transmitidos, 0 recibidos, 100% de pérdida de paquetes, tiempo 2050ms

Como era de esperar hacer ping o intentar conectarse a una IP incluida en la lista de bloqueo no funciona y también es observable en el registro en tiempo real del cortafuegos que el tráfico está siendo bloqueado.


Ejemplos listas:

# BL_3coresec
https://blacklist.3coresec.net/lists/all.txt

# BL_abusech_feodo_botnet_c2
https://sslbl.abuse.ch/blacklist/sslipblacklist.txt
https://feodotracker.abuse.ch/downloads/ipblocklist_recommended.txt

# BL_cins_army
https://cinsscore.com/list/ci-badguys.txt

# BL_cisco_talos
https://talosintelligence.com/documents/ip-blacklist

# BL_dshield_30d
https://iplists.firehol.org/files/dshield_30d.netset

# BL_spamhaus_drop
https://www.spamhaus.org/drop/drop.txt
https://www.spamhaus.org/drop/edrop.txt
https://www.spamhaus.org/drop/dropv6.txt

En otro ejemplo podemos permitir sólo al listado de IP's de CloudFlare acceder a  los puertos de nuestro servidor web.

Creación de un alias para las direcciones IP de Cloudflare


Lo primero que tienes que hacer es averiguar qué direcciones IP utiliza Cloudflare para conectarse a su servidor. Para esto sólo voy a estar mirando las direcciones IPv4, sin embargo sus IPv6 también están disponibles.

Convenientemente, Cloudflare ofrece una buena lista de sus rangos de direcciones IP.

Ahora en OPNsense, hay estas cosas llamadas Alias que básicamente son sólo una lista de IPs / direcciones MAC / GeoIP / etc información para identificar un grupo de dispositivos. Podemos crear fácilmente un Alias para estas IPs de Cloudflare.


En OPNsense bajo Firewall -> Aliases haz click en añadir.

    Asegúrese de que está habilitado
    Dale un nombre (por ejemplo cloudflare)
    Establezca el tipo de tabla URL (IPs)
    Dígale que se actualice con la frecuencia que desee
    Para el contenido, dale la URL de Cloudflare IPs

A continuación, haz clic en Guardar.


Crear la regla Firewall para permitir IP's de CloudFlare

En Firewall -> Rules -> [WAN] añade regla:

  • Action: Pass
  • Interface: WAN
  • Direction: in
  • TCP/IP Version: IPv4
  • Protocol: TCP
  • Source: Select your Cloudflare alias
  • Destination: This Firewall
  • Destination port range: HTTPS -> HTTPS


Eso debería ser todo, por defecto OPNsense bloquea el tráfico por lo que esto sólo permitirá Cloudflare utilizar TCP en el puerto HTTPS (443). 


GeoBloqueo de IP's


¿Dónde encontrar las listas de bloqueo de IP existentes y comprobar su eficacia?


Una buena fuente de listas de bloqueo de IP combinadas de fuentes de diferentes proveedores es un repositorio de Github llamado Firehol:



La descripción y efectividad de cada lista se encuentra en:




El número de listas de bloqueo IP debe personalizarse para cada entorno por separado. La lista que se utiliza en muchos casos, independientemente de si se trata de un router doméstico o de una empresa, es la lista denominada Amenazas emergentes, que combina las fuentes de IP de las amenazas más recientes de los equipos de seguridad de TI.

BLOCKLIST: et_block


ENLACE DIRECTO BLOCKLIST:


Para añadir la lista de bloqueo, debes iniciar sesión en Opnsense e ir a Firewall > Aliases y hacer clic en el icono (+) para añadir un nuevo alias. Escriba lo siguiente

 

ALIAS:

    Nombre: EmergingThreats_combined
    Tipo: Tabla URL (Ips)
    Actualización: 12 horas
    Contenido: http://rules.emergingthreats.net/fwrules/emerging-Block-IPs.txt
    Descripción: Amenazas Emergentes.net et_block


Instalación de restricciones GeoIP en OPNSENSE


Para añadir una capa adicional de seguridad, puede bloquear la IP de origen desde diferentes lugares del mundo.

Por favor, visita la documentación de OPNSENSE y cree una clave API única para descargar las listas de bloqueo GEO IP - https://docs.opnsense.org/manual/how-tos/maxmind_geo_ip.html

Después de adquirir la Clave API, por favor ponga la clave en la URL única de la documentación OPNsense GeoIP y guárdela en el bloc de notas. Luego por favor vaya a Firewall > Aliases > GeoIP settings y ponga la URL en la siguiente pantalla:

Nota: el dominio maxmind.com podría estar bloqueado por cualquier servicio de AdGuard que se ejecute en la red, por lo que si la lista no se actualiza, es necesario realizar un bypass en DNS.




Si buscas GeoIP en los documentos, sólo obtendrá resultados con la implementación a través de Suricata. Usar un IPS para GeoIP resulta en dos problemas:

  •      No se puede mezclar con reglas de firewall ya que el IPS viene primero
  •     No hay granularidad, por ejemplo, sólo bloquear SMTP de países específicos


Desde aproximadamente 17.7.10 existe la disponibilidad de alias GeoIP con un mecanismo muy sencillo:

Solo tienes que crear un alias, poner los países a permitir o bloquear y añadir una regla. Dentro de las reglas también puedes negar, así que tienes el control total como dentro de pfBlocker, y no tienes que gestionar dobles alias o reglas, está todo ahí.

 


Fuentes:


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.