📄 00000014.htm
字号:
处理规则 <BR> <BR> 下一个问题是对特定的链实行特定的处理规则,所谓规则就是对某种确定的链执行特 <BR>定的操作。通常对于某个确定的链,我们用“跳转”使它进入另外一个链中,而在一切 <BR>跳转的末端,有几个预先定义好的处理规则: <BR> <BR> ACCEPT 允许这个请求正常通过,这时Linux表现的象一个普通的路由器 <BR> <BR> DENY 禁止这个请求通过,这个数据包会就此在网络上消失,表现得如同网络在这里断 <BR>开一样 <BR> <BR> RETURN 正常情况下,ipchains会依次察看链中所有的规则,所以一个链后面的规则可 <BR>以覆盖前面的规则,但是当遇到RETURN规则时,处理链将立即返回,即使下面还有与之 <BR>相关的处理选项也会被忽略。这样,RETURN规则将强迫ipchains自动转向下一个链。 <BR> <BR> REJECT 这个选项跟DENY非常相似,所不同的是它在禁止这个请求的同时可以返回一些 <BR>ICMP信息,使得请求者能够知道数据包在何处被禁止。如果客户是windows NT,将会看 <BR>到一个“网络不可达”的错误信息。 <BR> <BR> REDIRECT 这个规则只能用于input或者output链,而且不能用于ICMP协议。它将使得 <BR>Linux机器代替定义的目标机器收发信息报文。例如,ipchains –A input –d 202.11 <BR>2.58.200 –j REDIRECT将使得客户机器向202.112.58.200发出的数据包在Linux网关处 <BR>直接接受到并且截留下来。REDIRECT后面可以跟上端口号,例如把指向202.112.58.200 <BR>的80端口的数据包重定向到网关的9090端口: <BR> <BR> ipchains –A input –d 202.112.58.200 80 –p TCP –j REDIRECT 9090 <BR> <BR> MASQ 这个规则只能用于forward链,它用于对客户机器进行IP代理。 <BR> <BR> 使用规则的方法是将它“加入”到某个链中,语法是ipchains –A [链] [地址匹配] <BR> [规则]。例如,可以用ipchains –A指令对forward链建立一条新的规则集: <BR> <BR> ipchains –A forward -s 202.112.45.0/24 –d 13.0.0.0/8 –j REJECT <BR> <BR> 这条规则禁止了从202.199.45.0到13.0.0.0的所有数据包。 <BR> <BR> 也可以用规则在链间跳转,例如,我们首先建立一个空链: <BR> <BR> ipchains –N disable <BR> <BR> 然后将这条链设定为自动跳转到禁止: <BR> <BR> ipchains –A disable –j DENY <BR> <BR> 接下来,我们可以让某些链跳转到这条链: <BR> <BR> ipchains –A input –s 202.112.58.0/24 –j disable <BR> <BR> 那么效果和下面的指令: <BR> <BR> ipchains –A input –s 202.112.58.0/24 –j DENY是一样的。 <BR> <BR> 在不需要某一条规则时,可以将它删除,这可以使用命令ipchains –D。例如,要删 <BR>除上面的链规则,使用 <BR> <BR> ipchains –D forward -s 202.112.45.0/24 –d 13.0.0.0/8 –j REJECT <BR> <BR> 如果你要删除某条链中的所有规则,使用ipchains –F: <BR> <BR> ipchains –F forward <BR> <BR> 这时forward链中所有的规则都被清除。 <BR> <BR> 如果你不给出链的名字,那么ipchains –F将清除所有链中的规则。 <BR> <BR> 如果想察看目前链的规则,使用ipchains –L: <BR> <BR> $ipchains -L <BR> <BR> Chain input (policy ACCEPT): <BR> <BR> Chain forward (policy ACCEPT): <BR> <BR> target prot opt source destination ports <BR> <BR> ACCEPT all ------ 202.199.249.0/24 anywhere n/a <BR> <BR> Chain output (policy ACCEPT): <BR> <BR> 对链的修改可以使用-R选项,即替换某一条规则,这需要知道规则的序号,例如: <BR> <BR> [root@mail /root]# ipchains -L <BR> <BR> Chain input (policy ACCEPT): <BR> <BR> Chain forward (policy ACCEPT): <BR> <BR> target prot opt source destination ports <BR> <BR> DENY all ------ 202.199.249.14 anywhere n/a <BR> <BR> Chain output (policy ACCEPT): <BR> <BR> 现在forward链中只有一条规则,因此这条规则的序号就是1,现在可以替换这条规则 <BR>为: <BR> <BR> ipchains -R forward 1 -s 202.199.249.14 -d 0.0.0.0/0 -j ACCEPT <BR> <BR> <BR> 然后可以看到 <BR> <BR> [root@mail /root]# ipchains -L <BR> <BR> Chain input (policy ACCEPT): <BR> <BR> Chain forward (policy ACCEPT): <BR> <BR> target prot opt source destination ports <BR> <BR> ACCEPT all ------ 202.199.249.14 anywhere n/a <BR> <BR> Chain output (policy ACCEPT): <BR> <BR> ipchains –D指令中也可以直接使用序号,如ipchains –D 1。 <BR> <BR> 通常,加入的新规则会放在已有规则的后面,如果你想要把规则插入到某个特定的位 <BR>置,使用ipchains –I [链] [序号] [规则] <BR> <BR> Policy <BR> <BR> 这个词不太合适。ipchains的policy是指对链的缺省行为,例如,刚才的三个链的po <BR>licy都是ACCEPT,表示在对系统的三个缺省链没有定义规则时,所有的包都可以通过。 <BR> <BR> 要设置Policy,使用ipchains –P指令: <BR> <BR> ipchains –P forward DENY <BR> <BR> log <BR> <BR> 可以设置ipchains对符合规则的包的信息进行记录。这可以通过-l选项来实现,例如 <BR>,要记录从202.199.249.0/24出发的所有被转发的包的情况,使用: <BR> <BR> ipchains –A forward –s 202.199.249.0/24 –l –j ACCEPT <BR> <BR> 然后在dmesg中就可以看到核心记录的包的信息了。如果要进一步分析这些信息,需要 <BR>将其记录到系统的日志文件中(见系统记账部分)。 <BR> <BR> 基本上,各种IP过滤型的防火墙都是利用上面解释的各种规则对IP包进行分析和监控 <BR>。 <BR> <BR> 接口 <BR> <BR> 用-i选项可以明确地给出链所涉及的网络接口,例如-i eth0代表第一个网络连接,可 <BR>以用+号来统配,例如 <BR> <BR> ipchains –A input –p ICMP –s 0.0.0.0/0 –d 202.199.248.11 –i eth0 –j <BR>DENY <BR> <BR> 关闭了通过eth0网络接口的ping回应。 <BR> <BR> 当-i选项用于input和output链的时候,其意义是很简单的,如果用于forward链,那 <BR>么它给出的是转发的目标接口。 <BR> <BR> 保存和恢复链规则 <BR> <BR> 在一个复杂的ipchains防火墙系统中,可能有许多规则。每次重新启动,这些规则都 <BR>必须被重新启动。原则上,可以在系统启动脚本中直接写入相应的规则,不过实践中, <BR>我们一般采用首先测试规则是否正确的方法,在确定规则正确之后,使用ipchains-sav <BR>e和ipchains-restore命令完成链规则的保存和读入。 <BR> <BR> 例如,我们已经有了下面形式的链: <BR> <BR> $ipchains -L <BR> <BR> Chain input (policy ACCEPT): <BR> <BR> Chain forward (policy ACCEPT): <BR> <BR> target prot opt source destination ports <BR> <BR> ACCEPT all ------ 202.199.249.0/24 anywhere n/a <BR> <BR> Chain output (policy ACCEPT): <BR> <BR> 那么,可以使用ipchains-save命令将现在的链设置保存起来: <BR> <BR> $ipchains-save > mychains <BR> <BR> Saving `forward'. <BR> <BR> ipchains-save缺省的情况下在标准输出送出信息,所以要使用重定向的办法,现在m <BR>ychains文件中就包含我们的链的所有规则: <BR> <BR> $cat mychains <BR> <BR> :input ACCEPT <BR> <BR> :forward ACCEPT <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -