Red Hat Training

A Red Hat training course is available for RHEL 8

26.5.14. Gestión de peticiones ICMP

El Internet Control Message Protocol (ICMP) es un protocolo de apoyo que utilizan varios dispositivos de red para enviar mensajes de error e información operativa que indican un problema de conexión, por ejemplo, que un servicio solicitado no está disponible. ICMP se diferencia de los protocolos de transporte como TCP y UDP porque no se utiliza para intercambiar datos entre sistemas.

Lamentablemente, es posible utilizar los mensajes de ICMP, especialmente echo-request y echo-reply, para revelar información sobre su red y hacer un mal uso de dicha información para diversos tipos de actividades fraudulentas. Por lo tanto, firewalld permite bloquear las solicitudes de ICMP para proteger la información de su red.

26.5.14.1. Listado y bloqueo de peticiones ICMP

Listado ICMP solicitudes

Las solicitudes de ICMP se describen en archivos XML individuales que se encuentran en el directorio /usr/lib/firewalld/icmptypes/. Puede leer estos archivos para ver una descripción de la solicitud. El comando firewall-cmd controla la manipulación de las peticiones de ICMP.

  • Para listar todos los tipos disponibles de ICMP:

    # firewall-cmd --get-icmptypes
  • La petición ICMP puede ser utilizada por IPv4, IPv6 o por ambos protocolos. Para ver para qué protocolo se utiliza la petición ICMP:

    # firewall-cmd --info-icmptype=<icmptype>
  • El estado de una solicitud ICMP muestra yes si la solicitud está actualmente bloqueada o no si no lo está. Para ver si una solicitud de ICMP está actualmente bloqueada:

    # firewall-cmd --query-icmp-block=<icmptype>

Bloqueo o desbloqueo de las solicitudes de ICMP

Cuando su servidor bloquea las solicitudes de ICMP, no proporciona la información que normalmente proporcionaría. Sin embargo, eso no significa que no se proporcione ninguna información. Los clientes reciben información de que la petición ICMP en particular está siendo bloqueada (rechazada). El bloqueo de las peticiones a ICMP debe considerarse cuidadosamente, porque puede causar problemas de comunicación, especialmente con el tráfico IPv6.

  • Para ver si una solicitud de ICMP está actualmente bloqueada:

    # firewall-cmd --query-icmp-block=<icmptype>
  • Para bloquear una solicitud de ICMP:

    # firewall-cmd --add-icmp-block=<icmptype>
  • Para eliminar el bloqueo de una solicitud de ICMP:

    # firewall-cmd --remove-icmp-block=<icmptype>

Bloqueo de las solicitudes de ICMP sin proporcionar ninguna información

Normalmente, si bloqueas las peticiones de ICMP, los clientes saben que lo estás bloqueando. Por lo tanto, un atacante potencial que esté husmeando en busca de direcciones IP activas todavía es capaz de ver que tu dirección IP está en línea. Para ocultar esta información por completo, tienes que eliminar todas las peticiones de ICMP.

  • Para bloquear y abandonar todas las solicitudes de ICMP:
  1. Establezca el objetivo de su zona en DROP:

    # firewall-cmd --permanent --set-target=DROP

Ahora, todo el tráfico, incluyendo las solicitudes de ICMP, se descarta, excepto el tráfico que usted ha permitido explícitamente.

  • Para bloquear y eliminar ciertas solicitudes de ICMP y permitir otras:
  1. Establezca el objetivo de su zona en DROP:

    # firewall-cmd --permanent --set-target=DROP
  2. Añade la inversión de bloque ICMP para bloquear todas las peticiones de ICMP a la vez:

    # firewall-cmd --add-icmp-block-inversion
  3. Añade el bloqueo ICMP para aquellas peticiones de ICMP que quieras permitir:

    # firewall-cmd --add-icmp-block=<icmptype>
  4. Haz que la nueva configuración sea persistente:

    # firewall-cmd --runtime-to-permanent

El block inversion invierte la configuración de los bloqueos de las peticiones de ICMP, por lo que todas las peticiones, que antes no estaban bloqueadas, se bloquean debido a que el objetivo de su zona cambia a DROP. Las peticiones que estaban bloqueadas no lo están. Esto significa que si quiere desbloquear una petición, debe utilizar el comando de bloqueo.

  • Para revertir la inversión de bloques a una configuración totalmente permisiva:
  1. Establezca el objetivo de su zona en default o ACCEPT:

    # firewall-cmd --permanent --set-target=default
  2. Eliminar todos los bloques añadidos para las solicitudes de ICMP:

    # firewall-cmd --remove-icmp-block=<icmptype>
  3. Retire la inversión del bloque ICMP:

    # firewall-cmd --remove-icmp-block-inversion
  4. Haz que la nueva configuración sea persistente:

    # firewall-cmd --runtime-to-permanent