使用iptables建置Linux 防火墙(1)

http://tech.ddvip.com   2006年04月03日    社区交流 收藏本文

本文详细介绍使用iptables建置Linux 防火墙(1)

  • 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,则会中断过滤程序,而不再继续检查后面的规则设定,在这样的结构之下,有时候规则顺序的对调会产生完全相反的结果,这一点在设定防火墙时不能不谨慎。

责编:豆豆技术应用

正在加载评论...