自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux安全性和netfilter/iptables

安全 網站安全
netfilter/iptables 是與最新的 2.4.x 版本 Linux 內核集成的 IP 信息包過濾系統(tǒng)。如果 Linux 系統(tǒng)連接到因特網或 LAN、服務器或連接 LAN 和因特網的代理服務器,則該系統(tǒng)有利于在 Linux 系統(tǒng)上更好地控制 IP 信息包過濾和防火墻配置。Mugdha Vairagade 將介紹 netfilter/iptables 系統(tǒng)、它是如何工作的、它的優(yōu)點、安裝和配置以及如何使用它來配置 Linux 系統(tǒng)上的防火墻以過濾 IP 信息包。

Linux 因其健壯性、可靠性、靈活性以及好象無限范圍的可定制性而在 IT 業(yè)界變得非常受歡迎。Linux 具有許多內置的能力,使開發(fā)人員可以根據自己的需要定制其工具、行為和外觀,而無需昂貴的第三方工具。如果 Linux 系統(tǒng)連接到因特網或 LAN、服務器或連接 LAN 和因特網的代理服務器,所要用到的一種內置能力就是針對網絡上 Linux 系統(tǒng)的防火墻配置??梢栽?netfilter/iptables IP 信息包過濾系統(tǒng)(它集成在 2.4.x 版本的 Linux 內核中)的幫助下運用這種能力。

在如 ipfwadm和 ipchains 這樣的 Linux 信息包過濾解決方案中,netfilter/iptables IP 信息包過濾系統(tǒng)是***的解決方案,而且也是***個集成到 Linux 內核的解決方案。對于 Linux 系統(tǒng)管理員、網絡管理員以及家庭用戶(他們想要根據自己特定的需求來配置防火墻、在防火墻解決方案上節(jié)省費用和對 IP 信息包過濾具有完全控制權)來說,netfilter/iptables 系統(tǒng)十分理想。

下載鏈接:http://down.51cto.com/data/148129

>>去網絡安全工具百寶箱看看其它安全工具

理解防火墻配置和信息包過濾

對于連接到網絡上的 Linux 系統(tǒng)來說,防火墻是必不可少的防御機制,它只允許合法的網絡流量進出系統(tǒng),而禁止其它任何網絡流量。為了確定網絡流量是否合法,防火墻依靠它所包含的由網絡或系統(tǒng)管理員預定義的一組 規(guī)則。這些規(guī)則告訴防火墻某個流量是否合法以及對于來自某個源、至某個目的地或具有某種協(xié)議類型的網絡流量要做些什么。術語“配置防火墻”是指添加、修改和除去這些規(guī)則。稍后,我將詳細討論這些 規(guī)則。

網絡流量由 IP 信息包(或,簡稱 信息包)— 以流的形式從源系統(tǒng)傳輸到目的地系統(tǒng)的一些小塊數據 — 組成。這些信息包有 頭,即在每個包前面所附帶的一些數據位,它們包含有關信息包的源、目的地和協(xié)議類型的信息。防火墻根據一組規(guī)則檢查這些頭,以確定接受哪個信息包以及拒絕哪個信息包。我們將該過程稱為 信息包過濾。

為什么要配置自己的防火墻?

出于各種因素和原因,需要根據特定需求來配置防火墻?;蛟S,最重要的原因是安全性。

管理員可能想讓他們的防火墻能夠阻止未經授權的源訪問其 Linux 系統(tǒng),例如通過 Telnet。他們可能還想限制進出其系統(tǒng)的網絡流量,以便只有來自可信源的流量才可以進入其系統(tǒng),以及只有授權的流量才可以出去。家庭用戶可能通過允許所有的出站信息包都可以通過,將防火墻配置成較低的安全性級別。

另一個背后的原因是,通過阻塞來自類似廣告站點之類的源的多余流量,可以節(jié)省帶寬。

因而,可以定制防火墻配置來滿足任何特定需求和任何安全性級別需求。這就是 netfilter/iptables 系統(tǒng)的用武之處。#p#

netfilter/iptables 系統(tǒng)是如何工作的?

