欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
用iptales實(shí)現包過(guò)濾型防火墻(一)---web開(kāi)發(fā)者手冊
摘要:本文介紹linux2.4.x內核中的防火墻工具--iptables的原理與配置,同時(shí)還給出了實(shí)際運用的例子,在文章的最后歸納了iptables與ipchains的區別。

一、 概述

   從1.1內核開(kāi)始,linux就已經(jīng)具有包過(guò)慮功能了,在2.0的內核中我們采用ipfwadm來(lái)操作內核包過(guò)慮規則。之后在2.2內核中,采用了大家并不陌生的ipchains來(lái)控制內核包過(guò)慮規則?,F在最新linux內核版本是2.4.1,在2.4內核中我們不再使用ipchains,而是采用一個(gè)全新的內核包過(guò)慮管理工具--iptables。 這個(gè)全新的內核包過(guò)慮工具將使用戶(hù)更易于理解其工作原理,更容易被使用,當然也將具有更為強大的功能。

我們說(shuō)過(guò)iptables只是一個(gè)管理內核包過(guò)慮的工具,iptables可以加入、插入或刪除核心包過(guò)濾表格(鏈)中的規則。實(shí)際上真正來(lái)執行這些過(guò)慮規則的是netfilter(Linux核心中一個(gè)通用架構)及其相關(guān)模塊(如iptables模塊和nat模塊),下面我們一起來(lái)看看netfilter的工作原理。

二、 原理
   netfilter是Linux核心中一個(gè)通用架構,它提供了一系列的"表"(tables),每個(gè)表由若干"鏈"(chains)組成,而每條鏈中可以有一條或數條規則(rule)組成。我們可以這樣來(lái)理解,netfilter是表的容器,表是鏈的容器,而鏈又是規則的容器(如圖一所示)。


   系統缺省的表為"filter",該表中包含了INPUT、FORWARD和OUTPUT3個(gè)鏈。每一條鏈中可以有一條或數條規則,每一條規則都是這樣定義的“如果數據包頭符合這樣的條件,就這樣處理這個(gè)數據包”。當一個(gè)數據包到達一個(gè)鏈時(shí),系統就會(huì )從第一條規則開(kāi)始檢查,看是否符合該規則所定義的條件:如果滿(mǎn)足,系統將根據該條規則所定義的方法處理該數據包;如果不滿(mǎn)足則繼續檢查下一條規則。最后,如果該數據包不符合該鏈中任一條規則的話(huà),系統就會(huì )根據該鏈預先定義的策略(policy)來(lái)處理該數據包。

 

    數據包在filter表中的流程如圖二所示。有數據包進(jìn)入系統時(shí),系統首先根據路由表決定將數據包發(fā)給哪一條鏈,則可能有三種情況:

1. 如果數據包的目的地址是本機,則系統將數據包送往INPUT鏈,如果通過(guò)規則檢查,則該包被發(fā)給相應的本地進(jìn)程處理;如果沒(méi)通過(guò)規則檢查,系統就會(huì )將這個(gè)包丟掉;
2. 如果數據包的目的地址不是本機,也就是說(shuō),這個(gè)包將被轉發(fā),則系統將數據包送往FORWARD鏈,如果通過(guò)規則檢查,則該包被發(fā)給相應的本地進(jìn)程處理;如果沒(méi)通過(guò)規則檢查,系統就會(huì )將這個(gè)包丟掉;
3. 如果數據包是由本地系統進(jìn)程產(chǎn)生的,則系統將其送往OUTPUT鏈,如果通過(guò)規則檢查,則該包被發(fā)給相應的本地進(jìn)程處理;如果沒(méi)通過(guò)規則檢查,系統就會(huì )將這個(gè)包丟掉。

從以上我們可以看出,netfilter比起以前的ipfwadm和ipchains思路上清晰了好多,也好理解了好多,這對于原先對ipfwadm和ipchains總是感到一頭霧水的用戶(hù)來(lái)說(shuō)無(wú)疑是一個(gè)福音。


三、 準備工作

