Netfilter/Iptables入門

Netfilter/Iptables入門linux

Linux的內核是由www.kernel.org這個組織負責開發維護,下面咱們要討論的Netfilter/iptables是www.netfilter.org組織爲Linux開發的防火牆軟件。因爲Linux是很是模塊化的,不少功能都是以模塊加載擴充系統功能,Netfilter一樣採用這種方式存在於Linux中。若是你理解了Linux模塊加載也就可以理解Netfilter的模塊加載方式。你們在 /lib/modules/kernel_version/kernel/net/ipv4/netfilter/目錄下可以看到不少以「.ko」爲擴展名的文件,哪裏存放的就是已經編譯好的模塊文件。
學習Iptables首先須要學習者具有TCP/IP的基本概念、封包在網絡中如何傳送,有什麼限制,尤爲是TCP和IP包頭結構以及TCP、UDP和Socket有什麼關係,理解這些內容是學習本章的基礎。
1. Netfilter的功能
若是你到Netfilter模塊目錄仔細查看會發現各類功能的模塊,這些模塊僅是提供某些過濾功能,若是想讓Netfilter爲我所用,還須要賦予它執行的「規則」,定出了規則後,Netfilter才知道哪些數據包經過,哪些數據包阻止,又有哪些數據包被置換處理。根據功能劃分,Netfilter分爲Filter、NAT、Mangle和RAW四個功能,由這四個功能也派生出了四張表,其主要功能以下:
Filter:其主要功能是進行數據包過濾。
NAT(Network Address Translation):IP地址轉換,主要解決上網問題。
Mangle:其主要功能是修改防火牆封包。
RAW:其功能是加快數據包經過防火牆的速度,以提升防火牆性能。
注意:這四個表按使用平率從多到少依次是這麼排的,可是按表的處理優先級,是這樣:Raw > Mangle > Nat > Filter。
1. 1 理解Filter機制
首先,咱們看下面的一個例子,在客戶機上經過Firefox訪問,遠端Apache服務器上的Web頁面,像這樣個日常操做中對於Netfilter有這三種封包類型,而這就是Filter的關鍵機制。
clip_image002
圖 封包類型
INPUT類型
當客戶機訪問Web 服務器的httpd進程時,對於Web服務器而言,屬於入站的包,換句話所就是網上其餘主機送給本機httpd進程的封包,這裏把它定義爲INPUT類型封包(圖中紅色箭頭)。
OUTPUT類型
與INPUT相反,由Web服務器的httpd進程連接到客戶機上的這類封包就屬於OUTPUT類型(圖中的綠色箭頭),也就是本機httpd進程所產生的封包。
FORWARD類型
在圖中,路過Web服務器的封包,就屬於FORWARD類型。在什麼狀況下會產生這種類型封包?咱們拿Linux當作路由器使用時就會有FORWARD類型封包產生。
有了上面的基本概念,下面開始討論過濾表,Filter Table有三個鏈(Chain),所謂鏈你們能夠形象的理解爲自行車中的鏈條,它是環環相扣的,封包在網絡上傳送也是如此。
clip_image004
Filter 表結構
上圖中系那是了Filter表的結構,你會發現這不就是三種封包類型嗎?下面詳細分析一下:
INPUT鏈:爲了理解這一問題,咱們仍是拿個實例進行分析,例如咱們要保護Web服務器的httpd進程,在三種封包類型中,應該注意哪種呢?確定是INPUT類型封包,那麼你須要將用來過濾INPUT類型的封包寫到INPUT鏈的規則之中。這樣就能起到保護httpd進程的目的。廣而言之,INPUT鏈就是用來存放過濾INPUT類型封包的規則,經常使用在保護本機的狀況下。
OUTPUT鏈:仍是接着上面的訪問網站的實例講解,若是打算限制客戶機不能瀏覽www.website.com網站,咱們該限制那一種封包?你們能猜出是OUTPUT類型封包,沒錯。咱們能夠在OUTPUT鏈中寫入「若是封包由httpd進程產生,併發往錯誤!超連接引用無效。口,就將封包丟棄」這段僞代碼,這樣就達到限制網絡的連接行爲。因此OUTPU鏈就是用來存放過濾INPUT類型封包的規則,經常使用於限制本機進程的網絡連接。
FORWARD鏈:在上圖中linux服務器做爲路由器使用,用來保護遠端的一臺Web服務器,那麼應該限制那類封包類型?確定是FORWARD類型,也就是說FORWARD鏈用來保護防火牆後面的服務器。
因爲Filter機制很是複雜,爲了你們容易的理解,用了一個簡單的示意圖表示Filter原理,注意圖中路由表雖然畫了兩個,但實際只有一個,也就是咱們在系統中用「route –n」看到的內容,路由表決定了封包的傳送路徑,尤爲在多網卡的系統中尤其重要。本地進程就是上面所述的Web服務器進程,你們能夠理解爲httpd進程。
clip_image006
圖 Filter原理圖
接下來,以三種不一樣的場景來講明網絡封包在Filter機制中被處理的過程。
1) 在上網時,客戶機鏈接服務器,也就是網絡封包的目的地是Web服務器的httpd進程,封包首先送到路由表,並有路由表的內容決定傳輸路徑。既然客戶機是訪問Web服務器上的頁面,也就是封包是送給本地進程httpd的,所以封包被送入INPUT鏈,這是若是INPUT鏈若是讓過,封包就會被送入本地進程,不讓過就被丟棄(Drop掉)。
2) 當服務器返回結果,須要連接客戶機進程,這是由本地進程httpd往外傳送封包,首先封包會被傳送如入路由表,由這裏的內容決定封包傳輸路徑,接着被送入OUTPUT鏈,若是容許則出站,若是不容許豐碑就會被丟棄(Drop掉)。
3) 當Linux系統做爲防火牆部署,當作網關式防火牆使用,當封包要經過防火牆,首先入站進入路由表,由路由表判斷,封包是要由另外一個NIC口送出,封包就會送入FORWARD鏈,此時若是FORWARD鏈裏的規則不準封包經過,那麼直接丟棄。反之封包出站離開防火牆。
2. 規則匹配過程
在介紹了Filter工做原理以後接下來說解封包在每一個鏈中如何匹配,這個概念也很是重要。仍是以上圖加以說明,實際應用中每一個鏈中包含的規則數量不盡相同,不管那一個Filter表其匹配原則都是「First Match」,即優先執行。當咱們在防火牆上添加的新規則被逐條加入到INPUT鏈中,被順序編號,例如rules一、rules2等。當封包進入INPUT鏈以後,Filter機制會以這個封包的特徵從INPUT鏈內的第一條規則逐一貫下匹配,若是封包進來遇到第一條規則容許經過,那麼這個封包就會進入到本地進程httpd,而無論下面的rule二、rule3的規則是什麼都不重要;相反若是第一條規則說要丟棄,即使是rule2規則容許經過也不起任何做用,這就是「first match」原則。
在使用規則是你們要注意一個原則,儘可能減小沒必要要的規則,由於當封包進入防火牆後會在特定的鏈裏逐一被對比,規則條數越多,封包在防火牆中滯留的時間就越長,防火牆性能就會下降。
防火牆規則順序也會影響其工做效率,例如客戶端經過Linux防火牆收取外網郵件, 客戶端使用程序爲Outlook,使用的是Pop3協議。防火牆規則以下:
1. iptables -A INPUT -p tcp --syn -m state --state NEW --dport 22 -j ACCEPT
2. iptables -A INPUT -p tcp --sync -m state --state NEW --dport 25 -j ACCEPT
3. iptables -A INPUT -p tcp --sync -m state --state NEW --dport 80 -j ACCEPT
4. iptables -A INPUT -p tcp --sync -m state --state NEW --dport 110 -j ACCEPT
5.iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
當客戶段的第一個封包須要花費4次匹配動做,若是一封郵件須要1000個封包的話在加上TCP三次握手的封包這樣的匹配的次數達到數萬次之多,若是將第四條規則移到第一條那麼匹配次數只需1千屢次,因而可知規則的順序對於防火牆性能有着很大影響。因此只要將使用平度最高的規則寫在第一個,之後依次類推就行了。
那麼,如何肯定哪一個規則使用頻率高或者低呢?可以使用下面命令查看:clip_image008
還有特殊狀況,封包從INPUT鏈進來從第一條規則匹配到最後一條都沒有匹配成功,怎麼辦?系統已有考慮,在每一個鏈的最後有一條默認策略,並且這條默認策略老是最後才被匹配,並且這條默認策略的狀態只有一種(ACCEPT或DROP),咱們假設默認策略爲ACCEPT,那麼封包這是就能夠進入到本地進程,若是爲DROP則被默認策略所丟棄。最後強調一點Netfilter的默認策略預設值爲ACCEPT,這個也是能夠修改的。
3.Iptables實戰
Iptables原理難理解,操做命令的參數多,在使用上也比較複雜,咱們先無論複雜的語法和繁多的參數,首先看看下面簡單的例子應用:
1) 列出Filter表的全部內容web

