Username: Password:

让关闭的Linux操作系统实现防火墙功能
来源:作者: 天极论坛 发布时间:2007-11-21 13:26:00

一次在网上闲逛,突然看到论坛有一条消息说有一种方法,能够让已关闭的Linux机器继续运行ipchains,并且让这台机器继续实现防火墙的功能。当时我的第一反映是不屑一顾,难道一个防火墙还能够在关机的状态下工作?依照论坛中所指的链接,我找到了一个帖子,上面说在2.0.x内核中,使用Shutdown ?h(关机)命令能够使防火墙仍处于激活状态,而此时没有挂载驱动器,也没有进程在运行。也就是说防火墙将在Level 0下运行,但仍然能够进行包过滤。但是,贴子说该功能在2.2.x系统的内核中已不具备了。

  看到这儿,我有些坐不住了,我决定在内核为2.2.x的机器上也实现类似的功能,并且我希望不在内核中增加任何补丁。事实证实,我做到了。

  安全的防火墙

  我认为安全意味着这样一种可能性,也就是假设防火墙已被完全关闭,并且已清除了任何进程空间和文档系统,这样就不会有任何黑客能够对该系统进行访问。因为该机器上已完全没有了进程空间,也没有挂载驱动器。因此,黑客就无法在系统外使代码运行在内核空间中。因为这需要写解释代码来产生所需要的结果,而这是一项很艰苦的工作。

  但是需要提请注意的是,该防火墙并不能避免“拒绝服务式”的攻击。事实上,对于“拒绝服务式”攻击连同其他的专门耗尽资源的攻击,该防火墙并不比任何其他的防火墙有效。当然,现实中,一般来说系统并不容易受到这种攻击。

  因为这种方法能够确保没有一个用户能够控制该机器,因此能够使安全性大大的提高。这正好应了IT业安全领域常说的一句话,要想让一台机器绝对安全,就应该把他关机,然后将其锁在一间屋子里。

  开始实施

  我用于测试的是一台基于x86的Red Hat 6.2机器,他安装有两个网卡。整个过程无需特别的系统或对内核进行增改。开始,我尝试着在控制运行的脚本中搜索,希望能找到一点相关的线索。最后,我把焦点定格在rc0(该脚本在机器关闭时运行)脚本上。事实证实,这正是我要找的地方。于是我开始从中删除一些脚本,并且进行了一系列测试。

  经过一段相对较短的时间,我得出结论,对于Red Hat Linux 6.2,删除以下脚本就能够实现上述的功能:

  /etc/rc.d/rc0.d/S00killall

  /etc/rc.d/rc0.d/K90network

  /etc/rc.d/rc0.d/K92ipchains

  删除这三个脚本以后,我们就能够使网络仍然能够工作,并且使ipchains仍然运行。切记,一定要把killall脚本删除,因为他的任务是寻找/etc/rc.d/rc0.d/中任何的目录,并且运行任何以K为开头的脚本。也就是说该脚本会运行K90网络和K92ipchains脚本,而这两个脚本会删除网络和ipchains。

一些解释

  实际上,我们是把Linux配置成了一个内核子集。当机器暂停时,甚至是机器运行了Shutdown以后,这一部分内核仍驻留在内存中。这种方法能够避免在关机的过程中,机器会中止任何的进程,关闭任何网卡连同卸载任何的文档系统。此外,这种方法使得机器在关闭以后,不能再执行任何内部的任务。然而,内核仍然在运行,内存管理器也还在运行。

  由于内核仍然在运行,所以在关机以后,任何我们运行的,基于内核的任务都能够被运行。当然,由于大部分的任务都需要进行一些I/O操作(正如本例相同)。因此,我们必须让机器关闭以后,仍然使这些端口存在。这是通过K90network来实现。他使得网卡在关机以后也不会停止工作。

  此外,任何需要使用到的基于内核的服务都必须要处于运行状态(比如ipchains)。在缺省情况下,当系统关闭时,会把任何的 ipchains规则都中止。假如这样的话,在本例中,防火墙将无法工作,所以必须要把清除ipchains规则的脚本删除。在本例中即要删除 K92ipchains脚本。

  局限性

  在关闭系统以后,只让部分程式运行,这显然会有一些局限性。在本例中,最明显的局限性就是假如客户端的IP地址是通过后台程式(比如PPP、 DHCP)等获得的,那么就将无法实现该功能。这就限制了那些使用动态连接用户的使用。此外,由于在关系系统过程中,任何的用户代理空间(比如 Socks5)都将被关闭,因此在本例的配置中,只能实现包过虑和NAT功能。

  此外要考虑的一点是,由于任何的驱动器都被卸载了,任何的交换空间都从机器上被删除,所以假如机器的内存足够大的话,那么在处理的信息量很大时也不会有问题。但是假如使用的是一台性能比较差的老机器,那么在传输的信息量过大时就会出现一些问题。

  总结

  作为一个Linux爱好者,我觉得这一小发现很有意思。此外,在我们完成特定的安全任务时,这也给了我们一种特定的解决模式。现在,我最想知道的,是否其他的自由Unix(比如OpenBSD)也能够做成功类似的实验。此外,虽然我是在家中做的实验,但是假如将其用于中小型公司的话,我想能够为公司提供安全极高的数据包过滤功能。此外,也能够为一些大的商业任务提供一个很安全的、高带宽的防火墙或路由器。

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