1. 系統需求
    netfilter要求內核版本不低于2.3.5,在編譯新內核時(shí),要求選擇和netfilter相關(guān)的項目。這些項目通常都是位于“Networking options”子項下。以2.4.0內核為例,我們應該選中的項目有:

[*] Kernel/User netlink socket
[ ] Routing messages
<*> Netlink device emulation
[*] Network packet filtering (replaces ipchains)
.......

然后,在“IP: Netfilter Configuration ---->”選中:

Connection tracking (required for masq/NAT)
FTP protocol support
IP tables support (required for filtering/masq/NAT)
limit match support
MAC address match support
Netfilter MARK match support
Multiple port match support
TOS match support
Connection state match support
Packet filtering
REJECT target support
Full NAT
MASQUERADE target support
REDIRECT target support
Packet mangling
TOS target support
MARK target support
LOG target support
ipchains (2.2-style) support
ipfwadm (2.0-style) support

   其中最后兩個(gè)項目可以不選,但是如果你比較懷念ipchains或者ipfwadm,你也可以將其選中,以便在2.4內核中使用ipchians或ipfwadm。但是需要注意的是,iptables是和ipchians/ipfwadm相對立的,在使用iptables的同時(shí)就不能同時(shí)使用ipchains/ipfwadm。編譯成功后,這些模塊文件都位于以下目錄中
/lib/modules/2.4.0/kernel/net/ipv4/netfilter

    編譯2.4.0的新內核時(shí)還應該注意要在“Processor type and features”中選擇和你的CPU相對應的正確的CPU選項,否則新內核可能無(wú)法正常工作。

2. 載入模塊

    要使用iptables,還必須載入相關(guān)模塊??梢允褂靡韵旅钶d入相關(guān)模塊:
#modprobe iptable_tables
modprobe命令會(huì )自動(dòng)載入指定模塊及其相關(guān)模塊。iptables_filter模塊會(huì )在運行時(shí)自動(dòng)載入。

三、 語(yǔ)法

1. 對鏈的操作
建立一個(gè)新鏈 (-N)。
刪除一個(gè)空鏈 (-X)。
改變一個(gè)內建鏈的原則 (-P)。
列出一個(gè)鏈中的規則 (-L)。
清除一個(gè)鏈中的所有規則 (-F)。
歸零(zero) 一個(gè)鏈中所有規則的封包字節(byte) 記數器 (-Z)。

2. 對規則的操作
加入(append) 一個(gè)新規則到一個(gè)鏈 (-A)的最后。
在鏈內某個(gè)位置插入(insert) 一個(gè)新規則(-I),通常是插在最前面。
在鏈內某個(gè)位置替換(replace) 一條規則 (-R)。
在鏈內某個(gè)位置刪除(delete) 一條規則 (-D)。
刪除(delete) 鏈內第一條規則 (-D)。

3. 指定源地址和目的地址

通過(guò)--source/--src/-s來(lái)指定源地址(這里的/表示或者的意思,下同),通過(guò)--destination/--dst/-s來(lái)指定目的地址??梢允褂靡韵滤闹蟹椒▉?lái)指定ip地址:
a. 使用完整的域名,如“www.linuxaid.com.cn”;
b. 使用ip地址,如“192.168.1.1”;
c. 用x.x.x.x/x.x.x.x指定一個(gè)網(wǎng)絡(luò )地址,如“192.168.1.0/255.255.255.0”;
d. 用x.x.x.x/x指定一個(gè)網(wǎng)絡(luò )地址,如“192.168.1.0/24”這里的24表明了子網(wǎng)掩碼的有效位數,這是 UNIX環(huán)境中通常使用的表示方法。
缺省的子網(wǎng)掩碼數是32,也就是說(shuō)指定192.168.1.1等效于192.168.1.1/32。

4. 指定協(xié)議

可以通過(guò)--protocol/-p選項來(lái)指定協(xié)議,比如-p tcp。

5. 指定網(wǎng)絡(luò )接口將

