建立安全防火墙系统实例讲解

发表于:2007-06-23来源:作者:点击数: 标签:
随着网络应用的不断发展和深入,我们对于那些沟通信息的纽带也越来越依赖,如何保证 网络安全 、稳定、畅通地运行也就成为紧迫而且重要的问题。 鉴于目前防火墙已经成为最普遍的网络安全 解决方案 ,在这里我们就主要讨论如何建立一个安全的防火墙系统。 防

   
  随着网络应用的不断发展和深入,我们对于那些沟通信息的纽带也越来越依赖,如何保证网络安全、稳定、畅通地运行也就成为紧迫而且重要的问题。
  
  鉴于目前防火墙已经成为最普遍的网络安全解决方案,在这里我们就主要讨论如何建立一个安全的防火墙系统。

  
  防火墙是什么东西呢?它相当于一个阀门,一个过滤器或者说国家的海关、边防检查站,负责审查经过的数据和信息,根据设定的规则处理不同的情况。由此可见,建立一个安全的防火墙系统并不仅仅取决于购买了什么牌子的设备,更重要的是在于使用者是否了解本企业网络的情况、掌握用户的实际需求并正确地付诸实施。
  
  目前防火墙主要有三类:建立在通用操作系统上的软件防火墙、具有安全操作系统的软硬件结合的防火墙和基于专用安全操作系统的硬件防火墙。代表产品有Check Point、东大阿派Neteye、Linux下的IPChains、Cisco的PIX等等。
  
  目前的防火墙从结构上讲,可分为两种:
  
  1.应用网关结构
  
  内部网络<—>代理网关(Proxy Gateway)<—>Internet。
  
  2.路由器加过滤器结构
  
  内部网络<—>过滤器(Filter)<—>路由器(Router)<—>Internet。
  
  总的来讲,应用网关结构的防火墙系统在安全控制的粒度上更加细致,多数基于软件系统,用户界面更加友好,管理控制较为方便;路由器加过滤器结构的防火墙系统多数基于硬件或软硬件结合,速度比较快,但是一般仅控制到第三层和第四层协议,不能细致区分各种不同业务;有一部分防火墙结合了包过滤和应用网关两种功能,形成复合型防火墙。具体使用防火墙则应该根据本企业实际情况加以选择。
  
  下面我就用一个实际例子讲解建立安全防火墙系统的过程。
  
  网络结构拓扑图
  建立安全防火墙系统实例讲解
  网络情况如图所示。
  
  所有的内部网络用户通过两个路由器连接防火墙,防火墙作为本网络的唯一出口连接到Internet。内部网络有两个网段:192.168.1.0 /255.255.255.0和192.168.2.0 /255.255.255.0。
  
  在本例中,我使用的是基于Linux 的软件防火墙 IPChains 。它运行在系统内核,采用路由器加过滤器结构,但也可以与SQUID等软件组成复合型应用网关防火墙。IPChains在系统内核层运行,可以保证更高的速度和稳定性,性能远高于运行在应用程序层的防火墙软件。根据我个人经验,一台运行在PII 300计算机上的双网卡防火墙,其包转发速度就可以达到45~60M/S,满足300个用户使用。作为防火墙的主机两端地址分别为 192.168.233.1/255.255.255.248(内部端口)和202.102.184.1/255.255.255.252(外部端口)。
  
  首先,我们应该确定用户的需求,再根据需求进行实现。
  
  经调研,用户需求如下:
  
  1、保障内部网络安全,禁止外部用户连接到内部网络。
  
  2、保护作为防火墙的主机安全,禁止外部用户使用防火墙的主机Telnet、FTP等项基本服务,同时要保证处于内部网络的管理员可以使用Telnet管理防火墙。
  
  3、隐蔽内部网络结构,保证内部用户可以通过仅有的一个合法IP地址202.102.184.1连接Internet。同时要求许可内部用户使用包括E-Mail、WWW浏览、News、FTP等所有Internet上的服务。
  
  4、要求对可以访问Internet的用户进行限制,仅允许特定用户的IP地址可以访问外部网络。
  
  5、要求具备防止IP地址盗用功能,保证特权用户的IP不受侵害。
  
  6、要求具备防IP地址欺骗能力。
  
  其次,根据用户需求设计解决方案。
  
  方案设计如下:
  
  1、安装一台Linux服务器,配置双网卡,两端地址分别为192.168.233.1 /255.255.255.252(内部端口ETH 0)和202.102.184.1/255.255.255.248(外部端口ETH 1)。在IPChains中去除诸如 HTTPD、Finger、DNS、DHCP、NFS、SendMail之类所有不需要的服务,仅保留Telnet和FTP服务,以保证系统运行稳定,提高网络安全性。
  
  2、启动IPChains后,为保证安全性,首先将Forward Chains的策略设置为DENY,禁止所有的未许可包转发,保障内部网安全性,以满足需求1。
  
  eg:# ipchains-P forward DENY
  
  3、为满足需求2,必须禁止所有来自外部网段对防火墙发起的低于1024端口号的连接请求。在此,我做了如下设定来阻止对ETH1端口请求连接小于1024端口号的TCP协议的数据报(请求连接数据报带有SYN标记,IPChains中使用参数-y表示)
  
  eg:#ipchains -A input -p tcp -d 202.102.184.1 0:1024 -y -i eth1 -j DENY
  
  之所以不是简单的拒绝所有小于1024端口号的数据报在于,某些情况下服务器会回复一个小于1024接口的数据报。比如某些搜索引擎就可能在回复查询中使用一个不常用的小于1024的端口号。此外,当使用DNS查询域名时,如果服务器回复的数据超过512字节,客户机使用TCP连接从53端口获得数据。
  
  4、为满足需求3,必须使用IP地址翻译功能。来自内部保留地址的用户数据包在经过防火墙时被重写,使包看起来象防火墙自身发出的。然后防火墙重写返回的包,使它们看起来象发往原来的申请者。采用这种方法,用户就可以透明地使用因特网上的各种服务,同时又不会泄露自身的网络情况。注意,对于FTP服务,需要加载FTP伪装模块。命令如下:
  
  eg: # insmod ip_masq_ftp
  
  5、为满足需求4,可以在已经设置为DENY的Forward Chains中添加许可用户。因为许可这部分用户使用所有的服务,访问所有的地址,所以不用再指定目标地址和端口号。假定许可IP地址为192.168.1.22,配置命令如下:
  
  eg: #ipchains-A forward-s 192.168.1.22 -j MASQ
  
  同时,必须启动系统的IP包转发功能。出于安全的考虑,建议在设置了Forward Chains的策略设置为DENY,禁止所有的未许可包转发后再开启转发功能。
  
  配置命令如下:
  
  # echo 1 > /proc/sys/net/ipv4/ip_forward
  
  6、关于防止IP地址盗用问题,在本网络拓扑中,可见所有用户都是通过两个路由器连接到防火墙,所以只需要在路由器中建立授权IP地址到MAC地址的静态映射表即可。如果有客户机直接连接到防火墙主机,就需要使用ARP命令在防火墙主机中建立IP地址到MAC地址的静态映射表。
  
  7、对于需求6,只要在进入端口中设定IP地址确认,丢弃不可能来自端口的数据包就可以了。配置命令如下:
  
  # ipchains -A input -i eth1 -s 192.168.0.0/255.255.0.0 -j DENY
  
  至此,就算基本建立起来一个较为安全的防火墙了,再针对运行中出现的问题进行修改,调试无误后就可以用ipchains-save命令将配置保存起来。需要再次使用时,用命令 ipchains-restore即可。
  
  其他的包过滤防火墙与IPChains的运行原理都相差不远,配置命令也大同小异。市面上出售的防火墙虽然可以预置一些基本的内容,但由于最终用户要求和环境千差万别,免不了要自己动手配置。
  
  从上面的例子我们可以看出,建立一个安全的防火墙关键在于对实际情况的了解,对用户需求的掌握和对工具的熟练运用与正确实施上,这是真正的重点。

原文转自:http://www.ltesting.net