Linux下iptables的研究與實現.doc_第1頁
Linux下iptables的研究與實現.doc_第2頁
Linux下iptables的研究與實現.doc_第3頁
Linux下iptables的研究與實現.doc_第4頁
Linux下iptables的研究與實現.doc_第5頁
免費預覽已結束,剩余37頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

河 南 工 業(yè) 職 業(yè) 技 術 學 院畢業(yè)設計題目:Linux下iptables網絡防火墻的研究與實現 專業(yè): 網絡0801 姓名: 曹思夢 指導教師: 邱建新 摘 要Linux2.4 內核中Netfilter/Iptables的出現,為構建Linux 下防火墻提供了很好的平臺。Iptables 是在Linux 操作系統(tǒng)下基于2.4之上內核版本的集成網絡安全工具包。該工具通過編程可以實現多種網絡安全功能,如:數據包過濾、狀態(tài)保持、NAT(Network Address Translation,網絡地址轉換)以及抵抗攻擊等等。本文主要是針對Linux下iptables的的應用進行學習與研究,結構上可以分為三個部分:Linux防火墻的概述,iptables的的簡介以及如何使用iptables來為我們的日常工作所服務。例如在我們的日常工作中的應用到的過濾網址、IP,禁用端口、協(xié)議等等。利用iptables這個工具在Linux服務器上實現安全穩(wěn)定、功能強大的防火墻。目前這也是被企業(yè)和高校廣泛采用的一種比較成熟的技術。本次畢設課題研究的實驗環(huán)境均在虛擬機上實現,使用RHEL 4 AS系統(tǒng)和CentOS 4系統(tǒng)。關鍵詞:Linux,防火墻,iptables,規(guī)則,過濾目 錄第一章 Linux防火墻概述11.1防火墻簡介11.2 Linux包過濾防火墻的架構41.3 Linux防火墻的安裝、啟動和關閉5第二章 iptables簡介92.1 iptables的基本概念92.2 iptables數據包的傳輸過程102.3 激活IP包轉發(fā)功能11第三章 iptables的使用133.1 iptables的命令格式133.2 iptables命令的使用15第四章 iptables實現NAT服務214.1 NAT服務概述214.2 利用iptables實現NAT服務23第五章 iptables技巧實例295.1 禁止訪問不健康的網站295.2 禁止某些客戶上網295.3 禁止客戶使用某些服務305.4 禁止使用ICMP協(xié)議305.5 利用字符串匹配過濾視頻網站325.6 利用iptables的定時功能345.7 利用iplimit參數設置最大連接數35第六章 致謝37參考文獻38第一章 Linux防火墻概述1.1防火墻簡介1. 防火墻的功能防火墻是位于不同網絡(如可信的企業(yè)內部網和不可信的公共網)或網絡安全域之間,對網絡進行隔離并實現有條件通信的一系列軟件/硬件設備的集合。它通過訪問控制機制確定哪些內部服務允許外部訪問,以及允許哪些外部請求可以訪問內部服務。其基本功能是分析出入防火墻的數據包,根據IP包頭結合防火墻的規(guī)則,來決定是否接收或允許數據包通過。防火墻系統(tǒng)可以由一臺路由器,也可以由一臺或一組主機組成。它通常被放置在網絡入口處,所有內外部網絡通信數據包都必須經過防火墻,接受防火墻的檢查,只有符合安全規(guī)則的數據才允許通過。通過使用防火墻可以實現以下功能: 保護內部網絡中易受攻擊的服務。 控制內外網之間網絡系統(tǒng)的訪問。 隱藏內部網絡的IP地址及結構的細節(jié),提高網絡的保密性。 對網絡存取和訪問進行監(jiān)控和審計。 集中管理內網的安全性,降低管理成本。2. 防火墻的發(fā)展史第一代防火墻第一代防火墻技術幾乎與路由器同時出現,采用了包過濾(Packet filter)技術。下圖(1-1)表示了防火墻技術的簡單發(fā)展歷史。圖1-1第二、三代防火墻1989年,貝爾實驗室的Dave Presotto和Howard Trickey推出了第二代防火墻,即電路層防火墻,同時提出了第三代防火墻應用層防火墻(代理防火墻)的初步結構。第四代防火墻1992年,USC信息科學院的BobBraden開發(fā)出了基于動態(tài)包過濾(Dynamic packet filter)技術的第四代防火墻,后來演變?yōu)槟壳八f的狀態(tài)監(jiān)視(Stateful inspection)技術。1994年,以色列的CheckPoint公司開發(fā)出了第一個采用這種技術的商業(yè)化的產品。第五代防火墻1998年,NAI公司推出了一種自適應代理(Adaptive proxy)技術,并在其產品Gauntlet Firewall for NT中得以實現,給代理類型的防火墻賦予了全新的意義,可以稱之為第五代防火墻。3.防火墻的分類根據動作方式的不同,通常把防火墻分為包過濾型和應用級網關兩大類。(1)包過濾防火墻(Packet Filter) 包過濾防火墻通常安裝在路由器或者安裝了網絡操作系統(tǒng)的主機上。它在網絡層根據配置好的包過濾規(guī)則對數據包進行過濾,其工作方式為:包過濾規(guī)則存儲對應的包過濾設備端口,檢查出入該防火墻端口的每一個IP數據包頭和TCP頭或UDP頭來決定是否允許數據包通過。包過濾防火墻的優(yōu)點是它對于用戶來說是透明的,處理速度快,而且由于工作在網絡層和傳輸層,與應用層無關,因此不用改動客戶機和主機上的應用程序,易于安裝和維護。缺點是非法訪問一旦突破防火墻,即可對主機上的軟件和配置漏洞進行攻擊。(2)應用級網關(Application-level Gateway) 應用級網關又稱代理服務器。它針對特定的網絡應用服務協(xié)議使用指定的數據過濾邏輯,并在過濾的同時,對數據包進行必要的分析、登記和統(tǒng)計,形成報告,當發(fā)現被攻擊跡象時會向網絡管理員發(fā)出警報,并保留攻擊痕跡。應用級網關比單一的包過濾更為可靠,而且會詳細地記錄所有的訪問狀態(tài)信息。其不足之處是訪問速度慢,因為它不允許用戶直接訪問網絡,其次應用級網關需要對每一個特定的因特網服務安裝相應的代理服務軟件,另外也不是所有的因特網應用軟件都可以使用代理服務器。 1.2 Linux包過濾防火墻的架構iptables是一個免費的包過濾防火墻,它伴隨著內核的發(fā)展而逐漸演變,大致經歷了下面4個階段: 在1.1內核中,采用ipfw來操作內核包過濾規(guī)則。 在2.0內核中,采用ipfwadm來操作內核包過濾規(guī)則。 在2.2內核中,采用ipchains來控制內核包過濾規(guī)則。 在2.4內核中(如Red Hat 9.0、RHEL),采用一個全新的內核包過濾管理工具iptables。 iptables只是防火墻與用戶之間的接口,真正起到防火墻作用的是Linux內核中運行的netfilter。Linux平臺下的包過濾防火墻由netfilter組件和iptables組件組成,其中netfilter運行在內核態(tài),而iptables運行在用戶態(tài),用戶通過iptables命令來調用netfilter來實現防火墻的功能。(1)netfilter組件netfilter是Linux內核中的一個用于擴展各種網絡服務的結構化底層框架。該框架定義了包過濾子系統(tǒng)功能的實現,提供了filter、nat和mangle3個表,默認使用的是filter表。每個表中包含有若干條內建的鏈(chains),用戶可在表中創(chuàng)建自定義的鏈。在每條鏈中,可定義一條或多條過濾規(guī)則(rules)。每條規(guī)則應指定所要檢查的包的特征以及如何處理與這對應的包,這被稱為目標(target)。目標值可以是用戶自定義的一個鏈名,也可以是ACCEPT、DROP、REJECT、RETURN等值。(2)iptables組件iptables組件是一個用來指定netfilter規(guī)則和管理內核包過濾的工具,用戶通過它來創(chuàng)建、刪除或插入鏈,并可以在鏈中插入、刪除和修改過濾規(guī)則。iptables僅僅是一個包過濾工具,對過濾規(guī)則的執(zhí)行則是通過netfilter和相關的支持模塊來實現的。1.3 Linux防火墻的安裝、啟動和關閉iptables防火墻內置于RedHat系統(tǒng)內核中,所以它是隨系統(tǒng)的安裝而自動安裝的??墒褂萌缦旅顧z查是否已安裝(如下圖):圖1-2 檢查iptables是否安裝安裝RHEL 4 AS時系統(tǒng)會提示是否開啟防火墻,默認情況下將開啟防火墻。由于系統(tǒng)的防火墻功能是使用iptables實現的,因此系統(tǒng)會根據用戶的設置在iptables中添加相應的規(guī)則。如果在安裝時選擇禁用防火墻,則在安裝完成后可在終端命令窗口中執(zhí)行“setup”命令將彈出“配置應用程序” 窗口(如下圖1-3)。圖1-3 “配置應用程序”窗口選擇Firewall configuration選項,則會進入防火墻配置窗口如圖1-4。圖1-4 “防火墻配置”窗口圖1-5 “防火墻配置定制”窗口 完成以上配置后,可在終端命令窗口中執(zhí)行如下命令啟動iptables防火墻如圖1-6:圖1-6 啟動iptables防火墻第二章 iptables簡介2.1 iptables的基本概念在使用iptables之前我們先要理解規(guī)則、鏈、表這3個概念以及iptables傳輸數據包的過程。 規(guī)則 規(guī)則(rules)就是網絡管理員預先定義的條件,每條規(guī)則的定義方式一般是“如果封包符合這樣的條件就這樣處理該數包”。 鏈 鏈(chains)是數據包傳輸的路徑,每一條鏈中可以有一條或數條規(guī)則。 表 iptables內置了filter表、nat表和mangle表用于實現包過濾、網絡地址轉換和包重構的功能。(1)filter表filter表是iptables默認的表,如果沒有指定使用哪個表,iptables默認使用filter表來執(zhí)行所有的命令。filter表根據系統(tǒng)管理員預定義的一組規(guī)則過濾符合條件的數據包。在filter表中只允許對數據包進行接收、丟棄的操作,而無法對數據包進行更改。(2)nat表nat表主要是用于網絡地址轉換NAT,該表可以實現一對一、一對多、多對多等NAT工作。NAT表包含了PREROUTING鏈、OUTPUT鏈和POSTROUTING鏈。其中PREROUTING鏈用于處理剛剛進入網絡層未進行路由判斷的數據包,OUTPUT鏈用于處理在路由之前本地生成的數據包,POSTROUTING鏈處理在路由判斷之后即將通過網卡發(fā)送出去的數據包。(3)mangle表某些特殊應用可能需要改寫數據包的一些傳輸特性,例如更改數據包的TTL和TOS等,mangle表主要用于對指定包的傳輸特性進行修改。2.2 iptables數據包的傳輸過程數據包通過iptables的具體流程如圖2-1所示。圖2-1iptables數據包傳輸的過程由圖可知,當一個數據包進入計算機的網絡接口時,數據首先進入POSTROUTING鏈,然后內核根據路由表決定數據包的目標。若數據包的目的地址是本機,則將數據包送往INPUT鏈進行規(guī)則檢查,當數據包進入INPUT鏈后,系統(tǒng)的任何進程都會收到它,本機上運行的程序可以發(fā)送該數據包,這些數據包會經過OUTPUT鏈,再POSTROUTING鏈發(fā)出;若數據包的目的地址不是本機,則檢查內核是否允許轉發(fā),若允許,則將數據包送FORWARD鏈進行規(guī)則檢查,若不允許,則丟棄該數據包。若是防火墻主機本地進程產生并準備發(fā)出的包,則數據包被送往OUTPUT鏈進行規(guī)則檢查。2.3 激活IP包轉發(fā)功能如果要把Linux配置成網關防火墻,內核必須打開IP包轉發(fā)功能(即路由功能),這樣一個數據包才能被送到FORWARD鏈進行規(guī)則檢查,否則與防火墻相連的兩邊的網絡是完全隔離的。打開Linux內核包轉發(fā)功能,可使用以下命令來實現 rootlocal # echo “1” /proc/sys/net/ipv4/ip_forward 上述命令只是一次性有效,為了讓主機每次開機后都自動激活IP數據包轉發(fā)功能,可以采用編輯配置文件/etc/sysctl.conf的方法,將其中的語句:net.ipv4.ip_forward=0 更改為net.ipv4.ip_forward=1執(zhí)行如下命令: rootlocal # sysctl -p即可讓系統(tǒng)啟動后自動打開內核的包轉發(fā)功能。上述操作也可以通過執(zhí)行下列命令來實現相應功能:rootlocal # sysctl -w net.ipv4.ip_forward=”1”rootlocal # sysctl -p還可以/etc/sysconfig/network配置文件中,通過以下配置項來開啟內核的包轉發(fā)功能:FORWARD_IPV4true第三章 iptables的使用3.1 iptables的命令格式iptables用于創(chuàng)建、維護和檢查Linux內核的IP包過濾規(guī)則,利用該命令可創(chuàng)建、刪除或更名鏈,在鏈中創(chuàng)建或刪除規(guī)則,設置鏈的策略等,功能很強大,用法也比較多,其命令基本格式為:iptables -t 表名 命令選項 鏈 匹配選項 操作選項1. 表名選項“-t表名”用來選擇要操作的表,表名可以是 filter,nat,mangle三者之一,如該參數缺省則默認為filter表。2. 命令選項命令選項用來指定對鏈或規(guī)則的操作,包括插入、刪除、添加規(guī)則等。 iptables的主要命令選項如表3-1所示。表3-1 iptables的主要命令選項3. 鏈名選項“鏈”指定要操作的鏈名,除使用系統(tǒng)定義的鏈名外,用戶也可自定義鏈名。4. 匹配選項匹配選項指定數據包與規(guī)則匹配所應具有的特征,包括源地址、目的地址、傳輸協(xié)議和端口號等。主要的匹配選項如表3-2所示。表3-2 iptables的主要匹配選項5. 操作選項操作選項用于指定對匹配過濾規(guī)則的數據包所進行的處理。其形式為“-j target/jump”,其中“target”是對包的處理動作,“jump”代表一個用戶自定義的鏈名,用于跳轉到該鏈進行規(guī)則檢查。對數據常用的處理動作如表3-3所示。表3-3 iptables的主要目標動作選項3.2 iptables命令的使用1. 對鏈的操作(1)查看鏈命令用法:iptables -L 鏈命令功能:列出指定表的全部鏈及其規(guī)則例:列出filter表的全部規(guī)則鏈。rootlocal # iptables -L 若要列出nat表的全部規(guī)則鏈,則操作命令為:rootlocal # iptables -t nat -L(2)創(chuàng)建新鏈命令用法:iptables -N 鏈名命令功能:以指定的名稱創(chuàng)建一個新鏈例:創(chuàng)建一個名為mychain的新鏈。rootlocal # iptables -Nmychain(3)刪除鏈命令用法:iptables -X 鏈名命令功能:刪除指定的用戶自定義鏈例:刪除新建的mychain鏈。rootlocal # iptables -Xmychain2. 對規(guī)則的操作(1)添加規(guī)則 命令用法:iptables-t 表名 -A 鏈名匹配選項-j動作 命令功能:向指定鏈的添加一條規(guī)則,該規(guī)則將會增加到規(guī)則列表的最后一行。 例:向filter表的INPUT鏈添加一條規(guī)則,將來自IP地址為這臺主機的數據包都丟棄。 rootlocal # iptables -t filter -A INPUT -s -j DROProotlocal # iptables -t filter -L INPUT(2)插入規(guī)則命令用法:iptables-t 表名 -I 鏈名規(guī)則號匹配選項-j動作 命令功能:在指定的規(guī)則號的前面插入一條規(guī)則,原規(guī)則將自動后移。若未指定規(guī)則號,則默認為1,即插入在所有規(guī)則的前面。 例:在第3條規(guī)則前插入一條規(guī)則,其內容是禁止子網段的所有用戶訪問本機TCP協(xié)議的80端口。rootlocal # iptables -I INPUT 3 -s /24 -p tcp -dport 80 j DROProotlocal # iptables -L INPUT例:在第4條規(guī)則前插入一條規(guī)則,拒絕所有主機PING本機。rootlocal # iptables I INPUT 4 s 0/0p icmp -icmp-type echo-request j DROProotlocal # iptables -L INPUTChain INPUT (policy ACCEPT)target prot opt source destinationRH-Firewall-1-INPUT all - anywhere anywhereDROP all - anywhereDROP tcp - /24 anywhere tcp dpt:httpDROP icmp - anywhere anywhere icmp echo-requestACCEPT all - anywhere 在該命令中,“-s 0/0”用于指定源地址為所有主機,“-icmp-type”用于指定icmp包的類型,“echo-request”代表ping包。(3)替換規(guī)則 命令用法:iptables-t 表名 -R 鏈名規(guī)則號匹配選項-j動作 命令功能:將指定編號的規(guī)則替換為新的規(guī)則。 例:將上例中的第3條規(guī)則替換為允許子網段的所有用戶訪問本機TCP協(xié)議的80端口。rootlocal # iptables -I INPUT 3 -s /24 -p tcp -dport 80 j ACCEPTrootlocal # iptables -L INPUT(4)刪除規(guī)則 命令用法:iptables-t 表名 -D 鏈名匹配選項-j動作 或:iptables-t 表名 -D 鏈名規(guī)則號 命令功能:刪除指定的規(guī)則或指定編號的規(guī)則 例:刪除上例中被替換的第3條規(guī)則。rootlocal # iptables -D INPUT -s /24 -p tcp -dport 80 -jACCEPT或:rootlocal # iptables -D INPUT 3(5)設置鏈的默認策略 命令用法:iptables -t 表名 -P 鏈名 目標動作 命令功能:定義指定鏈的默認策略,即設置所有過濾規(guī)則都不滿足的數據包的默認處理方式。 例:將INPUT、FORWARD和OUTPUT鏈的默認策略設置為ACCEPT。rootlocal # iptables -P INPUT ACCEPTrootlocal # iptables -P FORWARD ACCEPTrootlocal # iptables -P OUTPUT ACCEPT(6)清除規(guī)則鏈中的所有規(guī)則 在新建規(guī)則時往往需要清除原有的規(guī)則,以免它們影響新設定的規(guī)則。如果規(guī)則比較多,一條條刪除就會十分麻煩這時可以使用iptables提供的清除規(guī)則選項達到快速刪除所有規(guī)則的目的。 命令用法:iptables -t 表名 -F 鏈名 命令功能:刪除指定鏈中的全部規(guī)則,若未指定鏈,則刪除表中所有鏈中的規(guī)則。 例:清除filter表中INPUT鏈中的全部規(guī)則。rootlocal # iptables -F INPUT(7)歸零包計數器 命令用法:iptables -t 表名 -Z 命令功能:將指定表中的包計數器和流量計數器清零,如不指定表,則默認為filter表。 例:將filter表中的所有包計數器清零。rootlocal # iptables -Z 若要將nat表中的所有包計數器清零,則實現命令為:rootlocal # iptables -t nat -Z3. 保存與恢復過濾規(guī)則用上述方法所建立的規(guī)則會被保存到內核中,在重啟系統(tǒng)時,會丟失這些規(guī)則。所以如果用戶將沒有錯誤且有效的規(guī)則集添加到數據包過濾表,則時希望在重啟系統(tǒng)之后再次使用這些規(guī)則,必須將該規(guī)則集保存在文件中。其命令為: rootlocal # iptables-save /etc/sysconfig/iptables將數據包過濾表中的所有規(guī)則保存到/etc/sysconfig/iptables腳本文件中以后,無論何時重啟系統(tǒng),都可以使用iptables-restore命令將規(guī)則集從該腳本文件恢復到數據包過濾表。其命令為:rootlal # iptables-restore ;minimumHH:MM -timestopvalue -;maximumHH:MM -dayslistofdays -;alistofdaystoapply,from(casesensitive) Mon Tue Wed Thu Fri Sat Sun首先需要說明的是,這里所需要的time參數,在發(fā)行版的iptables里是沒有的,只有在extensions里才有,而這些extensions由不同的開發(fā)者提供,可以從網上下載安裝。5.7 利用iplimit參數設置最大連接數 1.下載并安裝最新的內核源碼 kenrel-source-2.4.20-13.7-i386.rpm。 rpm-Uvhkenrel-source-2.4.20-13.7-i386.rpm 2.進入/usr/include目錄,執(zhí)行以下操作: root# mvasmasm_old root# mvlinuxlinux_old root# mvscsiscsi_old root# ln-s/usr/src/linux-2.4/include/asm./asm root# ln-s/usr/src/linux-2.4/include/linux./linux root# ln-s/usr/src/linux-2.4/include/scsi./scsi 3.下載patch-o-matic-20030107.tar.tar并執(zhí)行以下操作: root#exportKERNEL_DIR=/usr/src/linux-2.4 root#./runmeextra 按提示只需要安裝自己想要的那些擴展功能補丁,這里只選擇了iplimit。 4.執(zhí)行makemrproper用makemenuconfig設置內核選項,依次進入Networkingoptions-;IP:NetfilterConfiguration,選擇剛才加入的擴展功能,在這里只要把iplimit選定成M模式就可以了。然后: root#makedep root#makebzImage root#makeinstall root#makemodules root#makemodules_install 安裝完成,iplimit就可以使用了,例:我們

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論