Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->Linux安全 ->正文

iptables配置工具比较

来源:linux.chinaunix.net 作者:Linux时代  时间:2007-04-22 点击: [收藏] [投稿]
在过去几年中,linux作为防火墙平台的应用显著增长。从早期1.2版内核的ipfwadm开始,Linux的防火墙代码也走过了很长一段路程了。在2.4版的Linux内核中,使用了netfilter体系。在最新的2.4版中,Linux大大加强了安全性,例如:更好的加密支持和 netfilter体系的使用。netfilter具有完全的向后兼容性。

  本文将对iptables的配置做一个综述并且重点介绍一些iptables的配置工具。本文的讨论将着眼于linux内核的IP防火墙以及其各种界面的配置工具,比如:GUI或者脚本(shell、Perl或者特定的配置语言)。使用这些工具能够简化iptables的配置减少配置的错误。关于 iptables的知识请参考Rusty Russell写的Linux iptables HOWTO。

  使用命令行配置iptables的困难

  使用iptables的命令行接口来配置iptables防火墙对一个人来说是一个挑战,用户很难指定所有IP报文的行为。用户需要对TCP/IP 和应用层协议有较深的了解。象其前辈ipchains一样,iptables把IP过滤规则归并到链中,IP报文遍历规则链接受处理,还可以送到另外的链接受处理,或者最后由默认策略(ACCEPT、DROP、REJECT)处理。有些网络应用程序比其它一些程序更容易穿过防火墙,因此需要理解网络连接的建立和断开。

  我们看一下POP3协议,这是最简单的协议之一。允许所有向内目标端口是110的报文通过通过无法解决所有的管理问题,因为这样只能使客户端向发出申请,而服务器却无法应答。另外,如果使用网络地址转换(NAT)和其它方式的报文转发,也存在许多问题。因为防火墙的配置将影响到整个企业的安全,所以应该特别小心。下面将大概地讨论iptables的配置,要获得更多细节请参考linux iptables HOWTO

  iptables的命令行选项

  在进入这时的讨论之前,我们看一下iptables命令行选项的一个总结。

  规则链维护选项

  1.建立新的规则链(-N)

  2.删除一个空的规则链(-X)

  3.改变一个内置规则链的策略(-P)

  4.列出一条规则链中的规则(-L)

  5.擦写一条规则链中的规则(-F)

  规则维护

  1.在一条规则链中加入一条新的规则(-A)

  2.删除一条规则链中某个位置的规则(-D)

  iptables的优点

  在讨论各种iptables配置工具之前,让我们看一下iptables的优点,尤其是netfilter比ipchains具有的优势。

  iptables允许建立状态(stateful)防火墙,就是在内存中保存穿过防火墙的每条连接。这种模式对于有效地配置FTP和DNS以及其它网络服务是必要的。


  iptables能够过滤TCP标志任意组合报文,还能够过滤MAC地址。

  系统日志比ipchains更容易配置,扩展性也更好。

  对于网络地址转换(Network Address Translation)和透明代理的支持,netfilter更为强大和易于使用。

  iptable能够阻止某些DOS攻击,例如SYS洪泛攻击。

  iptables配置工具

  现在,我们看一下linux iptables的一些配置工具。我主要关注每个工具的特征、弹性和易用性。我们将讨论以下的工具:

  MonMotha's Firewall 2.3.5 作者:MonMotha

  Firewallscript (iptables 4.4c-3 devel) 作者:Patrik Hildingsson

  Ferm-0.0.18 作者:Auke Kok

  AGT-0.83 作者:Andy Gilligan

  Knetfilter-1.2.4 作者:Luigi Genoni

  gShield-2.0.2 作者:R. Gregory

  MonMotha的Firewall 2.3.5

  MonMotha写的Firewall 2.3.5是一个大约30K的shell脚本。目前,主要适用于基于主机的保护,因为一些基于网络的选项正在开发中。这个脚本的界面(例如:给 iptables传递配置选项的方法)有点混乱。不过,它不需要配置文件而且安装容易,直接复制到任何地方都可以。默认情况下,它根本不做什么,实际上根本就不执行,也缺少文档。这个脚本对于拨号用户可能有点用处。

  Firewallscript

  Firewallscript(IFS 4.4d)也是一个bash脚本,大约有85K。这个脚本可以用于基于主机和网络的防护。首次运行时,它会直接产生一个配置文件。不过,在默认情况下,这个文件不起什么作用,只有测试作用。这个脚本可以配置NAT和地址伪装。这个脚本非常复杂,但是缺少文档,因此最好能够仔细阅读它的代码,使用 iptables -L命令哪个链已经生效,什么被允许/拒绝。这个脚本的IP报文追踪功能还可以为你提供娱乐。此外,它还会自动探测、加载iptables需要的内核模块。这个脚本和上一个脚本还具有取消(undo)功能,能够恢复iptables原来的配置文件。

  Ferm

  Ferm是一个Perl脚本,使用一种类C语言写成的配置文件。这种语言非常容易阅读和理解。这个脚本有很好的文档和丰富的示例作为参考。

  这是一个例子:

  -----------------------------------------------------------------------------

  # simple workstation example for ferm

  chain input {

  if ppp0 # put your outside interface here

  {

  proto tcp goto fw_tcp;

  proto udp goto fw_udp;

  proto icmp goto fw_icmp;


  }

  }

  chain fw_tcp proto tcp {

  dport ssh ACCEPT;

  syn DENY log;

  dport domain ACCEPT;

  dport 0:1023 DENY log;

  }

  chain fw_udp proto udp {

  DENY log;

  }

  chain fw_icmp proto icmp {

  icmptype (

  destination-unreachable time-exceeded

  ) ACCEPT;

  DENY log;

  }

  -----------------------------------------------------------------------------

  这个配置文件将使ferm产生iptables如下规则:允许向外的ssh和DNS报文通过;阻塞所有的UDP报文;只允许两种类型的ICMP消息通过:目的不可达和超时,并绝拒绝和日志其它类型的ICMP消息。

  AGT

  AGT是一个使用C语言编写的程序。从它的代码来看,目前还处于开发阶段。不支持automake,需要手工编辑Makefile文件,文档也不是很丰富,但是其配置文件非常简单。下面就是一个配置文件:

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:MPPE加密VPN服务器详解   下一篇:Linux系统中虚拟化方法、技术及实现

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号