iptables狀態檢測

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章