netfilter/iptables IP 信息包過濾系統(tǒng)是一種功能強大的工具,可用于添加、編輯和除去規(guī)則,這些規(guī)則是在做信息包過濾決定時,防火墻所遵循和組成的規(guī)則。這些規(guī)則存儲在專用的信息包過濾表中,而這些表集成在 Linux 內核中。在信息包過濾表中,規(guī)則被分組放在我們所謂的 鏈(chain)中。我馬上會詳細討論這些規(guī)則以及如何建立這些規(guī)則并將它們分組在鏈中。

雖然 netfilter/iptables IP 信息包過濾系統(tǒng)被稱為單個實體,但它實際上由兩個組件 netfilter和 iptables 組成。

netfilter 組件也稱為 內核空間(kernelspace),是內核的一部分,由一些信息包過濾表組成,這些表包含內核用來控制信息包過濾處理的規(guī)則集。

iptables 組件是一種工具,也稱為 用戶空間(userspace),它使插入、修改和除去信息包過濾表中的規(guī)則變得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否則需要從 netfilter.org 下載該工具并安裝使用它。

通過使用用戶空間,可以構建自己的定制規(guī)則,這些規(guī)則存儲在內核空間的信息包過濾表中。這些規(guī)則具有 目標,它們告訴內核對來自某些源、前往某些目的地或具有某些協(xié)議類型的信息包做些什么。如果某個信息包與規(guī)則匹配,那么使用目標 ACCEPT 允許該信息包通過。還可以使用目標 DROP 或 REJECT 來阻塞并殺死信息包。對于可對信息包執(zhí)行的其它操作,還有許多其它目標。

根據規(guī)則所處理的信息包的類型,可以將規(guī)則分組在鏈中。處理入站信息包的規(guī)則被添加到 INPUT 鏈中。處理出站信息包的規(guī)則被添加到 OUTPUT 鏈中。處理正在轉發(fā)的信息包的規(guī)則被添加到 FORWARD 鏈中。這三個鏈是基本信息包過濾表中內置的缺省主鏈。另外,還有其它許多可用的鏈的類型(如 PREROUTING 和 POSTROUTING ),以及提供用戶定義的鏈。每個鏈都可以有一個 策略,它定義“缺省目標”,也就是要執(zhí)行的缺省操作,當信息包與鏈中的任何規(guī)則都不匹配時,執(zhí)行此操作。

建立規(guī)則并將鏈放在適當的位置之后,就可以開始進行真正的信息包過濾工作了。這時內核空間從用戶空間接管工作。當信息包到達防火墻時,內核先檢查信息包的頭信息,尤其是信息包的目的地。我們將這個過程稱為 路由。

如果信息包源自外界并前往系統(tǒng),而且防火墻是打開的,那么內核將它傳遞到內核空間信息包過濾表的 INPUT 鏈。如果信息包源自系統(tǒng)內部或系統(tǒng)所連接的內部網上的其它源,并且此信息包要前往另一個外部系統(tǒng),那么信息包被傳遞到 OUTPUT 鏈。類似的,源自外部系統(tǒng)并前往外部系統(tǒng)的信息包被傳遞到 FORWARD 鏈。

接下來,將信息包的頭信息與它所傳遞到的鏈中的每條規(guī)則進行比較,看它是否與某條規(guī)則完全匹配。如果信息包與某條規(guī)則匹配,那么內核就對該信息包執(zhí)行由該規(guī)則的目標指定的操作。但是,如果信息包與這條規(guī)則不匹配,那么它將與鏈中的下一條規(guī)則進行比較。***,如果信息包與鏈中的任何規(guī)則都不匹配,那么內核將參考該鏈的策略來決定如何處理該信息包。理想的策略應該告訴內核 DROP 該信息包。 圖 1 用圖形說明了這個信息包過濾過程。

圖 1. 信息包過濾過程

圖 1. 信息包過濾過程#p#

安裝 netfilter/iptables 系統(tǒng)

因為 netfilter/iptables 的 netfilter 組件是與內核 2.4.x 集成在一起的,所以只需要下載并安裝 iptables 用戶空間工具。

需求

下面是安裝 netfilter/iptables 系統(tǒng)的需求:

硬件:要使用 netfilter/iptables,需要有一個運行 Linux OS 并連接到因特網、LAN 或 WAN 的系統(tǒng)。

