科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

上面已经介绍过用"-p"来指定协议以及用"-s"来指定源地址,另外还有一些其它选项用于指定一个包的特征。下面将详细介绍。

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

关键字: 使用 过滤 内核 Linux

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

过滤

上面已经介绍过用"-p"来指定协议以及用"-s"来指定源地址,另外还有一些其它选项用于指定一个包的特征。下面将详细介绍。

指定源和目的IP地址

可以用四种方法来指定源("-s"或"--source"或"--src")和目的("-d"或"--destination"或"--dst")IP地址。最常用的方法是使用完整的名称,如"localhost"或"www.linuxhq.com"。第二种方法是指定其IP地址,如"127.0.0.1"。

第三种和第四种方法允许指定一组IP地址,例如"199.95.207.0/24"或"199.95.207.0/255.255.255.0",这两种设置都指定了所有从199.95.207.0到199.95.207.255之间的IP地址;而在数字后面的"/"符号用于告诉系统哪部分IP有效。"/32"或"255.255.255.255"为缺省值(即所有IP值都符合条件)。全部用"/0"来指定IP也是可行的,例如:

# iptables -A INPUT -s 0/0 -j DROP

不过这种方式非常少用,因为以上命令的效果和不指定"-s"的效果是一样的。

反向指定

许多标志,包括"-s"(或"--source")和"-d"(或"--destination"),可以在它们前面加上一个"!"符号来指定所有非(NOT)指定值的地址。例如,"-s !localhost"表示所有飞来资本机的包。

指定协议

协议可以用"-p"(或"--protocol")标志来指定。协议可以为一个号码(如果用户知道相应的IP协议数值的话),或是一个协议字符串,如"TCP"、"UDP"或"ICMP"等。协议字符串与大小写无关。协议前也可以加上"!"符号,使之取饭。例如,"-p !TCP"指定所有非TCP的包。

指定接口

用"-I"(或"--in-interface")和"-O"(或"--out-interface")选项来指定接口。接口就是包进入("-I")或送出("-O")的物理设备。可以用ifconfig命令列出哪些接口是开启("up")的。

穿过INPUT链的包是不会通过输出接口的,所以,它不与任何在链中使用"-O"选项的规则匹配。同样,穿过OUTPUT链的包也不会通过输入接口,所以它不与任何在链中使用"-I"选项的规则匹配。只有穿越FORWARD链的包才会同时通过输入和输出接口。指定一个不存在的接口是完全合法的,在接口未开启("up")之前,这条规则是不会被比较的。这对于PPP(通常会是ppp0)或类似的连接是非常有用的。

如果接口是以一个"+"结尾的话,就代表所有以此字符串开头的接口(不管它们目前是否已开启)。例如,要制定一条规则来匹配所有的PPP接口的话,可以用-i PPP+选项。接口名称前面可以用一个"!"符号来指定一个与指定接口不匹配的包。

指定包片段(fragements)

有时候,一个包可能会因为太大而不能一次传送,这时,包会被分割成片段,并以多个包来传送。而在接收端则对这些片段进行重组以还原整个包。分割成片段传送的问题是,第一个起始片段含有整个包头项(IP+TCP、UDP和ICMP)可供检查,但后续的包只含包头的小部分(不带额外协议项的IP)。这样,就无法检查后续片段的协议表头(例如由TCP、UDP和ICMP扩展而成)。

如果要跟踪或网络地址翻译(NAT),那么所有的片段都会再传给包过滤之前汇合在一起,所以无需担心片段问题。

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

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

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