让关闭的Linux操作系统实现防火墙
作者:佚名 来源:it167 发布时间:2009-02-10 18:11: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)也可以做成功类似的实验。此外,虽然我是在家中做的实验,但是如果将其用于中小型公司的话,我想可以为公司提供安全极高的数据包过滤功能。此外,也可以为一些大的商业任务提供一个非常安全的、高带宽的防火墙或者路由器。
猜你喜欢
- 施密特:Chrome将成为PC和Mac之外第三种平台(图片来自互联网)腾讯科技讯(编译/晁晖)北京时间5月15日消息,据国外媒体报道,谷歌首
- 一个无厘头“水帖”成网民狂欢时刻24小时点击超700万,回帖超30万,成就网络匪夷所思“奇迹”7月16日早上10点59分,是一个见证“奇迹”
- 1、服务器必须支持URL重写。2、后台开启伪静态。3、栏目设置使用动态。4。添加文档时选择使用动态浏览。5。需要修改php文件include
- 网站如何盈利,对于许多月收入不到数百的站长来说,确实是个横亘在眼前的一大难题。不过,在互联网大潮中,确实有许多站长在闷声赚钱,很多站长不是不
- 11月12日消息,世界著名的搜索引擎服务提供商Google与国内最大的电子商务软件及服务提供商ShopEx正式达成合作伙伴关系,双方将在目前
- WIN2003 IIS --> 右键 --> 所有任务 --> 备份/还原配置 备份后文件会保存在 %WINDIR%\sy
- 核心提示:鞭牛士与搜狐IT共同打造的公益性平台网编训练营,第35期嘉宾是CNET中国现CBSi)执行主编高飞先生,谈网络编辑初入行业如何起步
- 失败并不可怕可怕的是不总结,作者总结了10中失败的原因并且加以分析。大多数网站站长是不赚钱的,并且往往是亏钱。做网站失败是非常普遍的现象。那
- 1、博客链接有用么?解答:博客链接的作用是有的,但是要给blog常更新内容,现在很多blog都用ajax,意义不大。csdn 挺不错的,会被
- 最近才上的服务器,出现了无法删除文件夹的情况,文件可以删除,文件夹删除的时候提示The directory is not empty,解决办
- 上载了文档,为什么网站显示不出来呢? 如果你上载网站内容后却看不到你的网站,检查如下事项。第一、要是你的网站内容正常显示,你必须要把文档上载
- 据新加坡《联合早报》10月15日报道,发明全球互联网的英国人伯纳斯承认,当初在网址前面加上双斜线实在有欠考虑。据报道,伯纳斯大约30年前想出
- 序言在我们跑Web服务器的时候,大家可能都会一致认为使用Linux+Mysql+Apache+PHP整个开源的系统是比较好的选择,但是我个人
- 对你的数据进行备份是至关重要的,但是如果你不知道如何恢复这些数据,那些备份对你来说根本没有用处。这里是一个用微软系统中心数据保护管理器(DP
- 店主称其姐姐为生男孩想将一岁半的女儿送人,发帖只为给孩子找个好家庭网上购物却发现待售的商品竟然是“女婴&rdqu
- WordPress是世界上使用最为广泛PHP博客程序,他拥有近乎无尽的主题和插件,简单易用。他既可以通过各种各样的插件他自己武装成一个CMS
- 在网上看了一大堆资料,昨天终于在阿唐哥的帮助下配成了Linux(RH9)下的subversion。总结各路经验将安装配置过程写在下面:一、所
- 1、准备,下载需要的文件。这里假定你已经正确安装配置好了JDK。到Apache官方网站下载所需要的文件:httpd-2.2.0.tar.gz
- 虽然这些年来,每一个新发布的新版Exchange Server都保留了先前版本的一些特征,但是某些版本和其他的版本相比较而言,还是有了更多的
- 疑似谷歌操作系统LogoGoogle Chrome界面北京时间10月14日中午消息,据国外媒体昨日报道,一位用户得到了谷歌Chrome OS