可以使用--in-interface/-i或--out-interface/-o來(lái)指定網(wǎng)絡(luò )接口。需要注意的是,對于INPUT鏈來(lái)說(shuō),只可能有-i,也即只會(huì )有進(jìn)入的包;通理,對于OUTPUT鏈來(lái)說(shuō),只可能有-o,也即只會(huì )有出去的包。只有FORWARD鏈既可以有-i的網(wǎng)絡(luò )接口,也可以有-o的網(wǎng)絡(luò )接口。我們也可以指定一個(gè)當前并不存在的網(wǎng)絡(luò )接口,比如ppp0,這時(shí)只有撥號成功后該規則才有效。

6. 指定ip碎片

在TCP/IP通訊過(guò)程中,每一個(gè)網(wǎng)絡(luò )接口都有一個(gè)最大傳輸單元(MTU),這個(gè)參數定義了可以通過(guò)的數據包的最大尺寸。如果一個(gè)數據包大于這個(gè)參數值時(shí),系統會(huì )將其劃分成更小的數個(gè)數據包(稱(chēng)之為ip碎片)來(lái)傳輸,而接收方則對這些ip碎片再進(jìn)行重組以還原整個(gè)包。
但是再進(jìn)行包過(guò)濾的時(shí)候,ip碎片會(huì )導致這樣一個(gè)問(wèn)題:當系統將大數據包劃分成ip碎片傳送時(shí),第一個(gè)碎片含有完整的包頭信息,但是后續的碎片只有包頭的部分信息,比如源地址,目的地址。因此假如我們有這樣一條規則:
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 192.168.2.100 --dport 80 -j ACCEPT
并且這時(shí)的FORWARD的策略(policy)為DROP時(shí),系統只會(huì )讓第一個(gè)ip碎片通過(guò),而丟掉其余的ip碎片,因為第一個(gè)碎片含有完整的包頭信息,可以滿(mǎn)足該規則的條件,而余下的碎片因為包頭信息不完整而無(wú)法滿(mǎn)足規則定義的條件,因而無(wú)法通過(guò)。
我們可以通過(guò)--fragment/-f選項來(lái)指定第二個(gè)及其以后的ip碎片,比如以上面的例子為例,我們可以再加上這樣一條規則來(lái)解決這個(gè)問(wèn)題:
iptables -A FORWARD -f -s 192.168.1.0/24 -d 192.168.2.100 -j ACCEPT
但是需要注意的是,現在已經(jīng)有好多進(jìn)行ip碎片攻擊的實(shí)例(比如向Win98 NT4/SP5,6Win2K發(fā)送大量的ip碎片進(jìn)行DoS攻擊),因此允許ip碎片通過(guò)是有安全隱患的,對于這一點(diǎn)我們可以采用iptables的匹配擴展來(lái)進(jìn)行限制,但是這又會(huì )影響服務(wù)質(zhì)量,我們將在下面討論這個(gè)問(wèn)題。
  
7. 指定非

可以在某些選項前加上!來(lái)表示非指定值,比如“-s -! 192.168.1.1/32”表示除了192.168.1.1以外的ip地址,“-p -! tcp”表示除了tcp以外的協(xié)議。

8. TCP匹配擴展

通過(guò)使用--tcp-flags選項可以根據tcp包的標志位進(jìn)行過(guò)濾,該選項后接兩個(gè)參數:第一個(gè)參數為要檢查的標志位,可以是SYN,ACK,FIN,RST,URG,PSH的組合,可以用ALL指定所有標志位;第二個(gè)參數是標志位值為1的標志。比如你要過(guò)濾掉所有SYN標志位為1的tcp包,可以使用以下規則:
iptables -A FORWARD -p tcp --tcp-flags ALL SYN -j DROP
選項--syn是以上的一種特殊情況,相當于“--tcp-flags SYN,RST,ACK SYN”的簡(jiǎn)寫(xiě)。