iptables –t filter -L

clip_image010
2) 清除 Filter表中全部內容算法

iptables –t filter –F

3) 在 INPUT鏈中加入規則shell

iptables –t filter –A INPUT –p udp -j ACCEPT

clip_image012
4) 在INPUT鏈中第二行的位置插入新規則數據庫

iptables –t filter –I INPUT 2 –p tcp –j ACCEPT

clip_image014
注意: 2 表明插入到第二條規則的位置,-p tcp –j ACCEPT爲本次要插入的規則,-L參數後面加入—line-number表示能夠再規則前顯示行號。
5) 刪除第二條規則瀏覽器

iptables –t filter –D INPUT 2

6)將INPUT鏈中的默認策略改爲DROP安全

iptables –t filter –P INPUT DROP \*注意這裏字母P爲大寫\

看完上述演示,不當心是否是就入門啦,照葫蘆畫瓢將上面的命令用在其餘表上就照樣能夠哦。下面咱們繼續講解。
7)禁止192.168.11.100主機ping我
須要將192.168.11.100發送到本機的ICMP封包丟棄,操做以下:服務器

iptables –A INPUT –p icmp –s 192.168.11.100 –j DROP

分析:
由於保護對象時本機,因此選擇的是INPUT鏈;
-p icmp 注意是小寫。 這裏是匹配icmp協議封包,擴展一下」 –p tcp」匹配TCP封包,-p udp匹配UDP封包而「-p all」匹配全部協議封包。
-s 192.168.11.100 源IP地址爲192.168.11.100,那麼若是是目的地址呢就是」-d」,若是目的地是個網址呢「-d www.website.com」,若是是一個網段呢「-d 192.168.11.0/24」就用CIDR形式表示。
-j DROP 符合前面兩項條件就DROP掉
8)容許192.168.11.100主機能夠ssh登陸本機網絡

iptables –A INPUT –p tcp s0 192.168.11.100 –dport 22 –j ACCEPT

--dport 22 匹配目的端口爲22的封包,TCPPort 22爲SSH服務端口
-j ACCEPT: 符合前三項條件的封包可進入
9)容許192.168.11.0/24網網段全部主機訪問本機192.168.12.1任何服務請求併發

iptables –A INPUT –p all –s 192.168.11.0/24 –d 192.168.12.1 –j ACCEPT

10)禁止企業內部主機訪問外網

iptables –A FORWARD –I eth1 –o eth0 –p tcp –dport 80 –j DROP

這裏是將linux安裝在雙網卡服務器上做爲防火牆使用,因此確定使用FORWARD鏈,eth0接外網,eth1接企業內網。
-i eth1 : 匹配封包進入的接口
-o eth0 :匹配封包離開的接口,結合-i,-o兩個參數便可匹配封包的目的傳送方向。
-p tcp: 匹配TCP協議的封包
--dport 80 : 匹配目的端口爲80的封包,補充一點可搭配「!」來表明反向,如「—sport ! 80」表明匹配不是從Web發送的封包。
-j DROP 符合以上4個條件的封包丟棄
4 Iptables語法
下面不得不講解語法了,看完以上10個例子相信你們已有了基本概念下面我總結一下:
Iptables 命令格式
Iptables [-t table] command [chain] [rules] [-j target]
你們在看到這一格式時不是是有些眼熟,其實上面不少命令都是按照這個格式來寫的。
Table:指定表名,例如filter表,raw表,mangle表,nat表
Command:對鏈的操做,好比-A表示追加規則,-I表示插入規則
Chain:鏈名稱,好比INPUT鏈,OUTPUT鏈,FORWARD鏈,PREROUTING鏈,POSTOUTING鏈
Rules:規則
Target:動做如何進行,也就是理解爲處理方式,當前面規則裏的條件匹配時如何處理是ACCEPT(經過),仍是DROP(丟棄)REJECT(丟棄並回應發送端一個Destination Unreachable的ICMP封包)
Netfilter的NAT原理
NAT是網絡地址轉換(Network Address Translation)的縮寫,主要功能與其說節省公網IP的使用量不如說是能夠隱藏內網IP地址。這種技術既能夠運用在Server端也能夠用在Client端。NAT種類繁多主要有本書主要介紹一對多的NAT使用。
clip_image016
圖 NAT原理
NAT工做過程:
下面經過NAT方式,實現企業內網全部主機經過一個公有Ip上網,圖例以下圖所示。在圖中個設備參數說明以下:
? 客戶機IP 192.168.11.10
? NAT服務器由Linux的Iptables實現,Linux服務器安裝了雙網卡。
? eth1接內網,Private Ip爲192.168.11.1
? eth0接外網,Public IP爲10.0.0.1
? 公網WebserverIP爲202.202.202.202
首先,192.168.11.10這臺客戶機在瀏覽器輸入http://202.202.202.202/,通過如下六步完成顯示網頁的過程。
第一步,192.168.11.10送出封包給202.202.202.202服務器;
第二步,這個封包交給NAT網關處理,接着NAT主機將這收到的封包源地址改爲NAT主機的PublicIP;
第三步,NAT主機記錄下來這個封包,而後將這個封包當即發往202.202.202.202主機;
第四步,遠端主機202.202.202.202相應給這個主機迴應封包,但此次響應的目的端主機爲10.0.0.1這個Public IP,而不是客戶機的IP;
第五步,這個包被送回到NAT主機;
第六步,當NAT主機收到這個封包後,就從以前記錄下來的信息中找到最初NAT主機把192.168.11.10轉換成10.0.0.1的記錄,最後NAT主機把這個封包內的目的IP改爲192.168.11.10,最終客戶機收到了Web服務器的迴應。也就是內網主機藉助NAT去訪問外網資源。
注意:在第一步到第二步的過程當中,封包的源地址改變了,這種變動源地址的過程稱爲SNAT,而在第五步到第六步中,目的地址唄改變了,同理就被稱爲DNAT,基本上每種NAT都是由SNAT和DNAT共同搭配而成。
接着上面實例分析,封包由eth1接口進入,通過裝換後由eth0離開,封包產生依次爲POSTROUTING(源地址轉換),Routing Table和PREROUTING(目的地址轉換)三種不一樣機制的變化。若是封包由eth0送入並有eth1送出則順序相反。因此POSTROUTING和PREROUTING的位置和封包流向有關。
clip_image018
圖 封包流向與SNAT、DNAT的關係
查看Nat Table結構命令以下:

