iptables防火墻

Linux防火墻基礎

在Internet中,企業通過架設各種應用系統來為用戶提供各種網絡服務,例如Web網站,電子郵件系統,FTP服務器,數據庫系統等等,而防火墻就是用來保護這些服務器,過濾企業不需要的訪問甚至是惡意的入侵。

Linux防火墻體系主要工作在網絡層,針對TCP/IP數據包實施過濾和限制,屬于典型的包過濾防火墻。Linux防火墻體系基于內核編碼實現,具有非常穩定的性能和高效率,也因此獲得廣泛的應用。

在許多安全技術資料中,netfilter和iptables都用來指Linux防火墻,往往使讀者產生迷惑。netfilter和iptables的主要區別如下所述。

netfilter:指的是linux內核中實現包過濾防火墻的內部結構,不以程序或文件的形式存在,屬于“內核態”的防火墻功能體系。

iptables:指的是用來管理Linux防火墻的命令程序,通常位于/sbin/iptables,屬于“用戶態”的防火墻管理體系。

正確的認識netfilter和iptables的關系,有助于理解Linux防火墻的工作原理。

iptables的表、鏈結構

iptables的作用在與為包過濾機制的實現提供規則。通過各種不同的規則,告訴netfilter對來自某些源,前往某些目的或具有某些協議特征的數據包應該如何處理。為了更加方便地組織和管理防火墻規則,iptables采用了“表”和“鏈”的分層結構。

1.規則表

為了從規則集的功能上有所區別,iptables管理著四個不同的規則表,其功能分別由獨立的內核模塊實現,這四個表的名稱,包含的鏈,各自的用途如下所述。

filter表:filter表用來對數據包進行過濾,根據具體的規則要求決定如何處理一個數據包。filter表對應的內核模塊為iptable_filter,表內包含三個鏈:INPUT、FORWARD、OUTPUT。

nat表:nat表主要用來修改數據包的IP地址,端口號等信息。nat表對應的內核模塊為iptable_nat,表內包含三個鏈:PREROUTING、POSTROUTING、OUTPUT。

mangle表:mangle表用來修改數據包的TOS,TTL值,或者為數據包設置mark標記,以實現流量整形,策略路由等高級應用。mangle表對應的內核模塊為iptable_mangle,表內包含五個鏈,PREROUTING、POSTROUTING、INPUT、FORWARD、OUTPUT。

raw表:raw用來決定是否對數據包進行狀態追蹤。raw表對應的內核模塊為iptable_raw,表內包含二個鏈:OUTPUT、PREROUTING。

2.規則鏈

在處理各種數據包時,根據防火墻規則的不同介入時機,iptables默認劃分為五種不同的規則鏈。這五種鏈的名稱,各自的介入時機如下所述。

INPUT:當收到訪問防火墻本機地址的數據包(入站)時,應用此鏈。

OUTPUT:當防火墻本機向外發送數據包(出站)時,應用此鏈。

FORWARD:當接受到需要通過防火墻中轉發送給其他地址的數據包(轉發)時,應用此鏈。

PREROUTING:在對數據包作路由選擇之前,應用此鏈。

POSTROUTING:在對數據包作路由選擇之后,應用此鏈。

數據包過濾的匹配流程

1.規則表之間的順序

iptables管理著四個默認表和五種鏈,當數據包抵達防火墻時,將依次應用raw、mangle、nat、和filter表中對應鏈內的規則,應用順序為:raw -> mangle -> nat -> filter

2.規則鏈之間的順序

根據規則鏈的劃分原則,不同鏈的處理時機是比較固定的,因此規則鏈之間的應用順序取決于數據包的流向,具體如下。

入站數據流向:來自外界的數據包到達防火墻后,首先被PREROUTING鏈處理,然后進行路由選擇;如果數據包的目標地址是防火墻本機,那么內核將其傳遞給INPUT鏈進行處理,通過以后再交給系統上層的應用程序進行相應。

轉發數據流向:來自外界的數據包到達防火墻后,首先被PREROUTING鏈處理,然后再進行路由選擇;如果數據包的目標地址是外部地址,則內核將其傳遞給FORWARD鏈進行處理,最后交給POSTROUTING鏈進行處理。

出站數據流向:防火墻本機向外部地址發送的數據包,首先被OUTPUT鏈處理,然后進行路由選擇,再交給POSTROUTING鏈進行處理。

3.規則鏈內部各條防火墻規則之間的順序

當數據包經過每條規則時,依次按第1條規則、第2條規則、……的順序進行匹配和處理。鏈內的過濾遵循“匹配即停止”的原則,一旦找到一條相匹配的規則,則不再檢查本鏈內后續的其他規則。如果比對完整個鏈,也找不到和數據包相匹配的規則,就按照該規則鏈的默認策略進行處理。

編寫防火墻規則

基本語法、控制類型

iptables [-t 表名] 管理選項 [鏈名] [匹配條件] [-j 控制類型]

其中,表名、鏈名用來指定iptables命令所操作的表和鏈,未指定表名時將默認使用filter表;管理選項表示iptables規則的操作方式,如插入、增加、刪除、查看等;匹配規則用來指定要處理的數據包的特征,不符合指定條件的數據包將不會處理;控制類型指得是數據包的處理方式,如允許、拒絕、丟棄等。

對于防火墻來說,數據包的控制類型非常關鍵,直接關系到數據包的房型。封堵以及做相應的日志記錄等。在iptables防火墻體系中,最常用的幾種控制類型如下所述。

ACCEPT:允許數據包通過。

DROP:直接丟棄數據包,不給出任何回應信息。

REJECT:拒絕數據包,必要時會給數據發送端一個響應信息。

