iptables狀態檢測
iptables狀態檢測是一種擴展匹配中的顯式擴展,用於檢測會話之間的連接關係的,有了檢測我們可以實現會話間功能的擴展
什麼是狀態檢測?
每個建立的連接包括以下信息:源IP地址、目標IP地址、源端口和目的端口,這叫一對套接字對(socket ); 協議類型、連接狀態(TCP協議)和超時時間等信息。防火牆把這些信息叫作狀態(stateful),能夠檢測每個連接狀態的防火牆叫作帶狀態檢測的包過濾防火牆;它除了能夠完成簡單包過濾防火牆的包過濾工作外,還在自己的內存中維護一個跟蹤連接狀態的表,比簡單包過濾防火牆具有更大的安全性。
對於整個TCP協議來講,它是一個有連接的協議,
在tcp的三次握手中:
NEW: 新建立的連接,連接追蹤模板中無相應的條目時,客戶端第一次發出的請求;(tcp三次握手中的第一次握手)
ESTABLISHED:NEW狀態之後,邊距追蹤模板中的條目刪除之前所進行的通信過程,都稱爲ESTABLISHED;(tcp的第二次第三次握手,叫做已建立的連接(ESTABLISHED))
INVALID:還有一種狀態,比較詭異的,比如:SYN=1 ACK=1 RST=1,對於這種我們無法識別的,我們都稱之爲INVALID無法識別的
RELATED:表示發起一個新的連接,但是這個連接和一個現有的連接有關
-m state擴展
啓用連接追蹤模板記錄連接,並根據連接匹配連接狀態的擴展;
專用選項:
--state STATE
示例 : 放行訪問本機22,80端口的服務
# iptables -t filter -I INPUT-d 172.16.6.61 -p tcp -m multiport --dports 22,80 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -t filter -IOUTPUT -s 172.16.6.61 -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT
調整連接追蹤功能所能容納的連接的最大數目:
/proc/sys/net/nf_conntrack_max
當前追蹤的所有連接:
/proc/net/nf_conntrack
[root@localhost ~]# cat/proc/net/nf_conntrack
ipv4 2 tcp 6 29 TIME_WAIT src=172.16.6.62 dst=172.16.6.61 sport=41644 dport=22 src=172.16.6.61dst=172.16.6.62 sport=22 dport=41644 [ASSURED] mark=0 secmark=0 use=2
ipv4 2 icmp 1 29 src=172.16.6.62 dst=172.16.6.61 type=8 code=0 id=20325src=172.16.6.61 dst=172.16.6.62 type=0 code=0 id=20325 mark=0 secmark=0 use=2
ipv4 2 tcp 6 299 ESTABLISHED src=172.16.6.61dst=172.16.6.11 sport=22 dport=63572 src=172.16.6.11 dst=172.16.6.61sport=63572 dport=22 [ASSURED] mark=0 secmark=0 use=2
conntrack
查看該conntrack模塊是否已加載
[root@localhost ~]# lsmod | grepnf_conntrack
nf_conntrack_ipv4 9506 4
nf_defrag_ipv4 1483 1 nf_conntrack_ipv4
nf_conntrack 80390 2 nf_conntrack_ipv4,xt_state
在高併發狀態下建議 卸載該模塊 或者 提高該模塊的連接的最大數目
[root@localhost ~]# modprobe -rnf_conntrack
[root@localhost ~]# modprobe -r nf_conntrack_ipv4
[root@localhost ~]# modprobe -rnf_defrag_ipv4
不同協議或連接類型追蹤時的時長屬性:
/proc/sys/net/netfilter/
如何放行被動模式下的ftp服務:
(1) 裝載模塊:
# modprobe nf_conntrack_ftp
(2) 放行請求報文
放行入站請求端口爲21的請求報文;
放行所有狀態爲ESTABLISHED和RELATED狀態的入站報文;
(3) 放行出站響應報文
放行所有狀態爲ESTABLISHED的出站報文;
如何保存及重載規則:
保存:
(1) service iptables save
/etc/sysconfig/iptables文件;
(2) iptables-save > /PATH/TO/SOMEFILE