BBS水木清华站∶精华区

发信人: vertex (lancelord), 信区: Linux 
标  题: 基于LINUX的具有DMZ(非军事区)的防火墙的构建 
发信站: BBS 水木清华站 (Sun Oct 18 20:02:50 1998) 
 
                 
/* 原文出自http://frost.ncic.ac.cn/~xhg/  
   欢迎建议和意见 
*/ 
 
                基于linux的具有DMZ(非军事区)的防火墙  
 
                         
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,它让我们用简单的步骤实现我们的目标。 
 
 
-- 
※ 修改:·vertex 於 Oct 18 20:05:54 修改本文·[FROM:  159.226.41.179] 
※ 修改:·vertex 於 Oct 18 20:07:28 修改本文·[FROM:  159.226.41.179] 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 159.226.41.179] 

BBS水木清华站∶精华区