分享
 
 
 

如何用老奔腾机和Linux构建防火墙

王朝system·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

Rawn Shah

技术专家和自由撰稿人

内容:

嘿,我在说您那台老旧的奔腾计算机呢!别因为老奔腾机不如现今花哨的新硬件动力十足就把它抛弃。它完全可以胜任小型商业或家庭办公室的网络防火墙工作。ipchains 是 Linux 下的防火墙软件,其[url=http://www.pccode.net].net" class="wordstyle"源码可以免费获得,并能够在老式奔腾机的 T-1 连网环境下工作。与其花上几千美元从软件提供商处购买定制的防火墙软件,还不如试试这种最实惠的解决方案。下面,我将一步步地教您如何安装和配置 ipchains 软件

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

完成这些只需要一个叫 ipchains 的公开[url=http://www.pccode.net].net" class="wordstyle"源码的软件包,它是由 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 的符号连接,那么该机器上很可能已安装了防火墙,也许它还正运行在没有任何具体防火墙策略的环境下呢。要验证这一点,可以敲入如下命令:

# cat /proc/sys/net/ipv4/ip_forward

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

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

如果这些值全部无法匹配,就得查查编译内核时是否把 Masquerading 打开了。缺省情况下,这些选项在编译内核时是打开的。但如果您决定自己来编译 Linux 2.2.x 版本的内核,就必须对如下选项说 YES :

CONFIG_EXPERIMENTAL

CONFIG_MODULES

CONFIG_NET

CONFIG_FIREWALL

CONFIG_INET

CONFIG_IP_FORWARD

CONFIG_IP_MASQUERADE

CONFIG_IP_MASQUERADE_IPPORTFW

CONFIG_IP_MASQUERADE_IPAUTOFW

CONFIG_IP_MASQUERADE_ICMP

CONFIG_IP_ALWAYS_DEFRAG

CONFIG_DUMMY

CONFIG_IP_MASQUERADE_MFW

内核编译完毕,就要把防火墙安装为系统服务的一项。这样系统初始化时就会启动它。系统服务是系统启动过程中由系统初始进程执行的,不同的系统服务有不同的初始化优先级别。级别 0 表示系统完全卸载可以关断电源;级别 1 则表示没有网络支持的单用户模式;级别 2 和 3 一般用作网络支持的多用户模式,也就是多数机器的运行模式。还有一些其他的级别,但都不常用。

为了创建防火墙服务的开始脚本并安装在级别 2 和 3 下,首先要如下所示创建 ipchains 的系统"开始/关闭"脚本文件,并把它保存在 /etc/rc.d/init.d 或 /etc/init.d/ 目录下(保存在哪个目录据所使用 Linux 版本而定)。

#!/bin/sh

# Firewalling with ipchains, startup/shutdown script

PATH=/sbin:/bin:/usr/sbin:/usr/bin

[ -f /etc/packetfiler.rules ] || exit 0

case "$1" in

start)

echo -n "Starting ipchains firewall:"

/sbin/depmod -a

# Comment the following line if you do not intend to support

# using FTP through the firewall

/sbin/modprobe ip_masq_ftp

# Insert lines to support other application protocols here

/sbin/ipchains-restore < /etc/firewall.rules || exit 1

echo "1" > /proc/sys/net/ipv4/ip_forward

# If you do NOT use PPP, SLIP or DHCP for any of your network

# interfaces on this machine, comment the following line

echo "1" > /proc/sys/net/ipv4/ip_dynaddr

echo "."

;;

stop)

echo -n "Shutting down ipchains firewall:"

echo "0" > /proc/sys/net/ipv4/ip_forward

# Comment the following line if you do NOT use PPP, SLIP or DHCP

echo "0" > /proc/sys/net/ipv4/ip_dynaddr

/sbin/ipchains -X

/sbin/ipchains -F

/sbin/ipchains -P input ACCEPT

/sbin/ipchains -P output ACCEPT

/sbin/ipchains -P forward ACCEPT

echo "."

;;

*)

echo "Usage: /etc/rc.d/init.d/packetfilter {start|stop}"

