Firewalld防火墙与ICMP攻击

原文地址:http://www.excelib.com/article/293/show网络

提到ICMP你们应该都很熟悉,可能有人会说:不就是ping吗?可是说到ICMP攻击以及相关防护措施可能就有的人不是很是清楚了。学习

ICMP的概念

要 想理解ICMP攻击以及防范咱们还得从ICMP的概念提及,ICMP是“Internet Control Message Protocol”的缩写,意思是“Internet控制消息协议”,他主要用于在不一样主机、路由器等设备之间传递控制消息,好比网络是否能够联通、路由 设备地址的发现、路由路径是否合理等内容。spa

ICMP攻击

ICMP协议被攻击的方法有不少种,好比的“Ping of Death”、使用ICMP数据包发起DDOS攻击、redirect攻击等等,下面学生简单给你们介绍一下。操作系统

“Ping of Death”的原理是当发送的数据包大小超过64KB(规定最大64KB)后接收信息的主机就会出现内存分配错误,进一步会致使TCP/IP堆栈崩溃,甚至主机死机!不过这一漏洞在新版的操做系统中已经解决了。excel

ICMP 的DDOS简单来讲就是一直不停地发送ICMP数据包从而占满被攻击主机的带宽,固然,更进一步还可使用一些手段将流量进行放大,好比将源地址设置为被 攻击主机的“echo-request”类型报文广播给不少第三方主机,这时这些接收到报文的主机就会给被攻击目标主机返回“echo-replay”报 文,这样流量就被放大了。code

要理解redirect攻击,首先要明白redirect的做用,学生给你们举个例子你们就明白了,好比有个快递 须要从北京发往广州,结果北京发到沈阳的中转站了,这时候沈阳就以为不对呀,要往广州发应该往南边发才对怎么能往北边发呢?因此沈阳站就会跟北京站联系, 告诉他:你发的不对,你应该往南边的XXX站发送才对。ICMP中的redirect就是起这个做用的,当路由设备发现某个数据包通过本身不是最优路径时 就会给源地址发一个redirect数据包,告诉对方发的路径不合适,而且指出应该发往的地址。这个功能是颇有用的,不过若是被攻击者使用状况就彻底不一 样了,他们可使用这一功能将正常(合理)的路由地址给修改成一个不合理的甚至不存在的地址,这样就会给通信形成问题,另外,有一些还会将目标地址设置为 他们本身能够控制的主机的地址,这样就能够截获数据了!跟redirect相关的还有router-advertisement、router- solicitation等类型的ICMP数据包。router

固然,除了这三种还有不少攻击的类型,好比咱们下面会说到的destination-unreachable、source-quench、time-exceeded等类型的攻击。htm

可能看到这里有的读者就以为不容易理解了:echo-request、redirect、destination-unreachable等等究竟是什么东西呢?其实这都是ICMP的类型,下面学生就来给你们介绍ICMP的类型。blog

ICMP的类型

ICMP 数据包主要包含三部份内容:类型、代码和附加数据,其中的类型和代码属于包头,代码(code)至关于类型(type)下的细分子类型,咱们也能够理解为 他们共同来决定一个ICMP包的类型,好比学生上面给你们讲的redirect的type为5,不过5这个type下面还有4个code——0,、一、 二、3,他们所表示的含义以下表所示ip

表1:ICMP包Redirect类型表

type
code
描述
5    0    Redirect for network——对网络重定向
5    1    Redirect for host——对主机重定向
5    2    Redirect for TOS and network——对服务类型和网络重定向
5    3    Redirect for TOS and host——对服务类型和主机重定向

具体更多的代码学生就不在这里罗列了,你们很容易就能够找到。在ICMP数据包中type和code就像excel中的两个单元格,只要将相应的数据填入,主机就能够知道这个ICMP包的类型了。

这里的type和code咱们固然是不须要记的,在使用的时候只须要用名字就能够了,好比type为8的数据包咱们直接写Echo request、type为0的数据包咱们直接写Echo Reply就好了,下面学生简单地给你们介绍几个常见的类型

  • Echo request:须要回应的请求,也就是咱们常说的ping请求

  • Echo Reply:对ping的回应报文(pong)

  • Destination Unreachable:目标不可达

  • Source Quench:源地址资源紧张,正常状况下当咱们要发送数据的路由设备请求过多时就会发出这种ICMP包

  • Time Exceeded:超时,好比TTL用完后就会产生这种类型的数据包