LOG:在/var/log/messages文件中記錄日志信息,并沒有真正的處理數據包。

示例:在filter表(-t filter)的INPUT鏈中插入一個(-I)一條規則,拒絕(-j REJECT)發送給本機的使用ICMP協議的數據包(-p icmp)

iptables -t filter -I INPUT -p icmp -j REJECT

添加、查看、刪除等基本操作

-A:在指定鏈中末尾添加一條新的規則

-d:刪除指定鏈中的某一條規則,可指定規則序號或具體內容

-I:在指定鏈中插入一條新的規則,未指定序號時默認作為第1條規則

-R:修改、替換指定鏈中的某一條規則,可指定序號或具體內容

-L:列出指定鏈中的所有規則,若未指定鏈名,則列出表中所有鏈

-F:清空指定鏈中的所有規則,若未指定鏈名,則列出表中所有鏈

-P:設置指定鏈的默認策略

-n:使用數字性格是顯示輸出結構,如顯示IP地址而不是主機名

-v:查看規則列表是顯示詳細的信息

–line-numbers:查看規則列表時,同時顯示規則在鏈中的順序號

添加新的規則示例:

iptables -t filter -A INPUT -p tcp -j ACCEPT

iptables -I INPUT -p udp -j ACCEPT

iptables -I INPUT 2 -p icmpp -j ACCEPT

查看規則列表:

iptables -L INPUT –line-numbers

iptables -ln

刪除、清空的規則示例:  

iptables -D INPUT 3

iptables -F INPUT

#在使用選項“-F”時,允許省略鏈名而清空制定表所有鏈的規則。

設置默認策略示例:

iptables -t filter -P FORWARD DROP

規則的匹配條件

協議匹配,例如若要丟棄通過icmp協議訪問防火墻本機的數據包,允許轉發經過防火墻的除icmp協議以外的數據包。

iptables -I INPUT -p -icmp -j DROP

iptables -A INPUT -p !icmp -j ACCEPT     #感嘆號表示取反

地址匹配,使用“-s 原地址”“-d 目標地址”形式指定,例如:

iptables -A FORWARD -s 192.168.1.11 -j REJECT

iptables -A FORWARD -d 192.168.7.0/24 -j ACCEPT

網絡接口匹配,使用“-i 接口名”和“-o 接口名”的形式,例如:

iptables -A INPUT -i eth1 -s 172.16.0.0/16 -j DROP

端口匹配

iptables -A INPUT -p tcp –dport 20:21 -j ACCEPT

顯示匹配:這種匹配需要有額外的內核模塊提供支持,必須手動以“-m 模塊名稱”的形式調用模塊,以下都是顯示匹配。

多端口匹配:iptables -A INPUT -p tcp -m multiport –dport 80,25,143 -j ACCEPT

IP范圍匹配:iptables -A FORWARD -P tcp -m iprange –src-range 192.168.1.10-192.168.1.20 -j ACCEPT

狀態匹配:常見的鏈接狀態包括NEW、ESTABLISHED和RELATED,例如:

iptables -A FORWARD -m state –state NEW -p tcp !–syn -j DROP

iptables -I INPUT -p tcp -m state –state  ESTABLISHED -j ACCEPT

原創文章,作者:Anhur,如若轉載,請注明出處:http://www.www58058.com/66363

(0)
AnhurAnhur
上一篇 2017-01-10 23:41
下一篇 2017-01-11 13:27

相關推薦

  • nginx

    1.Nginx的程序架構:        master/worker            一個master進程:     &nb…

    2017-06-19
  • 心清冷其若冰,志皎潔其若云

    第一篇,當做測試也做開始。 心清冷其若冰,志皎潔其若云。 這鬧哄哄的人間啊,仿佛是一堆雜貨。無奇不有,無所不能。情感,城市,人際。每天走在這雜亂里,需要有一顆清澈而安靜的心,來面對。 會累的。就算是擁有了許多,也是會累的。偶爾,我們也會在深夜里淚流滿面吧。偶爾,我們也會心煩意亂的不知所措吧。 太多欲望的人間,熱鬧的上演著各種劇本。太多空洞的靈魂,喧囂著各種聲…

    Linux干貨 2016-11-28
  • linux系統啟動及kickstart

    1、簡述linux操作系統啟動流程
    2、簡述grub啟動引導程序配置及命令行接口詳解
    3、實現kickstart文件制作與光盤鏡像制作

    2018-01-17
  • 內核編譯安裝

    編譯內核前期準備工作 (1)準備好開發環境 (2)獲取目標主機航硬件設備的相關信息 (3)獲取目標主機系統功能的相關信息 (4)獲取內核源代碼包     可以從www.kernel.com上下載 (5)安裝好需要使用的包組     Server Platform&nbs…

    Linux干貨 2016-09-13
  • 第四周練習與作業

    一、復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的行首的空白字符 復制文件至/tmp目錄下: cp /etc/profile /tmp/ vim /tmp/profile 進入文件命令模式下,使用正則表達式  ;%s/^[[:blank:]]\+//g 二、復制/etc/rc.d/init.d/fu…

    2017-08-05
  • Proxmox-Linux下的開源管理平臺

    1)proxmox簡介 Proxmox VE (Proxmox Virtual Environment) 是一個非常棒的集成OPENVZ 支持KVM應用的環境。有方便易用的WEB界面,基于JAVA的UI和內核接口,可以登錄到VM客戶方便的操作,還有易用的模板功能,基本跟老外的商業VPS環境差不多了,支持VT和ISCSI 2)proxmox的安裝與基本配置 安…

    Linux干貨 2016-08-08
欧美性久久久久