当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 使用 iptables 建置 Linux 防火墙作者:李忠宪 shane@mail.spps.tp.edu.tw2002/11/282003/03/09修订1、什么是防火墙防火墙是一套能够在两个或两个以上的网络之间,明显区隔出实体线路联机的软硬件设备组合。
 

 

    摘要:第一次写blog,感觉又回到了学生时代 ,自从走入社会,为生活而奔波,很长时间没有写日记了。以后我会将我在生活与工作中的一些琐碎记在blog上。让我们开始吧! 我相信不只是我,还有很多朋友在升级2.6内核时会出现很多问题,通过一段时间的学习和实验,发现升级内核所出的问题90%以上是出在没有升级changes中提出的各程序系统工具,在“http://www.stefan-winter.de/html......
 ·常用的60个linux命令    »显示摘要«
    摘要:常用的60个命令for linux linux系统信息存放在文件里,文件与普通的公务文件类似。每个文件都有自己的名字、内容、存放地址及其它一些管理信息,如文件的用户、文件的大小等。 文件可以是一封信、一个通讯录,或者是程序的源语句、程序的数据,甚至可以包括可执行的程序和其它非正文内容。 linux文件系统具有良好的结构,系统 提供了很多文件处理程序。这里主要介绍常用的文件处理命令。......


使用iptables建置Linux防火墙
使用 iptables 建置 linux 防火墙

作者:李忠宪 shane@mail.spps.tp.edu.tw 【程序编程相关:suse9.2下如何配置linux做网关

【推荐阅读:百万人全球签名反对日本成为联合国常任理事

2002/11/28 【扩展信息:常用的关机和重新启动命令

2003/03/09修订

1.什么是防火墙

防火墙是一套能够在两个或两个以上的网络之间,明显区隔出实体线路联机的软硬件设备组合.被区隔开来的网络,可以透过封包转送技术来相互通讯,透过防火墙的安全管理机制,可以决定哪些数据可以流通,哪些资料无法流通,藉此达到网络安全保护的目的.

防火墙产品可以概略归类为硬件式防火墙与软件式防火墙,但实际上无论是硬件式或软件式防火墙,它们都需要使用硬件来作为联机介接,也需要使用软件来设定安全政策,严格说两者间的差别并不太大.我们只能从使用的硬件与操作系统来加以区分,硬件式防火墙是使用专有的硬件,而软件式防火墙则使用一般的计算机硬件,硬件式防火墙使用专有的操作系统,而软件式防火墙则使用一般的操作系统.

防火墙依照其运作方式来分类,可以区分为封包过滤式防火墙 (packet filter) .应用层网关式防火墙 (application-level gateway,也有人把它称为 proxy 防火墙).电路层网关式防火墙 (circuit-level gateway).其中被广为采用的是封包过滤式防火墙,本文要介绍的 iptables 防火墙就是属于这一种.

封包过滤是最早被实作出来的防火墙技术,它是在 tcp/ip 四层架构下的 ip 层中运作.封包过滤器的功能主要是检查通过的每一个 ip 数据封包,如果其标头中所含的数据内容符合过滤条件的设定就进行进一步的处理,主要的处理方式包含:放行(accept).丢弃(drop)或拒绝(reject).要进行封包过滤,防火墙必须要能分析通过封包的来源 ip 与目的地 ip,还必须能检查封包类型.来源埠号与目的埠号.封包流向.封包进入防火墙的网卡接口.tcp的联机状态等数据.

防火墙由于种种理由价格一直居高不下,对于贫穷的中小学来讲要采购一台防火墙,简直是不可能的任务,而由于 linux 的风行,使用 linux 来充作软件式防火墙,似乎是不错的解决之道,本文拟介绍以 linux 上最新最强大的 iptables 防火墙软件,建置出适合学校使用的过滤规则,让缺钱的学校能有一套好用的防火墙来看守校园网络的大门.

2.linux 防火墙演变简史

linux 最早出现的防火墙软件称为 ipfw,ipfw 能透过 ip 封包标头的分析,分辨出封包的来源 ip 与目的地 ip.封包类型.来源埠号与目的埠号.封包流向.封包进入防火墙的网卡界面......等,并藉此分析结果来比对规则进行封包过滤,同时也支持 ip 伪装的功能,利用这个功能可以解决 ip 不足的问题,可惜这支程序缺乏弹性设计,无法自行建立规则组合(ruleset)作更精简的设定,同时也缺乏网址转译功能,无法应付越来越复杂的网络环境,而逐渐被淘汰.

取而代之的 ipchains,不但指令语法更容易理解,功能也较 ipfw 优越;ipchains 允许自订规则组合(ruleset),称之为 user-define chains,透过这种设计,我们可以将彼此相关的规则组合在一起,在需要的时候跳到该组规则进行过滤,有效将规则的数量大幅缩减,以往 ipfw 仅能进行循序过滤,导致规则又臭又长的毛病,就不药而愈了.除了这个明显的好处以外,ipchains 并能结合本身的端口对应功能与 redir 程序的封包转送机制,模拟出网址转译的能力,而满足 nat 的完整需求,堪称为一套成熟的防火墙作品.