iptables –t nat –L

clip_image020
總結,POSTROUTING是源地址轉換,要把你的內網地址轉換成公網地址才能讓你上網。PREROUTING是目的地址轉換,要把別人的公網IP換成大家內部的IP,才讓訪問到大家內部受防火牆保護的機器。下圖介紹了NAT的完整結構。
clip_image022
圖 NAT結構
1) PREROUTING
當你想改變封包目的IP時請將規則放置於PREROUTING Chain以內,由於PREROUTING Chain的功能在於執行DNAT。
2) POSTROUTING
POSTROUTING China的功能則是變動封包的源IP,即它主要是執行SNAT任務。值得注意的是它位於整個NAT機制的最末尾,所以咱們執行SNAT,源IP變動也是在最後執行。
一對多NAT舉例
一對多NAT的應用平時最經常使用,下面咱們看看實際應用,拓撲和配置仍是看上圖。
在設置這種NAT時,咱們的考慮封包進入和出去兩個方向,首先考慮由企業內部傳送封包到外網的狀況,若是192.168.11.0/24網段的主機要訪問外網202.202.202.202這臺主機,其服務器請求封包內的源IP可定時私有IP,確定不可能直接送達外網,所以必須由NAT主機上的SNAT機制將外送封包內的源IP改爲NAT主機上的PublicIP,這樣才能讓外網主機響應回的封包能夠順利返回到NAT主機對外的PublicIP上,此SNAt規則寫法以下:

iptables –t nat –A POSTROUTING –o eth0 –s 192.168.11.0/24 -j SNAT –-to 10.0.0.1

