Unix類操作系統(tǒng)的TCP/IP堆棧加固之ICMP協(xié)議部分
TCP/IP 堆棧負(fù)責(zé)處理傳入和傳出 IP 數(shù)據(jù)包,并將數(shù)據(jù)包的數(shù)據(jù)路由到要處理這些數(shù)據(jù)的應(yīng)用程序。由于自身的缺陷、網(wǎng)絡(luò)的開放性以及黑客的攻擊是造成互聯(lián)網(wǎng)絡(luò)不安全的主要原因。TCP/IP作為Internet使用的標(biāo)準(zhǔn)協(xié)議集,是黑客實(shí)施網(wǎng)絡(luò)攻擊的重點(diǎn)目標(biāo)。
ICMP是專門用作邏輯錯(cuò)誤和診斷的信使。RFC792對(duì)它作了詳細(xì)的闡述。任何IP網(wǎng)絡(luò)設(shè)備都有發(fā)送、接收或運(yùn)作ICMP消息的功能。雖然ICMP的設(shè)計(jì)者沒有考慮今天出現(xiàn)的安全性問題,但是他們已經(jīng)設(shè)計(jì)了一些能使ICMP更有效運(yùn)作的基本準(zhǔn)則。
為了確保ICMP消息不會(huì)淹沒IP網(wǎng)絡(luò),ICMP沒有任何特別的優(yōu)先級(jí),它總是一種常規(guī)流量。
ICMP消息作為其他ICMP消息的響應(yīng)而發(fā)送。這個(gè)設(shè)計(jì)機(jī)制是為了防止出現(xiàn)一個(gè)錯(cuò)誤消息不斷地重復(fù)制造出另一個(gè)錯(cuò)誤消息。否則,它就真的是個(gè)大問題了。
ICMP不能作為多播或廣播流量的響應(yīng)而發(fā)送。
針對(duì)ICMP協(xié)議的攻擊包括:
目的地不可到達(dá)攻擊屬于拒絕服務(wù)攻擊 :ICMP 目的地不可到達(dá)消息向嘗試轉(zhuǎn)發(fā)消息的網(wǎng)關(guān)提供了一種工具,用來通知發(fā)送方:因?yàn)樵跀?shù)據(jù)報(bào)目的地地址中指定的主機(jī)不可到達(dá),所以無法傳遞該消息。
Smurf 攻擊屬于拒絕服務(wù)攻擊 :Smurf 攻擊是拒絕服務(wù)攻擊的一種非常可怕的形式,因?yàn)樗哂蟹糯笮?yīng)。Smurf 攻擊利用 ICMP 回應(yīng)消息。
1.禁用ICMP回聲廣播活動(dòng)
- AIX 5
- #no -o directed_broadcast=0
- FreeBSD 5-7
- #sysctl -w net.inet.icmp.bmcastecho=0
- HP-UX 10
- #ndd -set /dev/ip ip_respond_to_echo_broadcast 0
- #ndd -set /dev/ip ip_forward_directed_broadcasts 0
- Linux2.4-2.6 #sysctl -w net.ipv4.icmp_echo_ig#nore_broadcasts=1
- OpenBSD3-4 已經(jīng)是缺省設(shè)置
- Solaris 8-10
- #ndd -set /dev/ip ip_respond_to_echo_broadcast 0
- #ndd -set /dev/ip ip6_respond_to_echo_multicast 0
- #ndd -set /dev/ip ip_forward_directed_broadcasts 0
否則你的系統(tǒng)可能成為Smurf攻擊者的工具。Smurf攻擊是以最初發(fā)動(dòng)這種攻擊的程序名“Smurf”來命名的。這種攻擊方法結(jié)合使用了IP欺騙和ICMP回復(fù)方法使大量網(wǎng)絡(luò)傳輸充斥目標(biāo)系統(tǒng),引起目標(biāo)系統(tǒng)拒絕為正常系統(tǒng)進(jìn)行服務(wù)。
Smurf攻擊通過使用將回復(fù)地址設(shè)置成受害網(wǎng)絡(luò)的廣播地址的ICMP應(yīng)答請(qǐng)求(ping)數(shù)據(jù)包,來淹沒受害主機(jī),最終導(dǎo)致該網(wǎng)絡(luò)的所有主機(jī)都對(duì)此ICMP應(yīng)答請(qǐng)求做出答復(fù),導(dǎo)致網(wǎng)絡(luò)阻塞。更加復(fù)雜的Smurf將源地址改為第三方的受害者,最終導(dǎo)致第三方崩潰。
2.禁用ICMP路由重定向
- AIX5
- #no -o ipig#noreredirects=1
- #no -o ipsendredirects=0
- FreeBSD 5-7
- #sysctl -w net.inet.ip.redirect=0
- #sysctl -w net.inet.ip6.redirect=0
- HP-UX 10
- #ndd -set /dev/ip ip_send_redirects
- 0#ndd -set /dev/ip ip_forward_directed_broadcasts 0
- Linux2.4-2.6
- #sysctl -w net.ipv4.conf.all.accept_redirects=0
- #sysctl -w net.ipv6.conf.all.accept_redirects=0
- #sysctl -w net.ipv4.conf.all.send_redirects=0
- #sysctl -w net.ipv6.conf.all.send_redirects=0
- OpenBSD3-4
- #sysctl -w net.inet.icmp.rediraccept=0
- #sysctl -w net.inet6.icmp6.rediraccept=0 Solaris 8-10
- #ndd -set /dev/ip ip_ig#nore_redirect 1
- #ndd -set /dev/ip ip6_ig#nore_redirect 1
- #ndd -set /dev/ip ip_send_redirects 0
- #ndd -set /dev/ip ip6_send_redirects 0
否則您的系統(tǒng)可能被攻擊者使其路由表錯(cuò)誤。
3.禁用ICMP廣播探測(cè)
- AIX5
- #no -o icmpaddressmask=0
- FreeBSD 5-7
- #sysctl -w net.inet.icmp.maskrepl=0
- HP-UX 10
- #ndd -set /dev/ip ip_respond_to_address_mask_broadcast 0
- #ndd -set /dev/ip ip_respond_to_timestamp_broadcast 0
- Linux2.4-2.6
- #sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
- OpenBSD3-4 已經(jīng)是缺省設(shè)置
- Solaris8-10
- #ndd -set /dev/ip ip_respond_to_address_mask_broadcast 0
- #ndd -set /dev/ip ip_respond_to_timestamp_broadcast
ICMP協(xié)議的攻擊的內(nèi)容就向大家介紹完了,希望大家已經(jīng)掌握,我們還會(huì)在以后的文章中繼續(xù)向大家介紹相關(guān)內(nèi)容的。
【編輯推薦】