摘要:文章闡述了防火墻的基本原理、特點和功能,并通過實例實現基于Linux系統環境下,使用防火墻的方法。
關鍵詞:防火墻;包過濾;網絡地址轉換;代理服務器
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)34-1623-04
Discussion Based on the Linux Operating System and Application Firewall Technology
YUAN Min
(Hefei University of Technology Institute of Computer and Information, Hefei 230069, China)
Abstract: The article describes the basic principles of the firewall, the features and functionality, and through examples of systems based on Linux environment, the use of firewalls.
Key words: firewall; packe filtering; nat; proxy service
隨著Inetnet的普及,它與人們日常工作的關系越來越緊密,因而越來越多的局域網創建了Internet代理上網服務。但當一個局域網的內部接上Internet之后,其內部資源就像代賣的羔羊一樣,面臨任人宰割的危險,因而除了考慮計算機病毒、系統的健壯性等內部原因之外,更主要的是防止非法用戶通過Internet的入侵,目前這種防范措施主要是靠防火墻的技術完成。
1 防火墻原理
防火墻(Firewall)是指隔離在本地網絡與外界網絡之間的一道防御系統,是此類防范措施的總稱。在互聯網上防火墻是一種非常有效的網絡安全模型,通過它可以隔離風險區域(即Internet或有一定風險的網絡)與安全區域(本地局域網)的連接,同時不會妨礙人們對風險區域的訪問。
防火墻不是一段單獨的計算機程序或一件設備。防火墻是一種非常有效的網絡安全模型。在邏輯上,它是過濾器、限制器和分析器,在物理上,它是被放在兩個網絡邊界上的用于加強訪問控制(阻隔非法訪問)的一組硬件設備(如路由器、主機),或者是各種系統組件的網絡組合(包括路由器、主機和配有的相關軟件)。
目前的防火墻從結構上講,可分為兩種:
1) 代理主機結構(如圖1 所示)
■
圖1
2) 路由器加過濾器結構(如圖2 所示)
■
圖2
所有的Internet通信都是通過獨立數據包的變換來完成的。每個包由源主機向目標主機傳輸。包是Internet上信息傳輸的基本單位,雖常說電腦之間的“連接”,但這連接實際上是由被連接的兩臺電腦之間傳送的獨立數據包組成的。實質上,它們“同意”相互之間的連接,并各自向發送者發出應答包,讓發送者知道數據被接收。
到達了目的地──不論兩臺計算機相距有多遠,每個Internet數據包都必須包含一個目標地址和端口號,和源主機的IP地址及端口號,以便接受者知道了是誰發出了這個包。也就是說,每一個在Internet上傳送的包,都必須含有Internet源地址和目標地址。一個IP地址總是指向Internet上的一臺單獨機器,而端口號則和機器上的某種服務或會話向關聯。
既然防火墻檢查每個到達你的計算機的數據包,那么,在這個包被運行的任何軟件看到之前,防火墻有完全的否決權,可以禁止你的計算機接收Internet上的任何東西。
當第一個請求建立連接的包被你的計算機回應后,一個TCP/IP被端口打開。如果到達的包不被受理,這個端口就會迅速地從Internet上消失,誰也別想和它連上。
但防火墻真正的目的于選擇哪些包該攔截,哪些包該放行。既然每個到達的包都含有正確的發送者的IP地址(以便接收者發送回應包),那么,基于源主機IP地址及端口號和目標主機IP 地址及端口號的一些組合,防火墻可以過濾掉一些到達的包。
2 防火墻的特點
防火墻具備以下特點:
1) 廣泛的服務支持:通過將動態的、應用層的過濾能力和認證相結合,可實現WEB瀏覽器、HTTP服務器、FTP等。
2) 對私有數據的加密支持:保證通過Internet進行虛擬私人網絡和商務活動不受損壞。
3) 客戶端認證只允許制定的用戶訪問內部網絡或選擇服務:局域網內部分支機構用戶之間安全通信的附加部分。
4) 反欺騙:欺騙是從外部獲取訪問權的常用手段,它使數據包好似來自網絡內部。防火墻能監視這樣的數據包并并能扔掉它們。
5) C/S模式和跨平臺支持:能使運行在一個平臺的管理模塊控制運行在另一個平臺的監視模塊。
3 防火墻的功能
1) 防火墻是阻塞點。它可以強迫所有進出的信息都通過這唯一的、狹窄的檢查點,這樣就可以集中實施安全策略,而不是對每臺主機都進行單獨的保護,顯然集中式管理要比分散式管理高效且經濟。
2) 防火墻可以實施強制的安全策略。可以允許某些服務通過防火墻,而禁止其它服務通過,這樣可以有效地保護內部網絡,不讓入侵者利用那些存在嚴重安全缺陷的服務。這種安全策略可以隨情況的不同而變化,具有很大的靈活性。
3) 防火墻可以記錄網絡上的活動情況。這樣,管理員可以通過檢查日志來跟蹤和發現入侵者。
4) 使用內部防火墻可以防止一個網段的問題向另一個網段傳播。
4 防火墻的分類
1) 包過濾(Packet Filtering)防火墻:拒絕接受從未授權的主機發送的數據包,并拒絕接受使用未授權服務的連接請求。
2) 網絡地址翻譯(Network Address Translation,NAT)防火墻:翻譯內部主機的IP地址而使外部檢測器無法探測到它們。
3) 代理服務器(Proxy Service)防火墻:代理內部主機進行高層應用連接,完全中斷內部主機和外部主機的網絡層連接。
5 防火墻的實現
該文主要介紹通過包過濾方法的實例,來實現Linux系統環境下的防火墻。
5.1 包過濾防火墻的工作層次
包過濾防火墻示意圖如3所示。包過濾器是一種內置于Linux內核路由功能之上的防火墻類型,其防火墻工作在網絡層。
5.2 包過濾防火墻的工作原理
5.2.1 使用過濾器
數據包過濾器在內部主機和外部主機之間,過濾系統是一臺路由器或是一臺主機。過濾系統根據過濾規則來決定是否讓數據包通過。數據包過濾是通過對數據包的IP頭和TCP或UDP頭的檢查來實現的,主要信息有:
1) IP源地址
① IP目標地址
② 協議(TCP包、UDP包和ICMP包)
③ TCP或UDP包的源端口
④ TCP或UDP包的目標端口
⑤ ICMP消息類型
⑥ TCP包中的ACK位
⑦ 數據包到達的端口
⑧ 數據包出去的端口
在TCP/IP中,存在著一些標準的服務端口號,例如HTTP的端口號為80。通過屏蔽特點的端口就可以禁止特定的服務。包過濾系統可以阻塞內部主機和外部主機或另外一個網絡的連接,例如,可以阻塞一些被視為是有敵意的或不可信的主機或網絡連接到內部網絡中。
5.2.2 過濾器的實現
數據包過濾一般使用過濾路由器來實現,這種路由器與普通的路由器有所不同。
普通路由器只檢查數據包的目標地址,并選擇一個到達目的地址的最佳路徑。它處理數據包是以目標地址為基礎的,存在者兩種可能性:若路由器可以找到一個路徑到達目標地址則發送出去;若路由器不知道如何發送數據包則通知數據包的發送者“數據不可達”。
過濾路由器會更加仔細檢查數據包,除了確定是否有到達目標地址的路徑外,還要確定是否應該發送數據包,“應該與否”是由路由器的過濾策略確定并強行執行的。
路由器的過濾策略主要有:
1) 拒絕來自某主機或網段的所有連接。
2) 允許來自某主機或網段的所有連接。
3) 拒絕來自某主機或網段的指定端口的連接。
4) 允許來自某主機或網段的指定端口的連接。
5) 拒絕本地主機或本地網絡與其它主機或其它網絡的所有連接。
6) 允許本地主機或本地網絡與其它主機或其它網絡的所有連接。
7) 拒絕本地主機或本地網絡與其它主機或其它網絡的指定端口的連接。
8) 允許本地主機或本地網絡與其它主機或其它網絡的指定端口的連接。
5.2.3 包過濾器操作的基本過程
下面給出包過濾器的操作流程圖,如圖4所示。
幾乎所有現有的包過濾器都遵循上述流程所示的工作過程,下面做個簡單的敘述:
1) 包過濾規則必須被包過濾設備端口存儲起來。
2) 當包到達端口時,對包報頭進行語法分析。大多數包過濾設備只檢查IP、TCP或UDP報頭中的字段。
3) 包過濾規則以特殊的方式存儲。應用于包的規則的順序與包過濾器規則存儲順序必須相同。
4) 若一條規則阻止包傳輸或接收,則此包便不被允許。
5) 若一條規則允許包傳輸或接收,則此包便可以被繼續處理。
6) 若包不滿足任何一條規則,則此包便被阻塞。
5.2.4 包過濾技術的優缺點
1) 優點
① 對于一個小型的、不太復雜的站點,包過濾比較容易實現。
② 因為過濾路由器工作在IP層和TCP層,所以處理包的速度比代理服務器快。
③ 過濾路由器為用戶提供了一種透明的服務,用戶不需要改變客戶端的任何應用程序,也不需要用戶學習任何新的東西。因為過濾路由器工作在IP層和TCP層,而IP層和TCP層與應用層的問題毫不相關。所以,過濾路由器有時也被稱為“包過濾網關”或“透明網關”,之所以被稱為網關,是因為包過濾路由器和傳統的路由器不同,它涉及到了傳輸層。
④ 過濾路由器在價格上比代理服務器便宜。
2) 缺點
① 一些包過濾網關不支持有效的用戶認證。
② 規則表很快會變得很大而且復雜,規則很難測試。隨著表的增大和復雜性的增加,規則結構出現漏洞的可能性也會增加。
③ 這種防火墻最大的缺陷是它依賴一個單一的部件來保護系統。如果這個部件出現了問題,會使得網絡大門敞開,而用戶甚至可能還不知道。
④ 在一般情況下,如果外部用戶被允許訪問內部主機,則他就可以訪問內部網上的任何主機。
⑤ 包過濾防火墻只能阻止一種類型的IP欺騙,即外部主機偽裝內部主機的IP,對于外部主機偽裝外部主機的IP欺騙卻不可能被阻止,而且它不能防止DNS欺騙。
雖然,包過濾防火墻有如上所述的缺點,但是在管理良好的小規模網絡上,它能夠正常的發揮其作用。
5.2.5 建立包過濾防火墻
1) 網絡結構
這個網絡結構是內部網有有效的Internet地址。為了將內部網段192.168.27.2/24與Internet隔離,在內部網絡和Internet之間使用了包過濾防火墻,防火墻的內網接口是eth1(192.168.27.250),防火墻的Internet接口是eth0(222.195.7.201)。另外,內部網中有兩臺服務器對外提供服務。分別是:WWW服務器,IP地址是192.168.27.251;FTP服務器,IP地址是192.168.27.252。
2) 防火墻的建立過程
本例主要是對內部的各種服務器提供保護。下面采用編輯并執行可執行腳本的方法建立此防火墻。具體過程如下:
//首先在/etc/rc.d/目錄下生成空的腳本文件,并添加可執行權限
#touch /etc/rc.d/filter-firewall
#chmod u+x /etc/rc.d/filter-firewall
//編輯/etv/rc.d/rc.local文件,使腳本能在系統啟動時自動執行
#echo “/etc/rc.d/filter-firewall”>>/etc/rc.d/rc.local
//接下來使用文本編輯器編輯/etc/rc.d/filter-firewall
#vi /etc/rc.d/filter-firewall
//插入以下內容:
#!/bin/bash
echo “Starting iptables reles….”
Echo “1” >/proc/sys/net/ipv4/ip_forward
IPT=/sbin/iptables
WWW-SERVER=192.168.27.251
FTP-SERVER=192.168.27.252
IP_RANGE=”192.168.27.2/24”
$IPT –F
$IPT –F FORWARD DROP
//WWW服務
//服務器端口為80,采用Tcp或Udp協議
//規則為:eth0()=>允許目的為內部網WWW服務器的包
$IPT –A FORWARD –p tcp –d $WWW-SERVER –dport www –I eth0 –j ACCEPT
//FTP服務
//服務器端口為:命令端口21,數據端口20
//FTP服務采用tcp協議
//規則為:eth0=>僅允許目的為內部網fto服務器的包
$IPT –A FORWARD –p tcp –d $FTP-SERVER –dport ftp –I eth0 –j ACCEPT
//允許Intranet客戶采用被動模式訪問Internet的FTP服務器
$IPT –A FORWARD –p tcp –s 0/0 –sport ftp –data –d $IP_PANGE –I etho
–j ACCEPT
//接收來自Internet的非連接請求tcp包
$IPT –A FORWARD –p tcp –d 192.168.27.2/24 ! –syn –I eth0 –j ACCEPT
$IPT –A FORWARD –p udp –d 192.168.27.2/24–I eth0 –j ACCEPT
//接收來自整個Intranet的數據包過濾,且定義如下規則
$IPT –A FORWARD –s 192.168.27.2/24 –I eth0 –j ACCEPT
//處理IP碎片
//Ip碎片數量進行限制,允許通過100/秒個IP碎片,以防止IP碎片攻擊
$IPT –A FORWARD –f –m limit –limit 100/s –limit –burst 100 –j ACCEPT
//設置icmp包過濾
//icmp包通常用于網絡測試,但黑客常常采用icmp進行攻擊,所以采用limit匹配擴//展加以限制,不管來自哪里的tcmp包,允許通過1/秒個包
$IPT –A FORWARD –p icmp -m limit –limit 1/s –limit –burst 10 –j ACCEPT
//編輯完畢存盤退出vi
//執行腳本,使之立刻起作用
通過執行上面的腳本,建立了一個相對完整的防火墻。該防火墻只對外開放了有限的幾個端口,同時提供了客戶對Internet的無縫訪問,并且對ip碎片攻擊和icmp包提供了有效的防護手段。
6 結束語
目前,防火墻技術已經引起了人們的注意,隨著新技術的發展,混合使用包過濾技術、代理服務技術和其它一些新技術的防火墻正向我們走來。
參考文獻:
[1] 王少華.用Linux構建Intranet[M].北京:清華大學出版社,2001.
[2] 李蔚澤.Red Hat Linux9 架站實務[M].北京:機械工業出版社,2005.