注意,放在NAT主機後方的系統並不安全,以一對一的NAT爲例,當黑客從外網攻擊NAT的Public IP地址時,這個攻擊的封包會被轉送給NAT後方的主機。要提升安全性還須要和Filter機制相結合才行。
Iptables規則庫管理
咱們知道iptables的規則被存儲在各類不一樣的鏈中,至關於一個規則庫,當咱們修改完規則可用iptables-save命令進行存儲。對於ossim系統而言iptables規則存儲在/etc/ossim_firewall文件中,每次啓動系統時會經過iptables-restore 調用/etc/ossim_firewall文件到內存中。若是是Redhat系統則是用過」service iptables save」命令存儲,默認規則路徑爲/etc/sysconfig/iptables文件內。可是這樣管理未必是好事,好比規則庫中有100條規則,有80條規則都包含地址192.168.11.10,那麼若是須要修改將原來的192.168.11.10改爲192.168.12.10,你打算將全部的地址都從新輸入一遍嗎?那樣效率過低了。可建議你們採用腳本管理方式,也就是將規則寫入shell腳本,這樣能夠將ip地址存儲變量中
Mangle機制
Mangle表主要用於修改數據包的TOS(Type Of Service,服務類型)、TTL(Time To Live,生存週期)指以及爲數據包設置Mark標記,以實現Qos(Quality Of Service,服務質量)調整以及策略路由等應用,mangle 表對應的內核模塊爲 iptable_mangle。因爲須要相應的路由設備支持,應用並不普遍。注意Mark並無真正地改動數據包,它只是在內核空間爲包設了一個標記,Mangle應用順序要高於nat、filter。
iptables -F -t mangle # 清除mangle表中,全部規則鏈中的規則
iptables -t mangle -X # 清除mangle表中,使用者自訂鏈中的規則
RAW機制
RAW表只使用在PREROUTING鏈和OUTPUT鏈上,由於優先級最高,從而能夠對收到的數據包在鏈接跟蹤前進行處理。一但用戶使用了RAW表,在某個鏈上,RAW表處理完後,將跳過NAT表和 ip_conntrack處理,即再也不作地址轉換和數據包的連接跟蹤處理了.
RAW表能夠應用在那些不須要作nat的狀況下,以提升性能。如大量訪問的web服務器,可讓80端口再也不讓iptables作數據包的連接跟蹤處理,以提升用戶的訪問速度。
執行如何指令便可
iptables -t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK
iptables -t raw -A PREROUTING -p tcp --sport 80 -j NOTRACK
iptables -A FORWARD -m state --state UNTRACKED -j ACCEPT
Netfilter模塊應用範例
封包的匹配是Netfilter篩選封包的基本方式,匹配方法越多,提取出的封包種類就越細緻,這樣防火牆的保護範圍就越大。
舉例:
1) 禁止內網用戶訪問http://www.website.com

iptables –A FORWARD –p tcp –I eth1 –o eth0 –d www.website.com –j DROP

2) 匹配目的端口
禁止192.168.11.0/24網段內的全部主機訪問外網FTP服務,規則以下:

iptables –A FORWARD –i eth1 –o eth0 –p tcp –s 192.168.11.0/24 --dport 21:22 –j REJECT

若是時匹配源端口呢?只須要將「--dport」改爲「—sport」便可。
3) TCP-Flags匹配
爲了防範一些非正常封包咱們能夠利用netfilter過濾tcp-flags狀態,咱們能夠利用—syn來判斷封包內含有syn標誌。例如:

iptables –A INPUT –p tcp --tcp-flags ALL SYN,FIN –j DROP

4)MAC地址匹配
一些公司內部是DHCP分配客戶機IP,但有時須要制定特定IP才能訪問數據庫服務器,怎麼處理呢?咱們能夠根據這些指定機器的MAC地址進行過濾假設MS SQL服務器所使用端口爲1433,指定的主機網卡MAC地址爲00:0c:29:53:ab:60 ,規則以下:

iptables –A INPUT –p tcp --dport 1433 –m mac --mac-source 00:0c:29:53:ab:60 –j ACCEPT

其中-m mac表示調用xt_mac.ki模塊,它的功能是匹配MAC地址。
5. IP地址範圍匹配
當你想封鎖某個IP地址段的時候不會去一條條IP地址輸入吧,Netfiletre中有ipt_iprange.ko模塊能夠用一條語句解決問題,規則以下:

iptables –A INPUT –m iprange --src-range 192.168.11.110-192.168.11.150 –j DROP

一樣方法,若是須要限制目的地址,那麼就須要把」--src-range」換成」--dst-range」便可。
6. TTL值的匹配
生存時間(time-to-live)指定數據包被路由器丟棄以前容許經過的網段數量。它是IP(中文全稱:網絡協議)協議包中的一個值,它告訴網絡,數據包在網絡中的時間是否太長而應被丟棄,通常狀況下LinuxTTL值爲64或255,Windows 2000/XP TTL值爲128。
TTL值的匹配是由Netfilter的ipt_ttl.ko模塊實現。舉例,咱們要將TTL值爲128的封包丟棄,規則以下:

