科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航



ZDNet>安全频道>ZD评测>搭建基于netfilter/iptables的防火墙实验环境

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍了搭建基于netfilter/iptables的防火墙实验环境的详细步骤以及根据不同的网络客户范围进行相应设置。

来源:51cto 2008年09月19日

关键字:硬件防火墙 防火墙 iptables Netfilter

  防火墙作为一种网络或系统之间强制实行访问控制的机制,是确保网络安全的重要手段。针对不同的需求和应用环境,可以量身定制出不同的防火墙系统。防火墙大到可由若干路由器和堡垒主机构成,也可小到仅仅是网络操作系统上一个防火墙软件包所提供的包过滤功能。 在众多网络防火墙产品中,Linux操作系统上的防火墙软件特点显著。首先是Linux操作系统作为一个类Unix网络操作系统,在系统的稳定性、健壮性及价格的低廉性方面都独具优势。更为重要的是,Linux不但本身的源代码完全开放,而且系统包含了建立Internet网络环境所需要的所有服务软件包,如Apache Web服务器、DNS服务器、Mail服务器、Database服务器等。同样,基于Linux的防火墙软件不但具有强大的功能,而且大部分都是开放软件。

  随着Internet的飞速发展,安全问题越来越重要。利用Linux构建企业网深受中小企业的青睐,而利用Linux构建企业网的防火墙系统也成为众多中小企业的理想选择。 Linux 内核从1.1版本开始,就已经具备包过滤功能。在2.0内核中,开始采用Ipfwadm来操作内核的包过滤规则。到2.2版本时,Linux内核采用了 Ipchains来控制内核的包过滤规则。发展到2.4.x时,Ipchains被一个全新的包过滤管理工具Iptables所替代。新发布的2.6版内核也在安全方面进行了改进。因此,无论拥有哪个版本的Linux内核,无论选择哪个版本的Linux来构建自己的企业网,都可以利用现有的系统构建出一个理想实用的防火墙。 防火墙系统可分为包过滤型、应用级网关(也叫代理服务器型防火墙)和电路级网关三种基本类型。

  Linux提供的防火墙软件包内置于Linux内核中,是一种基于包过滤型的防火墙实现技术。其中心思想是根据网络层IP包头中的源地址、目的地址及包类型等信息来控制包的流向。更彻底的过滤则是检查包中的源端口、目的端口以及连接状态等信息。 Netfilter是Linux核心中一个通用架构,用于扩展各种服务的结构化底层服务。它提供一系列的表(tables),每个表由若干链(chains)组成,而每条链中可以由一条或数条规则(rule)组成。它可以和其它模块(如iptables模块和nat模块)结合起来实现包过滤功能。Iptables是一个管理内核包过滤的工具,可以加入、插入或删除核心包过滤表格中的规则。实际上真正来执行这些过滤规则的是Netfilter 。

  硬件平台:

  ① R.H linux9.0系统pc一台(FireWall)三个8139 TP-LINK 网卡

  Eth0(IP:218.197.93.115)

  Eth1(IP:192.168.1.1)

  Eth2(IP:192.168.2.1)

  ② R.H linux9.0系统pc一台B(SERVER)一个8139 TP-LINK 网卡

  C(IP:192.168.1.2)

  ③ 笔记本A一台双系统(windows Xp和R.H linux9.0)一个8139网卡,Cute-ftp软件一套

  A(IP:192.168.2.2)

  ④windows Xp系统pc一台一个8139网卡,Cute-ftp软件一套

  B(IP:218.197.93.161)

  ⑤RJ45交叉线若干

  实验目的:

  一> 实现FireWall的NAT功能让A能访问WAN(218.197.93.254)

  二>在SERVER上开启ftp,web服务(简单的)使得A,B正常访问C

  三>开启防火墙

  1. 内网可以访问外网

  内网的用户显然需要自由地访问外网。在这一策略中,防火墙需要进行源地址转换。

  2. 内网可以访问DMZ

  此策略是为了方便内网用户使用和管理DMZ中的服务器。

  3. 外网不能访问内网

  很显然,内网中存放的是内部数据,这些数据不允许外网的用户进行访问。

  4.外网可以访问DMZ

  DMZ中的服务器本身就是要给外界提供服务的,所以外网必须可以访问DMZ。同时,外网访问DMZ需要由防火墙完成对外地址到服务器实际地址的转换。

  5.DMZ不能访问内网

  很明显,如果违背此策略,则当入侵者攻陷DMZ时,就可以进一步进攻到内网的重要数据。

  6.DMZ不能访问外网

  DMZ中的服务器专门用于给外界提供服务的,所以外网必须可以访问DMZ,而DMZ中的服务器则不允许主动访问外网。

  实验步骤:

  一>实现路由功能:

  首先来配置eth0。给这个网络接口分配地址218.197.93.115,运行下列命令:

  # ifconfig eth0 218.197.93.115 netmask 255.255.255.0

  为了使这个地址不再计算机重新启动后消失,编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,

  DEVICE = eth0

  ONBOOT = yes

  BROADCAST = 218.197.93.255

  NETWORK = 218.197.93.0

  NETMASK = 255.255.255.0

  IPADDR = 218.197.93.115

  增加一条静态路由:

  # route add -net 218.197.93.0 netmask 255.255.255.0

  接下来,配置eth1,eth1与192.168.1.0网段相连,分配给它的地址是192.168.1.1,使用ifconfig命令为它配置参数:

  # ifconfig eth1 192.168.1.1 netmask 255.255.255.0

  编辑/etc/sysconfig/network-scripts/ifcfg-eth1文件,

  DEVICE = eth1

  ONBOOT = yes

  BROADCAST = 192.168.1.255

  NETWORK = 192.168.1.0

  NETMASK = 255.255.255.0

  IPADDR = 192.168.1.1

  增加一条静态路由:

  # route add -net192.168.1.0 netmask 255.255.255.0

  最后配置eth2,它连接192.168.2.0网段,分配的IP地址是192.168.2.1,执行下列命令:

  # ifconfig eth2 192.168.2.1 netmask 255.255.255.0

  - 5 -

  编辑/etc/sysconfig/network-scripts/ifcfg-eth2文件

  DEVICE = eth2

  ONBOOT = yes

  BROADCAST = 192.168.2.255

  NETWORK = 192.168.2.0

  NETMASK = 255.255.255.0

  IPADDR = 192.168.2.1

  增加一条静态路由:

  # route add -net 192.168.2.0 netmask 255.255.255.0

  这样网络中就有三条静态路由记录了:

  # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface

  218,197.93.115 *255.255.255.0U 0 0 0 eth0

  192.168.1.0*255.255.255.0U 0 0 0 eth1

  192.168.2.0*255.255.255.0U 0 0 0 eth2

  还要为系统增加一条缺省路由,因为缺省的路由是把所有的数据包都发往它的上一级网关,因此增加如下的缺省路由记录:

  # route add default gw 218.197.93.254

  这样系统的静态路由表建立完成,它的内容是

  # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface

  218,197.93.115 *255.255.255.0U 0 0 0 eth0

  192.168.1.0*255.255.255.0U 0 0 0 eth1

  192.168.2.0*255.255.255.0U 0 0 0 eth2

  default218.197.93.254 0.0.0.0 UG 0 0 0 eth0

  二>在C上开启www,ftp服务:

  #service httpd start

  #service vsftpd start

  三>在防火墙上初始化设置

  ◆防火墙上初始化

  #service iptables stop

  #iptables -F

  #iptables -t nat -F

  #iptables -X

  #iptables -t nat -X

  #iptables -Z

  #iptables -t nat -Z

  #iptables -P INPUT DROP

  #iptables -P OUTPUT DROP

  #iptables -P FORWARD DROP

  #iptables -t nat -P POSTROUTING DROP

  #service iptables start

  ◆最后一步,要增加系统的IP转发功能,执行如下命令打开ip转发功能:

  echo 1 >/proc/sys/net/ipv4/ip_forward

  四>在防火墙上实现端口地址映射:

  ◆允许A机器访问WAN

  iptables -A FORWARD -s 192.168.2.0/24 -i eth2 -j ACCEPT

  ◆A往C的包都允许

  iptables -A FORWARD -s 192.168.2.0/24 -d 192.168.1.0/24 -i eth2 -j ACCEPT

  ◆WAN往A的包都不允许

  iptables -t nat -A PREROUTING -s 0.0.0.0/0 -d 192.168.2.0/24 -i eth0 -j DROP

  ◆允许WAN向内部发送已建立连接的包和相关连接的包。

  iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 218.197.93.115

  ◆允许WAN发往www,ftp服务器的包并把对网关的www,ftp请求转发到内部的www,ftp服务器上。

  #iptables -t nat -A PREROUTING -p tcp --dport 80 -d 218.197.93.115 -s 0.0.0.0/0 -i eth0 -j DNAT --to 192.168.1.2

  #iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 192.168.1.2 -i eth0 --dport 80 -j ACCEPT

  #iptables -A FORWARD -p tcp -d 0.0.0.0/0 -s 192.168.1.2 -i eth1 --sport 80 ! --syn -j ACCEPT

  #iptables -t nat -A PREROUTING -p tcp --dport 20,21 -d 218.197.93.115 -s 0.0.0.0/0 -i eth0 -j DNAT --to 192.168.1.2

  #iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 192.168.1.2 -i eth0 --dport 20,21 -j ACCEPT

  #iptables -A FORWARD -p tcp -d 0.0.0.0/0 -s 192.168.1.2 -i eth1 --sport 20,21 ! --syn -j ACCEPT

  #iptables -t nat -A PREROUTING -s 0.0.0.0/0 -d 192.168.1.0/24 -i eth0 -j DROP

  C不能访问A,B

  iptables -A FORWARD -s 192.168.1.0/24 –d 0.0.0.0/0 -i eth1 -j DROP

  4.透明性

  防火墙的透明性指防火墙对于用户是透明的,在防火墙接入网络时,网络和用户无需做任何设置和改动,也根本意识不到防火墙的存在。

  防火墙作为一个实际存在的物理设备,要想放入已存在地网络中又不对网络有任何影响,就必须以网桥的方式置入网络。传统方式下,防火墙安装时,更象是一台路由器或者网关,原有网络拓扑结构往往需要改变,网络设备(包括主机和路由器)的设置(IP和网关、DNS、路由表等等)也需要改变。但如果防火墙采用了透明模式,即采用类似网桥的方式运行,用户将不必重新设定和修改路由,也不需要知道防火墙的位置,防火墙就可以直接安装和放置到网络中使用。

  透明模式最大的好处在于现有网络无需做任何改动,这就方便了很多客户,再者,从透明模式转换到非透明模式又很容易,适用性显然较广。当然,此时的防火墙仅仅起到一个防火墙的作用,其他网关位置的功能如NAT、VPN功能不再适用,当然,其他功能如透明代理还可以 继续使用。

  目前透明模式的实现上可采用ARP代理和路由技术实现。此时防火墙相当于一个ARP代理的功能。内网(可以仍含有路由器或子网,依次类推)、防火墙、路由器的位置大致如下:

  内网―――――防火墙―――――路由器

  (需要说明的是,这种方式是绝大多数校园网级网络的实现方式)

  内网主机要想实现透明访问,必须能够透明的传送内网和路由器之间的ARP包,而此时由于事实上内网和路由器之间无法连通,防火墙就必须配置成一个ARP代理(ARP Proxy)在内网主机和路由器之间传递ARP包。防火墙所要做的就是当路由器发送ARP广播包询问内网内的某一主机的硬件地址时,防火墙用和路由器相连接口的MAC地址回送ARP包;内网内某一主机发送ARP广播包询问路由器的硬件地址时,防火墙用和内网相连接口的MAC地址回送ARP包,因此路由器和内网主机都认为将数据包发给了对方,而实际上是发给了防火墙转发。

  显然,此时防火墙还必须实现路由转发,使内外网之间的数据包能够透明的转发。另外,防火墙要起到防火墙的作用,显然还需要把数据包上传给本身应用层处理(此时实现应用层代理、过滤等功能),此时需要端口转发来实现(?这个地方不是十分清楚,也没找到相关资料)。透明模式和非透明模式在网络拓扑结构上的最大区别就是:透明模式的两块网卡(与路由器相连的和与内网相连的)在一个网段(也和子网在同一个网段);而非透明模式的两块网卡分别属于两个网段(内网可能是内部不可路由地址,外网则是合法地址)。

  这个过程如下:

  1. 用ARP代理实现路由器和子网的透明连接(网络层)

  2. 用路由转发在IP层实现数据包传递(IP层)

  3. 用端口重定向实现IP包上传到应用层(IP层)

  前边我们讨论过透明代理,和这里所说的防火墙的透明模式是两个概念。透明代理主要是为实现内网主机可以透明的访问外网,而无需考虑自己是不可路由地址还是可路由地址。内网主机在使用内部网络地址的情况下仍然可以使用透明代理,此时防火墙既起到网关的作用又起到代理服务器的作用(显然此时不是透明模式)。

  需要澄清的一点是,内外网地址的转换(即NAT,透明代理也是一种特殊的地址转换)和透明模式之间并没有必然的联系。透明模式下的防火墙能实现透明代理,非透明模式下的防火墙(此时它必然又是一个网关)也能实现透明代理。它们的共同点在于可以简化内网客户的设置而已。

  目前国内大多防火墙都实现了透明代理,但实现了透明模式的并不多。这些防火墙可以很明显的从其广告中看出来:如果哪个防火墙实现了透明模式,它的广告中肯定会和透明代理区分开而大书特书的。

  5.可靠性

  防火墙系统处于网络的关键部位,其可靠性显然非常重要。一个故障频频、可靠性很差的产品显然不可能让人放心,而且防火墙居于内外网交界的关键位置,一旦防火墙出现问题,整个内网的主机都将根本无法访问外网,这甚至比路由器故障(路由器的拓扑结构一般都是冗余设计)更让人无法承受。

  防火墙的可靠性也表现在两个方面:硬件和软件。

  国外成熟厂商的防火墙产品硬件方面的可靠性一般较高,采用专门硬件架构且不必多说,采用PC架构的其硬件也多是专门设计,系统各个部分从网络接口到存储设备(一般为电子硬盘)集成在一起(一块板子),这样自然提高了产品的可靠性。

  国内则明显参差不齐,大相径庭,大多直接使用PC架构,且多为工业PC,采用现成的网卡,DOC/DOM作为存储设备。工业PC虽然可靠性比普通PC要高不少,但是毕竟其仍然是拼凑式的,设备各部分分立,从可靠性的角度看显然不如集成的(著名的水桶原理)。

  国内已经有部分厂家意识到了这个问题,开始自行设计硬件。但大多数厂家还是从成本的角度考虑使用通用PC架构。

  另外一方面,软件可靠性的提高也是防火墙优劣的主要差别所在。而国内整个软件行业的可靠性体系还没有成熟,软件可靠性测试大多处于极其初级的水平(可靠性测试和bug测试完全是两个概念)。一方面是可靠性体系建立不起来,一方面是为了迎合用户的需求和跟随网络应用的不断发展,多数防火墙厂商一直处于不断的扩充和修改中,其可靠性更不能让人恭维。

  总的来说,如同国内大多数行业(除了少数如航天、航空)一样,网络安全产品特别是防火墙的可靠性似乎还没有引起人们的重视。 6.市场定位

  市场上防火墙的售价极为悬殊,从数万元到数十万元,甚至到百万元不等。由于用户数量不同,用户安全要求不同,功能要求不同,因此防火墙的价格也不尽相同。厂商因而也有所区分,多数厂家还推出模块化产品,以符合各种不同用户的要求。

  总的说来,防火墙是以用户数量作为大的分界线。如checkpoint的一个报价:

  CheckPoint Firewall-1 4.1 25user 19000.00

  CheckPoint Firewall-1 4.1 50user 31000.00

  CheckPoint Firewall-1 4.1 100user 51000.00

  CheckPoint Firewall-1 4.1 250user 64000.00

  CheckPoint Firewall-1 4.1 无限用户 131000.00

  从用户量上防火墙可以分为:

  a. 10-25用户:

  这个区间主要用户为单一用户、家庭、小型办公室等小型网络环境。防火墙一般为10M(针对 硬件防火墙而言),两网络接口,涵盖防火墙基本功能:包过滤、透明模式、网络地址转换 、状态检测、管理、实时报警、日志。一般另有可选功能:VPN、带宽管理等等。

  这个区间的防火墙报价一般在万元以上2万元以下(没有VPN和带宽管理的价格更低)。

  据调查,这个区间的防火墙反而种类不多,也许是国内厂商不屑于这个市场的缘故?

  b. 25-100用户

  这个区间用户主要为小型企业网。防火墙开始升级到100M,三或更多网络接口。VPN、带宽管 理往往成为标准模块。 这个区间的防火墙报价从3万到15万不等,根据功能价格有较大区别。相对来说,这个区间上 硬件防火墙价格明显高于软件防火墙。 目前国内防火墙绝大部分集中在这个区间中。

  c. 100-数百用户

  这个区间主要为中型企业网,重要网站、ISP、ASP、数据中心等使用。这个区间的防火墙较多考虑高容量、高速度、低延迟、高可靠性以及防火墙本身的健壮性。并且开始支持双机热备份。这个区间的防火墙报价一般在20万以上。这样的中高端防火墙国内较少,有也是25-100用户的升级版,其可用性令人怀疑。

  d. 数百用户以上

  这个区间是高端防火墙,主要用于校园网、大型IDC等等。我们接触较少,不多做讨论。当然其价格也很高端,从数十万到数百万不等。

  总的来说,防火墙的价格和用户数量、功能模块密切相关,在用户数量相同的情况下,功能越多,价格就越贵。如Netscreen的百兆防火墙: NetScreen-100f(AC Power) -带防火墙+流量控制等功能,交流电源,没有VPN功能报价在¥260,000而在此基础上增加了128位VPN功能的报价则高出5万元:¥317,500

  7. 研发费用

  如同其他网络安全产品一样,防火墙的研发费用也是很高的。防火墙由于技术含量较高,人员技术储备要求较高,防火墙核心部分的研发必须要对操作系统有相当的熟悉,所需为UNIX系统下开发人员,而目前国内真正能拿的出手的UNIX程序员数量还是太少(远远少于Windows平台下开发人员),人员成本很高。

  总的来说,防火墙的研发是一个大项目,而且其前期定位一定要准确,该做什么、不该做什么,哪些功能得实现,哪些功能不必实现、哪些功能可以在后期实现,一定要清楚,否则费用会远远超出预计。

  下边对一个中小型企业级防火墙的研发费用作个简单的估计。

  研发时,防火墙可以细分为(当然在具体操作时往往需要再具体划分):

  内核模块

  防火墙模块(含状态检测模块)

  NAT模块

  带宽管理模块

  通信协议模块

  管理模块

  图形用户界面模块(或者Web界面模块)

  透明代理模块(实质属于NAT模块)

  透明模式模块(包括ARP代理子模块、路由转发子模块等)

  各应用代理模块(包括URL过滤模块)

  VPN模块

  流量统计与计费模块

  审计模块

  其他模块(如MAC、IP地址绑定模块、简单的IDS、自我保护等等)

  上边把防火墙划分为12个模块,其中每一个模块都有相当的工作量要做,除了弹性较大的内核模块和防火墙模块(它们的工作量可能异常的大,视设计目标不同),其他模块暂定10人周的话就需要120周(VPN的工作量也相当大),两个主模块各按20人周计算,防火墙实现总共需要150人周。加上前期10- 15人周论证、定方案,后期20人周(保守数字)集成、测试,前后总共需要约210人周。按每人周1200元开发费用(折合工资5000月,但由于有运行费用、保险等费用摊分,个人工资应远低于这个数字),开发费用约需25万。

  显然,这个数字只是一个局外人估计的下限,实际的研发应该超出这个数字很多。

  8. 可升级能力(适用性)和灵活性

  对用户来说,防火墙作为大成本投入的商品,势必要考虑到可升级性的问题,如果防火墙不能升级,那它的可用性和可选择余地势必要大打折扣。目前国内防火墙一般都是软件可升级的,这是因为大多数防火墙采用电子硬盘(少数采用磁盘),实现升级功能只要很小的工作量要做。但究竟升级些什么内容?升级周期多长一次?这就涉及到一个灵活性的问题。

  防火墙的灵活性主要体现在以下几点:

  a. 易于升级

  b. 支持大量协议

  c. 易于管理(如纳入通用设备管理体系(支持SNMP)而不是单列出来)

  d. 功能可扩展

  这里对功能可扩展做一简单讨论。一般情况下,防火墙在设计完成以后,其过滤规则都是定死的,用户可定制的余地很小。特别如URL过滤规则(对支持URL过滤的防火墙而言),当前网络中的漏洞是不断发现的,如最近很猖獗的codered攻击的就是Windows机器IIS服务器的ida漏洞,而我们如果能够及时定义过滤规则,对于“GET /default.ida”的请求及时过滤,那么内网主机(此时一般为DMZ内主机)的安全性就会高很多,内网管理人员也不必时时密切关注网络漏洞(这是个工作量很大,既耗费体力又容易出现遗漏的工作)。这样大部分工作留给防火墙厂家来做(相应需要有一个漏洞监测体系),用户肯定会满意很多。另外,灵活性一开始也往往不是前期设计所能设计的很完美的,它需要和用户具体实践相配合。另外灵活性也是和具体环境密切结合的,往往需要在不同的用户环境里考虑。

推广二维码
邮件订阅

如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

重磅专题