科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Linux系统内核新型包过滤结构的使用 (1)

Linux系统内核新型包过滤结构的使用 (1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

内核从"filter"表格的三个列表(lists)开始,这三个列表叫做firewall chains(防火墙链)或就叫做chains(链)。这三个链分别为INPUT、OUTPUT以及FORWARD。

作者:赛迪网技术社区 来源:赛迪网技术社区 2007年10月21日

关键字: 结构 过滤 内核 Linux

  • 评论
  • 分享微博
  • 分享邮件

一、包如何穿过(traverse)过滤

内核从"filter"表格的三个列表(lists)开始,这三个列表叫做firewall chains(防火墙链)或就叫做chains(链)。这三个链分别为INPUT、OUTPUT以及FORWARD。

各链(chains)如下图所示:

其中三个圈代表前述的三个链,当一个包抵达上图其中的一个链时,相应的链就会被检验(examined)以决定如何处理这个包。如果链认为应该丢弃(DROP)这个包,则将该包丢弃;如果链认为应该接受(ACCEPT)该包,那么它将继续在图中穿越。

一个链(chain)其实就是众多规则(rules)钟的一个检查清单(checklist)。每一条规则的形式就像这样:"如果包的头是这样,就这样处理该包"。如果规则的设定和包不匹配,则交由链中的下一条规则继续处理。直到最后没有余下的规则可以参考,那么内核就会根据链的策略(policy)以决定如何处理。在一个安全性强的系统中,策略通常都会要求内核丢弃该包。

(1)当一个包进入时(假设通过Ethernet网卡),内核首先看包的目的地(destination):这被称为路由(routing)。

(2)如果目的地址为本机,这个包就按图时下行至INPUT链,如果能够通过,则进入后面的包处理过程。

(3)否则,如果内核没有启动转发功能,或者它不知道如何转发这个包,那么该包就会被丢弃。如果转发功能已经启动,同时包指向另一网络接口(如果连接有另一网络),那么这个包将按图示向右行至FORWARD链。如果该包未被接受,那么它将会被发送出去。

(4)最后一种情况:一个在本机运行的程序发送网络包,这时包会直接经过OUTPUT链,如果被接受,该包会继续被发送到它所指定的网络接口。

二、使用iptables

iptables很有用。上文中讲到的三个内建(built-in)链:INPUT、OUTPUT和FORWARD是不能删除的。下面看看如何管理整个链:

(1)建立一个新链(-N);

(2)删除一个空链(-X);

(3)改变一个内建链的策略(-P);

(4)列出一个链中的规则(-L);

(5)清楚一个链中的所有规则(-F)

(6)将一个链中的所有规则的包字节计数器请零(-Z)。

下面的操作用于管理链中的规则:

(1)向一个链追加(append)一条新规则(-A);

(2)在链内指定位置插入一条新规则(-I);

(3)替换链内指定位置的一条规则(-R);

(4)删除链内指定位置的一条规则(-D);

(5)删除链内第一条规则(-D)。

机器启动时的处理

iptables模块的文件名为"iptable_filter.o",第一次运行时,iptables就会被自动载入。它也可以永久性地建于内核中。

在运行任何iptables命令之前(注意,有些发布版可能会用它们的初始命令来运行iptables),内建链(INPUT、OUTPUT和FORWARD)将不带任何规则,所有链的策略都被设为ACCEPT。可以通过将iptable_filter模块选项设为"forward=0"来改变缺省的FORWARD链策略。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章