9. mac匹配擴展
可以使用-m選項來(lái)擴展匹配內容。使用--match mac/-m mac匹配擴展可以用來(lái)檢查ip數據包的源mac地址。只要在--mac-source后面跟上mac地址就可以了。比如:
iptables -A FORWARD -m mac --mac-source 00:00:BA:A5:7D:12 -j DROP
需要注意的是一個(gè)ip包在經(jīng)過(guò)路由器轉發(fā)后,其源mac地址已經(jīng)變成了路由器的mac地址。

10. limit匹配擴展

limit擴展是一個(gè)非常有用的匹配擴展。使用-m nat 來(lái)指定,其后可以有兩個(gè)選項:

--limit avg: 指定單位時(shí)間內允許通過(guò)的數據包的個(gè)數。單位時(shí)間可以是/second、/minute、/hour、/day或使用第一個(gè)字母,比如5/second和5/s是一樣的,都是表示每秒可以通過(guò)5個(gè)數據包,缺省值是3/hour。

  --limit-burst number:指定觸發(fā)事件的閥值,缺省值是5。

看起來(lái)好像有點(diǎn)復雜,就讓我們來(lái)看一個(gè)例子:
假設又如下的規則:
iptables -A INPUT -p icmp -m limit --limit 6/m --limit-burst 5 -j ACCEPT
iptables -P INPUT DROP
然后從另一部主機上ping這部主機,就會(huì )發(fā)生如下的現象:
首先我們可以看到前四個(gè)包的回應都很正常,然后從第五個(gè)包開(kāi)始,我們每10秒可以收到一個(gè)正常的回應。這是因為我們設定了單位時(shí)間(在這里是每分鐘)內允許通過(guò)的數據包的個(gè)數是每分鐘6個(gè),也即每10秒鐘一個(gè);其次我們又設定了事件觸發(fā)閥值為5,所以我們的前四個(gè)包都是正常的,只是從第五個(gè)包開(kāi)始,限制規則開(kāi)始生效,故只能每10秒收到一個(gè)正?;貞?。
假設我們停止ping,30秒后又開(kāi)始ping,這時(shí)的現象是:
前兩個(gè)包是正常的,從第三個(gè)包開(kāi)始丟包,這是因為在這里我的允許一個(gè)包通過(guò)的周期是10秒,如果在一個(gè)周期內系統沒(méi)有收到符合條件的包,系統的觸發(fā)值就會(huì )恢復1,所以假如我們30秒內沒(méi)有符合條件的包通過(guò),系統的觸發(fā)值就會(huì )恢復到3,假如5個(gè)周期內都沒(méi)有符合條件的包通過(guò),系統都觸發(fā)值就會(huì )完全恢復。不知道你明白了沒(méi)有,歡迎你來(lái)信討論。

11. LOG目標擴展

netfilter缺省的目標(也就是一旦滿(mǎn)足規則所定義以后系統對數據包的處理方法)有:
ACEEPT:接收并轉發(fā)數據包
DORP:丟掉數據包
目標擴展模塊提供了擴展的目標。LOG目標提供了記錄數據包的功能。該目標擴展有以下幾個(gè)參數:
--log-level:指定記錄信息的級別,級別有debug、info、notice、warning、err、crit、alert、emerg分別對應7到0的數字。其含義請參看syslog.conf的man手冊。
--log-prefix:后接一個(gè)最長(cháng)為30個(gè)字符的字符串,該字符串將出現在每一條日志的前面。

12. REJECT目標擴展

該目標擴展完全和DORP標準目標一樣,除了向發(fā)送方返回一個(gè)“port unreachable”的icmp信息外。

還有其他一些擴展是常用的,如果你想了解可以參考Packet-Filtering-HOWTO。當然,最直接獲得幫助的辦法是查看iptables的在線(xiàn)幫助,比如想得到關(guān)于mac匹配擴展的幫助可以執行“iptables -m mac-help”命令,想得到LOG目標擴展的幫助可以執行“iptables -j LOG -help”命令。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
iptable指令解釋
Netfilter框架
iptables 詳解
nftables相比iptables到底改變了什么
如何使用 Linux 防火墻隔離本地欺騙地址 | Linux 中國
linux內核將用BPF給iptables“換心”
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久