Iptables防火墻tcp-flags模塊擴展匹配規(guī)則詳解
Iptables防火墻tcp-flags模塊擴展匹配規(guī)則
tcp-flags模塊的作用是判斷TCP協(xié)議數(shù)據(jù)報文標志位的返回值的,在TCP的三次握手中,第一次握手客戶端向服務器發(fā)送syn=1的數(shù)據(jù)報文,第二次握手服務端向客戶端發(fā)送sync和ack=1的報文,第三次握手客戶端向服務端發(fā)送ack=1的報文。
tcp-flags模塊就是來判斷發(fā)送報文中指定的標志位是否等于1,并且該條報文中只包含指定的標志位,否則就拒絕通行,例如我們指定的標志位是SYN,那么該條報文中就只能包含SYNC,如果再包含ACK,那么就不放行,并且標志位的值要為1。
**案例:**
只允許其他客戶端發(fā)送TCP請求報文到本機,本機響應可以,但是本機不可向其他主機發(fā)送TCP請求報文。
- 首先來分析,"只允許其他客戶端發(fā)送TCP請求到本機",根據(jù)這句話可以明確是在INPUT鏈添加相應的規(guī)則,客戶端發(fā)起請求一共需要發(fā)送2次TCP握手,分別是第一次握手和第三次握手,通過tcp-flags模塊確保客戶端發(fā)送的報文中標志位都是正確的,需要在INPUT鏈添加3條規(guī)則,第一條規(guī)則是匹配客戶端發(fā)送的報文中是否只包含syn標志位,并且值是否等于1,第二條規(guī)則是匹配客戶端發(fā)送的報文中是否只包含ack,并且值是否等于1,如果這兩條規(guī)則都滿足,那么就說明是客戶端向服務端發(fā)送的請求,最終的動作是允許,第三條規(guī)則是拒絕其他標志位的TCP連接請求。
- 然后來分析"本機只可以響應客戶端發(fā)起的TCP請求,但是本機不可以向其他客戶端發(fā)送請求",根據(jù)這句話可以明確出規(guī)則是要添加在OUTPUT鏈的,我們只需要在OUTPUT鏈添加上第二次握手所包含的TCP標志位的規(guī)則,完成響應客戶端的TCP連接請求,最后在添加一條規(guī)則,禁止其他的TCP標志位從OUTPUT鏈發(fā)出,也就可以拒絕本機向其他的客戶端發(fā)起TCP請求。
tcp-flags模塊使用的命令格式:--tcp-flags {標志位集合} {要判斷哪個標志位等于1}
1)編寫具體的防火墻規(guī)則
1.添加允許客戶端向本機發(fā)起TCP請求的規(guī)則 #syn=1的標志位規(guī)則 [root@jxl-1 ~]# iptables -t filter -I INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST SYN -j ACCEPT #ack=1的標志位規(guī)則 [root@jxl-1 ~]# iptables -t filter -I INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST ACK -j ACCEPT #其余的報文都拒絕 [root@jxl-1 ~]# iptables -t filter -A INPUT -j DROP 2.添加本機響應客戶端TCP連接請求以及拒絕發(fā)起TCP請求的規(guī)則 #syn和ack都等于1 [root@jxl-1 ~]# iptables -t filter -I OUTPUT -p tcp --sport 22 -m tcp --tcp-flags SYN,ACK,FIN,RST SYN,ACK -j ACCEPT #ack-1 [root@jxl-1 ~]# iptables -t filter -I OUTPUT -p tcp --sport 22 -m tcp --tcp-flags SYN,ACK,FIN,RST ACK -j ACCEPT #其余的報文全部拒絕 [root@jxl-1 ~]# iptables -t filter -A OUTPUT -j DROP
2)查看設置的防火墻規(guī)則
[root@jxl-1 ~]# iptables -L -n -v --line-number Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 82 6416 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 flags:0x17/0x10 2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 flags:0x17/0x02 3 5169 1958K DROP all -- * * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 41 4348 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:22 tcp flags:0x17/0x10 2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:22 tcp flags:0x17/0x12 3 293 65316 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
3)查看效果
本機無法發(fā)起TCP連接請求。
其他主機可以向本機發(fā)起TCP連接。
以上就是Iptables防火墻tcp-flags模塊擴展匹配規(guī)則詳解的詳細內(nèi)容,更多關于Iptables防火墻tcp-flags的資料請關注腳本之家其它相關文章!
相關文章
Discuz! 4.x SQL injection / admin credentials disclosure exp
Discuz! 4.x SQL injection / admin credentials disclosure exploit...2006-11-11跨站式腳本(Cross-SiteScripting)XSS攻擊原理分析
XSS又叫CSS (Cross Site Script) ,跨站腳本攻擊。它指的是惡意攻擊者往Web頁面里插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的html代碼會被執(zhí)行,從而達到惡意用戶的特殊目的。2008-09-09SA 沙盤模式下不用恢復xp_cmdshell和xplog70.dll也執(zhí)行命令
sa下刪除xp_cmdshell和xplog70.dll時候的一種辦法,不算新的了, 也被一些人不斷的再次提出來,為了方便自己記憶再寫出來, 在這種情況下,要執(zhí)行命令,條件是要有xp_regwrite。2011-01-01