不想错过重要资讯?
马上订阅新闻邮件!
 
a 您现在的位置: 中计在线 >> 信息化 >> 业界观察 >> 文章正文
量身定制一款免费的防火墙
作者:佚名    文章来源:中计在线    更新时间:2008-1-25 15:42:16
【字体:
 中计在线信息化频道全心上线!全力推动中国信息化进程!信息决策,易如反掌,尽在CIW信息化!
中移动去年净赚660亿
[寻找下一个1000亿] [发行A股没有时间表]
·农村信息服务发展呈现三大趋势
·手机病毒悄然来临,你准备好了吗?
·腾讯总裁刘炽平否认Q币属于虚拟货币
·2007年科技产业发展预测

夏武 徐继哲

自由软件不但功能强大,更重要的是赋予了用户使用软件的自由。

对于常规的网络安全应用,我们完全可以用自由软件定制出符合自己需求的防火墙。

  什么是自由软件?自由软件强调的是用户的自由,而不仅仅是费用问题。其需要满足一定自由度才能称得上是自由软件

  自由软件的历史要追溯到Richard Stallman在1983年发起的自由软件运动。该运动以GNU工程为核心,开发了大量优秀的自由软件,比如GNU Emacs、GNU GCC、GNU GDB等,最终的目标是要开发一个完整的、自由的操作系统。随着这些自由软件日渐流行,为了保证已经发行的自由软件能够继续自由下去,Richard Stallman创造性地发明了对称版权(Copyleft)思想,并在1985年实现了第一个对称版权许可证作为GNU Emacs的许可证。在1991年,GNU实现了GNU GPL Version 2。在GNU GPL Version 2的守护之下,大量的优秀自由软件不断涌现,其中名气最大的是Linux Kernel。

  在流行定制的今天,普通用户自己定制个人计算机可能已是司空见惯的事情了,定制防火墙倒是比较新鲜。当需要用到防火墙的时候,你可能会马上想到去市场上买一个某某厂家生产的防火墙,因为定制防火墙可能不像定制个人计算机那么简单。

不过,在自由软件的帮助下,你也可以轻松地定制自己的防火墙,在节省一大笔开销和享受定制乐趣的同时,更好地保护自己或者组织的网络安全。

  下面我们将介绍一下利用现有的自由软件定制防火墙的步骤。

软硬件准备

说起定制防火墙需要的硬件,很多你淘汰的计算机都可以派上用场。当然,现在计算机硬件价格变得越来越便宜,在硬件上的选择会更多。下面我们将以x86架构的硬件为例。

具体的要求可考虑以下两个方面:

首先,对于存储设备,可以考虑使用IDE硬盘或者CF Card。存储设备上的分区格式可以采用EXT3或者EXT2格式,并在使用之前分好区。
其次,最好有三个网络接口,也就是三块网络接口卡,包括进口、出口以及DMZ。

在计算机上安装一个GNU Linux系统或者使用LiveCD。对硬盘分区的命令如下(假定我们要安装防火墙的硬盘为IDE,在GNU Linux下对应的设备文件是/dev/hdb):

#fdisk /dev/hdb
分完区之后,我们可以格式化分区:
#mkfs.ext3 /dev/hdb1
接着将格式化的分区挂载到/mnt/firewall:
#mount -t ext3 /dev/hdb1 /mnt/firewall

定制防火墙需要的自由软件包括:
①netfilter/iptables;②SSH Daemon;③DHCP和DNS服务器;④Grub;⑤uClibc和交叉编译工具链;⑥Linux内核;⑦BusyBox;⑧构建防火墙规则集的工具,例如Firewall Builder。

编译内核及应用程序

 编译内核需要考虑是否将内核模块直接编译进内核,因为防火墙的内核实现部分是以内核模块的形式存在的。二者的区别在于,将内核模块不直接编译进内核相比较而言扩展性更好一些。不过,为了简单起见,我们将内核模块直接编译进内核。

在配置内核选项的时候,强烈推荐将Netfilter相关的选项和网卡驱动程序都选上,并且这些选项都应该是静态编译的。