軟件:帶有內核 2.4 或更高版本的任何版本的 Linux OS。可以從 http://www.kernel.org 下載***版本的內核。還需要從 http://www.netfilter.org 下載 iptables 這個用戶空間工具,因為這個工具不是內核的一部分。但對于 RedHat Linux 版本 7.1 或更高版本,不需要下載此工具,因為在版本 7.1 或更高版本中,標準安裝中已經包含了此工具。

用戶:至少對 Linux OS 有中等水平的了解,以及具備配置 Linux 內核的經驗。

安裝前的準備

在開始安裝 iptables 用戶空間工具之前,需要對系統(tǒng)做某些修改。首先,需要使用 make config 命令來配置內核的選項。在配置期間,必須通過將 CONFIG_NETFILTER 和 CONFIG_IP_NF_IPTABLES 選項設置為 Y 來打開它們,因為這是使 netfilter/iptables 工作所必需的。下面是可能要打開的其它選項:

CONFIG_PACKET : 如果要使應用程序和程序直接使用某些網絡設備,那么這個選項是有用的。

CONFIG_IP_NF_MATCH_STATE : 如果要配置 有狀態(tài)的防火墻,那么這個選項非常重要而且很有用。這類防火墻會記得先前關于信息包過濾所做的決定,并根據它們做出新的決定。我將在 netfilter/iptables 系統(tǒng)的優(yōu)點一節(jié)中進一步討論這方面的問題。

CONFIG_IP_NF_FILTER : 這個選項提供一個基本的信息包過濾框架。如果打開這個選項,則會將一個基本過濾表(帶有內置的 INPUT 、 FORWARD 和 OUTPUT 鏈)添加到內核空間。

CONFIG_IP_NF_TARGET_REJECT : 這個選項允許指定:應該發(fā)送 ICMP 錯誤消息來響應已被 DROP 掉的入站信息包,而不是簡單地殺死它們。

現(xiàn)在,可以準備安裝這個用戶空間工具了。#p#

安裝用戶空間工具

在下載 iptables 用戶空間工具的源代碼(它類似于 iptables-1.2.6a.tar.bz2)之后,可以開始安裝。您需要以 root 身份登錄來執(zhí)行安裝。 清單 1 給出了一個示例,它指出了安裝該工具所需的命令、其必要的次序及其說明。

清單 1. 用戶空間工具安裝的示例

  1. First, unpack the tool package into a directory:  
  2. # bzip2 -d iptables-1.2.6a.tar.bz2  
  3. # tar -xvf  iptables-1.2.6a.tar  
  4. This will unpack the tool source into a directory named iptables-1.2.6a.   
  5. Now change to the iptables-1.2.6a directory:  
  6. # cd iptables-1.2.6a  
  7. The INSTALL file in this directory contains a lot of useful information   
  8. on compiling and installing this tool.  
  9. Now compile the userspace tool using the following command:  
  10. # make KERNEL_DIR=/usr/src/linux/  
  11. Here the KERNEL_DIR=/usr/src/linux/ specifies the path to the kernel's   
  12. directory. If the directory of kernel happens to be different on some   
  13. systems, the appropriate directory path should be substituted for   
  14. /usr/src/linux.  
  15. Now install the source binaries using the following command:  
  16. # make install KERNEL_DIR=/usr/src/linux/  
  17. Now the installation is complete. 

注:如果您有 RedHat Linux 版本 7.1 或更高版本,就不需要執(zhí)行這里說明的前兩個步驟。正如我們所知道的,該 Linux 分發(fā)版(distribution)的標準安裝中包含了 iptables 用戶空間工具。但在缺省情況下,這個工具是關閉的。為了使該工具運行,需要執(zhí)行以下步驟( 清單 2):

