Franky's LIFE

          Anything... ...

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

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

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

          構建 dmz的策略

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

          表1 網絡間訪問關系表

          內網 外網 dmz

          內網 / y y

          外 網 n / y

          dmz n n /



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

          1.內網可以訪問外網

          內網的用戶顯然需要自由 地訪問外網。在這一策略中,防火墻需要進行源地址轉換。

          2.內網可以訪問dmz

          此 策略是為了方便內網用戶使用和管理dmz中的服務器。

          3.外網不能訪問內網

          很 顯然,內網中存放的是公司內部數據,這些數據不允許外網的用戶進行訪問。

          4.外網可以訪 問dmz

          dmz中的服務器本身就是要給外界提供服務的,所以外網必須可以訪問dmz。同時,外網訪問dmz需要由防火墻完成對外地址到服 務器實際地址的轉換。

          5.dmz不能訪問內網

          很明顯,如果違背此策略, 則當入侵者攻陷dmz時,就可以進一步進攻到內網的重要數據。

          6.dmz不能訪問外網

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

          dmz 的實現

          根據以上訪問控制策略可以設定linux防火墻的過濾規則。下 面將在一個虛構的網絡環境中,探討如何根據以上六條訪問控制策略建立相應的防火墻過濾規則。這里的討論和具體應用會有所區別,不過這種討論將有助于實際應 用。用戶在實際應用時可根據具體的情況進行設置。該虛擬環境的網絡拓撲如圖1。

          圖1 dmz網絡拓撲圖



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

          對于防火墻,原則之一就 是默認禁止所有數據通信,然后再打開必要的通信。所以在防火墻腳本的最初,需要清空系統原有的規則,然后將input、output、forward的默 認規則設置為丟棄所有數據包。

          對應的防火墻腳本片段如下: # 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

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

          六種策略的實現。

          1.內網可以訪問外網

          對應的防火墻腳本片段如下:

          /sbin/iptables -t nat -a postrouting -s [內網地址] -d [外網地址] -o eth0 -j snat --to [nat的真實ip]

          當數據從連接外網的eth0流出時,要將來自內網的數據包的源地址改成internet上的真實ip,這樣才能和外網的主機進行通 信。“[nat的真實ip]”表示分配給nat用戶的真實ip,有幾個就寫幾個,以空格分開,但至少要寫一個。

          2.內網可以訪問dmz

          對應的防火墻腳本片段如下:

          /sbin/iptables -a forward -s [內網地址] -d [dmz地址] -i eth2 -j accept

          以上命令允許所有來自內網、目的地為 dmz的數據包通過。

          3.外網不能訪問內網

          對應的防火墻腳本片段如下:

          /sbin/iptables -t nat -a prerouting -s [外網地址] -d [內網地址] -i eth0 -j drop

          以上命令將來自 外網、去往內網的數據包全部丟棄。

          4.外網可以訪問dmz

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

          對應 的防火墻腳本片段如下:

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

          /sbin/iptables -a forward -p tcp -s [外網地址] -d [http服務器的實際ip] -i eth0 --dport 80 -j accept

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

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

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

          5.dmz不能訪問內網

          對 應的防火墻腳本片段如下:

          /sbin/iptables -a forward -s [dmz地址] -d [內網地址] -i eth1 -j drop

          以上命令將丟棄所有從dmz到內網的數據包。

          6.dmz 不能訪問外網

          對應的防火墻腳本片段如下:

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

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

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

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

          針對以上基本策略例舉了實現它們的基本規則。在實 際應用中,需要根據具體情況進行設置。只要設置得當,linux也能成為很好的防火墻。需要補充的是,無論何種防火墻都只能提供有限的保護。設置好防火墻 不等于網絡就是安全的,關鍵在于綜合運用各種安全手段。

          posted on 2010-06-12 14:41 Franky 閱讀(152) 評論(0)  編輯  收藏 所屬分類: IT知識
          主站蜘蛛池模板: 册亨县| 靖西县| 旬邑县| 秀山| 民丰县| 越西县| 永康市| 巴东县| 镇安县| 彩票| 友谊县| 通许县| 汶川县| 达日县| 金湖县| 营口市| 伊宁市| 阳高县| 湾仔区| 泽州县| 察雅县| 永新县| 广汉市| 安徽省| 景东| 岱山县| 沾益县| 新昌县| 洛隆县| 抚远县| 开平市| 大宁县| 武穴市| 泰来县| 松溪县| 合肥市| 烟台市| 罗田县| 罗山县| 南京市| 勃利县|