Firewalld针对ICMP攻击的防护方法

firewalld中有专门针对icmp报文的配置方法,并且使用起来也很是简单,咱们只须要将firewalld所支持的icmp类型配置到所使用的zone中就能够了,要查看firewalld所支持的icmp类型可使用下面的命令

 1 firewall-cmd [--permanent] --get-icmptypes 

默认的返回结果以下

1 destination-unreachable echo-reply echo-request parameter-problem redirect 
2 router-advertisement router-solicitation source-quench time-exceeded

这里的类型前面学生基本都给你们介绍过了,下面来学生来给你们讲怎么使用。跟icmptype相关的命令主要有四个

1 firewall-cmd [--permanent] [--zone=zone] --list-icmp-blocks
2 firewall-cmd [--permanent] [--zone=zone] --add-icmp-block=<icmptype>
3 firewall-cmd [--permanent] [--zone=zone] --remove-icmp-block=<icmptype>
4 firewall-cmd [--permanent] [--zone=zone] --query-icmp-block=<icmptype>

他们分别用于列出zone中所阻止的全部icmp类型、添加、删除和查询某个具体的icmp类型,若是指定zone则对具体zone进行操做,不然对当前活动的zone进行操做。

icmp配置文件的结构也很是简单,除了short和description外只有一个destination节点,能够设置对ipv4和ipv6的支持与否。

补充与建议

对于firewalld中的icmp设置你们要特别注意下面三点

一、firewalld只能够阻止指定类型的icmp包,没有其余更多的配置选项

二、若是使用drop、reject这些zone的话,默认全部icmp类型都会阻塞

三、默认状况下firewalld中所配置的icmp类型主要是针对入包的,而对于主机发出的包是不会拦截的。另外,在前面学生跟你们说过firewalld是一款有状态的防火墙,也就是说不一样链接之间的关系firewalld在内部是有记录的,因此即便咱们将echo-reply设置到zone中以后再去使用本机ping其余主机也是能够收到回复的,这是由于firewalld底层能够识别出那个echo-reply是咱们发生去请求的回应。

对于具体哪一个类型应该阻止,哪一个应该放行你们须要根据本身的实际状况来设定,学生下面给你们提供一些思考的方向和建议。

  • destination-unreachable:当收到这种类型数据包以后相应地址的链接将会被断开,若是是攻击者伪造的数据包,那么会将咱们的不少正常链接断开。当将其设置到zone中后咱们本机发送的请求仍是能够收到destination-unreachable类型回复的,只是直接发给咱们的destination-unreachable数据包进不来了,因此建议你们能够阻止。

  • echo-request:主要用于接收ping请求,阻塞以后咱们的主机将不可被ping,不过打开后又有可能被攻击,有种惯用的作法是设置开通的频率,好比1秒钟只能够被ping一次,不过这种功能直接使用学生上面给你们介绍的方法是没法设置的,不过不要紧,当学习了学生下一节将要给你们介绍的firewalld中的direct以后就能够设置了。

  • echo-reply:这是回应ping信息的包,通常来讲咱们应该将其阻止,由于他跟destination-unreachable同样,若是是咱们本机发出的即便设置了阻止也仍是能够接收到的。

  • parameter-problem:当接收到的报文参数错误,没法解析时会返回这种类型的报文。

  • redirect:这种报文学生在前面已经给你们详细介绍过,这里就再也不重述了。

  • router-advertisement和router-solicitation:这是一对报文,他们的做用是用来发现路由设备的地址,主机发出router-solicitation类型数据包来查找路由设备,路由设备能够发出router-advertisement类型ICMP数据包来告诉主机本身是路由设备

  • source-quench:这个学生也给你们介绍过了,当源地址设备(好比路由设备)资源紧张时就会发出这种数据包

  • time-exceeded:数据包超时。

 

最后仍是那句话,没有最优配置方法(不然就不须要配置了),你们须要根据本身的实际状况进行配置。

 

 

 

参考文献

http://baike.baidu.com/view/30564.htm