摘 要:隨著Internet的迅速發展,網絡中因為IP地址信息泄漏而遭受的攻擊日益嚴重。通過代理服務器來隱藏內部網絡設備IP地址的傳統方式,不僅影響數據傳輸速率,而且其本身也易成為攻擊的目標。針對這一亟待解決的問題,基于Netfilter/iptables模塊和IP地址替換技術,在Linux環境下通過DNAT和SNAT,以及多線程系統調用的方式實現了靜態IP和DHCP動態分配IP的地址信息隱藏。通過網絡實驗證明,達到了預期的目的。
關鍵詞:Netfilter/iptables; IP地址隱藏; DNAT/SNAT; IP地址替換
中圖分類號:TN915.07-34; TP309 文獻標識碼:A
文章編號:1004-373X(2011)17-0101-03
Research on IP Address Hidden Technology Based on Netfilter/iptables Module
ESANGBEDO Moses Olabhele, LU Xuan-min, SHAN Chang, YANG Jie
(School of Electronics and Information, Northwestern Polytechnical University, Xi’an 710129, China)
Abstract: With the rapid development of Internet, the attacks caused by the IP address leakage become more and more serious. The traditional way to hide the IP address through a proxy server affects the data transmission rate and the proxy server could become the easily-attacked target. In response to this problem, the hiding of the static IP and DHCP dynamic IP address information is implemented with Netfilter/iptables modules and IP address substitution technique, through DNAT, SNAT and multiple threads in Linux OS. The experiment shows that it achieves the desired results.
Keywords: Netfilter/iptables; hidden IP address; DNAT/SNAT; IP address replacement
0 引 言
隨著Internet的迅速發展,一些安全問題也日漸突出。尤其是,如果一些重要網絡設備的IP地址泄漏,黑客便可對其進行定向攻擊,截獲、修改IP數據包,發送不良信息給網絡用戶,或盜取用戶隱私信息,造成用戶的重大損失[1]。通過代理服務器來隱藏內部網絡設備IP地址的傳統方式不僅影響數據傳輸速率,而且其本身也易成為攻擊的目標。
針對這一亟待解決的問題,本文基于協議分析技術以及Netfilter/iptables模塊,在Linux環境下通過DNAT和SNAT,以多線程系統調用的方式實現了靜態IP和DHCP動態分配IP的地址信息隱藏。最后通過網絡實驗證明了其有效性。
1 Netfilter/iptables模塊
在Linux系統中,Netfilter是其內核的一個完整且功能強大的防火墻系統;iptables模塊則是Netfilter提供的一種用戶工具,是與Linux內核集成的IP信息包過濾系統[2]。通過這種工具可以實現NAT,進而隱藏IP地址信息。iptables的基本語法規則如下:
iptables [-t table] command [match] [target];
iptables中共有三類表,分別是mangle,nat和filter。mangle表對于滿足常規的防火墻應用作用不大。nat表的作用在于對數據包的源或目的IP地址進行轉換[3]。nat表又可分為三條鏈:DNAT:改變包的目的地址,以使包能重路由到某臺主機上;SNAT:改變包的源地址,可以隱藏用戶的本地網絡;MASQUERADE:和SNAT作用基本一樣,對每個匹配的包,MASQUERADE都要查找可用的IP地址。filter表用來過濾數據包,可以在任何時候匹配并過濾包,對包做DROP或ACCEPT。
Iptables可分為兩部分,一部分被稱為核心空間,另一部分稱為用戶空間。在核心空間,iptables從底層實現了數據包過濾的各種功能,比如NAT、狀態檢測以及高級的數據包的匹配策略等;在用戶空間,iptables為用戶提供了控制核心空間工作狀態的命令集。
首先,當一個包進來時,內核首先根據路由表決定包的目標。如果目標主機就是本機,則直接進入INPUT鏈,再由本地正在等待該包的進程接收;如果進來的包的目標不是本機,則再看是否內核允許轉發包[4-5]。最后,Linux防火墻主機本身能夠產生包,這種包只經過OUTPUT鏈被送出防火墻。
2 基于 DNAT/SNAT的IP地址隱藏
每個通過因特網的IP數據報由一個頭部區和緊跟其后的數據區組成。其中,數據報頭部中包括了源IP地址(Source IP Address)和目的IP地址(Destination IP Address)。
通過DNAT(Destination Network Address Translation)和SNAT(Source Network Address Translation)可以改變用戶網絡設備的IP地址[6]。DNAT是一種改變數據包目的 IP地址的技術,SNAT是一種改變數據包源IP地址的技術,它們可以使多臺網絡設備能共享一個IP地址接入Internet,并通過對同一個IP地址分配不同的端口,來決定數據的流向。
DANT只能用在Iptables模塊中nat表中的PREROUTING和OUTPUT鏈中。數據包先達到PREROUTING鏈,再由路由作出決定,以確定該數據包應該轉發或由本地鏈處理。
本地處理涉及數據包過濾或改變。通過以下命令可以將發送的數據包轉發到私有地址192.168.0.1上:
#iptables-t nat-A OUTPUT-destination eth0-p tcp-j DNAT-to-destination 192.168.0.1
本地主機的數據包發往路由時,可以通過FORWORD鏈,將一個端口的數據包重定向到另一個端口。例如,當一個Web服務器不能正常啟動時,可以通過以下命令將8080端口重新定向到80端口:
#iptables-t nat-A PREROUTING-p tcp-dport 80-j REDIRECT--to-ports 8080
SNAT用來重寫包的源IP地址。當共享一個Internet連接時,通過SNAT規則,可以把所有從本地網絡出去的包的源地址改為Internet連接的地址,達到隱藏用戶網絡設備IP地址的目的。SNAT只能用在Iptables模塊中nat表的POSTROUTING鏈里。只要連接的第一個符合條件的數據包進行了SNAT,那么這個連接的其他所有數據包都會自動地進行SNAT。
下面的命令是在一段連續的IP地址(如194.236.50.155-194.236.50.160)中將數據包進行SNAT,并指定源端口范圍(1 024~32 000)。
通過上面的處理,來自Internet的數據包在防火墻內先后經過DNAT和SNAT處理,才能達到網絡服務器。這樣,服務器中所有訪問記錄的源地址都是防火墻的IP地址而不是真正的訪問源,從而有效地隱藏了用戶網絡設備的IP地址。
3 基于IP替換的IP地址隱藏
IP地址的使用主要有靜態IP(Static IP)分配方式和動態IP(Dynamic IP)分配方式。靜態分配IP地址的弱點是合法用戶分配的地址,可能被非法盜用,對網絡的正常使用造成影響。
在Linux操作系統中,可以通過執行如下命令來設置一個網卡的IP地址:
#ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up
或者也可以在root權限下修改Linux操作系統的/etc/network /interface文件[7-8],首先先執行命令:
#sudo gedit /etc/network/interfaces
然后使用gedit進行修改。
iface eth0 inet static
address 192.168.1.100
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
此時,IP地址并沒有生效,因此需要重啟網卡使之生效,執行命令如下:
#sudo /etc/init.d/networking restart
以上兩種方法都可以修改用戶IP地址。為了方便操作,設計了如圖2所示的GUI用戶操作界面,通過CGI(Common Gate Interface)提供不同的服務類型,并以多線程的方式實現了修改用戶IP地址的任務。
動態分配IP地址是僅當用戶計算機需要連入網絡工作時,系統才在所掌握的可分配 IP地址空間中,通過 TCP/IP的動態主機配置協議(DHCP)隨機挑選一個給用戶使用的IP地址分配方式。
由于DHCP在分配IP地址時,一旦完成首次分配,會把IP地址與其MAC地址進行綁定[9-10]。在這種情況下,即使某個用戶盜用其他IP地址時,網絡主干通信設備也會因其網卡MAC地址與IP地址不匹配而拒絕通過。
因此,當需要進行IP地址替換時,必須在系統中改變網絡設備的MAC地址,這樣當DHCP再次分配IP地址時,對應的IP地址才會隨之改變。
通過腳本的編寫可以隨時改變網絡設備的MAC地址:
#!/bin/sh
Ic=/sbin/ifconfig
IF=eth1
MAC=00:1E:68:B9:8C:80
$Ic
$Ic down
$Ic $IF hw ether $MAC
$Ic up
dhclient
$Ic
上面的腳本將網絡設備的MAC地址修改為00:1E:68:B9:8C:80,并且請求DHCP服務分配IP地址,此時用戶網絡設備的MAC地址已經修改,而IP地址也對應MAC地址重新分配。由于MAC不停改變,IP也隨之不停分配,因此設備的IP地址并不固定,也就不易被攻擊。
4 結 語
本文針對Internet中因IP地址泄漏而帶來的網絡安全問題,在Linux環境下通過利用iptables模塊中的DNAT,SNAT等功能實現了對內部網絡IP地址的隱藏;利用腳本設置并修改系統MAC地址等方式實現了對外部網絡IP的隱藏,并通過網絡實驗,驗證了其有效性。
參 考 文 獻
[1]唐正軍.網絡入侵檢測系統的設計與實現[M].北京:電子工業出版社,2002.
[2]高健智,賴阿福.Linux網絡實際操作經典[M].北京:科學出版社,2002.
[3]SUEHRING Steve.Linux防火墻[M].何涇沙,譯.北京:機械工業出版社,2006.
[4]白滔,劉大滏.Linux下怎樣利用iptables實現網絡防火墻的監控功能[J].貴州氣象,2006,30(4):33-35.
[5]施怡.使用iptables構建Linux防火墻[J].福建電腦,2004(10):71.
[6]袁磊,師鳴若.Linux新型防火墻技術NETFILTER及應用[J].電腦開發與應用,2003,16(2):24-25.
[7]董劍安,王永剛,吳秋峰.iptables防火墻的研究與實現[J].計算機工程與應用,2003,39(17):161-163.
[8]劉華,顏國正,丁國清.在Linux下用iptables建立防火墻的方法[J].計算機工程,2003,29(10):129-131.
[9]Samba Orgnization. Linux 2.4 Netfilter FAQ [R/OL]. [2008-12-18]. http://netfilter.samba.org/netfilter-faq.html.
[10]郝慧珍,傅汝林.基于IP偽裝的網絡安全技術研究[J].成都理工學院學報,2002,29(3):315-319.
作者簡介:
摩 西 男,1984年出生,西北工業大學政府獎學金尼日利亞籍留學生。主要研究方向為網絡信息安全。
盧選民 男,1972年出生,陜西西安人,副教授。主要研究方向為無線傳感器網絡、多媒體通信與計算機網絡、FPGA/SoPC和嵌入式系統等。