清單 2. 在 RedHat 7.1 系統(tǒng)上設置用戶空間工具的示例 

  1. First you'll have to turn off the old ipchains module (predecessor of   
  2. iptables) available in this OS package.  
  3. This can be done using the following command:  
  4. # chkconfig --level 0123456 ipchains off  
  5. Next, to completely stop the ipchains module from running, so that it   
  6. doesn't conflict with the iptables tool, you will have to stop the ipchains   
  7. service using the following command:  
  8. # service ipchains stop  
  9. Now if you don't want to keep this old ipchains module on your system,   
  10. uninstall it using the following command:  
  11. # rpm -e ipchains  
  12. Now you can turn on the iptables userspace tool with the following command:  
  13. # chkconfig --level 235 iptables on  
  14. Finally, you'll have to activate the iptables service to make the userspace   
  15. tool work by using this command:  
  16. # service iptables start  
  17. Now the userspace tool is ready to work on a RedHat 7.1 or higher system. 

現(xiàn)在,一切都已妥當,并且 netfilter/iptables 系統(tǒng)應該正在運行,接下來,需要建立一些規(guī)則和鏈來過濾信息包。#p#

建立規(guī)則和鏈

通過向防火墻提供有關對來自某個源、到某個目的地或具有特定協(xié)議類型的信息包要做些什么的指令,規(guī)則控制信息包的過濾。通過使用 netfilter/iptables 系統(tǒng)提供的特殊命令 iptables ,建立這些規(guī)則,并將其添加到內核空間的特定信息包過濾表內的鏈中。關于添加/除去/編輯規(guī)則的命令的一般語法如下:

$ iptables [-t table] command [match] [target]

表(table)

[-t table] 選項允許使用標準表之外的任何表。表是包含僅處理特定類型信息包的規(guī)則和鏈的信息包過濾表。有三種可用的表選項: filter 、 nat 和 mangle 。該選項不是必需的,如果未指定,則 filter 用作缺省表。

filter 表用于一般的信息包過濾,它包含 INPUT 、 OUTPUT 和 FORWARD 鏈。nat 表用于要轉發(fā)的信息包,它包含 PREROUTING 、 OUTPUT 和 POSTROUTING 鏈。如果信息包及其頭內進行了任何更改,則使用 mangle 表。該表包含一些規(guī)則來標記用于高級路由的信息包,該表包含 PREROUTING 和 OUTPUT 鏈。

注: PREROUTING 鏈由指定信息包一到達防火墻就改變它們的規(guī)則所組成,而 POSTROUTING 鏈由指定正當信息包打算離開防火墻時改變它們的規(guī)則所組成。

命令(command)

上面這條命令中具有強制性的 command 部分是 iptables 命令的最重要部分。它告訴 iptables 命令要做什么,例如,插入規(guī)則、將規(guī)則添加到鏈的末尾或刪除規(guī)則。以下是最常用的一些命令:

-A 或 --append : 該命令將一條規(guī)則附加到鏈的末尾。

示例:

$ iptables -A INPUT -s 205.168.0.1 -j ACCEPT

該示例命令將一條規(guī)則附加到 INPUT 鏈的末尾,確定來自源地址 205.168.0.1 的信息包可以 ACCEPT 。

-D 或 --delete : 通過用 -D 指定要匹配的規(guī)則或者指定規(guī)則在鏈中的位置編號,該命令從鏈中刪除該規(guī)則。下面的示例顯示了這兩種方法。

示例:

$ iptables -D INPUT --dport 80 -j DROP

$ iptables -D OUTPUT 3

***條命令從 INPUT 鏈刪除規(guī)則,它指定 DROP 前往端口 80 的信息包。第二條命令只是從 OUTPUT 鏈刪除編號為 3 的規(guī)則。

-P 或 --policy : 該命令設置鏈的缺省目標,即策略。所有與鏈中任何規(guī)則都不匹配的信息包都將被強制使用此鏈的策略。

示例:

$ iptables -P INPUT DROP

該命令將 INPUT 鏈的缺省目標指定為 DROP 。這意味著,將丟棄所有與 INPUT 鏈中任何規(guī)則都不匹配的信息包。

-N 或 --new-chain : 用命令中所指定的名稱創(chuàng)建一個新鏈。

示例:

$ iptables -N allowed-chain

-F 或 --flush : 如果指定鏈名,該命令刪除鏈中的所有規(guī)則,如果未指定鏈名,該命令刪除所有鏈中的所有規(guī)則。此參數用于快速清除。

示例:

$ iptables -F FORWARD

$ iptables -F

