让封闭的Linux操纵系统实现防火墙
核心提示:1次在网上闲逛,忽然看到论坛有1条消息说有1种方法,可让已封闭的Linux机器继续运行ipchains,并且让这台机器继续实现防火墙的功能。当时我的第1反应是不屑1顾,难道1个防火墙还可以在关机的状态下工作?依照论坛中所指的链接....
1次在网上闲逛,忽然看到论坛有1条消息说有1种方法,可让已封闭的Linux机器继续运行ipchains,并且让这台机器继续实现防火墙的功能。当时我的第1反应是不屑1顾,难道1个防火墙还可以在关机的状态下工作?依照论坛中所指的链接,我找到了1个帖子,上面说在2.0.x内核中,使用Shutdown ?h(关机)命令可使防火墙仍处于激活状态,而此时没有挂载驱动器,也没有进程在运行。也就是说防火墙将在Level 0下运行,但依然可以进行包过滤。不过,贴子说该功能在2.2.x系统的内核中已不具有了。
看到这儿,我有些坐不住了,我决定在内核为2.2.x的机器上也实现类似的功能,并且我希看不在内核中增加任何补钉。事实证实,我做到了。
安全的防火墙
我以为安全意味着这样1种可能性,也就是假定防火墙已被完全封闭,并且已清除所有进程空间和文件系统,这样就不会有任何黑客可以对该系统进行访问。由于该机器上已完全没有了进程空间,也没有挂载驱动器。因此,黑客就没法在系统外使代码运行在内核空间中。由于这需要写解释代码来产生所需要的结果,而这是1项非常艰苦的工作。
不过需要提请留意的是,该防火墙其实不能避免“拒尽服务式”的攻击。事实上,对“拒尽服务式”攻击和其它的专门耗尽资源的攻击,该防火墙其实不比任何其它的防火墙有效。固然,现实中,1般来讲系统其实不轻易遭到这类攻击。
由于这类方法可以确保没有1个用户可以控制该机器,因此可使安全性大大的进步。这正好应了IT业安全领域常说的1句话,要想让1台机器尽对安全,就应当把它关机,然后将其锁在1间屋子里。
开始实行
我用于测试的是1台基于x86的Red Hat 6.2机器,它安装有两个网卡。全部进程无需特殊的系统或对内核进行增改。开始,我尝试着在控制运行的脚本中搜索,希看能找到1点相干的线索。最后,我把焦点定格在rc0(该脚本在机器封闭时运行)脚本上。事实证实,这正是我要找的地方。因而我开始从中删除1些脚本,并且进行了1系列测试。
经过1段相对较短的时间,我得出结论,对Red Hat Linux 6.2,删除以下脚本便可以够实现上述的功能:
/etc/rc.d/rc0.d/S00killall
/etc/rc.d/rc0.d/K90network
/etc/rc.d/rc0.d/K92ipchains
删除这3个脚本以后,我们便可以够使网络依然可以工作,并且使ipchains依然运行。切记,1定要把killall脚本删除,由于它的任务是寻觅/etc/rc.d/rc0.d/中所有的目录,并且运行所有以K为开头的脚本。也就是说该脚本会运行K90网络和K92ipchains脚本,而这两个脚本会删除网络和ipchains。
1些解释
实际上,我们是把Linux设置成了1个内核子集。当机器暂停时,乃至是机器运行了Shutdown以后,这1部份内核仍驻留在内存中。这类方法可以免在关机的进程中,机器会中断所有的进程,封闭所有网卡和卸载所有的文件系统。另外,这类方法使得机器在封闭以后,不能再履行任何内部的任务。但是,内核依然在运行,内存治理器也还在运行。
由于内核依然在运行,所以在关机以后,所有我们运行的,基于内核的任务都可以被运行。固然,由于大部份的任务都需要进行1些I/O操纵(正如本例1样)。因此,我们必须让机器封闭以后,依然使这些端口存在。这是通过K90network来实现。它使得网卡在关机以后也不会停止工作。
另外,任何需要使用到的基于内核的服务都必须要处于运行状态(比如ipchains)。在缺省情况下,当系统封闭时,会把所有的ipchains规则都中断。假设这样的话,在本例中,防火墙将没法工作,所以必须要把清除ipchains规则的脚本删除。在本例中即要删除K92ipchains脚本。
局限性
在封闭系统以后,只让部份程序运行,这明显会有1些局限性。在本例中,最明显的局限性就是假设客户真个IP地址是通过后台程序(比如PPP、DHCP)等取得的,那末就将没法实现该功能。这就限制了那些使用动态连接用户的使用。另外,由于在关系系统进程中,所有的用户代理空间(比如Socks5)都将被封闭,因此在本例的设置中,只能实现包过虑和NAT功能。
另外要考虑的1点是,由于所有的驱动器都被卸载了,所有的交换空间都从机器上被删除,所以假设机器的内存足够大的话,那末在处理的信息量很大时也不会有题目。但是假设使用的是1台性能比较差的老机器,那末在传输的信息量过大时就会出现1些题目。
总结
作为1个Linux爱好者,我觉得这1小发现很故意思。另外,在我们完成特定的安全任务时,这也给了我们1种特定的解决模式。目前,我最想知道的,是否是其它的自由Unix(比如OpenBSD)也能够做成功类似的实验。另外,固然我是在家中做的实验,但是假设将其用于中小型公司的话,我想可以为公司提供安全极高的数据包过滤功能。另外,也能够为1些大的贸易任务提供1个非常安全的、高带宽的防火墙或路由器。
http://www.fw8.net/TAG:防火墙,功能,脚本,机器,内核
评论加载中...
|