Mantén la atención porque en esta reseña vas a hallar el arreglo que buscas.
Solución:
firewalld
se envía con un conjunto predeterminado de tipos de ICMP predefinidos que puede usar de inmediato:
# firewall-cmd --get-icmptypes
destination-unreachable echo-reply echo-request parameter-problem redirect router-advertisement router-solicitation source-quench time-exceeded timestamp-reply timestamp-request
El analizador (/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.py
) no se limita a estos tipos y permite ampliar:
Primero, según man iptables-extensions(8)
, sección icmp
:
icmp (específico de IPv4) Esta extensión se puede utilizar si se especifica `–protocol icmp ‘. Proporciona la siguiente opción:
[!] --icmp-type typename This allows specification of the ICMP type, which can be a numeric ICMP type, type/code pair, or one of the ICMP type names shown by the command iptables -p icmp -h
icmp6 (específico de IPv6) Esta extensión se puede utilizar si
--protocol ipv6-icmp' or
–protocol icmpv6 ‘está especificado. Proporciona la siguiente opción:[!] --icmpv6-type type[/code]|typename This allows specification of the ICMPv6 type, which can be a numeric ICMPv6 type, type and code, or one of the ICMPv6 type names shown by the command ip6tables -p ipv6-icmp -h
Los dos tipos a los que hace referencia son específicos de IPv4, por lo que debe utilizar lo siguiente para averiguar los nombres adecuados reconocidos por iptables
:
# iptables -p icmp -h | grep timestamp
timestamp-request
timestamp-reply
Ahora, si comprueba el contenido del firewalld
paquete, encontrará dónde se almacenan los tipos de ICMP predefinidos:
# rpm -ql firewalld | grep icmptype
/etc/firewalld/icmptypes
/usr/lib/firewalld/icmptypes/destination-unreachable.xml
/usr/lib/firewalld/icmptypes/echo-reply.xml
/usr/lib/firewalld/icmptypes/echo-request.xml
/usr/lib/firewalld/icmptypes/parameter-problem.xml
/usr/lib/firewalld/icmptypes/redirect.xml
/usr/lib/firewalld/icmptypes/router-advertisement.xml
/usr/lib/firewalld/icmptypes/router-solicitation.xml
/usr/lib/firewalld/icmptypes/source-quench.xml
/usr/lib/firewalld/icmptypes/time-exceeded.xml
/usr/lib/firewalld/xmlschema/icmptype.xsd
/usr/share/man/man5/firewalld.icmptype.5.gz
Si marca el analizador mencionado anteriormente, verá que usa el nombre del archivo XML como tipo ICMP cuando habla con iptables
, por lo que debe escribir dos archivos nuevos para los tipos de ICMP que desea utilizar utilizando los tipos de ICMP que se encuentran arriba. Los tipos de ICMP creados por el usuario deben almacenarse en /etc/firewalld/icmptypes
.
# cat timestamp-request.xml
Timestamp Request
This message is used for time synchronization.
# cat timestamp-reply.xml
Timestamp Reply
This message is used to reply to a timestamp message.
Terminarás con:
# ll -Z /etc/firewalld/icmptypes
-rw-r--r--. root root system_u:object_r:firewalld_etc_rw_t:s0 timestamp-reply.xml
-rw-r--r--. root root system_u:object_r:firewalld_etc_rw_t:s0 timestamp-request.xml
Valídelos usando el XSD provisto:
# xmllint --schema /usr/lib/firewalld/xmlschema/icmptype.xsd timestamp-request.xml
timestamp-request.xml validates
# xmllint --noout --schema /usr/lib/firewalld/xmlschema/icmptype.xsd timestamp-reply.xml
timestamp-reply.xml validates
Vuelva a cargar el cortafuegos:
# firewall-cmd --reload
Y finalmente agrégalos:
# firewall-cmd --add-icmp-block=timestamp-request
# firewall-cmd --add-icmp-block=timestamp-reply
# firewall-cmd --list-icmp-blocks
timestamp-reply timestamp-request
Puede comprobar que se han añadido mirando el iptables
reglas directamente:
iptables -nvL | grep icmp
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
0 0 REJECT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 13 reject-with icmp-host-prohibited
0 0 REJECT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 14 reject-with icmp-host-prohibited
0 0 REJECT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 13 reject-with icmp-host-prohibited
0 0 REJECT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 14 reject-with icmp-host-prohibited
Los tipos 13 y 14 son los tipos ICMP recién agregados.
Como referencia, puede leer el firewalld.icmptypes(5)
página de manual.
Estos tipos de ICMP se han incluido en sentido ascendente.
Sección de Reseñas y Valoraciones
Puedes añadir valor a nuestro contenido añadiendo tu veteranía en los comentarios.