Saltar al contenido

Lista blanca de direcciones IP de origen en CentOS 7

Revisamos exhaustivamente cada uno de los enunciados en nuestra web con el objetivo de enseñarte en todo momento información certera y actual.

Solución:

Lo lograría agregando fuentes a una zona. Primero consulta qué fuentes hay para tu zona:

firewall-cmd --permanent --zone=public --list-sources

Si no los hay, puede comenzar a agregarlos, esta es su “lista blanca”

firewall-cmd --permanent --zone=public --add-source=192.168.100.0/24
firewall-cmd --permanent --zone=public --add-source=192.168.222.123/32

(Eso agrega un todo /24 y una sola IP, solo para que tenga una referencia tanto para una subred como para una sola IP)

Establece el rango de puertos que te gustaría abrir:

firewall-cmd --permanent --zone=public --add-port=1-22/tcp
firewall-cmd --permanent --zone=public --add-port=1-22/udp

Esto solo hace los puertos 1 a 22. Puede ampliar esto, si lo desea.

Ahora, vuelve a cargar lo que has hecho.

firewall-cmd --reload

Y revisa tu trabajo:

 firewall-cmd --zone=public --list-all

Nota al margen/editorial: No importa, pero me gusta la zona “de confianza” para un conjunto de direcciones IP incluidas en la lista blanca en firewalld. Puede realizar una evaluación adicional leyendo las sugerencias de redhat sobre cómo elegir una zona.

Ver también:

  • RHEL 7 usando el artículo de Firewalls
  • Documentos de Fedora FirewallD (bastante buenos, Fedora ha estado usando firewalld por algún tiempo)

Si tu quisieras DROP paquetes fuera de esta fuente, aquí hay un ejemplo para descartar aquellos fuera del /24 Lo usé como ejemplo antes, creo que puedes usar reglas enriquecidas para esto. Esto es conceptual, no lo he probado (más allá de ver que centos 7 acepta el comando), pero debería ser bastante fácil hacer un pcap y ver si se comporta como esperarías

firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.100.0/24" invert="True" drop'

Incluso si una respuesta ha sido aceptada y votada, no creo que sea correcta. No puedo encontrar una explicación clara en la documentación, pero a partir del comportamiento implementado se ve así:

  1. la interfaz y la fuente se utilizan como selectores: qué zona(s) activar
  2. ambos se ignoran para la zona predeterminada (siempre activa)

Entonces la respuesta sería:

  1. bloquee la zona predeterminada, diga “público”: no hay puertos abiertos ni servicios disponibles
  2. en otra zona, diga “trabajo” – defina la fuente y abra los puertos

Por ejemplo, suponiendo que la zona predeterminada es pública y no tiene puertos abiertos, agregue el origen y el rango de puertos a la zona de “trabajo”:

$ sudo firewall-cmd --zone=work --add-source=192.168.0.0/24
$ sudo firewall-cmd --zone=work --add-port=8080-8090/tcp

ahora verifique las zonas activas (la zona predeterminada siempre está activa):

$ sudo firewall-cmd --get-active-zones

usted obtendrá:

work
  sources: 192.168.0.0/24

por lo tanto, las reglas de la zona de “trabajo” se aplicarán a la subred en particular. Tendrá un rango de puertos abiertos para la “lista blanca” = subred de acuerdo a lo pedido. y por supuesto uso --permanent opción en --add-xxx declaraciones para hacer que el comportamiento se mantenga.

A su vez, cualquier puerto o servicio que tenga en la zona “pública” (predeterminada) se aplicará a todas las interfaces y direcciones de origen.

$ sudo firewall-cmd --list-all-zones

public (default)
interfaces:
sources:
services:
ports: 
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

work (active)
interfaces: 
sources: 192.168.0.0/24
services: dhcpv6-client ipp-client ssh
ports: 8080-8090/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

El mismo sistema funciona para las interfaces. Diga agregando la interfaz “ens3” a la zona de “trabajo”:

$ sudo firewall-cmd --zone=work --add-interface=ens3

utilizará las reglas de la zona de “trabajo” para cualquier solicitud de la interfaz en particular, un selector más aproximado que “fuente”.

Descargo de responsabilidad: en realidad no he probado lo que estoy sugiriendo aquí, pero está bastante cerca de la última configuración de firewall que hice, así que me voy de eso. Firewalld le proporciona algunas zonas preconfiguradas, solo para este propósito. Hay uno llamado “soltar”, que elimina todo lo que entra, y otro llamado “de confianza”, que permite ninguna conexión (es decir, por lo que ni siquiera debería necesitar abrir puertos individuales, creo). El truco es encontrar la zona correcta para activar lo que quieres.

Firewalld aplicará las reglas para una zona según la siguiente precedencia:

  • Si la IP de origen coincide con una IP de origen vinculada a una zona, la usa.
  • Si la IP de origen no coincide con ninguna zona en particular, verifica si hay una zona configurada para el interfaz el paquete llegó en. Si hay uno, lo usa.
  • Por último, si nada más coincide, usa la zona predeterminada.

Entonces, en primer lugar, desea vincular sus IP de confianza a la zona “de confianza”:

firewall-cmd --permanent --zone=trusted --add-source=1.2.3.4

Luego, configure su zona predeterminada para “soltar” o vincule su interfaz a ella:

firewall-cmd --permanent --set-default-zone=drop
firewall-cmd --permanent --zone=drop --change-interface=eth0

y luego haga que los cambios surtan efecto (advertencia: esto probablemente interrumpirá su conexión si está haciendo esto a través de la red y no agregó su IP de origen a la zona de confianza):

firewall-cmd --reload

Por supuesto, también puede probarlos temporalmente omitiendo el “–permanente” (y luego tampoco tiene que volver a cargar).

Nos puedes añadir valor a nuestra información añadiendo tu veteranía en las interpretaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *