Unix類操作系統(tǒng)的TCP/IP堆棧加固之TCP協(xié)議部分
TCP使用三次握手機(jī)制來(lái)建立一條連接,握手的第一個(gè)報(bào)文為SYN包;第二個(gè)報(bào)文為 SYN/ACK包,表明它應(yīng)答第一個(gè)SYN包同時(shí)繼續(xù)握手過(guò)程;第三個(gè)報(bào)文僅僅是一個(gè)應(yīng)答,表示為ACK包。若A為連接方,B為響應(yīng)方,其間可能的攻擊威脅有:
攻擊者監(jiān)聽B方發(fā)出的SYN/ACK報(bào)文。
攻擊者向B方發(fā)送RST包,接著發(fā)送SYN包,假冒A方發(fā)起新的連接。
B方響應(yīng)新連接,并發(fā)送連接響應(yīng)報(bào)文SYN/ACK。
攻擊者再假冒A方對(duì)B方發(fā)送ACK包。
這樣攻擊者便達(dá)到了破壞連接的作用,若攻擊者再趁機(jī)插入有害數(shù)據(jù)包,則后果更嚴(yán)重。
針對(duì)ICMP協(xié)議的攻擊包括:
TCP SYN 掃描屬于端口掃描:TCP SYN 掃描是 端口掃描的變體。端口掃描用來(lái)檢查給定主機(jī)上的端口是否打開。
SYN 擴(kuò)散屬于拒絕服務(wù)攻擊:Smurf 攻擊流行之前,SYN 擴(kuò)散攻擊是最具破壞性的拒絕服務(wù)攻擊。
1.在TCP重負(fù)載下增加系統(tǒng)彈性(這使系統(tǒng)更能抵抗SYN洪水攻擊)
有以下幾個(gè)步驟:
購(gòu)買更多的物理內(nèi)存。
使用SYN Cookies (包括Linux2.4-2.6、BSD )技術(shù) 。當(dāng)半連接隊(duì)列滿時(shí),SYN cookies并不丟棄SYN請(qǐng)求,而是通過(guò)加密技術(shù)來(lái)標(biāo)識(shí)半連接狀態(tài)。限制同時(shí)打開的SYN 半連接數(shù)。?
增加最大半連接數(shù):大量的SYN請(qǐng)求導(dǎo)致未連接隊(duì)列被塞滿,使正常的TCP連接無(wú)法順利完成三次握手,通過(guò)增大未連接隊(duì)列空間可以緩解這種壓力。?
縮短SYN半連接的timeout時(shí)間
通過(guò)增大backlog隊(duì)列能防范SYN攻擊;另外減少超時(shí)時(shí)間也使系統(tǒng)能處理更多的SYN請(qǐng)求。timeout超時(shí)時(shí)間,也即半連接存活時(shí)間,是系統(tǒng)所有重傳次數(shù)等待的超時(shí)時(shí)間總和,這個(gè)值越大,半連接數(shù)占用backlog隊(duì)列的時(shí)間就越長(zhǎng),系統(tǒng)能處理的SYN請(qǐng)求就越少。為縮短超時(shí)時(shí)間,可以通過(guò)縮短重傳超時(shí)時(shí)間(一般是第一次重傳超時(shí)時(shí)間)和減少重傳次數(shù)來(lái)實(shí)現(xiàn)。
- AIX5
- #no -o clean_partial_conns=1
- FreeBSD 5-7
- #sysctl -w kern.ipc.somaxconn=1024
- HP-UX 10
- #ndd -set /dev/tcp tcp_syn_rcvd_max 1024
- #ndd -set /dev/tcp tcp_conn_request_max 200
- #ndd -set /dev/tcp tcp_time_wait_interval 60000
- Linux2.4-2.6
- #sysctl -w net.ipv4.tcp_max_syn_backlog=2048
- #sysctl -w net.ipv4.tcp_syncookies=1
- #sysctl –w net.ipv4.tcp_synack_retries="0"
- OpenBSD3-4 已經(jīng)是缺省設(shè)置
- Solaris8-10
- #ndd -set /dev/tcp tcp_conn_req_max_q 1024
- #ndd -set /dev/tcp tcp_conn_req_max_q0 4096
- #ndd -set /dev/tcp tcp_time_wait_interval 60000
說(shuō)明:關(guān)于SYN攻擊防范技術(shù),歸納起來(lái),主要有兩大類,一類是通過(guò)防火墻、路由器等過(guò)濾網(wǎng)關(guān)防護(hù),另一類是通過(guò)加固TCP/IP協(xié)議棧防范.但必須清楚的是,SYN攻擊不能完全被阻止,我們所做的是盡可能的減輕SYN攻擊的危害,除非將TCP協(xié)議重新設(shè)計(jì)。
2.增加TCP發(fā)送和接受窗口為至少32 kbytes不過(guò)不要超過(guò)64kbytes
- AIX5
- #no -o tcp_sendspace=32768
- #no -o tcp_recvspace=32768
- FreeBSD 5-7
- #sysctl -w net.inet.tcp.sendspace=32768
- #sysctl -w net.inet.tcp.recvspace=32768
- HP-UX 10 已經(jīng)是缺省設(shè)置
- Linux2.4-2.6 內(nèi)核支持RFC 1323和RFC 2018可以動(dòng)態(tài)調(diào)整
- OpenBSD3-4 內(nèi)核支持RFC 1323和RFC 2018可以動(dòng)態(tài)調(diào)整
- Solaris8-10
- #ndd -set /dev/tcp tcp_xmit_hwat 32768
- #ndd -set /dev/tcp tcp_recv_hwat 32768
TCP協(xié)議的攻擊的內(nèi)容就向大家介紹完了,希望大家已經(jīng)掌握,我們還會(huì)在以后的文章中繼續(xù)向大家介紹相關(guān)內(nèi)容的。
【編輯推薦】