1。介紹
本文將介紹如何利用Linux來建立一個更具有實用意義的防火牆.
在當前,Internet越來越普遍的在企業,學校中使用,而安全問題也越來
越得到重視,如何能讓內部的用戶使用INTERNET而又能保護內部服務器以及
外部發布公共信息服務器的安全,這種需求使得防火牆廣泛的在企業中得到
廣泛的使用。但是,這種類型的防火牆是需要大量的經費的,如CISCO的IPX,
CHECK POINT的FIRWALL-I等。利用一個穩定內核的LINUX,同樣也能做到一個
功能齊備的防火牆,而它的費用也只是其他同類防火牆的幾十分只一。
感謝LINUX,它讓我們用簡單的步驟實現我們的目標。
本文可以自由轉載,只要不破壞以及修改本文即可。
2。概念
在開始創建防火牆之前,我們有幾個概念需要明白。
1。防火牆(Firewall),它是利用網絡層的ip包過濾程序以及一些規則
來保護內部網的一種策略,有硬件實現,以及軟件的實現。
2。停火區(非軍事區),也稱為DMZ,是一個公布信息的區域,外部
INTERNET以及內部INTRANET可以自由的訪問該區。
3。內部網(Intranet,or Private Network),是企業或學校內部使用
的網絡,可能重要的不對外公開的服務器都在其中。
4。外部網,可以說是INTERNET,是一個不安全的網絡,存在大量有用的
信息以及一些可能有惡意攻擊內部網的人。
5。地址轉換,內部網的任何機器通過防火牆時,源地址均被設置成防火牆的
外部地址。即在外部看來,內部的機器均是一個地址。
下面是一個圖例:
-----------------
Internet 192.168.2.0/24
-----------------
DMZ(停火區)
192.168.2.1 ------
---
192.168.1.1 192.168.1.0/24
防火牆 ------------------
------- ------
192.168.0.1
Intranet(內部網)192.168.0.0/24
-----------------------------------
------------------------------------
注:以上IP的設置不是真實的,這需要結合您本地的需要來重新設置。
外部網側的網卡是192.168.2.1
內部網側的網卡是192.168.0.1
DMZ側的網卡是:192.168.1.1
假定停火區中有一台機器(192.168.1.8)提供 80端口的WWW服務。
並假定內部網到外部需要進行NAT(地址轉換的功能)
3。目標
防火牆要實現的目標如下:
1。內部無限制的訪問INTERNET以及DMZ(停火區)。
2。外部可以訪問DMZ的機器的公開的端口。在本例中是80.
3。外部不能訪問到內部以及防火牆。
4。DMZ不可以訪問內部。
通過這個目標,您就可以實現了一個防火牆的需求:
1。保護內部網絡。
2。保護DMZ中的某些存在BUG的端口。只公布它需要提供的端口。
4。構建步驟
1。硬件:需要配好有3張網卡的機器。RAM越大越好。CPU越快越好。:-))
2。軟件:當然是linux啦。我用的是redhat 5.0,5.1也可以。
3。內核:要打開ip-firewall,ip-masqurade(如果您想實現地址轉換功能的話).....
具體可以看Firewall-HOWTO.
4。配置網卡,網上有很多配置的方法啦。
一般是先配好一張網卡,如果剩下的兩張是跟原來是不同型號的
,需要配置
一下/etc/conf.modules.加上網卡的類型模塊。如果是同類型的
網卡,就在
lilo.conf中加入append="ether=irq,iobase,eth0 ether=irq,iobase,eth1,ether=irq,iobase,eth2.
5。配置網卡的路由。
6。配置規則。也就是ipfwadm的規則啦。
有對ipfwadm不了解的可以看man ipfwadm or man ipfw.
#-----------------
ipfwadm -I -p deny
ipfwadm -O -p deny
ipfwadm -F -p deny
#------------------------------
# deny ip spoof.
ipfwadm -I -a deny -V 192.168.2.1 -S 192.168.0.0/24
ipfwadm -O -a deny -V 192.168.2.1 -D 192.168.0.0/24
# deny outside Access intranet
ipfwadm -I -a deny -V 192.168.2.1 -D 192.168.0.0/24
ipfwadm -O -a deny -V 192.168.2.1 -S 192.168.0.0/24 -k
# allow firewall access outside
ipfwadm -I -a accept -V 192.168.2.1 -D 192.168.2.1 -k
ipfwadm -O -a accept -V 192.168.2.1 -S 192.168.2.1
# deny outside access firewall
ipfwadm -I -a deny -V 192.168.2.1 -D 192.168.1.1
ipfwadm -I -a deny -V 192.168.2.1 -D 192.168.2.1
# allow inside access outside.
ipfwadm -O -a accept -V 192.168.0.1 -D 192.168.0.0/24 -k
ipfwadm -I -a accept -V 192.168.0.1 -S 192.168.0.0/24
# allow outside access DMZ.
ipfwadm -O -a accept -P tcp -V 192.168.1.1 -D 192.168.1.8 80
ipfwadm -I -a accept -P tcp -V 192.168.1.1 -S 192.168.1.8 80 -k
# IP FORWARD。。
ipfwadm -F -a m -S 192.168.0.0/24
ipfwadm -F -a accept -S 192.168.1.0/24
ipfwadm -F -a accept -D 192.168.1.0/24
4。測試
現在,您可以通過測試來查看規則設置得是否正確。
1。從內部網訪問外部INTERNEt,以及DMZ。
2. 從外部訪問DMZ,看是否可以訪問到80端口,以及是否可以訪問其他端口。
3。從外部訪問內部。看是否可以訪問到。--不可以。
5。結論
這是一種簡單的防火牆的配置方法。更復雜的配置還包括限制內部
用戶對外部IP的訪問。
現有的產品有清華得實的NETST防火牆,它提供圖形化的配置界面和
更加細致的訪問 控制以及針對IP的記費方案。
(詳情請致電010-62771617,62771618,62771619,62771620)
6。感謝
感謝清華得實的李智鵬,是他給了我一個從事防火牆開發的機會,
以及許多的建議和幫助。
感謝NCIC的趙鵬,是他提供了完成本文的機器。
感謝我的女友,是她給了我在工作上的支持和鼓勵。
感謝LINUX,它讓我們用簡單的步驟實現我們的目標。
# IP FORWARD。。
ipfwadm -F -a m -S 192.168.0.0/24
ipfwadm -F -a accept -S 192.168.1.0/24
ipfwadm -F -a accept -D 192.168.1.0/24
4。測試
現在,您可以通過測試來查看規則設置得是否正確。
1。從內部網訪問外部INTERNEt,以及DMZ。
2. 從外部訪問DMZ,看是否可以訪問到80端口,以及是否可以訪問其他端口。
3。從外部訪問內部。看是否可以訪問到。--不可以。
5。結論
這是一種簡單的防火牆的配置方法。更復雜的配置還包括限制內部
用戶對外部IP的訪問。
現有的產品有清華得實的NETST防火牆,它提供圖形化的配置界面和
更加細致的訪問 控制以及針對IP的記費方案。
(詳情請致電010-62771617,62771618,62771619,62771620)
6。感謝
感謝清華得實的李智鵬,是他給了我一個從事防火牆開發的機會,
以及許多的建議和幫助。
感謝NCIC的趙鵬,是他提供了完成本文的機器。
感謝我的女友,是她給了我在工作上的支持和鼓勵。
感謝LINUX,它讓我們用簡單的步驟實現我們的目標。