
Estoy buscando un equivalente a ufw default deny
firewalld; La idea es que después de iniciar sesión a través de SSH en mi servidor nuevo, quiero bloquear todas las conexiones nuevas entrantes para tener tiempo de actualizar y proteger el sistema. Yo uso CentOS7 con firewalld.
Respuesta1
Parece de estopublicación de falla del servidorque limitar el tráfico a este nivel superiorrequiere reglas "ricas".
Para implementar una regla enriquecida que se implemente en la zona predeterminada y que elimine todo el tráfico IPv4:
firewall-cmd --zone=$(firewall-cmd --get-default-zone) \
--add-rich-rule='rule family=ipv4 source address=0.0.0.0/0 drop'
Esto emula el ufw default deny
comportamiento; para enviar un mensaje de rechazo ICMP, cambie el drop
valor a reject
. La regla anterior es específica de IPv4; para IPv6, utilice:
firewall-cmd --zone=$(firewall-cmd --get-default-zone) \
--add-rich-rule='rule family=ipv6 source address=::/0 drop'
Tras la investigación, esto agrega una entrada a iptables que vienedespuéslas conexiones "aceptar conexiones RELACIONADAS y ESTABLECIDAS", por lo que no interrumpirá su sesión ssh existente. En mis pruebas, la "cadena" resultante de iptables es (para una zona predeterminada de 'pública'):
INPUT -> INPUT_ZONES -> IN_public -> IN_public_deny
Si espera reiniciar como parte de las actualizaciones, agregue la --permanent
bandera.
Si no espera reiniciar como parte de las actualizaciones, puede usar la --timeout
bandera, que acepta valores como 5s
, 10m
o 15h
durante "5 segundos", "10 minutos" o "15 horas", respectivamente. Dicha regla se eliminará después de ese período de tiempo de espera.
Cuando desee eliminar la regla que agregó, simplemente ejecute lo mismo firewall-cmd
que antes, pero reemplazándola --add-rich-rule
con --remove-rich-rule
; para un ejemplo de IPv4:
firewall-cmd --zone=$(firewall-cmd --get-default-zone) \
--remove-rich-rule='rule family=ipv4 source address=0.0.0.0/0 accept'
Referencia:http://www.firewalld.org/documentation/man-pages/firewalld.richlanguage.html