iptables –A INPUT –m ttl --ttl-sq 128 –j REJECT

  1. 匹配MTU值
    這個和封包長度有關,MTU是最大傳輸單元,它是指一種通訊協議的某一層上面所能經過的最大數據包大小(以字節爲單位),下面以ICMP封包爲例講個特殊場景。
    Ping是個常見命令,而在linux下以ping –f –s 16384 1.2.3.4 就會產生大量大型ICMP封包不但佔用機器CPU並且佔用網絡帶寬,「-s 16386」會產生出來的ICMP封包所承載的數據大小爲16KB,若是用ping –f –s 0 1.2.3.4指令則會產生更多的ICMP請求包。這樣一來就會慢慢造成DOS攻擊。
    clip_image024
    有些朋友想到禁止Ping,會使用如下命令
    echo 1 >; /proc/sys/net/ipv4/icmp_echo_ignore_all
    有時候搞得本身也不能ping 很不方便,仍是使用iptables的xt_length.ko模塊好使。

iptables –A INPUT –p icmp --icmp-type 8 –m length --length 1:99 –j ACCEPT

iptables –A INPUT –p icmp --icmp-type 8 –m length --length 1000:16386 –j DROP

注意:咱們把不符合要求的ICMP type 8封包過濾掉的目的是避免主機受到大量ICMP封包的攻擊。--length 1000:16386表示匹配MTU值介於1000~16386 Bytes的封包
8. 對指定封包重複率的匹配
使用limit的靈活度就比上面的規則強,不是一棍子打死。比方說我但願每分鐘有10個ICMP封包就進入,若是超過,那咱們就限制每分鐘只能進來6個ICMP。實現規則以下:

iptables –A INPUT –p icmp --icmp-type 8 –m limit --limit 6/m --limit-burst 10 –j ACCEPT

iptables –A INPUT –p icmp --icmp-type 8 –j DROP

注意:6/m,其中的m表明分鐘,後面的—limit-burst 10 表示每分鐘進入10個封包,千萬別忘記第二條規則,只有兩條都輸入才起做用。
9. 對封包內承載內容進行匹配
假設外網攻擊者經過發送「./winnt/system32/cmd.exe?/c+dir」攻擊了內網IIS服務器,在服務器漏洞沒有徹底修復前咱們能夠嘗試在Linux網關防火牆上利用xt_string.ko模塊的匹配功能暫時阻止攻擊者再次襲擊。規則以下:

iptables –A FORWARD –I eth0 –o eth1 –p tcp –d 10.0.0.1 --dport 80 –m string --algo bm --string 「system32」 –j DROP

含義:若是封包要送往IIS Server的80端口,就用string模塊匹配,bm表明(Boyer-Morre)算法,若是封包含有 system32字符創就丟棄。不過要注意這只是臨時處理方法而不是救命稻草。
10. 對日誌的處理
Netfilter默認並不會產生日誌,若是須要記錄日誌就須要用到ipt_log.ko這個模塊,下面舉例說明,咱們要記錄曾對本機發出FTP服務請求的IP地址,可以使用以下命令:

iptables –A INPUT –p tcp --dport 21 –j LOG

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

LOG只會記錄封包信息,而不會處理這個封包,LOG是個比較特殊的處理方法,這個封包會繼續匹配INPUT鏈內的其餘規則,而LOG所記錄下來的日誌則會存放在/var/log/messages中,查看方法:

tail –f /var/log/messages

clip_image026
你在使用中會發現log日誌量增加很快,由於LOG會記錄每一個FTP協議封包的信息。下面咱們修改一下,只記錄每條鏈接的第一個分包,這樣日誌的尺寸就大爲減少。

iptables –A INPUT –p tcp --syn --dport 21 –j LOG

下面接下來的問題就是如何從/var/log/messages中提取LOG,咱們可使用--log-level參數,改進方法以下:

iptables –A INPUT –p tcp --syn --dport 21 -j LOG --log-level alert

先彆着急,你好須要在/etc/syslog.conf文件中加入下面以行配置
Kern.=alert /var/log/netfilter
這表示若是log由Kernel產生,並且log level 爲alert級別的日誌的話,就存儲到/var/log/netfilter文件。
最後重啓syslog服務,之後關於FTP協議的log 就會存放到/var/log/netfilter文件。
這裏介紹的LOG是由系統syslog處理,另外還有更先進的能夠採用ULOG處理方法這裏就不詳細介紹感興趣讀者參考《UNIX/Linux網絡日誌分析與流量監控》一書。

相關文章
相關標籤/搜索