摘要:netfilter/iptables系统建立规则和链:在Linux中,提供了一个非常优秀的防火墙工具netfilter/iptables。netfilter/iptables是完全免费的,而且功能强大,使用灵活。netfilter/iptables可以对流入和流出的信息进行细化控制,且可以在一台低配置机器上很好地运行。本文讲述的是netfilter/iptables系统建立规则和链 通过向防火墙提供有关对来自某个源、到某个目的地或具有特定协议类型的信息包要做些什么的指令,规则控制信息包的过滤。通过使用netfilter/iptables系统提供的特殊命令iptables,建立netfilter/iptables这些规则,并将其添加到内核空间的特定信息包过滤表内的链中。关于添加/除去/编辑规则的命令的一般语法如下: [-ttable]选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三种可用的表选项:filter、nat和mangle。该选项不是必需的,如果未指定,则filter用作缺省表。 注:PREROUTING链由指定信息包一到达防火墙就改变它们的规则所组成,而POSTROUTING链由指定正当信息包打算离开防火墙时改变它们的规则所组成。 这条netfilter/iptables命令中具有强制性的command部分是iptables命令的最重要部分。它告诉iptables命令要做什么,例如,插入规则、将规则添加到链的末尾或删除规则。以下是最常用的一些命令: -A或--append:该命令将一条规则附加到链的末尾。 示例: -D或--delete:通过用-D指定要匹配的规则或者指定规则在链中的编号,该命令从链中删除该规则。下面的示例显示了这两种方法。 示例: 第一条命令从INPUT链删除规则,它指定DROP前往端口80的信息包。第二条命令只是从OUTPUT链删除编号为3的规则。 -P或--policy:该命令设置链的缺省目标,即策略。所有与链中任何规则都不匹配的信息包都将被强制使用此链的策略。 示例: 该命令将INPUT链的缺省目标指定为DROP。这意味着,将丢弃所有与INPUT链中任何规则都不匹配的信息包。 示例: -F或--flush:如果指定链名,该netfilter/iptables命令删除链中的所有规则,如果未指定链名,该命令删除所有链中的所有netfilter/iptables规则。此参数用于快速清除。 示例: iptables命令的可选match部分指定信息包与规则匹配所应具有的特征(如源和目的地地址、协议等)。匹配分为两大类:通用匹配和特定于协议的匹配。这里,我将研究可用于采用任何协议的信息包的通用匹配。下面是一些重要的且常用的通用匹配及其示例和说明: 192.168.1.1用户名-p或--protocol:该通用协议匹配用于检查某些特定协议。协议示例有TCP、UDP、ICMP、用逗号分隔的任何这三种协议的组合列表以及ALL(用于所有协议)。ALL是缺省匹配。可以使用!符号,它表示不与该项匹配。 示例: 在上述示例中,这两条命令都执行同一任务―它们指定所有TCP和UDP信息包都将与该规则匹配。通过指定!ICMP,我们打算允许所有其它协议(在这种情况下是TCP和UDP),而将ICMP排除在外。 -s或--source:该源匹配用于根据信息包的源IP地址来与它们匹配。该匹配还允许对某一范围内的IP地址进行匹配,可以使用!符号,表示不与该项匹配。缺省源匹配与所有IP地址匹配。 示例: 第二条命令指定该规则与所有来自192.168.0.0到192.168.0.24的IP地址范围的信息包匹配。第命令指定该规则将与除来自源地址203.16.1.89外的任何信息包匹配。 -d或--destination:该目的地匹配用于根据信息包的目的地IP地址来与它们匹配。该匹配还允许对某一范围内IP地址进行匹配,可以使用!符号,表示不与该项匹配。 示例: 我们已经知道,目标是由规则指定的操作,对与那些规则匹配的信息包执行这些操作。除了允许用户定义的目标之外,还有许多可用的目标选项。下面是常用的一些目标及其示例和说明: ACCEPT:当信息包与具有ACCEPT目标的规则完全匹配时,会被接受(允许它前往目的地),并且它将停止遍历链(虽然该信息包可能遍历另一个表中的其它链,并且有可能在那里被丢弃)。该目标被指定为-jACCEPT。 DROP:当信息包与具有DROP目标的规则完全匹配时,会阻塞该信息包,并且不对它做进一步处理。该目标被指定为-jDROP。 REJECT:该目标的工作方式与DROP目标相同,但它比DROP好。和DROP不同,REJECT不会在服务器和客户机上留下死套接字。另外,REJECT将错误消息发回给信息包的发送方。该目标被指定为-jREJECT。 示例: RETURN:在规则中设置的RETURN目标让与该规则匹配的信息包停止遍历包含该规则的链。如果链是如INPUT之类的主链,则使用该链的缺省策略处理信息包。它被指定为-jumpRETURN。示例: 保存规则 现在,您已习了如何建立基本的规则和链以及如何从信息包过滤表中添加或删除它们。但是,您应该记住:用上述方法所建立的规则会被保存到内核中,当重新引导系统时,会丢失这些规则。所以,如果您将没有错误的且有效的规则集添加到信息包过滤表,同时希望在重新引导之后再次使用这些规则,那么必须将该规则集保存在文件中。可以使用iptables-save命令来做到这一点: 现在,信息包过滤表中的所有规则都被保存在文件iptables-script中。无论何时再次引导系统,都可以使用iptables-restore命令将规则集从该脚本文件恢复到信息包过滤表,如下所示: 如果您愿意在每次引导系统时自动恢复该规则集,则可以将指定的这条命令放到任何一个初始化shell脚本中。本文的前一章节:netfilter/iptables系统的安装,继而可以使用netfilter/iptables系统建立规则和链。 【编辑推荐】 |
不良信息举报Q:2000617|Archiver|ROS软路由论坛 ROSABC.com 网络方案网络工程交流
GMT+8, 2025-11-5 10:00 , Processed in 0.030088 second(s), 15 queries .
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.