- 論壇徽章:
- 0
|
一、關于IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP 規(guī)則\r\n此規(guī)則是對于這樣的包進行過濾:外部網(wǎng)絡主機已經(jīng)與防火墻內(nèi)部或者其自身建立了鏈接,而此規(guī)則后來生效的那些此連接的數(shù)據(jù)包\r\n具體實施:\r\n防火墻之外的主機A:10.1.1.2/24 \r\n放火墻F:10.1.1.1/24 與 10.1.2.1/24 \r\n受防火墻保護的網(wǎng)段:10.1.2.0/24 \r\n受防火墻保護的網(wǎng)段內(nèi)的一臺主機X:10.1.2.10/24(開啟telnet服務) \r\n具體實施: \r\n1、主機A telnet 到 主機X,并保持連接狀態(tài). \r\n2、開啟防火墻F上的iptables服務,并使規(guī)則: \r\nIPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP \r\n生效。 \r\n3、使用剛才的telnet客戶端執(zhí)行隨便一個命令,如:ls \r\n上面的ls命令應該是執(zhí)行不成功的。 \r\n如果有黑客先鏈接到我的內(nèi)部網(wǎng)絡,而iptable規(guī)則后生效,那么黑客就可以用我這臺機器做跳板來執(zhí)行一些命令。 \r\n基與這一點,我想iptables雖然是工作在網(wǎng)絡層的防火墻,但是它會查看TCP包頭的,所以嚴格的說,iptables是一個傳輸層與網(wǎng)絡層的放火墻。但就象手機可以錄音一樣,我們還是稱之為手機,所以,iptables還是網(wǎng)絡層的防火墻。\r\n \r\n二、關于iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset 規(guī)則\r\n此規(guī)則是對這樣的包進行過濾,并發(fā)出錯誤報告:tcp包頭中的syn=1并且ack=1的段進行過濾,并向此鏈接的發(fā)起端發(fā)出tcp-reset(也就是RST=1)的數(shù)據(jù)包,通知關閉其鏈接。\r\n具體實施:\r\n攻擊者A:10.1.1.2\r\n放火墻F:10.1.1.1/24 與 10.1.2.1/24 \r\n受防火墻保護的網(wǎng)段:10.1.2.0/24 \r\n受防火墻保護的網(wǎng)段內(nèi)的一臺主機O(無辜者):10.1.2.10/24\r\n受害者V:10.1.2.20/24(在應用層,僅準許ip為10.1.2.10的機器登陸)\r\n1、[A]以[O]的IP為源地址向[V]發(fā)SYN。\r\n\r\n2、[V]向[O]回應SYN/ACK。(這也是為什么要三次握手才可以確定鏈接與否的原因,而不是兩次。)\r\n\r\n3、現(xiàn)在,若[O]以RST回應這個未知的SYN/ACK,攻擊就失敗了,但如果[O]已經(jīng)沒有這個能力了呢?比如它早已被另外的攻擊(如SYN flood)降服,或者被關閉,或者它的RST包被防火墻拒絕。\r\n\r\n4、如果[O]沒能破壞這條連接,而且[A]猜對了序列號,那它就能以[O]的身份發(fā)出第三次握手并與V通信了。\r\n這條規(guī)則的存在還產(chǎn)生了另外一問題,就是有幾個portscan(端口掃描器)會看到我們的防火墻。因為RST=1的鏈接復位包是由防火墻發(fā)起的。\r\n所以,在應用此規(guī)則后,可以使我們不成為無辜者O,也不能讓攻擊者A得逞。\r\n注意:這條規(guī)則并不能防止你成為受害者。\r\n三、關于兩個規(guī)則的功能的相互替換。\r\n1、可以用此規(guī)則:IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP 防止syn欺騙么?\r\n不可以。因為在第2次握手(ack=1,syn=1),如果iptables檢測到這個包是第一次到來,那么狀態(tài)是NEW。這樣就與規(guī)則ack=1(! --syn用來匹配那些 RST或ACK被置位的包)匹配。規(guī)則生效。但是這樣做只是把包drop掉了,并沒有發(fā)出RST以通知連結的發(fā)起者。\r\n2、可以用此規(guī)則:iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset來防止外網(wǎng)先鏈接到本地機器,而規(guī)則后生效,并且阻止此鏈接的后續(xù)包進入么?\r\n不可以。因為在此規(guī)則生效后,鏈接的后續(xù)包的狀態(tài)標志位并不是syn=1。\r\n多謝論壇里的兄弟和我探討,讓我有了更進一步的了解。如果有任何錯誤,請回帖。 |
|