巧用iptables建立Linux防火墻
iptables能幫助Linux建立防火墻,具體的步驟如下:
如果你剛剛開始在Linux系統(tǒng)上啟用一個(gè)防火墻,筆者建議你試用這樣一個(gè)工具,如lokkit(它在Fedora/RedHat / Ubuntu等操作系統(tǒng)中是可用的)。它可以作為一個(gè)向?qū)?,讓你一步一步地領(lǐng)略配置防火墻的過(guò)程。要使用這個(gè)工具,請(qǐng)運(yùn)行此命令:gnome-lokkit
你可以從下面的鏈接得到此工具的詳細(xì)信息或下載此工具:
不過(guò),你可能對(duì)一個(gè)GUI(圖形用戶界面)的工具更感興趣,而不是使用命令行工具來(lái)對(duì)iptables作出改變。如果你喜歡圖形化的工具,現(xiàn)在互聯(lián)網(wǎng)上有不少這樣的工具。不妨到freshmeat.net找一下。
Iptables簡(jiǎn)介
對(duì)于那些不知道或不清楚iptables的人來(lái)說(shuō),這個(gè)Linux工具可以控制網(wǎng)絡(luò)數(shù)據(jù)包,允許你借助于一套規(guī)則來(lái)對(duì)網(wǎng)絡(luò)相關(guān)的事項(xiàng)執(zhí)行精細(xì)控制,此工具本身已經(jīng)出道有一段時(shí)間了。
在你用iptables命令開始創(chuàng)建規(guī)則之前,你還需要知道如果服務(wù)器重啟的話,你創(chuàng)建的規(guī)則會(huì)丟失。由于這個(gè)原因,多數(shù)服務(wù)器管理員將其所用的iptables命令運(yùn)用于一個(gè)服務(wù)器每次重啟時(shí)運(yùn)行的命令過(guò)程。對(duì)于某些Linux版本,你還可以像下面這樣來(lái)運(yùn)行一個(gè)命令:
service(服務(wù)) iptables save(保存)
這就保證可以保存你的配置,并且在啟動(dòng)時(shí)自動(dòng)加載。
開始工作
要使用iptables,你應(yīng)當(dāng)將規(guī)則運(yùn)用于進(jìn)入或發(fā)出的網(wǎng)絡(luò)數(shù)據(jù)包,或者通過(guò)你的服務(wù)器轉(zhuǎn)發(fā)的數(shù)據(jù)包。
要查看目前運(yùn)用于服務(wù)器的數(shù)據(jù)包,鍵入命令:
iptables -L
iptables基礎(chǔ)
構(gòu)建可正常發(fā)揮功能的防火墻規(guī)則依賴于你對(duì)服務(wù)器是如何運(yùn)行的一些知識(shí)。
對(duì)于一個(gè)安全的服務(wù)器而言,最好先建立一個(gè)可以禁止所有進(jìn)入通信的規(guī)則。一旦你這樣做了,那么你可以建立一些明晰的規(guī)則,使其只允許如80號(hào)端口等例外端口的請(qǐng)求。這樣做比你設(shè)法過(guò)濾想阻止的內(nèi)容更加容易理解,也更容易配置,因?yàn)槟菢拥脑捘憧赡軙?huì)遺漏一些重要或者危險(xiǎn)的東西,例如一個(gè)開放的可被用于攻擊你的服務(wù)器的端口。
此外,將iptables與一個(gè)硬件防火墻結(jié)合使用也是很有益的,因?yàn)檫@會(huì)提供多層安全,并會(huì)減少你在配置中遺漏某些東西的可能性。
記住,你可以用命令man iptables得到所有的語(yǔ)法信息。
使用防火墻規(guī)則
下面讓我們看三個(gè)示例性的規(guī)則及其核心部分。不過(guò),需要注意,我們文章中的一些較長(zhǎng)的命令有自動(dòng)換行,因此你要確保鍵入了一個(gè)完整的命令,而不是僅僅一行命令。
iptables -P INPUT DROP
這個(gè)命令很容易,并且很安全。它對(duì)iptables工具進(jìn)行了初始化,然后對(duì)所有進(jìn)入(input)的數(shù)據(jù)包設(shè)置了一個(gè)策略(Policy(-P))。這個(gè)策略就是丟棄所有的數(shù)據(jù)包。非常安全。注意,你只能將策略用于iptables的內(nèi)建命令。
iptables -A INPUT -i lo -j ACCEPT
這條規(guī)則比較實(shí)用,因?yàn)樗试S發(fā)生在你的本地接口上的網(wǎng)絡(luò)通信。注意添加的(-A)選項(xiàng),因?yàn)檫@不是內(nèi)建于策略中的一部分。這條新的規(guī)則被添加到所有進(jìn)入的將要到達(dá)本地接口(interface:-i)的數(shù)據(jù)包上。這條規(guī)則要準(zhǔn)許所有這些數(shù)據(jù)包(-j ACCEPT)。通常情況下,如果你碰到配置和安裝應(yīng)用程序方面的問(wèn)題,這將開始于你準(zhǔn)許本地主機(jī)的連接性,如下所示:
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
這個(gè)命令還將一條規(guī)則添加(-A)到所有通過(guò)以太網(wǎng)接口(-i eth0)進(jìn)入(INPUT)的數(shù)據(jù)包中。不過(guò)它只應(yīng)用于使用TCP協(xié)議(-p tcp)的數(shù)據(jù)包。此規(guī)則特別針對(duì)進(jìn)入指定的80號(hào)端口(--dport 80)的數(shù)據(jù)包,而且設(shè)置為允許這些數(shù)據(jù)包通過(guò)(-j ACCEPT)。
通過(guò)文章的描述,想必大家都學(xué)會(huì)巧用iptables建立Linux防火墻,希望本文對(duì)大家有用!
【編輯推薦】