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í:
- la interfaz y la fuente se utilizan como selectores: qué zona(s) activar
- ambos se ignoran para la zona predeterminada (siempre activa)
Entonces la respuesta sería:
- bloquee la zona predeterminada, diga “público”: no hay puertos abiertos ni servicios disponibles
- 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.