Franky's LIFE

          Anything... ...

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            53 隨筆 :: 87 文章 :: 6 評(píng)論 :: 0 Trackbacks
          ====================================================================================== --> 防守在網(wǎng)絡(luò)安全中的重要性不必多說。保護(hù)網(wǎng)絡(luò)最常見的方法就是使用防火墻。防火墻作為網(wǎng)絡(luò)的第一道防線,通 常放置在外網(wǎng)和需要保護(hù)的網(wǎng)絡(luò)之間。最簡(jiǎn)單的情況是直接將防火墻放置在外網(wǎng)和企業(yè)網(wǎng)絡(luò)之間,所有流入企業(yè)網(wǎng)絡(luò)的數(shù)據(jù)流量都將通過防火墻,使企業(yè)的所有客戶 機(jī)及服務(wù)器都處于防火墻的保護(hù)下。這對(duì)于一些中小企業(yè)來說是簡(jiǎn)單易行的,而且這種解決方法在某些情況下也表現(xiàn)不錯(cuò)。然而這種結(jié)構(gòu)畢竟比較簡(jiǎn)單。企業(yè)中有許 多服務(wù)器、客戶機(jī)等資源需要保護(hù),不同的資源對(duì)安全強(qiáng)度的要求也不同。不能用對(duì)待客戶機(jī)的安全級(jí)別來對(duì)待服務(wù)器,這樣服務(wù)器將會(huì)很危險(xiǎn);同樣,也不能用對(duì) 待服務(wù)器的安全級(jí)別來對(duì)待客戶機(jī),這樣用戶會(huì)感覺很不方便。

          針對(duì)不同資源提供不同安全級(jí)別的保 護(hù),可以考慮構(gòu)建一個(gè)叫做“demilitarized zone”(dmz)的區(qū)域。dmz可以理解為一個(gè)不同于外網(wǎng)或內(nèi)網(wǎng)的特殊網(wǎng)絡(luò)區(qū)域。dmz內(nèi)通常放置一些不含機(jī)密信息的公用服務(wù)器,比如web、 mail、ftp等。這樣來自外網(wǎng)的訪問者可以訪問dmz中的服務(wù),但不可能接觸到存放在內(nèi)網(wǎng)中的公司機(jī)密或私人信息等。即使dmz中服務(wù)器受到破壞,也 不會(huì)對(duì)內(nèi)網(wǎng)中的機(jī)密信息造成影響。

          許多防火墻產(chǎn)品都提供了dmz的接口。硬件防火墻由于 使用專門的硬件芯片,所以在性能和流量上有絕對(duì)的優(yōu)勢(shì)。軟件防火墻的性價(jià)比非常好,一般企業(yè)使用起來效果不錯(cuò)。如果使用linux防火墻,其成本將更低。 因此這里將要介紹的是在linux防火墻上劃分dmz區(qū)域的方法。

          構(gòu)建 dmz的策略

          linux從2.4內(nèi)核開始,正式使用iptables 來代替以前的ipfwadm和ipchains,實(shí)現(xiàn)管理linux的包過濾功能。linux的包過濾通過一個(gè)叫netfilter的內(nèi)核部件來實(shí)現(xiàn)。 netfilter內(nèi)建了三個(gè)表,其中默認(rèn)表filter中又包括3個(gè)規(guī)則鏈,分別是負(fù)責(zé)外界流入網(wǎng)絡(luò)接口的數(shù)據(jù)過濾的input鏈、負(fù)責(zé)對(duì)網(wǎng)絡(luò)接口輸出 的數(shù)據(jù)進(jìn)行過濾的output鏈,以及負(fù)責(zé)在網(wǎng)絡(luò)接口之間轉(zhuǎn)發(fā)數(shù)據(jù)過濾的 forward鏈。要構(gòu)建一個(gè)帶dmz的防火墻,需要利用對(duì)這些鏈的設(shè)定完成。首先要對(duì)從連接外部網(wǎng)絡(luò)的網(wǎng)卡(eth0)上流入的數(shù)據(jù)進(jìn)行判斷,這是在 input鏈上完成。如果數(shù)據(jù)的目標(biāo)地址屬于dmz網(wǎng)段,就要將數(shù)據(jù)轉(zhuǎn)發(fā)到連接dmz網(wǎng)絡(luò)的網(wǎng)卡(eth1)上;如果是內(nèi)部網(wǎng)絡(luò)的地址,就要將數(shù)據(jù)轉(zhuǎn)發(fā)到 連接內(nèi)部網(wǎng)絡(luò)的網(wǎng)卡(eth2)上。表1顯示了各個(gè)網(wǎng)絡(luò)之間的訪問關(guān)系。

          表1 網(wǎng)絡(luò)間訪問關(guān)系表

          內(nèi)網(wǎng) 外網(wǎng) dmz

          內(nèi)網(wǎng) / y y

          外 網(wǎng) n / y

          dmz n n /



          根據(jù)表1,可以明 確以下六條訪問控制策略。

          1.內(nèi)網(wǎng)可以訪問外網(wǎng)

          內(nèi)網(wǎng)的用戶顯然需要自由 地訪問外網(wǎng)。在這一策略中,防火墻需要進(jìn)行源地址轉(zhuǎn)換。

          2.內(nèi)網(wǎng)可以訪問dmz

          此 策略是為了方便內(nèi)網(wǎng)用戶使用和管理dmz中的服務(wù)器。

          3.外網(wǎng)不能訪問內(nèi)網(wǎng)

          很 顯然,內(nèi)網(wǎng)中存放的是公司內(nèi)部數(shù)據(jù),這些數(shù)據(jù)不允許外網(wǎng)的用戶進(jìn)行訪問。

          4.外網(wǎng)可以訪 問dmz

          dmz中的服務(wù)器本身就是要給外界提供服務(wù)的,所以外網(wǎng)必須可以訪問dmz。同時(shí),外網(wǎng)訪問dmz需要由防火墻完成對(duì)外地址到服 務(wù)器實(shí)際地址的轉(zhuǎn)換。

          5.dmz不能訪問內(nèi)網(wǎng)

          很明顯,如果違背此策略, 則當(dāng)入侵者攻陷dmz時(shí),就可以進(jìn)一步進(jìn)攻到內(nèi)網(wǎng)的重要數(shù)據(jù)。

          6.dmz不能訪問外網(wǎng)

          此 條策略也有例外,比如dmz中放置郵件服務(wù)器時(shí),就需要訪問外網(wǎng),否則將不能正常工作。

          dmz 的實(shí)現(xiàn)

          根據(jù)以上訪問控制策略可以設(shè)定linux防火墻的過濾規(guī)則。下 面將在一個(gè)虛構(gòu)的網(wǎng)絡(luò)環(huán)境中,探討如何根據(jù)以上六條訪問控制策略建立相應(yīng)的防火墻過濾規(guī)則。這里的討論和具體應(yīng)用會(huì)有所區(qū)別,不過這種討論將有助于實(shí)際應(yīng) 用。用戶在實(shí)際應(yīng)用時(shí)可根據(jù)具體的情況進(jìn)行設(shè)置。該虛擬環(huán)境的網(wǎng)絡(luò)拓?fù)淙鐖D1。

          圖1 dmz網(wǎng)絡(luò)拓?fù)鋱D



          如圖1所示,路由器連接internet和防火墻。作為防火墻的linux服 務(wù)器使用三塊網(wǎng)卡:網(wǎng)卡eth0與路由器相連,網(wǎng)卡 eth1與dmz區(qū)的hub相連,網(wǎng)卡eth2與內(nèi)網(wǎng)hub相連。作為一個(gè)抽象的例子,我們用“[內(nèi)網(wǎng)地址]”來代表“192.168.1.0/24”之 類的具體數(shù)值。同理還有“[外網(wǎng)地址]”和“[dmz地址]”。

          對(duì)于防火墻,原則之一就 是默認(rèn)禁止所有數(shù)據(jù)通信,然后再打開必要的通信。所以在防火墻腳本的最初,需要清空系統(tǒng)原有的規(guī)則,然后將input、output、forward的默 認(rèn)規(guī)則設(shè)置為丟棄所有數(shù)據(jù)包。

          對(duì)應(yīng)的防火墻腳本片段如下: # flush out the tables and delete all user-defined chains

          /sbin/iptables -f

          /sbin/iptables -x

          /sbin/iptables -t nat -f

          /sbin/iptables -t nat -x

          # drop every packet

          /sbin/iptables -p input drop

          /sbin/iptables -p output drop

          /sbin/iptables -p forward drop

          ====================================================================================== -->

          六種策略的實(shí)現(xiàn)。

          1.內(nèi)網(wǎng)可以訪問外網(wǎng)

          對(duì)應(yīng)的防火墻腳本片段如下:

          /sbin/iptables -t nat -a postrouting -s [內(nèi)網(wǎng)地址] -d [外網(wǎng)地址] -o eth0 -j snat --to [nat的真實(shí)ip]

          當(dāng)數(shù)據(jù)從連接外網(wǎng)的eth0流出時(shí),要將來自內(nèi)網(wǎng)的數(shù)據(jù)包的源地址改成internet上的真實(shí)ip,這樣才能和外網(wǎng)的主機(jī)進(jìn)行通 信。“[nat的真實(shí)ip]”表示分配給nat用戶的真實(shí)ip,有幾個(gè)就寫幾個(gè),以空格分開,但至少要寫一個(gè)。

          2.內(nèi)網(wǎng)可以訪問dmz

          對(duì)應(yīng)的防火墻腳本片段如下:

          /sbin/iptables -a forward -s [內(nèi)網(wǎng)地址] -d [dmz地址] -i eth2 -j accept

          以上命令允許所有來自內(nèi)網(wǎng)、目的地為 dmz的數(shù)據(jù)包通過。

          3.外網(wǎng)不能訪問內(nèi)網(wǎng)

          對(duì)應(yīng)的防火墻腳本片段如下:

          /sbin/iptables -t nat -a prerouting -s [外網(wǎng)地址] -d [內(nèi)網(wǎng)地址] -i eth0 -j drop

          以上命令將來自 外網(wǎng)、去往內(nèi)網(wǎng)的數(shù)據(jù)包全部丟棄。

          4.外網(wǎng)可以訪問dmz

          為了保護(hù) dmz中的服務(wù)器,外網(wǎng)對(duì)dmz的訪問也要加以限制。通常的思路是,只允許外網(wǎng)訪問dmz中服務(wù)器所提供的特定服務(wù),比如http。

          對(duì)應(yīng) 的防火墻腳本片段如下:

          /sbin/iptables -t nat -a prerouting -p tcp --dport 80 -d [分配給http服務(wù)器的internet上的真實(shí)ip] -s [外網(wǎng)地址] -i eth0 -j dnat --to [http服務(wù)器的實(shí)際ip]

          /sbin/iptables -a forward -p tcp -s [外網(wǎng)地址] -d [http服務(wù)器的實(shí)際ip] -i eth0 --dport 80 -j accept

          /sbin/iptables -a forward -p tcp -d [外網(wǎng)地址] -s [http服務(wù)器的實(shí)際ip] -i eth1 --sport 80 ! --syn -j accept

          /sbin/iptables -t nat -a prerouting -s [外網(wǎng)地址] -d [dmz地址] -i eth0 -j drop

          該防火墻腳本片段將開放http服務(wù),使得只有訪問 dmz中http服務(wù)的數(shù)據(jù)包才能通過防火墻。

          5.dmz不能訪問內(nèi)網(wǎng)

          對(duì) 應(yīng)的防火墻腳本片段如下:

          /sbin/iptables -a forward -s [dmz地址] -d [內(nèi)網(wǎng)地址] -i eth1 -j drop

          以上命令將丟棄所有從dmz到內(nèi)網(wǎng)的數(shù)據(jù)包。

          6.dmz 不能訪問外網(wǎng)

          對(duì)應(yīng)的防火墻腳本片段如下:

          /sbin/iptables -t nat -a postrouting -p tcp --dport 25 -d [外網(wǎng)地址] -s [郵件服務(wù)器的ip] -o eth0 -j snat --to [分配給smtp服務(wù)器的internet上的真實(shí)ip]

          /sbin/iptables -a forward -p tcp -s [郵件服務(wù)器的ip] -d [外網(wǎng)地址] -i eth1 --dport 25 -j accept

          /sbin/iptables -a forward -p tcp -d [郵件服務(wù)器的ip] -s [外網(wǎng)地址] -i eth0--sport 25 ! --syn -j accept

          以上命令先允許dmz中郵件服務(wù)器連接外網(wǎng)的smtp服務(wù)端口(25),然 后禁止其它從dmz發(fā)往外網(wǎng)的數(shù)據(jù)包。

          針對(duì)以上基本策略例舉了實(shí)現(xiàn)它們的基本規(guī)則。在實(shí) 際應(yīng)用中,需要根據(jù)具體情況進(jìn)行設(shè)置。只要設(shè)置得當(dāng),linux也能成為很好的防火墻。需要補(bǔ)充的是,無論何種防火墻都只能提供有限的保護(hù)。設(shè)置好防火墻 不等于網(wǎng)絡(luò)就是安全的,關(guān)鍵在于綜合運(yùn)用各種安全手段。

          posted on 2010-06-12 14:41 Franky 閱讀(146) 評(píng)論(0)  編輯  收藏 所屬分類: IT知識(shí)
          主站蜘蛛池模板: 天长市| 东方市| 连城县| 牙克石市| 突泉县| 休宁县| 甘泉县| 时尚| 博兴县| 鄂伦春自治旗| 平乡县| 简阳市| 佛坪县| 竹北市| 利辛县| 萍乡市| 蒙山县| 余江县| 呼伦贝尔市| 灌南县| 松桃| 玛多县| 达日县| 米易县| 鄄城县| 塘沽区| 天柱县| 连云港市| 垦利县| 万全县| 临朐县| 贞丰县| 舞阳县| 高碑店市| 江孜县| 望奎县| 云安县| 四子王旗| 图们市| 德兴市| 平乐县|