原文地址: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