使用netfilter/iptables構(gòu)建防火墻
如何使用netfilter/iptables構(gòu)建防火墻
對于Internet上的系統(tǒng),不管是什么情況都要明確一點(diǎn):網(wǎng)絡(luò)是不安全的。因此,雖然創(chuàng)建一個(gè)防火墻并不能保證系統(tǒng)100%安全,但卻是絕對必要的。Linux提供了一個(gè)非常優(yōu)秀的防火墻工具—netfilter/iptables。它完全免費(fèi)、功能強(qiáng)大、使用靈活、可以對流入和流出的信息進(jìn)行細(xì)化控制,且可以在一臺(tái)低配置機(jī)器上很好地運(yùn)行。本文將簡單介紹使用netfilter/iptables實(shí)現(xiàn)防火墻架設(shè)和Internet連接共享等應(yīng)用。
netfilter/iptabels應(yīng)用程序,被認(rèn)為是Linux中實(shí)現(xiàn)包過濾功能的第四代應(yīng)用程序。netfilter/iptables包含在2.4以后的內(nèi)核中,它可以實(shí)現(xiàn)防火墻、NAT(網(wǎng)絡(luò)地址翻譯)和數(shù)據(jù)包的分割等功能。netfilter工作在內(nèi)核內(nèi)部,而iptables則是讓用戶定義規(guī)則集的表結(jié)構(gòu)。netfilter/iptables從ipchains和ipwadfm(IP防火墻管理)演化而來,功能更加強(qiáng)大。下文將netfilter/iptabels統(tǒng)一稱為iptables。
可以用iptables為Unix、Linux和BSD個(gè)人工作站創(chuàng)建一個(gè)防火墻,也可以為一個(gè)子網(wǎng)創(chuàng)建防火墻以保護(hù)其它的系統(tǒng)平臺(tái)。iptales只讀取數(shù)據(jù)包頭,不會(huì)給信息流增加負(fù)擔(dān),也無需進(jìn)行驗(yàn)證。要想獲得更好的安全性,可以將其和一個(gè)代理服務(wù)器(比如squid)相結(jié)合。
基本概念
典型的防火墻設(shè)置有兩個(gè)網(wǎng)卡:一個(gè)流入,一個(gè)流出。iptables讀取流入和流出數(shù)據(jù)包的報(bào)頭,將它們與規(guī)則集(Ruleset)相比較,將可接受的數(shù)據(jù)包從一個(gè)網(wǎng)卡轉(zhuǎn)發(fā)至另一個(gè)網(wǎng)卡,對被拒絕的數(shù)據(jù)包,可以丟棄或按照所定義的方式來處理。
通過向防火墻提供有關(guān)對來自某個(gè)源地址、到某個(gè)目的地或具有特定協(xié)議類型的信息包要做些什么的指令,規(guī)則控制信息包的過濾。通過使用iptables系統(tǒng)提供的特殊命令iptables建立這些規(guī)則,并將其添加到內(nèi)核空間特定信息包過濾表內(nèi)的鏈中。關(guān)于添加、去除、編輯規(guī)則的命令,一般語法如下:
iptables [-t table] command [match] [target]
1.表(table)
[-t table]選項(xiàng)允許使用標(biāo)準(zhǔn)表之外的任何表。表是包含僅處理特定類型信息包的規(guī)則和鏈的信息包過濾表。有三個(gè)可用的表選項(xiàng):filter、nat和mangle。該選項(xiàng)不是必需的,如果未指定,則filter作為缺省表。各表實(shí)現(xiàn)的功能如表1所示。

表1 三種表實(shí)現(xiàn)的功能
2.命令(command)
command部分是iptables命令最重要的部分。它告訴iptables命令要做什么,例如插入規(guī)則、將規(guī)則添加到鏈的末尾或刪除規(guī)則。表2是最常用的一些命令及例子。

表2 命令的功能和樣例
3.匹配(match)
iptables命令的可選match部分指定信息包與規(guī)則匹配所應(yīng)具有的特征(如源地址、目的地址、協(xié)議等)。匹配分為通用匹配和特定于協(xié)議的匹配兩大類。這里將介紹可用于采用任何協(xié)議的信息包的通用匹配。表3是一些重要且常用的通用匹配及示例說明。

表3 通用匹配及示例說明
4.目標(biāo)(target)
目標(biāo)是由規(guī)則指定的操作,對與那些規(guī)則匹配的信息包執(zhí)行這些操作。除了允許用戶定義的目標(biāo)之外,還有許多可用的目標(biāo)選項(xiàng)。表4是常用的一些目標(biāo)及示例說明。
除表4外,還有許多用于建立高級規(guī)則的其它目標(biāo),如LOG、REDIRECT、MARK、MIRROR和MASQUERADE等。

表4 目標(biāo)及示例說明
應(yīng)用iptables
與ipchains和ipfwadm不同的是,iptables可以配置有狀態(tài)的防火墻。iptables可以檢測到源地址和目的地址、源端口和目的端口及流入數(shù)據(jù)包的順序,即iptables記住了在現(xiàn)有連接中,哪些數(shù)據(jù)包已經(jīng)被允許接收。這使得暫時(shí)性的端口只有在需要時(shí)才會(huì)被打開,并且會(huì)拒絕所有***性占用端口的請求,大大地加強(qiáng)了安全性。同時(shí),那些被更改了報(bào)頭的數(shù)據(jù)包,即使包含有一個(gè)被允許的目的地址和端口,也會(huì)被檢測到并被丟棄。此外,有狀態(tài)的防火墻能夠指定并記住為發(fā)送或接收信息包所建立連接的狀態(tài)。防火墻可以從信息包的連接跟蹤狀態(tài)獲得該信息。在決定新的信息包過濾時(shí),防火墻所使用的這些狀態(tài)信息可以增加其效率和速度。
- $IPTABLES -A OUTPUT -o eth0 -p tcp -dport 31337 -j DROP
- $IPTABLES -A OUTPUT -o eth0 -p tcp -sport 31337 -j DROP
#此外,31335、27444、27665、20034 NetBus、9704、137-139(smb)端口也應(yīng)被禁止。有沒有學(xué)會(huì)如何使用netfilter/iptables構(gòu)建防火墻呢?
【編輯推薦】