-L 或 --list : 列出指定鏈中的所有規(guī)則。

示例:

$ iptables -L allowed-chain#p#

匹配(match)

iptables 命令的可選 match 部分指定信息包與規(guī)則匹配所應具有的特征(如源和目的地地址、協(xié)議等)。匹配分為兩大類: 通用匹配和 特定于協(xié)議的匹配。這里,我將研究可用于采用任何協(xié)議的信息包的通用匹配。下面是一些重要的且常用的通用匹配及其示例和說明:

-p 或 --protocol : 該通用協(xié)議匹配用于檢查某些特定協(xié)議。協(xié)議示例有 TCP 、 UDP 、 ICMP 、用逗號分隔的任何這三種協(xié)議的組合列表以及 ALL (用于所有協(xié)議)。 ALL 是缺省匹配??梢允褂?! 符號,它表示不與該項匹配。

示例:

$ iptables -A INPUT -p TCP, UDP

$ iptables -A INPUT -p ! ICMP

在上述示例中,這兩條命令都執(zhí)行同一任務 — 它們指定所有 TCP 和 UDP 信息包都將與該規(guī)則匹配。通過指定 ! ICMP ,我們打算允許所有其它協(xié)議(在這種情況下是 TCP 和 UDP ),而將 ICMP 排除在外。

-s 或 --source : 該源匹配用于根據信息包的源 IP 地址來與它們匹配。該匹配還允許對某一范圍內的 IP 地址進行匹配,可以使用 ! 符號,表示不與該項匹配。缺省源匹配與所有 IP 地址匹配。

示例:

$ iptables -A OUTPUT -s 192.168.1.1

$ iptables -A OUTPUT -s 192.168.0.0/24

$ iptables -A OUTPUT -s ! 203.16.1.89

第二條命令指定該規(guī)則與所有來自 192.168.0.0 到 192.168.0.24 的 IP 地址范圍的信息包匹配。第三條命令指定該規(guī)則將與除來自源地址 203.16.1.89 外的任何信息包匹配。

-d 或 --destination : 該目的地匹配用于根據信息包的目的地 IP 地址來與它們匹配。該匹配還允許對某一范圍內 IP 地址進行匹配,可以使用 ! 符號,表示不與該項匹配。

示例:

$ iptables -A INPUT -d 192.168.1.1

$ iptables -A INPUT -d 192.168.0.0/24

$ iptables -A OUTPUT -d ! 203.16.1.89#p#

目標(target)

我們已經知道,目標是由規(guī)則指定的操作,對與那些規(guī)則匹配的信息包執(zhí)行這些操作。除了允許用戶定義的目標之外,還有許多可用的目標選項。下面是常用的一些目標及其示例和說明:

ACCEPT : 當信息包與具有 ACCEPT 目標的規(guī)則完全匹配時,會被接受(允許它前往目的地),并且它將停止遍歷鏈(雖然該信息包可能遍歷另一個表中的其它鏈,并且有可能在那里被丟棄)。該目標被指定為 -j ACCEPT 。

DROP : 當信息包與具有 DROP 目標的規(guī)則完全匹配時,會阻塞該信息包,并且不對它做進一步處理。該目標被指定為 -j DROP 。

REJECT : 該目標的工作方式與 DROP 目標相同,但它比 DROP 好。和 DROP 不同, REJECT 不會在服務器和客戶機上留下死套接字。另外, REJECT 將錯誤消息發(fā)回給信息包的發(fā)送方。該目標被指定為 -j REJECT 。

示例:

$ iptables -A FORWARD -p TCP --dport 22 -j REJECT

RETURN : 在規(guī)則中設置的 RETURN 目標讓與該規(guī)則匹配的信息包停止遍歷包含該規(guī)則的鏈。如果鏈是如 INPUT 之類的主鏈,則使用該鏈的缺省策略處理信息包。它被指定為 -jump RETURN 。示例:

$ iptables -A FORWARD -d 203.16.1.89 -jump RETURN

還有許多用于建立高級規(guī)則的其它目標,如 LOG 、 REDIRECT 、 MARK 、 MIRROR 和 MASQUERADE 等。

保存規(guī)則

