期刊VIP學術指導 符合學術規(guī)范和道德
保障品質 保證專業(yè),沒有后顧之憂
來源:期刊VIP網(wǎng)所屬分類:計算機網(wǎng)絡時間:瀏覽:次
摘要:防火墻(Firewall),也稱防護墻,是由Check Point創(chuàng)立者Gil Shwed于1993年發(fā)明并引入國際互聯(lián)網(wǎng)(US5606668(A)1993-12-15)。它是一種位于內(nèi)部網(wǎng)絡與外部網(wǎng)絡之間的網(wǎng)絡安全系統(tǒng)。一項信息安全的防護系統(tǒng),依照特定的規(guī)則,允許或是限制傳輸?shù)臄?shù)據(jù)通過。
關鍵詞:防火墻,應用軟件,信息安全與技術
信息安全與技術雜志中說到:所謂防火墻指的是一個由軟件和硬件設備組合而成、在內(nèi)部網(wǎng)和外部網(wǎng)之間、專用網(wǎng)與公共網(wǎng)之間的界面上構造的保護屏障.是一種獲取安全性方法的形象說法,它是一種計算機硬件和軟件的結合,使Internet與Intranet之間建立起一個安全網(wǎng)關(Security Gateway),從而保護內(nèi)部網(wǎng)免受非法用戶的侵入,防火墻主要由服務訪問規(guī)則、驗證工具、包過濾和應用網(wǎng)關4個部分組成,防火墻就是一個位于計算機和它所連接的網(wǎng)絡之間的軟件或硬件。該計算機流入流出的所有網(wǎng)絡通信和數(shù)據(jù)包均要經(jīng)過此防火墻。
《信息安全與技術》雜志經(jīng)國家新聞出版總署批準,由工業(yè)和信息化部主管、中國電子信息產(chǎn)業(yè)發(fā)展研究院主辦,是我國信息安全和信息技術領域集學術性與專業(yè)性為一體的月刊。它將為應用第一線的IT類工程技術人員提供一個工作肯定和技術交流的平臺,以期提高我國信息安全和信息技術的突破,對各項工程類的工作做出結論性的評價,為各類工程技術人員和管理人員的工作做出實踐性的總結。
在網(wǎng)絡中,所謂“防火墻”,是指一種將內(nèi)部網(wǎng)和公眾訪問網(wǎng)(如Internet)分開的方法,它實際上是一種隔離技術。防火墻是在兩個網(wǎng)絡通訊時執(zhí)行的一種訪問控制尺度,它能允許你“同意”的人和數(shù)據(jù)進入你的網(wǎng)絡,同時將你“不同意”的人和數(shù)據(jù)拒之門外,最大限度地阻止網(wǎng)絡中的黑客來訪問你的網(wǎng)絡。換句話說,如果不通過防火墻,公司內(nèi)部的人就無法訪問Internet,Internet上的人也無法和公司內(nèi)部的人進行通信。
一 前言:
Linux 為增加系統(tǒng)安全性提供了防火墻保護。防火墻存在于你的計算機和網(wǎng)絡之間,用來判定網(wǎng)絡中的遠程用戶有權訪問你的計算機上的哪些資源。一個正確配置的防火墻可以極大地增加你的系統(tǒng)安全性。防火墻作為網(wǎng)絡安全措施中的一個重要組成部分,一直受到人們的普遍關注。LINUX是這幾年一款異軍突起的操作系統(tǒng),以其公開的源代碼、強大穩(wěn)定的網(wǎng)絡功能和大量的免費資源受到業(yè)界的普遍贊揚。LINUX防火墻其實是操作系統(tǒng)本身所自帶的一個功能模塊。通過安裝特定的防火墻內(nèi)核,LINUX操作系統(tǒng)會對接收到的數(shù)據(jù)包按一定的策略進行處理。而用戶所要做的,就是使用特定的配置軟件(如iptables)去定制適合自己的“數(shù)據(jù)包處理策略”。
二 防火墻 包過濾:對數(shù)據(jù)包進行過濾可以說是任何防火墻所具備的最基本的功能,而LINUX防火墻本身從某個角度也可以說是一種“包過濾防火墻”。在LINUX防火墻中,操作系統(tǒng)內(nèi)核對到來的每一個數(shù)據(jù)包進行檢查,從它們的包頭中提取出所需要的信息,如源IP地址、目的IP地址、源端口號、目的端口號等,再與已建立的防火規(guī)則逐條進行比較,并執(zhí)行所匹配規(guī)則的策略,或執(zhí)行默認策略。 值得注意的是,在制定防火墻過濾規(guī)則時通常有兩個基本的策略方法可供選擇:一個是默認允許一切,即在接受所有數(shù)據(jù)包的基礎上明確地禁止那些特殊的、不希望收到的數(shù)據(jù)包;還有一個策略就是默認禁止一切,即首先禁止所有的數(shù)據(jù)包通過,然后再根據(jù)所希望提供的服務去一項項允許需要的數(shù)據(jù)包通過。一般說來,前者使啟動和運行防火墻變得更加容易,但卻更容易為自己留下安全隱患。通過在防火墻外部接口處對進來的數(shù)據(jù)包進行過濾,可以有效地阻止絕大多數(shù)有意或無意地網(wǎng)絡攻擊,同時,對發(fā)出的數(shù)據(jù)包進行限制,可以明確地指定內(nèi)部網(wǎng)中哪些主機可以訪問互聯(lián)網(wǎng),哪些主機只能享用哪些服務或登陸哪些站點,從而實現(xiàn)對內(nèi)部主機的管理??梢哉f,在對一些小型內(nèi)部局域網(wǎng)進行安全保護和網(wǎng)絡管理時,包過濾確實是一種簡單而有效的手段。
代理:LINUX防火墻的代理功能是通過安裝相應的代理軟件實現(xiàn)的。它使那些不具備公共IP的內(nèi)部主機也能訪問互聯(lián)網(wǎng),并且很好地屏蔽了內(nèi)部網(wǎng),從而有效保障了內(nèi)部主機的安全。
IP偽裝:IP偽裝(IP Masquerade)是LINUX操作系統(tǒng)自帶的又一個重要功能。通過在系統(tǒng)內(nèi)核增添相應的偽裝模塊,內(nèi)核可以自動地對經(jīng)過的數(shù)據(jù)包進行“偽裝”,即修改包頭中的源目的IP信息,以使外部主機誤認為該包是由防火墻主機發(fā)出來的。這樣做,可以有效解決使用內(nèi)部保留IP的主機不能訪問互聯(lián)網(wǎng)的問題,同時屏蔽了內(nèi)部局域網(wǎng)。
Linux下的包過濾防火墻管理工具:
在2.0的內(nèi)核中,采用ipfwadm來操作內(nèi)核包過濾規(guī)則。
在2.2的內(nèi)核中,采用ipchains來控制內(nèi)核包過濾規(guī)則。
在2.4的內(nèi)核中,采用一個全新的內(nèi)核包過濾管理工具——iptables。
包過濾防火墻的工作原理:
使用過濾器。數(shù)據(jù)包過濾用在內(nèi)部主機和外部主機之間,過濾系統(tǒng)是一臺路由器或是一臺主機。過濾系統(tǒng)根據(jù)過濾規(guī)則原則來決定是否讓數(shù)據(jù)包通過。
過濾的實現(xiàn)。數(shù)據(jù)包過濾一般使用過濾路由器來實現(xiàn),這種路由器與普通的路由器有所不同。
包過濾防火墻的工作層次:
應用層 應用層
傳輸層 傳輸層
網(wǎng)絡層 數(shù)據(jù) 路由器 數(shù)據(jù) 網(wǎng)絡層
數(shù)據(jù)鏈路層 數(shù)據(jù)鏈路層 數(shù)據(jù)鏈路層
物理層 物理層 物理層
包過濾器操作的基本過程:
包過濾技術的優(yōu)缺點
優(yōu)點:
對于一個小型的、不太復雜的站點,包過濾比較容易實現(xiàn)。
因為過濾路由器工作在IP層和TCP層,所以處理包的速度比代理服務器快。
過濾路由器為用戶提供了一種透明的服務,用戶不需要改變客戶端的任何應用程序,也不需要用戶學習任何新的東西。
過濾路由器在價格上一般比代理服務器便宜。
缺點:
一些包過濾網(wǎng)關不支持有效的用戶認證。
規(guī)則表很快會變得很大而且復雜,規(guī)則很難測試。隨著表的增大和復雜性的增加,規(guī)則結構出現(xiàn)漏洞的可能性也會增加。
這種防火墻最大的缺陷是它依賴一個單一的部件來保護系統(tǒng)。
在一般情況下,如果外部用戶被允許訪問內(nèi)部主機,則他就可以訪問內(nèi)部網(wǎng)上的任何主機。
包過濾防火墻只能阻止一種類型的IP欺騙,即外部主機偽裝內(nèi)部主機的IP,對于外部主機偽裝外部主機的IP欺騙卻不可能被阻止,而且它不能防止DNS欺騙。
在Linux系統(tǒng)上,支持包過濾的核心中有三個規(guī)則列表,這些列表稱為防火墻鏈。三個鏈分別稱為輸入鏈、輸出鏈和轉發(fā)鏈。當一個包通過以太網(wǎng)卡進來后,核心使用輸入鏈決定該包的取舍。如果該包沒有被丟棄,則核心要決定下面將向哪里發(fā)送包,稱為包的路由。如果要發(fā)給另一個機器,核心通過轉發(fā)鏈來決定。最后,在包要被發(fā)出之前,核心通過輸出鏈來做決定。一個鏈是一些規(guī)則的列表。每個規(guī)則規(guī)定:如果包的包頭與規(guī)則相匹配,那么對包進行相應的處理。如果該規(guī)則與包不匹配,則引入鏈中的下一個規(guī)則。最后,如果沒有要引入的規(guī)則,核心根據(jù)內(nèi)置鏈策略決定如何做。在一個有安全意識的系統(tǒng)中,該規(guī)則通常告訴核心將包拒絕或丟棄。
在這先介紹Ipchains,之后再介紹Iptables。
Ipchains:
Ipchains 經(jīng)常使用的命令行格式如下:Ipchains –A chain [–i interface] [–p protocol] [[!] -y][–s source-ip [port]] [-d destination-ip [port]] –j policy [-l]對各選項的說明如下表:-A 添加一規(guī)則到鏈尾。chain可為input、output、forward。-i 指定本規(guī)則適用的網(wǎng)絡接口。通常有eth0、eth1、lo等。-p 指定本規(guī)則適用的IP協(xié)議,如tcp、udp、icmp等。[!] –y -y表明tcp握手中的連接請求標志位SYN; ! –y 表示對該請求的響應。-s src-ip [port] 指明數(shù)據(jù)包的源IP地址,port表示本規(guī)則適用的端口號。-d dst-ip [port] 指明數(shù)據(jù)包的目的IP地址及端口號。-j policy 指定本規(guī)則對匹配數(shù)據(jù)包的處理策略:ACCEPT、DENY或REJECT。-l 在系統(tǒng)日志/var/log/messages中記錄與該規(guī)則匹配的數(shù)據(jù)包。
#ipchains –A input –s 201.202.203.58/32 www –p tcp –j DENY地址201.202.203.58送到www(HTTP)端口的任何TCP包都將被屏蔽。先創(chuàng)建一個名為check的新鏈,然后再把所有發(fā)送到輸入鏈的包送到check鏈:#ipchains –N check#ipchains –A check –s 201.202.203.0/24 –j ACCEPT#ipchains –A check –s !201.202.203.0/24 –j DENY#ipchains –A input –j check系統(tǒng)會接受(只會接受)從201.202.203.0發(fā)送的所有軟件包,式中感嘆號(!)代表的意思是“非”,匹配“非201.202.203.0端口”。禁止telnet(端口23)連接:#ipchains –I forward –s 0.0.0.0 23 –j DENY
Iptables的規(guī)則要素:
指定表(table)
指定操作命令(command)
指定鏈(chains)
指定規(guī)則匹配器(matcher)
指定目標動作(target)
表。Iptables從其使用的3個表而得名,分別是filter、nat和mangle。對于包過濾防火墻只使用filter表。表filter是默認的表。
操作命令。包括添加、刪除、更新等。
鏈。對于包過濾防火墻可操作filter表中的INPUT鏈、OUTPUT鏈和FORWARD鏈。也可以操作由用戶自己定義的自定義鏈。
規(guī)則匹配器??梢灾付ǜ鞣N規(guī)則匹配,如IP地址、端口、包類型等。
目標動作。當規(guī)則匹配一個包時,真正要執(zhí)行的任務用目標標識。最常用的內(nèi)置目標分別是:
ACCEPT表示允許包通過。
DROP表示被丟棄。
REJECT表示拒絕包,丟棄包的同時給發(fā)送者發(fā)送沒有接受的通知。
LOG表示包的有關信息被記錄入日志。
TOS表示改寫包的ToS的值。
Iptables的語法通常可以簡化為:iptables[-t table]CMD[chain][rule-matcher][-j target]其中:table為表名,CMD為操作命令,chain為鏈名,rule-matcher為規(guī)則匹配器,target為目標動作。
操作命令:
-A 或—append 在所選鏈的鏈尾加入一條或多條規(guī)則-D 或—delete 從所選鏈中刪除一條或多條匹配的規(guī)則-R 或—replace 在所選鏈中替換一條匹配的規(guī)則-I 或—insert 以給出的規(guī)則號在所選鏈中插入一條或多條規(guī)則。如果規(guī)則號是1,插入的規(guī)則在鏈的頭部-L 或—list 列出指定鏈的所有規(guī)則。如果沒有指定鏈,將列出所有鏈中的所有規(guī)則-F 或—flush 清除指定鏈和表中的所有規(guī)則。假如不指定鏈,那么所有鏈都將被清空-N 或—new-chain 以給定的名字創(chuàng)建一條新的用戶自定義鏈。不能與已有的鏈同名-X 或—delete-chain 刪除指定的用戶定義鏈,必須保證鏈中的規(guī)則都不在使用時才能刪除鏈。若沒有指定鏈,則刪除所有的用戶鏈-P 或—policy 為永遠鏈指定默認規(guī)則(內(nèi)置鏈策略)。用戶定義鏈沒有缺省規(guī)則也是規(guī)則鏈中的最后一條規(guī)則,用-L命令顯時它在第一行顯示-C 或—check 檢查給定的包是否與指定鏈的規(guī)則相匹配-Z 或—zero 將指定鏈中所有的包字節(jié)記數(shù)器清零
規(guī)則匹配器:
-P,[!]protocol 指定要匹配的協(xié)議,可以是tcp、udp、icmp、all。協(xié)議名前綴“!”為邏輯非,表示除去該協(xié)議之外的所有協(xié)議。-s[!]address[/mask] 根據(jù)源地址或地址范圍確定是否允許或拒絕數(shù)據(jù)包通過過濾器--sport[!]port[:port] 指定匹配規(guī)則的源端口或端口范圍。可以用端口好,也可以用/etc/services文件中的文字-d[!]address[/mask] 根據(jù)目的地址或地址范圍確定是否允許或拒絕數(shù)據(jù)包通過過濾器--dport[!]port[:port] 指定匹配規(guī)則的目的端口或端口范圍。可以用端口號,也可以用/etc/services文件中的名字--icmp-type[1]typename 指定匹配規(guī)則的ICMP信息類型(可以使用iptables –p icmp –h 查看有效的icmp類型名)
Iptables軟件包提供了兩個命令分別用于保存和恢復規(guī)則集??梢允褂妹钷D儲在內(nèi)存中的內(nèi)核規(guī)則集。其中/etc/sysconfig/iptables是iptables守護進程調用的默認規(guī)則集文件:#/sbin/iptables-save>/etc/sysconfig/iptables要恢復原來的規(guī)則庫,需使用命令:#/sbin/iptables-restore
使用iptables得啟動腳本實現(xiàn)。Iptables的啟動腳本/etc/rc.d/init.d/iptables每次啟動時都使用/etc/sysconfig/iptables所提供的規(guī)則進行規(guī)則恢復,并可以使用命令保存規(guī)則:#service iptables save
在自定義腳本中用iptables命令直接創(chuàng)建規(guī)則集。可以直接用iptables命令編寫一個規(guī)則腳本,并在啟動時執(zhí)行這個腳本。若規(guī)則腳本的文件名為/etc/fw/rules,則可以在啟動腳本/etc/rc.d/rc.local中加入的代碼:if[-x /etc/fw/rules];then /etc/fw/rules;fi;如果使用此種方式,建議使用ntsysv命令關閉系統(tǒng)的iptables守護進程。
建立包過濾防火墻
這個網(wǎng)絡結構假設內(nèi)部網(wǎng)有有效的Internet地址。為了將內(nèi)部網(wǎng)段198.168.80.0/24與Internet隔離,在內(nèi)部網(wǎng)絡和 Internet之間使用了包過濾防火墻。防火墻的網(wǎng)接口是eth1(198.168.80.254),防火墻的Internet接口是eth0 (198.199.37.254)。加外,內(nèi)網(wǎng)中有3臺服務器對外提供服務。分別為:
WWW服務器:IP地址為198.168.80.251
FTP服務器:IP地址為198.168.80.252
E-mail服務器:IP地址為198.168.80.253
防火墻的建立過程
#!/sbin/bash在屏幕上顯示信息:echo "Starting iptables rules..."#開啟內(nèi)核轉發(fā)功能echo "1">;/proc/sys/net/ipv4/ip_forward#定義變量IPT=/sbin/iptablesWWW-SERVER=198.168.80.251FTP-SERVER=198.168.80.252EMAIL-SERVER=198.168.80.253IP_RANGE="198.168.80.0/24"#刷新所有的鏈的規(guī)則$IPT –F#首先禁止轉發(fā)任何包,然后再一步步設置允許通過的包#所以首先設置防火墻FORWARD鏈的策略為DROP$IPT -P FORWARD DROP#下面設置關于服務器的包過濾規(guī)則#由于服務器/客戶機交互是雙向的,所以不僅僅要設置數(shù)據(jù)包#出去的規(guī)則,還要設置數(shù)據(jù)包返回的規(guī)則
(1)WWW服務服務端口為80,采用tcp或udp協(xié)議規(guī)則為eth0=>;允許目的為內(nèi)部網(wǎng)WWW服務器的包$IPT -A FORWARD -p tcp -d $WWW-SERVER-dport www -i eth0 -j ACCEPT(2)FTP服務服務端口為21,數(shù)據(jù)端口20FTP的傳輸模式有主動和被動之分,F(xiàn)TP服務采用tcp協(xié)議規(guī)則為:eth0=>;僅允許目的為內(nèi)部網(wǎng)ftp服務器的包$IPT -A FORWARD -p tcp -d $FTP-SERVER -dport ftp -i eth0 -j ACCEPT(3)EMAIL服務包含兩個協(xié)議,一個是smtp,另一個是pop3出于安全性考慮,通常只提供對內(nèi)的pop3服務所以在這里我們只考慮對smtp的安全性問題smtp端口為25,采用tcp協(xié)議規(guī)則為etho=>;僅允許目的為E-mail服務器的smtp請求$IPT -A FORWARD -p tcp -d $EMAIL-SERVER-dport smtp -i eth0 -j ACCEPT
下面設置針對Internet客戶的過濾規(guī)則:
本例中防火墻位于網(wǎng)關的位置,所以主要是防止來自Internet的攻擊不能防止來自Intranet的攻擊假如網(wǎng)絡中的服務器都是基于Linux的,也可以在每一部服務器上設置相關的過濾規(guī)則來防止來自Internet的攻擊
對于Internet對Intranet客戶的返回包,定義如下規(guī)則:(1)允許Intranet客戶采用被動模式訪問Internet的FTP服務器$IPT -A FORWARD -p tcp -s 0/0 --sport ftp-data -d $IP_RANGE -i eth0 -j ACCEPT(2)接收來自Internet的非連接請求tcp包$IPT -A FORWARD -p tcp -d 198.168.80.0/24 ! --syn -i eth0 -j ACCEPT(3)接收所有udp包,主要是針對oicq等使用udp的服務$IPT -A FORWARD -p udp -d 198.168.80.0/24 -i eth0 -j ACCEPT
然后接受來自整個Intranet的數(shù)據(jù)包過濾,我們定義如下規(guī)則$IPT -A FORWARD -s 198.168.80.0/24 -i eth1 -j ACCEPT處理ip碎片接受所有的ip碎片,但采用limit匹配擴展對其單位時間可以通過的ip碎片數(shù)量進行限制,以防止ip碎片攻擊$IPT -A FORWARD -f -m limit-limit 100/s-limit-burst 100 -j ACCEPT說明:對不管來自哪里的ip碎片都進行限制,允許每秒通過100個ip碎片該限制觸發(fā)的條件是100個ip碎片設置icmp包過濾ipmp包通常用于網(wǎng)絡測試等,故允許所有的icmp包通過但是黑客常常采用icmp進行攻擊,如ping of death等所以我們采用limit匹配擴展加以限制$IPT -A FORWARD -p icmp -m limit-limit 1/s-limit-burst 10 -j ACCEPT說明:對不管來自哪里的icmp包都進行限制,允許每秒通過一個包該限制觸發(fā)的條件是10個包
三 結束語:
對防火墻的不當配置可能造成安全漏洞。如處理TCP分段時,Ipchains需要查看包頭中的源端口、目的端口、ICMP代碼或“TCP SYN”標志等信息,而這些信息只能在TCP分段的第一個IP包中才有。于是從第二個分段開始都不能匹配過濾規(guī)則。某些管理者將防火墻配置為僅對第一個分段進行處理。通常,一個TCP連接的第一個TCP分段被防火墻阻擋后,其他的TCP分段被認為不會產(chǎn)生安全性問題,因為在目的主機上由于缺少第一個分段而無法重新組裝報文。然而,由于系統(tǒng)缺陷等原因,發(fā)送的分段可能使機器癱瘓,甚至人為精心設計的IP包可借此缺陷繞過防火墻。因此配置防火墻需要仔細分析過濾規(guī)則如何處理各種類型的分組。對分段的處理最好將系統(tǒng)內(nèi)核編譯為重新組裝所有通過的分段,或在應用層另設安全機制。
對基于包過濾防火墻更常見的攻擊是利用IP欺騙的方法。IP欺騙是指主機發(fā)送自稱是另一個主機發(fā)送的包。防止IP欺騙的方法是使用源地址確認,它通過配置路由器識別路由代碼實現(xiàn),而不是防火墻。防火墻結合源地址確認能較好地增強系統(tǒng)的安全性。