许多网站管理员只有在出现安全问题后,才了解系统安全防护的重要性。他们往往以安全维护工作太过繁复且投入过高为借口,认为把过多的精力投入到“看门”工作中,充当系统环境的“看门狗”颇有些得不偿失。然而,借助LAMP工具,为系统环境加装安全的“防盗门”并不是一件难事。本文将以Big Fish防火墙工具为例,向大家介绍如何对系统环境进行保护,该工具主要用于配置基于netfilter技术的防火墙。
目前,市场上有许多商业防火墙产品,销售商们可以根据用户的不同需要和网站大小开发出不同的针对性产品。例如,Checkpoint公司主要为生产环境开发防火墙和多种其它安全维护产品,Cisco公司为各种规模的网站提供PIX系列防火墙,既适用于商业网络也适用于家庭局域网。尽管Checkpoint 公司和Cisco公司的防火墙产品都具备十分强大的功能,而且具有较高的健壮性和可靠性,但是对这些防火墙进行配置和管理不仅需要昂贵的费用,而且要求管理人员具备专业的技术知识。
幸运的是,Linux系统中的了CP/IP堆栈具有较高的健壮性,具备较全面的信息包过滤、网络地址翻译和其它先进的防火墙功能。另外,netfiiter软件包可为高可用性系统提供简单的加载平衡。实际上,仅在Linux平台上就可以配置一个可满足商业需要的南陸能防火墙,可以在低成本的硬件设备上运行管理员所了解的免费操作系统,再由这些设备进一步搭建网络。
坦白地说,Linux防火墙解决方案的最大缺点之一是它的可用性较差。netfilter有时被人们称作一个“野陸十足的野兽”,十分不易控制。考虑到 Linux防火墙的这一缺点,人们开发了许多LAMP工具,使工作更加简单,Big Fish防火墙便是其中之一。
从http://bigfish.sourceforge.net网站上可以下载到Big Fish防火墙。Big Fish防火墙允许用户很方便地建立并管理自己的iptables防火墙程序。Big Fish包含有预先配置好的规则集(Rulesets),用户可以根据需要进行修改,也可以建立用户自己的规则集。这些常用规则集包括IP Spoofing、Syn Flood Blocking、Service Blocking及资源(SNAT)和目的地网络地址翻译(DNAT)规则集等。
对Big Fish软件包的开发工作是不间断的,目前的最新版本为1.33版,它可以与PHP 5和Linux 2.4内核兼容。Big Fish的开发者们正在开发新的版本,以便实现与PHP 4的兼容。
Big Fish的配置使用
Big Fish在使用前需要具备一些先决条件。这里的实验环境是一台运行Linux 2.4.20-8内核系统的Apache 1.3.28服务器,具备PHP5.3.0RCl和OpenSSL 0.9.7a支持的mod_SSL 2.8.1501.3.28。由于Big Fish可以从互联网上下载并操纵服务器,因此需要在Apache服务器上安装SSL组件。
系统还需要安装Sudo、Smarty Template Engine(可以从http://smarty.php.net/下载)、HTML_Common、HTML Menu、HTML_Table、HTML_QuickForm、File、File_Passwd、File_SearchReplace和 Net_Portscan模块。
为了安装PHP扩展及应用库(PEAR),还需要在命令行中写入PEAR的安装包名称。接下来需要为Apache 用户设置”Sudo”命令,缺省状态下的名称为”nobody”。首先,建立一个本地目录来存储防火墙程序,例如 /usr/local/bigfish/script,注意不要建立在网络根目录下。然后编辑”file/etc/sudoers”,并加入下列语句:
#Assuming you’re running apache as the user nobody
接下来,下载Big Fish软件包,并在Apache DocumnentRoot下建立一个名为Big Fish软件包放置在改目录下。 假定服务器用户名是“nobody”, 在cache/和templates_c/子目录下改变所以权和许可,具体命令如下:
$chown -R nobody : nobody cache
$chown -R 775 cache
$chown -R nobody : nobody templates_c
$chown -R 775 templates_c
然后使用文本编辑器打开bigfish/conf目录下的config.inc.php文件,对下列参数进行编辑设定,以便适用于具体系统:
$conf[‘path’] = ‘/usr/local/bigfish/script’;
$conf[‘username’] = ‘h31pm3’;
$conf[‘password’] = ‘h@ckm3’;
$conf[‘iptables’] = ‘/sbin/iptables’;
$conf[‘sudo’] = ‘/usr/bin/sudo’;
$conf[‘if_ext’] = ‘eth0’;
$conf[‘if_int’] = ‘eth0:1’; //A virtual interface on a single NIC
$conf[‘if_ext_ip’] = ‘192.168.1.1’;
$conf[‘if_int_ip’] = ‘192.168.2.1’
$conf[‘netmask’] = ‘255.255.254.0/8’
如果没有安装Smarty PHP模板引擎,可以从http://smarty.php.net/download.php下载到最新版本,本文使用的是2.6.6版本的 Smarty。Smarty的安装过程十分简单,打开软件包后,将所有文件和目录复制到PHP所包含路径的libs目录下,这里的复制路径为 /usr/local/lib/php/Smarty/。
最后,Big Fish应用程序使用到Apache的htpasswd身份验证技术。因此需要在bigfish目录下建立一个 .htaccess文件。没有这一步,Big Fish将无法正常工作。
现在,已经完成Big Fish设置文件的编辑和保存,安装了Smarty及所需的所有PEAR模块,可以尝试连接Big Fish的网络端口。需要注意的是,必须通过SSL使用一个URL(如
http://主机名/big fish)与该端口连接。如果已正确建立.htaccess文件,浏览器会提示输入htpasswd用户名和密码。身份验证准确无误后,还需要在PHP生成的注册表中使用conf.inc.php文件指定的用户名和密码再次进行身份验证。
解析Big Fish
Big Fish应用软件可分为安全防护、信息包过滤、资源(SNAT)和目的地网络地址翻译,以及优先级服务4个部分。
1. 安全功能
单击“security”选单可打开安全功能选项窗口。 这一功能可帮助用户阻止威胁系统安全的信息包进入,例如Ping of Death和Syn-Flood等。它还可以阻止各种聊天和即时消息的进入,如AOL、MSN、和IRC等。如果用户想与一些文件共享网络隔断,该选单还可以根据用户的选择阻隔Limewire、Kazza和Morpheus等网络。
用户可以方便地对安全选项进行扩展。 使用文本编辑器打开regras.php文件,并寻找$locks数组。 在这里,可以为防火墙添加或定制新的规则。例如,如果想要阻止一个运行与9102端口的、名为”Illegal WarezNet”的服务,可以在$locks数组中添加下列命令行:
array(‘#IllegalWarezNet:’
$conf[‘iptables’].” –A int_ext –p tcp –dport 9102 –j REJECT”)
当再次打开Security选单时,将在列表中看到新加入的功能。
2.信息包过滤功能
Big Fish的信息包过滤功能可以使用尸通过建立网络端口的规则集完全控制信息包的传输路径。当前的选项允许用户为起源于内部网络的信息包建立规则,从而使之输出到外部网络,同时是外部网络中的信息包输入内网时先通过防火墙。
3.资源(SNAT)和目的地网络地址翻译(DNAT)
SNAT/DNAT信息包重写的功能更加有趣。SNAT可使用户在IP域名中重写源地址。换句话说,使用SNAT规则可对内部网中的本地地址进行重写,使之成为互联网连接中的源IP地址。这一功能十分有用,用户可以借助此功能通过本地防火墙实现网络连接共享。
例如,使用Big Fish接口,用户可以方便地在防火墙中对来自互联网的信息包的HTTP地址进行重写,使之成为用户互联网连接IP。假设重写后的地址为69.68.147.63, 单击
SNAT/DNAT选单链接,在源端口和目标端口处输入同一数值”80”,为主机输入互联网连接地址,“Direction”项选择“SNAT”,“协议”项选择”TCP”协议。
DNAT可使用户在IP域名中对目标地址进行重写。通过一个DNAT规则,用户可以对用户主机上的信息包地址进行重写,使之成为新的目标IP地址。
例如,使用Big Fish接口,用户可以将目标HTTP信息包的地址重写,使之成为内部网IP地址。假设重写后的地址为192.168.2.1, 单击SNAT/DNAT,在源端口和目标端口处输人同一数值”80”,为主机输入地址”192.168.2.1”,”Direction” 项选择”SNAT”,”协议” 项选择”TCP” 协议。
综合使用DNAT和SNAT规则对信息包进行过滤,用户可以赋予内部网络服务器一个本地IP地址,并对主机进出的信息包进行重写,这样可以实现对本地服务器的有效防护。Big
Fish可使用户容易地为Apache服务器添加防火墙,因此用户无须将服务器置于外部Intemet中,并赋予一个公共IP地址。
4.优先级服务
Big Fish还为用户提供了一个简单的界面,使之可以对通过防火墙的各种服务进行优先级设定。例如,通过iptables的信息包分布功能,用户可以为SSH 信息包赋予一个比其它服务信息包更高的优先级。单击 ”Priority” 选单项,系统便显示出主机中支持的各项服务,选择”Port 22 (SSH)”并单击应用,便可为用户的规则集添加优先级。
Big Fish还具备防火墙状态显示功能。此项功能不仅能为用户显示应用于防火墙的精确规则语法,还能显示当前应用于用户主机的所有链接。这是一项十分实用的功能,尤其是当用户不得不自行编写规则时。用户完成新规则编写后,可以打开状态显示页,单击“Restart”按钮便可执行新的规则。
B5g Fish的发展前景
Big Fish 是一个非常优秀的产品,它不仅为用户提供了一个简单易用的操作界面,而且提供了充足的防火墙管理工具,即使是对最先进的防火墙也可发挥功效。
Big Fish的开发重点有数个方向,其中包括功能的拓展以便支持多个接口,实现真正netfilter/iptables管理。 下一代Big Fish工具将拥有一个捆绑式Smarty模板引擎,并增加netfilter内核模块的载入/卸载功能,以及更广泛的网络接口支持。
存储并建立一个严格的变动控制方案,用户可以从一个数据库中查找针对防火墙进行的所有修改。
综上所述,借助正确的工具,用户可以方便、快速地对防火墙进行配置。 无论是商用还是个人使用,最根本的目的是加强对数据库的控制。 通过对netfilter、Big Fish和LAMP工具的综合使用,用户可以简化对系统环境进行保护的过程。