exit 1

;;

esac

exit 0

在要从不同级别执行包过滤服务之前,您得建立符号链接。网络已经启动的情况下,首先确认包过滤器已运行在初始级别2和3下。

# ln -s /etc/rc.d/init.d/packetfilter /etc/rc.d/rc2.d/S09packetfilter

# ln -s /etc/rc.d/init.d/packetfilter /etc/rc.d/rc3.d/S09packetfilter

以上两条命令建立了符号链接,从而保证在 Red Hat Linux 的网络有效前启动包过滤器。某种网络服务的名称应该类似于 SXXnetwork,其中的 "XX" 指定了该服务的启动次序。请选择一个其他启动脚本内未指定的,比所有网络服务启动次序号都低的"XX"。上面的例子中,网络启动脚本命名为 "S10network" 。

类似的,在网络服务关闭后也应该停止包过滤器的符号连接。该例子中,网络接口关闭位于脚本 K90network,因此包过滤器脚本链接为 K91packetfilter。

# ln -s /etc/rc.d/init.d/packetfilter /etc/rc.d/rc0.d/K91packetfilter

# ln -s /etc/rc.d/init.d/packetfilter /etc/rc.d/rc1.d/K91packetfilter

最后,在 Red Hat 系统中,您务必确保文件 /etc/sysconfig/network 中含有下列条目:

FORWARD_IPV4="yes"

一旦重新启动机器,包过滤器就启动了。到目前为止,您还没有制定任何过滤规则。下面我们将继续这个规则设置步骤。

配置防火墙

如果您用了防火墙,就可以使用公共因特网上无效的某段网址,或者用 NAT 。这样,主干网的主要路由器将视那些来自私人地址的包为非法而予以丢弃。这些段址已经定义并在文献 RFC 1918 列举出来(参看表 1)。这样的段址共有三套,但对于绝大多数公司来说,192.168.0.0 就足够了。在下面的例子中我们也将采用这套段址。

表 1: 分配给私有网络的 IP 地址

起始地址

结束地址

CIDR 段址前缀

地址数目

10.0.0.0

10.255.255.255

10.0.0.0/8

~ 16,000,000

172.16.0.0

172.31.255.255

172.16.0.0/12

~ 4,000,000

192.168.0.0

192.168.255.255

192.168.0.0/16

~ 65,000

您的内部网的全部机器都应该用这些给定地址范围来标识。比如 192.168.1.22 防火墙的内部接口应占用第一个地址 192.168.0.1。以 .0.0、.0、.255 和 .255.255 结尾的是系统保留地址,所以不要把他们分配给任何机器。在起始地址和结束地址范围之内的其他 IP 地址可按个人喜好分配.

下面的例子包括四个台式机和四个服务器。名为 stranger 的台式机禁止进入防火墙保护的内部网络,而 familiar 则可以。名为 Freedom 的服务器位于公司内部网络,但不受防火墙保护,这对向公开的网站来说是常见的。分配给这些机器的网络地址是随便给定的,但是它们被划分成不同的网络地址集合 (192.168.x.x 分配给防火墙内部网, 216.19.15.x 分配给防火墙外部但仍处于公司内部的网络, 198.102.x.x 指的是公共因特网址)。

表 2: 链操作命令

命令

陈述

ipchains -N

创建一个新链

ipchains -X

删除已有链

ipchains -L

列出链中的所有规则

ipchains -F

删除链中的所有规则,但仍保留该链

ipchains -Z

删除与链相关的统计数据

ipchains -P

设置链的全部策略(接受 ACCEPT, 否决 DENY, 拒绝 REJECT, 屏蔽 MASQ, 改向 REDIRECT, 返回 RETURN 等)

ipchains -M -L

列出所有使用屏蔽的链

ipchains -M -S

对所有使用屏蔽的链,根据协议不同而分配若干超时限制

表 3: 定义过滤规则的命令

命令

陈述

ipchains -A

将规则添加到链中

ipchains -D

根据规则在链中的位置,删除该规则

ipchains -R

根据规则在链中的位置,用新规则取代它

ipc

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有