Unix類操作系統的TCP/IP堆棧加固之TCP協議部分
TCP使用三次握手機制來建立一條連接,握手的第一個報文為SYN包;第二個報文為 SYN/ACK包,表明它應答第一個SYN包同時繼續握手過程;第三個報文僅僅是一個應答,表示為ACK包。若A為連接方,B為響應方,其間可能的攻擊威脅有:
攻擊者監聽B方發出的SYN/ACK報文。
攻擊者向B方發送RST包,接著發送SYN包,假冒A方發起新的連接。
B方響應新連接,并發送連接響應報文SYN/ACK。
攻擊者再假冒A方對B方發送ACK包。
這樣攻擊者便達到了破壞連接的作用,若攻擊者再趁機插入有害數據包,則后果更嚴重。
針對ICMP協議的攻擊包括:
TCP SYN 掃描屬于端口掃描:TCP SYN 掃描是 端口掃描的變體。端口掃描用來檢查給定主機上的端口是否打開。
SYN 擴散屬于拒絕服務攻擊:Smurf 攻擊流行之前,SYN 擴散攻擊是最具破壞性的拒絕服務攻擊。
1.在TCP重負載下增加系統彈性(這使系統更能抵抗SYN洪水攻擊)
有以下幾個步驟:
購買更多的物理內存。
使用SYN Cookies (包括Linux2.4-2.6、BSD )技術 。當半連接隊列滿時,SYN cookies并不丟棄SYN請求,而是通過加密技術來標識半連接狀態。限制同時打開的SYN 半連接數。?
增加最大半連接數:大量的SYN請求導致未連接隊列被塞滿,使正常的TCP連接無法順利完成三次握手,通過增大未連接隊列空間可以緩解這種壓力。?
縮短SYN半連接的timeout時間
通過增大backlog隊列能防范SYN攻擊;另外減少超時時間也使系統能處理更多的SYN請求。timeout超時時間,也即半連接存活時間,是系統所有重傳次數等待的超時時間總和,這個值越大,半連接數占用backlog隊列的時間就越長,系統能處理的SYN請求就越少。為縮短超時時間,可以通過縮短重傳超時時間(一般是第一次重傳超時時間)和減少重傳次數來實現。
- 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 已經是缺省設置
- 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
說明:關于SYN攻擊防范技術,歸納起來,主要有兩大類,一類是通過防火墻、路由器等過濾網關防護,另一類是通過加固TCP/IP協議棧防范.但必須清楚的是,SYN攻擊不能完全被阻止,我們所做的是盡可能的減輕SYN攻擊的危害,除非將TCP協議重新設計。
2.增加TCP發送和接受窗口為至少32 kbytes不過不要超過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 已經是缺省設置
- Linux2.4-2.6 內核支持RFC 1323和RFC 2018可以動態調整
- OpenBSD3-4 內核支持RFC 1323和RFC 2018可以動態調整
- Solaris8-10
- #ndd -set /dev/tcp tcp_xmit_hwat 32768
- #ndd -set /dev/tcp tcp_recv_hwat 32768
TCP協議的攻擊的內容就向大家介紹完了,希望大家已經掌握,我們還會在以后的文章中繼續向大家介紹相關內容的。
【編輯推薦】