ipchains 被用来安装、维护、检查Linux内核的防火墙规则。规则可以分成四类:IP input链、IP output链、IP forward链、user defined 链。 一个防火墙规则指定包的格式和目标。当一个包进来时, 核心使用input链来决定它的命运。 如果它通过了, 那么核心将决定包下一步该发往何处(这一步叫路由)。假如它是送往另一台机器的, 核心就运用forward链。如果不匹配,进入目标值所指定的下一条链,那有可能是一条user defined链,或者是一个特定值: ACCEPT,DENY,REJECT,MASQ,REDIRECT,RETURN。
ACCEPT意味着允许包通过,DENY 扔掉包就象没有受到过一样,REJECT也把包扔掉,但(假如它不是 ICMP 包)产生一个 ICMP 回复来告诉发包者,目的地址无法到达(请注意DENY和REJECT对于ICMP包是一样的)。
MASQ 告诉核心伪装此包,它只对forward 链和user defined链起作用,想让它起作用, 编译核心时必需让 IP Masquerading 起作用。
REDIRECT只对input链和user defined链起作用。它告诉核心把无论应送到何处的包改送到一个本地端口. 只有 TCP 和 UDP 协议可以使用此指定. 任意用 '-j REDIRECT' 指定一个端口(名字或编号)可以使送往此的包被重定向到某个特殊的端口, 即使它被标记为送到其它端口。想让它起作用,编译内核时,必须让CONFIG_IP_TRANSPARENT_PROXY起作用。
最后的一个目标指定是 RETURN, 它跳过它下面的所有规则, 直到链的末尾。
任何其它的目标指定表示一个用户自定义的链。包将在那个链中通过. 假如那个链没有决定此包的命运, 那么在那个链中的传输就完成了,包将通过当前链的下一个规则。
参数说明:
-A :--append 在所选链的链尾加入一个或多个规则。有时一个单命令行能影响多个规则. 有两种做法. 第一, 假如你设置一个能解析为多个 IP 地址(使用 DNS)的主机名, ipchains 将如同你对多个地址都设置了命令一样发生作用。假如主机名'www.foo.com'解析为三个 IP 地址, 主机名'www.bar.com'解析为两个 IP 地址, 那么命令 'ipchains -A input -j reject -s www.bar.com -d www.foo.com' 将在 input 链中追加6条规则。-D (-I, -R) 的语法与 -A 完全相同. 当在一个链中有多个相同的规则时, 只有第一个被删除。
-D,--delete 从所选链中删除一或多条规则。我们可以用两钟方法中的任何一钟删除此规则. 首先如果我们知道它是链中的唯一规则, 我们可以使用编号删除, 输入:
# ipchains -D input 1
来删除进入链的编号1规则。第二条路是 -A 命令的镜象, 但是用 -D 代替 -A. 当你不愿意去数繁多的规则时, 这是一个有用的方法. 这种情况下, 我们使用: # ipchains -D input -s 127.0.0.1 -p icmp -j DENY
-R, --replace 在所选链中替换一条规则,如果源和目标目标名解析到多个地址,命令将失败。
-I, --insert 以给出的规则号在所选链中插入一条或多条规则。如果规则号是1,插入的规则在链的头部。
-L, --list 列出指定链的所有规则。如果没有指定链,将列出所有链的规则。-L有三个可选项. '-n'(数值)项非常有用, 它阻止 ipchains 去查找 IP 地址, 假如你的DNS没有正确设置, 或你已经过滤掉了 DNS 请求, 这将造成很大延时。 它还会导致端口用数字而不是名字被显示出来。’-v’选项显示规则的所有详细信息,如包和字节计数器,TOS 掩码, 接口, 和包标记. 用其它的方法这些项都会被忽略。
-F, --flush 使用'-F'命令可以清除一个链中的所有规则。
# ipchains -F forward 假如你不指定链, 那么所有链都将被清空。
共4页: 上一页 1 [2] [3] [4] 下一页
|