防火墙软件的出现,确实曾经让骇客们晚上睡不着觉,因为防火墙的阻隔能够有效让内部网络不设防的单机不致于暴露在外,也能有效降低服务器的能见度,减少被攻击的机会,骇客过去所用的网络探测技术因此受到严格的挑战,越来越多的攻击对象躲藏在防火墙后方,让骇客难以接近,因此必须针对新的情势,研究出新的探测技术,藉以规避防火墙的检查,达到发现目标并进而攻击入侵的目的,新的技术非常多,本文并不拟进一步讨论,请自行参考 cert 组织的技术文件,网址是 www.cert.org ,想看中文请连到 www.cert.org.tw

iptables 作为 ipchains 的新一代继承人,当然也针对骇客不断推陈出新的探测技术拟出一些因应之道,那就是对封包的联机状态,作出更详细的分析,例如:是否为新联机或响应封包.是否为转向联机.联机是否失去响应,联机时间是否过长......等等,透过这样的分析能对一些可能被骇客利用的弱点加以阻隔(请详见后文的说明),另外也开发出真正的封包改写能力,不需要透过其它程序的协助来仿真网址转译,除此之外,iptables 也获得系统核心的直接支持,不需要像 ipchains 那样需要自行重新编译核心.

iptables 优越的性能使它取代了 ipchains,成为网络防火墙的主流,而 ipchains 并未被淘汰,目前 ipchains 已经转型成单机防火墙,在安装新版 linux 时,会自动被安装启用,以保护单机上未被使用的通讯端口.

3.iptables 防火墙概论

iptables 防火墙的指令非常类似于 ipchains,使用过 ipchains 的人应该很容易上手,但是 iptables 的机制与 ipchains 有很大的不同,使用 ipchains 的概念来设定规则,将会使防火墙无法正常运作.ipchains 跟 iptables 最大的不同在于对 input.forward .output 三个网络函式的定义不同,这三个网络函式是 tcp/ip 驱动程序的一部分,结构如下图所示,是介于网卡驱动程序与应用程序的中间,linux 核心预设会启用 input.output 与 loopback,而 forward 函式则必须自行启用,可以使用下面指令,或直接修改 /etc/sysconfig/network 组态档:

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

左图为 ipchains 概念下的运作图

从上图可以知道 ipchains 如何处理封包的流动,分述如下:

• ip input:所有封包都由 ip input 函式负责处理,所以设定过滤规则时,几乎都是设定在 input 规则炼上.

• ip forward:目的 ip 非本机的 ip,这些封包需要进一步作转送处理,此函式用来处理 ip 伪装与 port 转送.

• ip output:所有流出的封包都由这个函式处理,通常不需设定任何规则.

iptables 除了上述三支函式以外,还使用两个新的函式:prerouting.postrouting.现在来比较一下 iptables 的运作模式(loopback 接口与上图相同,所以省略不画):

从上图可以知道 iptables 如何处理封包的流动,分述如下:

• ip input:只有要到达本机的封包才会 由 input 函式处理,所以会让来自内部网络的封包无条件放行,来自外部网络的封包则过滤是否为 响应封包,若是则放行.

• prerouting:需要转送处理的封包由此函式负责处理,此函式用来做目的地 ip 的转译动作(dnat).

• ip forward:所有转送封包都在这里处理,这部分的过滤规则最复杂.

• postrouting:转送封包送出之前,先透过这个函式进行来源 ip 的转译动作(snat).

• ip output:从本机送出去的封包由这个函式处理,通常会放行所有封包.

iptables 与 ipchains 都可以自行定义规则群组(rule-set),规则群组被称为规则炼(chains),前面所描述的函式,也都有相对应的规则炼(input.forward.output.prerouting.postrouting),为了有别于自行定义的规则炼,这些规则炼我们就称为内建规则炼,其运作流程仿真如下图:

从上面两张假想图,学员们不难了解 ipchains 为什么要叫做 chains,因为它是将所有规则串接成一个序列逐一检查过滤,就像一条铁链一样一个环接一个环,在过滤过程中只要符合其中一条规则就会立即进行处理,如果处理动作是跳到某个规则群组,则继续检查群组内之规则设定,但如果处理动作是 accept.reject.drop.redirect 或 masquerade,则会中断过滤程序,而不再继续检查后面的规则设定,在这样的结构之下,有时候规则顺序的对调会产生完全相反的结果,这一点在设定防火墙时不能不谨慎.

而 iptables 是采用规则堆栈的方式来进行过滤,当一个封包进入网卡,会先检查 prerouting,然后检查目的 ip 判断是否需要转送出去,接着就会跳到 input 或 forward 进行过滤,如果封包需转送处理则检查 postrouting,如果是来自本机封包,则检查 output 以及 postrouting.
...   下一页
 ·善用gnu make做开发    »显示摘要«
    摘要:在编写小型的linux应用程序时,一般情况下只会有少数几个源文件。这 样程序员能够很容易地理清它们之间的包含和引用关系。但随着软件项目逐渐变大,对源文件的处理也将变得越来越复杂起来。此时单纯依赖手工方式进行管理的做 法就显得有些力不从心了。为此,linux专门为软件开发提供了一个自动化管理工具gnu make。通过它,程序员可以很方便地管理软件编译的内容、方式和时机,从而使程序员能够把主要精......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE