朱吉樂江蘇省興化市教師進修學校 江蘇 225700
隨著網絡的不斷發展,對網絡安全的要求越來越高,利用防火墻對網絡進行安全保護也顯得尤為重要。一般情況下單位部門的內部網絡都是在一個防火墻保護的情況下運行,以下從幾個方面談談利用Linux建立廉價防火墻。
防火墻作為實際存在的物理設備,它可通過監測、限制、更改跨越防火墻的數據流,盡可能地對外部屏蔽網絡內部的信息、結構和運行狀況,以此來實現網絡的安全保護。在邏輯上,防火墻是一個分離器,一個限制器,也是一個分析器,有效地監控了內部網和 Internet之間的任何活動,從而保證了內部網絡的安全。一般防火墻需要對原有網絡進行調整配置,而透明防火墻則不需要進行修改,所謂透明是對用戶的透明,即用戶意識不到防火墻的存在,透明防火墻從用戶與Internet之間加入或者移除,用戶的網絡設置不要修改,都能正常使用,既增加了網絡的安全性,又降低了用戶管理的復雜程度。
透明代理和傳統代理一樣,可以比包過濾更深層次地檢查數據信息,比如FTP包的port命令等。同時它也是一個非常快的代理,從物理上分離了連接,這可以提供更復雜的協議需要,這樣的通信是包過濾所無法完成的。同透明防火墻呼應,透明代理也不需要進行任何設置,用戶意識不到代理的存在,便可完成內外網絡的通訊。當內部用戶需要使用透明代理訪問外部資源時,代理服務器會建立透明的通道,讓用戶直接與外界通信,這樣極大地方便了用戶的使用。而一般使用代理服務器時,每個用戶需要在客戶端程序中指明要使用代理,自行設置Proxy參數(如在瀏覽器中有專門的設置來指明HTTP或FTP等的代理)。而透明代理服務,用戶不需要任何設置就可以使用代理服務器,簡化了網絡的設置過程。
網絡各種應用的發展,尤其大容量數據傳送服務,大大地影響了網絡的應用,甚至引起整個網絡堵塞,嚴重影響了網絡應用。隨著防火墻技術的發展,這個問題迎刃而解。防火墻不單單能保護網絡,同時也能控制管理網絡應用。通過設置安全策略,可以通過時間、流量、Ip地址、端口、服務等方面對網絡應用進行管理。例如:可以設定在5:00下班了,允許通過p2p軟件下載,而上班時間到了又自動禁止p2p軟件的下載。從而根據各個網絡自身特點,制定合適的安全訪問策略,能大大提高網絡資源的應用效率。
防火墻需要一臺帶有雙網卡的普通電腦,安裝較新版本的Linux,準備編譯好Iptables防火墻軟件和squid代理軟件。設置雙網卡同一 Ip地址(直接修改“/etc/sysconfig/networkscript/ifcfg-eth”和“/etc/sysconfig/network-script/ifcfg-eth1”),相同的子網掩碼,其中出口網卡需要設置網關,運行service network restart使修改生效。設置簡單路由,一般isp提供8個公共網地址,這里用a.b.c.0/8表示。在“/etc/rc.d/rc.local”文件中追加以下幾行:
ip router add a.b.c.0/8 dev eth1;內網網卡處理所有分配的地址
ip router add a.b.c.1 dev eth0;外網網卡處理網關地址
ip router del a.b.c.0/8 dev eth0;外網網卡不處理內網地址
/sbin/sysctl -w net.ipv4.conf.all.fowarding=1;啟用網絡包轉發
/sbin/sysctl –w net.ipv4.conf.eth0.proxy_arp=1;外網啟用arp代理
sbin/sysctl –w net.ipv4.conf.eth1.proxy_arp=1;內網啟用arp代理
每次重啟后會自動執行上面幾個命令。這樣透明路由就已經配置成功,可以作用了。
所謂策略就是數據包通行的規則,設定什么數據包是可以通過的,什么是不可以通過的,在內網和外網之間起到過濾的作用,策略可以防止外網直接攻擊內網計算機,從而保護了內網計算機,也可以更好的控制、管理上網的規則以及時間、地域、流量等,充分提高網絡使用的效率。
Linux自帶的 Iptables策略配置工具就可以勝任這項工作,可以安裝一個較新版本的Iptables(不推薦最新版本),要充分發揮防火墻功能的話,還需要增加 Iptables過濾模塊,常用的有以下功能模塊:string(字符串匹配,可以用做內容過濾),comment(備注匹配),iprang(ip范圍匹配),time(時間匹配),ipp2p(點對點匹配),connlimit(同時連接個數匹配),Nth(第 n個包匹配),geoip(根據國家地區匹配),ipp2p(點對點匹配),quota(配額匹配),等等還有很多。看看下面簡單幾個例子:
把含有“影院”的數據包丟棄:
Iptables -I FORWARD -d 192.168.3.0/24 -m string --string"影院" -j DROP
只允許每個ip同時5個80端口轉發,超過的丟棄:
Iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit--connlimit-above 5 -j DROP
IP地址在192.168.1.5-192.168.1.124之間的可以通過:
Iptables -A FORWARD -m iprange --src-range 192.168.1.5-192.168.1.124 -j ACCEPT
封殺BT類P2P軟件:
Iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP
Iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP
Iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP
封端口:
Iptables -A INPUT –p tcp –port 20 –j DROP
策略的設置多種多樣,默認丟棄所有的包,結合各自的應用需求,可以通過組合規則和模塊定制出適合自己應用的策略,安全適用才是最好的,詳細的策略學習可以參考Iptables Howto,網上還有一些視頻教程。
squid是linux下非常著名的代理服務軟件,主要功能是屏蔽內網機器,代理上網,控制內網上網規則等,在實際應用中可以結合 Iptables實現透明代理。Squid的代理端口是3128,所以首先要開啟內網 3128 端口:“Iptables –A INPUT –I eth1 –p tcp –dport 3128 –j ACCEPT”;要實現透明代理就要把對80端口的所有請求動作自動的轉交給3128端口即Squid去處理:“Iptables –A FORWARD –s a.b.c.0/24 –I eth1 –p tcp–dport 80 –j REDIRECT –TO-port 3128”,這樣客戶端就不需要手工設置代理選項,由Iptables轉發自動完成,REDIRECT是一個模塊,在使用之前要確保此模塊要加載,也可以手工加載“insmod ipt_REDIRECT”。
FTP是網絡中一個重要的應用,有時要訪問FTP服務,有時也要提供FTP服務,在實際應用中FTP有兩種模式,一種是主動模式:客戶端從一個任意高端口N(N>1024)連接到FTP服務器的命令端口,也就是21端口。然后客戶端開始監聽端口N+1,并發送FTP命令“port N+1”到FTP服務器。接著服務器會從它自己的數據端口(20)連接到客戶端指定的數據端口(N+1)。另一種是被動模式:開啟一個FTP連接時,客戶端打開兩個任意的非特權本地端口(N > 1024和N+1)。第一個端口連接服務器的21端口,但與主動方式的FTP不同,客戶端不會提交PORT命令并允許服務器來回連它的數據端口,而是提交PASV命令。這樣做的結果是服務器會開啟一個任意的非特權端口(P > 1024),并發送PORT P命令給客戶端。然后客戶端發起從本地端口N+1到服務器的端口P的連接用來傳送數據。
由于高端口是隨機產生的,而在Iptables防火墻策略中高端口是不放行的,從安全角度考慮也不能放行所有的高端口。解決方法是指定一個高端口比如1025,這樣就要解決怎么把一個隨機的高端固定為一個端口,在Ftp客戶端軟件中可以通過設置Passive模式端口的范圍中實現(1025-1025)。
去掉顯示器、鍵盤、鼠標等外設,安裝“HAP_SecureCRT”等終端仿真器,利用遠程客戶端管理,一個功能強大的防火墻就成功了。
[1][EB/OL].http://www.squid-cache.org.
[2][EB/OL].http://www.iptables.net.cn.
[3]倪繼利.Linux安全體系分析與編程[M].北京:電子工業出版社.2007.
[4]施怡.使用iptables構建Linux防火墻[J].福建電腦.2004.
[5]張秀嶺,萬旻,駱建彬,鄧憲.Linux下基于 Squid的多能代理系統與透明網關解決方案[J].微計算機應用.2004.
[6]李洋,汪虎松.Red Hat Linux 9系統與網絡管理教程[M].北京:電子工業出版社.2006.
[7]梁子森,李曉軍,王志剛.基于Linux的Iptables共享上網及防火墻配置[J].計算機與現代化.2008.
[8]Michael Rash.陳健譯.Linux防火墻[M].北京:人民郵電出版社.2009.