配置完选项之后就可以编译了,编译会花费几分钟的时间。编译完成之后将在arch/ARCHICTURE/boot(比如arch/i386/boot)下生成一个叫做Bzimage的内核映像文件,这个文件在下面的步骤中将用到。

编译应用程序非常简单。需要注意的一点是,要用前面下载的交叉编译工具链编译后面的应用程序。

首先解压缩下载的BusyBox源代码包,执行“make menuconfig”进行配置。在进行配置的时候,一个重要的选项是指定交叉工具链中GCC的位置,这对编译机器和目标机器体系结构不同的情况比较有用。另外,Ifconfig、IP和Udhcp选项和子选项需要激活。等这些都配置好之后,需要配置Init Utilities部分,把需要在系统启动阶段启动的服务都打开。接着是编译Iptables、Openssh、Dnsmasq和Grub。如果遇到问题的话,这些自由软件都有很好的安装文档。

制作文件系统

需要安装的软件在前面已经编译好了,该是制作文件系统的时候了。首先,将BusyBox安装到/mnt/firewall目录下,这时你会看到一个很熟悉的环境。接下来在/mnt/firewall下面创建几个文件夹:dev、etc、lib、proc、usr和boot。接着,我们将往新创建的文件夹里面创建和拷贝程序、库文件。然后将交叉编译工具链的lib目录下的库文件拷贝到lib目录;拷贝Iptables和Dnsmasq的可执行文件到sbin目录;在dev目录下创建设备文件。最后我们用Chroot方式创建根用户和启动脚本,其中启动脚本里面的防火墙规则可以通过Firewall Builder这样的自由软件来定制。

我们这里选择Grub作为引导程序。将Grub里面的stage1、stage2、e2fs_stage_1_5拷贝到boot目录下,然后编辑menu.list,安装Grub的引导程序。到此,定制防火墙的工作基本上完成了。重新启动,定制的成果马上就可以看到了。

   Netfilter和Iptables已经提供了非常强大的功能,大部分情况下够用了。如果你需要一些特别的功能的话,完全可以基于Netfilter开发自己的特色内核模块。

开发管理界面

如果你觉得基于命令行的防火墙管理不方便的话,我们可以自己定制防火墙的Web管理界面。首先,需要确定使用的网页服务器。常用的网页服务器包括Apache、Lighttpd等,可以考虑使用Apache作为我们的网页服务器。但是,由于Apache功能很强大,对于我们的防火墙来说,很多功能都是用不到的,所以我们需要对Apache的功能进行裁剪。

  接下来是选择开发语言的问题。开发语言间差异比较大,有C、C++、Perl、PHP、Python可供选择。由于我们的防火墙可能会运行在一些内存比较有限的机器上,并且对速度要求比较高,业务流程也比较简单,所以C和C++是比较适合的语言。当然你也可以用其他的语言,依赖于你的具体情况。

  总的来说,对于常规的网络安全应用,我们完全可以用已有的自由软件定制出符合自己需求的防火墙,而不必购买硬件防火墙设备,这就是自由软件的价值。自由软件不但功能强大,更重要的是赋予了用户使用软件的自由。在面对网络安全这样的关键应用的时候,自由软件让你能够自己控制自己的命运,而不依赖某个厂商。

责任编辑:罗提
  • 上一个文章:
  • 下一个文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     相关文章
    开源安全工具你敢用吗
    反病毒 从来就没有救世主
    对待开源  厂商为何“犹抱琵琶半遮面”
    开源安全技术的四大好处
    新速通卡就能速通了吗
    为Web Services设计定价策略
    自顶向下与自底向上
    做项目就像烧开水
    你的分销数据哪个环节出了错
    北京烟草:18个配送中心如何集中
     相关评论
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    用户名:
    · 您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
    · 留言板管理人员有权保留或删除其管辖留言中的任意内容
    · 本站提醒:不要进行人身攻击与无聊谩骂。谢谢配合。
    热门文章
    最新推荐