- 相關(guān)推薦
linux下防火墻設(shè)置
引導(dǎo)語(yǔ):大部分發(fā)行版都為用戶提供了一個(gè)可以自動(dòng)加載的文件,讓用戶在其中編輯規(guī)則集,并且大部分發(fā)行版都會(huì)有一個(gè)已經(jīng)預(yù)先配置好的防火墻。不同的發(fā)行版的配置文件位置不盡相同,我們可以使用命令locate iptables來(lái)找到配置文件。
cat /etc/sysconfig/iptables
查看防火墻狀態(tài):
/etc/init.d/iptables status
暫時(shí)關(guān)閉防火墻:
/etc/init.d/iptables stop
禁止防火墻在系統(tǒng)啟動(dòng)時(shí)啟動(dòng)
/sbin/chkconfig --level 2345 iptables off
重啟iptables:
/etc/init.d/iptables restart
我是打開(kāi)防火墻配置文件
>vi /etc/sysconfig/iptables
增加了一行配置
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5900 -j ACCEPT
然后重啟防火墻,就可以正常訪問(wèn)VNC了
-A 新加規(guī)則
INPUT 進(jìn)口 OUTPUT出口
構(gòu)筑Linux防火墻之什么是Linux防火墻
前面介紹了iptables的基本概念和用法,下面我們就開(kāi)始正式使用iptables來(lái)創(chuàng)建我們的防火墻。啟動(dòng)和停止iptables的方法取決于所使用的Linux發(fā)行版,你可以查看所使用Linux版本的文檔。在Red Hat中,啟動(dòng)iptables用:
一般情況下,iptables已經(jīng)包含在了Linux發(fā)行版中,可以運(yùn)行iptables --version來(lái)查看系統(tǒng)是否安裝了iptables。在我使用的Fedora Core 1中,安裝的版本是iptables v1.2.8。如果你的系統(tǒng)確實(shí)沒(méi)有安裝iptables,那么可以從以下地址下載:
查看規(guī)則集
雖然上文對(duì)iptables的用法作一個(gè)簡(jiǎn)單介紹,但現(xiàn)實(shí)中我們可能需要知道更完整的信息,這時(shí)我們可以運(yùn)行man iptables來(lái)查看所有命令和選項(xiàng)的完整介紹,也可以運(yùn)行iptables help來(lái)查看一個(gè)快速幫助。要查看系統(tǒng)中現(xiàn)有的iptables規(guī)劃集,可以運(yùn)行以下命令:
下面是沒(méi)有定義規(guī)劃時(shí)iptables的樣子:
如上面的例子所示,每一個(gè)數(shù)據(jù)包都要通過(guò)三個(gè)內(nèi)建的鏈(INPUT、OUTPUT和FORWARD)中的一個(gè)。 filter是最常用的表,上文所示設(shè)置所有的表規(guī)則的基本語(yǔ)法:iptables [-t table] command [match] [target]。
現(xiàn)實(shí)中,不一定要用到這里所列出的所有選項(xiàng),也不一定是以這個(gè)順序。當(dāng)然,這是一種慣例,因?yàn)橐?guī)則一般都比較長(zhǎng),為了清晰起見(jiàn),最好能夠按照這個(gè)順序。
在沒(méi)有指定規(guī)則表的情況下,缺省時(shí)使用的filter表。在filter表中最常用的三個(gè)目標(biāo)是ACCEPT、DROP和REJECT。DROP會(huì)丟棄數(shù)據(jù)包,不再對(duì)其進(jìn)行任何處理。REJECT會(huì)把出錯(cuò)信息傳送至發(fā)送數(shù)據(jù)包的主機(jī)。雖然有時(shí)會(huì)有一些預(yù)想不到的影響,但在很多時(shí)候它還是非常有用。
增加規(guī)則
本例中的規(guī)則將會(huì)阻止來(lái)自某一特定IP范圍內(nèi)的數(shù)據(jù)包,因?yàn)樵揑P地址范圍被管理員懷疑有大量惡意的攻擊者在活動(dòng):
要了解有關(guān)iptables詳細(xì)的參數(shù)和命令格式,請(qǐng)使用man iptables查看?梢哉f(shuō),現(xiàn)在我們對(duì)于網(wǎng)絡(luò)上的惡意攻擊者已經(jīng)深惡痛絕,但不管怎么說(shuō),我們也不能因?yàn)樵骱匏鼈兙鸵酝瑯拥姆椒▽?duì)其實(shí)行簡(jiǎn)單的報(bào)復(fù),至少這種事情不能在你的網(wǎng)絡(luò)里發(fā)生。因此,我們也可以很輕易地阻止所有流向攻擊者IP
地址的數(shù)據(jù)包,該命令也只是稍有不同:
注意這里的A選項(xiàng),如前所述,使用它說(shuō)明是給現(xiàn)有的鏈添加規(guī)則。 刪除規(guī)則
網(wǎng)絡(luò)上的惡意攻擊者總是在變化著的,因此我們也要不斷改變IP。假設(shè)我們了解的一個(gè)網(wǎng)上攻擊者轉(zhuǎn)移到了新的IP地址,而其老的IP地址被分配給了一些清白的用戶,那么這時(shí)這些用戶的數(shù)據(jù)包就無(wú)法通過(guò)你的網(wǎng)絡(luò)了。這種情況下,我們可以使用帶
-D選項(xiàng)的命令來(lái)刪除現(xiàn)有的規(guī)則:
缺省的策略
創(chuàng)建一個(gè)具有很好靈活性,可以抵御各種意外事件的規(guī)則需要花大量的時(shí)間。對(duì)于那些不想這樣做的人,最基本的原則就是“先拒絕所有的數(shù)據(jù)包,然后再允許需要的”。下面我們來(lái)為每一個(gè)鏈設(shè)置缺省的規(guī)則:
這里選項(xiàng)-P用于設(shè)置鏈的策略,只有三個(gè)內(nèi)建的鏈才有策略。這些策略可以讓信息毫無(wú)限制地流出,但不允許信息流入。但很多時(shí)候,我們還是需要接收外部信息的。這時(shí)可使用以下命令:
SYN的使用
我們不能關(guān)閉所有的端口,那將會(huì)把我們自己完全“與世隔絕”。我們也不能只指定某些端口處于打開(kāi)狀態(tài),因?yàn)槲覀儫o(wú)法預(yù)見(jiàn)哪一個(gè)端口將會(huì)被使用。事實(shí)上,只簡(jiǎn)單地允許目的地為某一特定端口的數(shù)據(jù)流通過(guò)將對(duì)阻止惡意的攻擊毫無(wú)意義。那么我們?cè)鯓硬拍茉O(shè)置一個(gè)有效的規(guī)則,即可以允許普通用戶正常通過(guò),又可以阻止惡意攻擊者訪問(wèn)我們的網(wǎng)絡(luò)呢?
對(duì)于剛開(kāi)始使用iptables的人,我們可以充分利用syn標(biāo)識(shí)來(lái)阻止那些未經(jīng)授權(quán)的訪問(wèn)。因?yàn)閕ptables只檢測(cè)數(shù)據(jù)包的報(bào)頭,所以不會(huì)增加有效負(fù)荷。事實(shí)上,除iptables以外,很多其它有用的數(shù)據(jù)包分析都是基于報(bào)頭的。
比如,在進(jìn)行Web沖浪時(shí),一個(gè)請(qǐng)求從你的PC發(fā)送至其它某一個(gè)地方的Web服務(wù)器之上,接著該服務(wù)器就會(huì)響應(yīng)請(qǐng)求并且向你發(fā)回一個(gè)數(shù)據(jù)包,并且得到你的系統(tǒng)上的一個(gè)臨時(shí)端口。與響應(yīng)請(qǐng)求不同的是,服務(wù)器并不關(guān)心你所傳送的內(nèi)容。這們可以利用這種特點(diǎn),來(lái)設(shè)置一個(gè)規(guī)則,讓它阻止所有沒(méi)有經(jīng)過(guò)你的系統(tǒng)授權(quán)的TCP連接:
這里的-i指的是網(wǎng)卡,-p則是指協(xié)議,--syn則表示帶有syn標(biāo)識(shí)設(shè)置的TCP數(shù)據(jù)包。從中我們可以看出,對(duì)TCP/IP的了解將非常有利于維護(hù)網(wǎng)絡(luò)安全。SYN用于初始化一個(gè)TCP連接,如果你在自己的機(jī)器上沒(méi)有運(yùn)行任何服務(wù)器,別人自然也就不會(huì)向你發(fā)送SYN數(shù)據(jù)包了。
就這點(diǎn)而言,有人會(huì)說(shuō):何必如此麻煩?的確,我們有更簡(jiǎn)單的創(chuàng)建防火墻的方法,也有很多不錯(cuò)的軟件也可以幫助我們來(lái)構(gòu)建自己的規(guī)則集,但是我們應(yīng)該清楚,最簡(jiǎn)單的辦法,往往不是最好的方法。既然我們有更好的方法,為什么不使用呢?
共享一個(gè)Internet連接
網(wǎng)絡(luò)地址翻譯和IP偽裝都可以實(shí)現(xiàn)多臺(tái)主機(jī)共享一個(gè)Internet連接,而這個(gè)局域網(wǎng)可以是Linux和Windows系統(tǒng)組成的多系統(tǒng)局域網(wǎng)。假設(shè)現(xiàn)在我們有一臺(tái)機(jī)器有兩個(gè)網(wǎng)卡,其中eth0為“公共”網(wǎng)卡,eth1為“私有”網(wǎng)卡。
換句話說(shuō),eth0被分配了一個(gè)靜態(tài)的,可路由的IP地址,而eth1則被分配給了一個(gè)私有的、不能路由的IP,也就是說(shuō)該IP是屬于該局域網(wǎng)子網(wǎng)的。要實(shí)現(xiàn)上述功能,我們需要向nat和filter表中添加一些鏈:
這顯示了有狀態(tài)的數(shù)據(jù)包檢測(cè)的價(jià)值。請(qǐng)注意,我們這里是如何實(shí)現(xiàn)流入數(shù)據(jù)包只有在屬于一個(gè)已經(jīng)存在的連接時(shí)才被允許的,而所有來(lái)自局域網(wǎng)內(nèi)流向外的數(shù)據(jù)包則都允許通過(guò) (注意:這里的filter是缺省的表,但它并不是必須的)。
第一條規(guī)則讓所有流出的信息看起來(lái)都是來(lái)自防火墻機(jī)器的,而并不會(huì)顯示出防火墻后面還有一個(gè)局域網(wǎng)。
下面的例子是為FORWARD和POSTROUTING鏈設(shè)置了缺省的策略,在使用偽裝時(shí),有一個(gè)缺省的POSTROUTING DROP策略是非常重要的,否則,就有可能有心懷惡意的用戶突破網(wǎng)關(guān)后偽裝它自己的身份。
下面的例子是為了撥號(hào)連接設(shè)置的,它可以動(dòng)態(tài)地分配IP地址:
規(guī)則的保存
使用腳本更改規(guī)則的問(wèn)題是:改動(dòng)每個(gè)規(guī)則都要調(diào)用命令iptables,而每一次調(diào)用iptables,它首先要把netfilter內(nèi)核空間中的整個(gè)規(guī)則集都提取出來(lái),然后再插入或附加,或做其他的改動(dòng),最后,再把新的規(guī)則集從它的內(nèi)存空間插入到內(nèi)核空間中,這顯然會(huì)花費(fèi)很多時(shí)間。
為了解決這個(gè)問(wèn)題,可以使用命令iptables-save和restore 。iptables-save用來(lái)把規(guī)則集保存到一個(gè)特殊格式的文本文件里,而iptables-restore則用來(lái)把這個(gè)文件重新裝入到內(nèi)核空間中。
這兩個(gè)命令最好的地方在于一次調(diào)用就可以裝載和保存規(guī)則集,而不像腳本中每個(gè)規(guī)則都要調(diào)用一次iptables。
iptables-save運(yùn)行一次就可以把整個(gè)規(guī)則集從內(nèi)核里提取出來(lái),并保存到文件里,而iptables-restore每次裝入一個(gè)規(guī)則表。換句話說(shuō),對(duì)于一個(gè)很大的規(guī)則集,如果用腳本來(lái)設(shè)置,那這些規(guī)則就會(huì)反復(fù)地被卸載、安裝很多次,而我們現(xiàn)在可以把整個(gè)規(guī)則集一次就保存下來(lái),安裝時(shí)則是一次一個(gè)表,這可是節(jié)省了大量的時(shí)間。所以,一旦測(cè)試結(jié)果令你滿意,你就可以將它們保存為腳本:
現(xiàn)在,信息包過(guò)濾表中的所有規(guī)則都被保存在文件iptables-script中。無(wú)論何時(shí)再次引導(dǎo)系統(tǒng),都可以使用 iptables-restore 命令將規(guī)則集從該腳本文件恢復(fù)到信息包過(guò)濾表,恢復(fù)指令如下所示:
如果您愿意在每次引導(dǎo)系統(tǒng)時(shí)自動(dòng)恢復(fù)該規(guī)則集,則可以將上面指定的這條命令放到任何一個(gè)初始化shell腳本中。
【linux下防火墻設(shè)置】相關(guān)文章:
linux的防火墻設(shè)置方法07-28
怎樣在linux代理服務(wù)上設(shè)置防火墻09-06
RedHat Linux下防火墻配置技巧07-09
Linux下如何設(shè)置交換文件07-19
Linux操作系統(tǒng)下串口設(shè)置及編程08-30
LINUX關(guān)閉防火墻的方法10-22
LINUX系統(tǒng)怎么關(guān)閉防火墻09-12