現(xiàn)在,您已經學習了如何建立基本的規(guī)則和鏈以及如何從信息包過濾表中添加或刪除它們。但是,您應該記?。河蒙鲜龇椒ㄋ⒌囊?guī)則會被保存到內核中,當重新引導系統(tǒng)時,會丟失這些規(guī)則。所以,如果您將沒有錯誤的且有效的規(guī)則集添加到信息包過濾表,同時希望在重新引導之后再次使用這些規(guī)則,那么必須將該規(guī)則集保存在文件中??梢允褂?iptables-save命令來做到這一點:

$ iptables-save > iptables-script

現(xiàn)在,信息包過濾表中的所有規(guī)則都被保存在文件 iptables-script 中。無論何時再次引導系統(tǒng),都可以使用 iptables-restore命令將規(guī)則集從該腳本文件恢復到信息包過濾表,如下所示:

$ iptables-restore iptables-script

如果您愿意在每次引導系統(tǒng)時自動恢復該規(guī)則集,則可以將上面指定的這條命令放到任何一個初始化 shell 腳本中。#p#

netfilter/iptables 系統(tǒng)的優(yōu)點

netfilter/iptables 的***優(yōu)點是它可以配置有狀態(tài)的防火墻,這是 ipfwadm 和 ipchains 等以前的工具都無法提供的一種重要功能。有狀態(tài)的防火墻能夠指定并記住為發(fā)送或接收信息包所建立的連接的狀態(tài)。防火墻可以從信息包的連接跟蹤狀態(tài)獲得該信息。在決定新的信息包過濾時,防火墻所使用的這些狀態(tài)信息可以增加其效率和速度。這里有四種有效狀態(tài),名稱分別為 ESTABLISHED 、 INVALID 、 NEW 和 RELATED 。

狀態(tài) ESTABLISHED 指出該信息包屬于已建立的連接,該連接一直用于發(fā)送和接收信息包并且完全有效。 INVALID 狀態(tài)指出該信息包與任何已知的流或連接都不相關聯(lián),它可能包含錯誤的數據或頭。狀態(tài) NEW 意味著該信息包已經或將啟動新的連接,或者它與尚未用于發(fā)送和接收信息包的連接相關聯(lián)。***, RELATED 表示該信息包正在啟動新連接,以及它與已建立的連接相關聯(lián)。

netfilter/iptables 的另一個重要優(yōu)點是,它使用戶可以完全控制防火墻配置和信息包過濾。您可以定制自己的規(guī)則來滿足您的特定需求,從而只允許您想要的網絡流量進入系統(tǒng)。

另外,netfilter/iptables 是免費的,這對于那些想要節(jié)省費用的人來說十分理想,它可以代替昂貴的防火墻解決方案。

結束語

***的 Linux 內核 2.4.x 具有 netfilter/iptables 系統(tǒng)這種內置的 IP 信息包過濾工具,它使配置防火墻和信息包過濾變得便宜且方便。netfilter/iptables 系統(tǒng)使其用戶可以完全控制防火墻配置和信息包過濾。它允許為防火墻建立可定制化的規(guī)則來控制信息包過濾。它還允許配置有狀態(tài)的防火墻。

 

責任編輯:佚名 來源: IBM
相關推薦

2009-11-06 09:59:55

2009-11-30 09:41:38

2011-03-15 10:00:01

NetfilterIPTables

2011-01-04 16:20:26

linux安全性

2020-10-08 10:15:15

LynisLinux系統(tǒng)安全

2012-02-16 11:29:01

ibmdw

2011-03-15 15:47:34

netfilteriptables

2011-03-15 15:47:30

netfilteriptables安裝

2011-03-15 12:47:11

netfilteriptables

2010-02-04 13:57:38

Linux系統(tǒng)

2015-11-09 11:19:36

Linux安全Linux內核安全

2010-09-06 10:47:56

2012-07-30 10:07:01

2012-09-13 10:55:34

2011-01-13 16:59:12

2012-08-22 10:27:16

2009-07-03 12:05:14

2015-06-15 10:48:25

2011-06-21 16:30:57

2022-03-29 23:59:03

Linux安全發(fā)行版
點贊
收藏

51CTO技術棧公眾號