IT运维管理,创造商业价值!
中国IT运维网首页 | 资讯中心 | 运维管理 | 信息安全 | CIO视界 | 云计算 | 最佳案例 | 运维资源 | 专题策划 | 知识库 | 论坛

如何用老式奔腾机和Linux构建防火墙(1)

2005年09月20日
/

老式奔腾机并不只是堵门搁脚的垃圾,它们仍可用来计算!实际上,一个装有 32MB 内存和 200-400MB 硬盘的的小机器就可以胜任小型办公网络防火墙的任务。 Linux 的紧凑版本只含有重要的系统应用程序,而没有图形用户接口和用户应用程序。安装了紧凑版本的 Linux 之后,您就可以漂亮地把老机器变成防火墙了。

完成这些只需要一个叫 ipchains 的公开源码的软件包,它是由 Paul "Rusty" Russell 提供的。这个软件具备了许多商业防火墙产品的特征:允许自定义网络通信量的流向,及哪些访问者可以获准进出。

早期的 ipfwadm (IP Firewall Administration) 可以运行在 2.0.X 及更低的版本的 Linux 上。后来 ipchains 取代了 ipfwadm,且能工作在所有 2.1.x 和 2.2.x 版本的 Linux 下。随着内核升级,它还将升级到 2.3.x 下的 netfilter 或其他更高版本。这么频繁更新的原因在于,防火墙的数据包过滤是基于内核本身的,因此防火墙软件就必须亦步亦趋地紧随内核变动。本文讨论了 ipchains 是什么,它能做什么以及如何应用于不同场合。

Ipchains 和防火墙
ipchains 本质上是包过滤器。它检查到达网络接口的 IP 包,根据事先定义好的规则进行修改,然后再转发给其它接口。

每个 IP 包都含有报头 ( header),里面含有该包的目的地、及如何处理等控制信息(参见下图)。需要传送的数据则放在有效段(或称为包体)中。通常情况下,有效段可以包含更高一级的包。例如,一个 TCP 包就总是包含于 IP 包的有效段中,该 TCP 包拥有自己的报头和有效段。我们将会看到,ipchains 软件可以改变 IP 报头、TCP 报头、UDP 报头(未显示)和 ICMP 报头内的一些域值.


ipchains 的名称来自其工作特点。它能够创建合理过滤步骤,根据用户定义的规则来处理包。这些步骤被"链接"在一起来创建包处理的完整规则体系。这个处理"链条"可以与具体的 IP 地址,或者网络地址相结合。如下所示,系统中可以有很多这样的"链条"来处理每个进入的 IP 包:


运行 ipchains 的机器可以拥有许多网络接口,每个接口都连接在不同的网络上。任何可用的防火墙至少应有两个独立的接口,一个连到内部网络,另一个连到外部网络。数据包从一个接口进入,经由过滤"链条" 传给另一个接口。

最简单的情况下,ipchains 只执行三种策略:接受、和拒绝。它能接受来自指定 IP 地址或网络的所有包,否决策略丢弃来自特定地方的所有包。拒绝策略则丢弃来自指定源头的包,并且通知该源头其请求的连接被拒绝.

有三类基本的链: 输入链正向链输出链 。输入和输出链分别处理对应于进入和流出接口的包的执行策略。正向链直接将通信量传送给另一机器(在其执行了输入链后)。这里的"另一"机器多数情况下是路由器。ipchains 本身并不希望成为完全的路由引擎,所以它把包转交给本机上的真正的软件路由器或者另一节点上的硬件路由器。完整的ipchains引擎处理流程图如下所示:


防火墙是可以那些能够操纵输入数据流和选择可流出数据流的设备的通称。在执行过程中,它可能会改变输入或输入数据流的状态,以此隐藏机器的具体信息或防止非法入侵。

ipchains 有两种运行方式:代理服务器和网络地址转换器。前者接收来自受防火墙保护的网络内部机器的数据流,使用用户定义的规则对其进行过滤处理,然后发送给外部网络。总之,内部哪些机器可以访问外部网络是由代理服务器控制的,反之亦然。

当您没有足够的网络地址,或者不愿对您的内部网络使用公共因特网址时,可以采用网络地址转换器 (NAT) 或是 IP 屏蔽 (Masqing) 的方法。它能把内部私有的地址转换成合法的公共地址,即将多个内部地址映射成唯一的外部地址。这样就不能从外部网络上直接访问到内部网络的某个机器,从而达到保护内部机器的目的。

安装防火墙
把一台 linux 机器配置成防火墙不是那么容易的。您应该重新安装稳定的 Linux 版本(即并非最新最强大的版本,可以试试 2.2.12),而不是转变已有的 Linux 机器。在安装过程中,最好只安装那些最基本的系统组件。除非不得已的情况,一般不要安装网络服务器、NFS服务器或者编译程序等其他组件,甚至不能运行Telnet服务器。如果您必须通过网络登录到本机,那就安装"SSH Secure Shell" (ssh) 远程登录系统吧。总之需要记住,防火墙永远不应该执行除了处理包和网络安全之外的任务。

您使用的 Linux 中可能附带着 ipchains 软件。如果您是偏执狂,可以在确认主要的Linux提供商已经认证其合格后,才使用该版本。

首先要做的事情是确认您的机器上是否已经安装了防火墙。请查看 /etc/rc.d/init.d 目录下有没有类似于 packetfilter、ipchains、pifwadm、firewall 或 proxy 等名字的"开始/关闭"脚本。如果存在这样的文件,并且有来自 /etc/rc.d/rc2.d 或 /etc/rc.d/rc3.d 的符号连接,那么该机器上很可能已安装了防火墙,也许它还正运行在没有任何具体防火墙策略的环境下呢。要验证这一点,可以敲入如下命令:

如果找不到这个文件,说明防火墙尚未安装。如果返回值为0,则意味着防火墙已经安装但没有运行;返回值为1表示正在运行。

您也可以下载 ipchains 的源码 来自己编译。这么的时候,要运行校验和程序来确认这份源码是可靠的。(通常采用 命令)。ipchains 网站上列出了校验和的有效值,您校验的结果应该和它们完全匹配。当前的 ipchains 版本是 1.3.9。


共3页: 1 [2] [3] 下一页
发表评论请到:http://bbs.cnitom.com

相关阅读

图文热点

Power架构产品创新 IBM推动其本土化发展
Power架构产品创新 IBM推动其本土化发展自从1990年,IBM推出基于RISC系统的新产品线RS/6000(现称eServer p系列)之后,...
WAF:高校Web应用安全守护者
WAF:高校Web应用安全守护者最近几年高校网站被攻击的事件时有发生,造成了不良影响,因此越来越多的高校开始...

本类热点