Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5.11. 管理 ICMP 请求

Internet 控制消息协议 (ICMP)是一种支持协议,供各种网络设备用来发送错误消息和表示连接问题的操作信息,例如,请求的服务不可用。ICMP 与 TCP 和 UDP 等传输协议不同,因为它不用于在系统之间交换数据。
不幸的是,可以使用 ICMP 消息(特别是 echo-requestecho-reply )来揭示关于您网络的信息,并将这些信息滥用于各种欺诈活动。因此,firewalld 允许阻止 ICMP 请求,来保护您的网络信息。

5.11.1. 列出 ICMP 请求

ICMP 请求在 /usr/lib/firewalld/icmptypes/ 目录中的单个 XML 文件中进行了描述。您可以阅读这些文件来查看请求的描述。firewall-cmd 命令控制 ICMP 请求操作。
要列出所有可用的 ICMP 类型:
~]# firewall-cmd --get-icmptypes
IPv4、IPv6 或两个协议都可以使用 ICMP 请求。要查看使用 ICMP 请求的协议:
~]# firewall-cmd --info-icmptype=<icmptype>
如果请求当前被阻止,则 ICMP 请求显示 yes 或如果请求没被阻止,则显示 no。要查看 ICMP 请求当前是否被阻止:
~]# firewall-cmd --query-icmp-block=<icmptype>

5.11.2. 阻止或取消阻止 ICMP 请求

当您的服务器阻止了 ICMP 请求时,它不会提供通常应该提供的信息。但这并不意味着根本不给出任何信息。客户端会收到特定 ICMP 请求被阻止(拒绝)的信息。应仔细考虑阻止 ICMP 请求,因为它可能会造成通信问题,特别是 IPv6 流量。
要查看 ICMP 请求当前是否被阻止:
~]# firewall-cmd --query-icmp-block=<icmptype>
要阻止 ICMP 请求:
~]# firewall-cmd --add-icmp-block=<icmptype>
要删除 ICMP 请求的块:
~]# firewall-cmd --remove-icmp-block=<icmptype>

5.11.3. 在没有任何信息的情况下阻止 ICMP 请求

通常,如果您阻止了 ICMP 请求,客户端会知道您正在阻止它。这样潜在的攻击者仍然可以看到您的 IP 地址在线。要完全隐藏此信息,您必须丢弃所有 ICMP 请求。
要阻止和丢弃所有 ICMP 请求:
  1. 将区的目标设为 DROP
    ~]# firewall-cmd --set-target=DROP
  2. 使新设置具有持久性:
    ~]# firewall-cmd --runtime-to-permanent
现在,所有流量(包括 ICMP 请求)都将被丢弃,除了您明确允许的流量外。
要阻止和丢弃某些 ICMP 请求,而允许其他请求:
  1. 将区的目标设为 DROP
    ~]# firewall-cmd --set-target=DROP
  2. 添加 ICMP 块反转以一次性阻止所有 ICMP 请求:
    ~]# firewall-cmd --add-icmp-block-inversion
  3. 为这些您要允许的 ICMP 请求添加 ICMP 块:
    ~]# firewall-cmd --add-icmp-block=<icmptype>
  4. 使新设置具有持久性:
    ~]# firewall-cmd --runtime-to-permanent
块反转会 反转 ICMP 请求块的设置,因此所有之前没有被阻止的请求都会被阻止。被阻止的那些不会被阻止。这意味着,如果您需要取消阻塞请求,则必须使用 blocking 命令。
把它恢复到完全 permissive 设置:
  1. 将区的目标设为 defaultACCEPT
    ~]# firewall-cmd --set-target=default
  2. 删除 ICMP 请求的所有添加的块:
    ~]# firewall-cmd --remove-icmp-block=<icmptype>
  3. 删除 ICMP 块反转:
    ~]# firewall-cmd --remove-icmp-block-inversion
  4. 使新设置具有持久性:
    ~]# firewall-cmd --runtime-to-permanent

5.11.4. 使用 GUI 配置 ICMP 过滤器

要启用或禁用 ICMP 过滤器,请启动 firewall-config 工具,并选择其信息要被过滤的网络区。选择 ICMP Filter 选项卡,然后选中您要过滤的每种 ICMP 消息类型的复选框。清除复选框以禁用过滤器。这个设置按方向设置,默认允许所有操作。
要启用反转 ICMP Filter,请单击右侧的 Invert Filter 复选框。现在只接受标记的 ICMP 类型,所有其他类型都被拒绝。在使用 DROP 目标的区域里它们会被丢弃。