icmp的回送和回送响应消息_第3篇:Linux防火墙-firewalld与ICMP控制

9eae6046eb07bb9d7b2ede4cd836cb6f.png

我们上一篇通过一个网络拓扑展示了rich规则配置的技术细节,并且我们用rich规则也配置了如何简单地阻止不可信的网络对防火墙的骚扰。我们本篇会深入讨论firewalld对icmp的配置

754f3b87ba4bcdbd69cdbe01ea374932.png

ICMP协议简介

互联网控制消息协议(ICMP)是各种网络设备用来发送错误消息和操作信息的支持协议,所述错误消息和操作信息指示连接问题,例如,所请求的服务不可用。ICMP不同于TCP和UDP等传输协议,因为它不用于在系统之间交换数据。

遗憾的是,互联网总有人可能会使用ICMP消息,特别是回应请求和回应回复,泄露有关您的网络的信息,并将这些信息滥用于各种欺诈活动。因此,firewalld可以阻止ICMP请求以保护您的网络信息。

如何阻止和启用ICMP?

首先,使用以下命令检查我们正在使用的ICMP类型。

firewall-cmd --get-icmptypes 

ce77225772d03043727a338a1e1bf930.png

要在指定区域上添加icmp阻塞,可以使用以下命令。 例如,这里我要在external区域添加icmp阻塞,在阻止之前,只需执行icmp ping即可确认icmp阻塞的状态。

当您的服务器阻止ICMP请求时,它不会提供通常会提供的信息。然而,这并不意味着没有提供任何信息。客户端接收特定ICMP请求被阻止(拒绝)的信息。应该仔细考虑阻止ICMP请求,因为它可能会导致通信问题,尤其是IPv6流量。

要查看ICMP请求当前是否被阻止,请执行以下操作:

firewall-cmd --zone=external --query-icmp-block=echo-request 

如果返回no的话,要阻止ICMP请求,请执行以下操作:

firewall-cmd --zone=external --add-icmp-block=echo-request 
firewall-cmd --zone=external --add-icmp-block=echo-reply 
firewall-cmd --runtime-to-permanent 

检查一下配置,貌似没什么问题

1daaec1f43d9e4e24340e1640cf5fdd8.png

firewalld在icmp处理上有些bug,即便你已经使用持久配置了,也不会立即生效的,此时建议还是reload一下。

742aa47e7711583c7afa6bf91da655a1.png

但从上图的icmp阻塞来说不如理想,我仍然能从192.168.50.17的主机得到防火墙的Packet filtered的错误反馈,这不是告知嗅探者你防火墙的存在吗!只是防火墙把他正在阻止了,我们需要的是不返回任何信息。

在完全不提供任何信息的情况下阻止ICMP请求

要完全隐藏此信息,您必须丢弃所有ICMP请求,这是以前iptables防火墙一贯使用的DROP大法。

  • 首先,将external的target设定为DROP
firewall-cmd --zone=external --set-target=DROP --permanent 
firewall-cmd --reload 

验证external区域的target是否为DROP?

c3ffc5085d09a99ccad9563d168bd8df.png

注意:不要迷信firewalld会对ICMP数据包的过滤会动态生效的,在没有reload之前,你原先在客户端测试icmp请求依然显式答应

我们在192.168.50.0/24找其他主机测试一下ping是否没返回任何错误信息,如下图在一台Linux主机中显示"0 received 100% packet loss"

eb7850413a9d6e52ade5b40090c12e22.gif

在Windows主机中,同样没有接收到任何数据包

274ccb005bf418c0fd669d5139771058.gif

现在,除非您显式允许的流量除外,所有流量(包括ICMP请求)都将被丢弃。

要阻止和丢弃某些ICMP请求并允许其他请求,请执行以下操作
Redhat推荐使用icmp-block-inversion的命令选项,我是不建议使用,这种黑白颠倒的操作一旦时间久远,你看回防火墙配置会感觉很别扭。

5c745970e8ec29b456628310f7ce9484.png

最简单的方式是使用上一篇提到的rich规则,假设网络拓扑中192.168.50.10是我们可信的主机,且是固定的ip地址,和防火墙不定时地测试彼此是否在线,此时我们只需定义一条rich规则允许192.168.50.10向防火墙发起ICMP请求。规则如下

992207bc5bd79382b87a20813eae4f7c.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值