摘要:結合Netfdter防火墻框架深入研究了linux平臺下連接跟蹤技術的實現過程,并采用用戶空間配置工具i-ptables編寫了一個ftp連接跟蹤的應用實例。
關鍵詞:連接跟蹤 Netfilter Iptable ftp
中圖分類號:TP393 文獻標識碼:A 文章編號:1002-2422(2008)01-0054-02
1 連接跟蹤技術及Netfilte/Iptables
1.1連接跟蹤技術
連接跟蹤管理單個連接(TCP、UDP等),并負責為現有連接分配輸入、輸出和轉發IP數據包。不僅可用于傳輸協議,還可以支持復雜的應用協議,能識別不同應用的服務類型。
連接跟蹤機制中定義了四種包狀態:
(1)NEW:新建連接狀態,包屬于新連接;
(2)ESTABUSHED:已建連接狀態,包屬于完全建立的連接;
(3)RELATED:相關連接狀態,包屬于新連接,但這個新連接與一個現有連接有關;
(4)INVALID:無效連接狀態,分組對應的連接是未知的。
1.2 Neffilter與Iptables
Netfdter是Linux2.4以后采用的防火墻功能框架,Net-filter為每種網絡協議定義了一套鉤子函數翻。內核模塊可以對一個或多個鉤子函數進行注冊掛接,并且在數據包經過這些鉤子函數時被調用,從而模塊可以修改這些數據包,并向Netfiher返回如下值,以指定應該對包進行的操作:
(1)NF_DROP:丟棄這個數據包,并且要釋放為數據包申請的所有資源。
(2)NF_ACCEPT:數據包被接受,將它移到網絡堆棧的下一層。
(3)NF_STOLEN:忘掉這個數據包,但不必明確丟棄包。
(4)NF QUEUE.將包放入隊列中,該隊列中的包可以被用戶空間程序等刪除和處理。
(5)NF_REPEAT:請求Netfiher再次調用這個鉤子函數。
Iptables通過使用系統提供的特殊命令建立規則控制信息包的過濾,并將其添加到內核空間特定信息包過濾表內的鏈中。關于iptables規則的命令,一般語法如下:iptables-t table-Operation chain-j target match(es)
1.3連接跟蹤在Netfilter下的實現方法
連接跟蹤在Nettiher下的實現過程,如圖1所示。
在圖中,可以看到不同的數據包所要經過的三條路徑,在每一條路徑上,連接跟蹤都注冊了相應的函數,并創建與之相關的數據結構。
2 針對FTP協議的Netfilter連接跟蹤實現
2.1針對FIP協議的Netfdter連接跟蹤的基本流程
FTP是被廣泛采用的應用協議之一,使用雙向的多個連接,這些連接建立方法有兩種:主動模式和被動模式。
(1)在主動模式下,客戶端從一個任意的非特權端口(大于1024)向服務器的FTP端口(21)發送連接請求,服務器接受請求后,會從它自己的數據端口(20)連接到客戶端指定的數據端口,服務器向客戶端發起一個用于數據傳輸的連接。
(2)被動FTP工作方式下,當開啟一個FTP連接時,客戶端向服務器的FFP端口(21)發送連接請求,但與主動方式的FTP不同,客戶端不會提交PORT命令并允許服務器來回連它的數據端口,而是提交PASV命令,這樣服務器會開啟一個任意的非特權端口,然后客戶端發起從本地端口到服務器端口的連接用來傳送數據。
2.2連接跟蹤對FTP的實現
將連接跟蹤技術應用在一個FTP實例中:FTP從內部網到外部網,經過一個配有iptables的防火墻系統,有兩個網絡接口,外部網接口ethO的Ip為192.168.1.1,外部網192.168.1.0/24;內部網接口eth1的Ip為192.168.12.1,內部網192.168.12.0/24。為了更清晰地分析測試,設置為一種理想狀態,除FFP之外,不允許任何其他從內部到外部網的訪問。
以下是編寫的iptables語句:
modprobe ip_conntrack
modpmbe ip_conntrack_ftp
iptuhles-p FORWARD-j DROP
iptables-p INPUT-j DROP
iptables-p OUTPUT-j DROP
iptables-A FORWARD-m state--state ESTABLISHED,RE-
LATED-j ACCEPT
iptables-A FORWARD-m state--state NEW-s 192.168.12.0/24-d 0/0-p tcp-dport ftp-j ACCEPT
iptables -A otrrPUT-o eth0-s 192.168.1.1-d 0/0-m state-state ESTABLISHED,BELATED-j ACCEPT
iptables-A OUTPUT-m state--state NEW-o eth0-s 192.168.1.1-d 0/0-p tep--dport ftp-j ACCEPT
iptables-A INPUT-i eth0-s 0/0-d 192·168.1.1-m state--state ESTABLISHED,RELATED-j ACCEPT
由以上可知,在FTP連接中采用連接跟蹤技術以后,對每一個進出系統的連接的產生、傳輸及終止都進行跟蹤記錄,通過iptables的規則匹配決定通過、拒絕或者是丟棄包,提高了過濾效率,改進了系統的整體安全性。
3 結束語
將連接跟蹤技術應用在Linux的Netfilter防火墻框架中,改進了傳統包過濾的安全性與效率性,并在此基礎上,通過用戶制定的一系列規則,采用iptables編寫了一個FTP連接的實現,為更復雜的連接跟蹤在Linux下其他協議的應用與實現提供了一定的借鑒作用。