[ 永远的UNIX::UNIX技术资料的宝库 ]

首页 > 系统管理 > 其它 > 正文
ipchains的参数和使用
本文出自: 作者: 飞天 (2001-09-27 07:00:00)
  ipchains 是用来设定,维护,以及查看 Linux 系统核心内作用之防火墙规则,这些规则可以分成四大类: 
   
   1. IP input chain 
   2. IP output chain 
   3. IP forwarding chain 
   4. user defined chains 
  系统会在内部拥有一个 serach table 用来管理这四类的规则链 
   
  注意: 
   请检查您是否有 /proc/net/ip_fwchains 这一个档案,没有表示您的核心并不支持 IP firewall,请重编您的核心 
   
  名辞解释: 
   byte counter 
   chain 规则链 
   masqueraded connection 虚拟连结 
   pocket 封包 
   policy 原则 
   rules 规则 
   rule number 规则序号 
   targets 作为 
   
  选项 OPTIONS: 
   -A(--append) 
   增加一个以上的规则(rule)至规则链(chain)中 
   -D(--delete) 
   由规则链(chain)中删除一个以上的规则(rule) 
   -C(--check) 
   检视所指定规则(rule)之封包(packet) 
   -R(--replace) 
   取代所选取规则链(chain)中之规则(rule) 
   -I(--insert) 
   依据所指定的规则(rule)序号,将一个以上的规则加入规则链(chain)中 
   -P(--policy) 
   对内建规则链之规则(rule)作原则(policy)上之设定 
   -M(--masquerading) 
   检视现行之虚拟连结(masqueraded connection) 
   
   -L(--list) 
   列出所选定规则链(chain)中所有之规则(rule) 
   -F(--flust) 
   清空所选之规则链(chain) 
   -Z(--zero) 
   将所有规则(rule)之封包(packet)和byte counter 计数器归零 
   -N(--new-chain) 
   产生一个使用者自定之规则链(chain),并赋予名称 
   -X(--delete-chain) 
   删除一个使用者自定之规则链(user defined chain) 
   -S(--set tcp tcpfin udp) 
   修改伪冒连结之延迟时间 
   -h 
   列出线上指引(help) 参数 PARAMETERS: 
   
   -p(--protocol) [!]protocol 
   指定通讯协议(protocol),你可以用协议的名称,如 (icmp,tcp), 
   或者用数字 (`1\\\\\\\\\\\\\\\' for icmp, `6\\\\\\\\\\\\\\\' for tcp).(请参考 RFC 1340) 
   -s(--source) [!]address[/mask] [!][port[:port]] 
   指定封包来源(source),你可以用 full name 如 `localhost\\\\\\\\\\\\\\\' 或 
   `www.unc.edu\\\\\\\\\\\\\\\' 也可以用 IP address 
   --source-port [!][port[:port]] 
   
   -d(--destination 或 --des) [!]address[/mask] [!][port[:port]] 
   指定封包所送到的目的 
   --icmp-type [!] typename 
   -j(--jump) target 
   指定一个规则所要求的作为(target),下面列出一些 target: 
    ACCEPT:允许封包通过 
   DENY:将封包挡掉 
   REJECT:将封包挡掉,并传回 ICMP replay 
   REDIRECT:将封包导向 local host 的一个 port,它必需和 
   `-p tcp/udp\\\\\\\\\\\\\\\' 以及 -A/D/R/I input 同时使用 
   -i(--interface) [!] name 
   指定特殊的网络接口 (interface),作封包传输之控制,它对 PPP 的控制 
   特别有用,如 -i ppp0,则可针对 ppp0 作控制 
   *上面有一个特殊的符号"!",它的意思是 not,如: 
   
   -s !140.112.164.139 表示除了 140.112.164.139 以外所有的 IP address 
   --source-port !25 表除了 port 25 以外所有的 port 
   
  其它的选项 OTHER OPTIONS: 
   -b(--bidirectional) 
   -v(--verbose) 
   -n(--numeric) 
   -l(--log) 
   激活记录 
   -o(--output) [maxsize] 
   -m(--mark) markvalue 
   -t(--TOS) andmask xormask 
   设定 TOS (type of service) 其值如下: 
   
   TOS Name Value Typical Uses 
   Minimum Delay 0x01 0x10 ftp, telnet 
   Maximum Throughput 0x01 0x08 ftp-data 
   Maximum Reliability 0x01 0x04 snmp 
   Minumum Cost 0x01 0x02 nntp 
   -x(--exact) 
   [!] -y(--syn) 
   --line-numbers 
   --no-warnings 
   
  参考资料: 
  .Linux IPCHAINS-HOWTO 
   Paul Russell, Paul.Russell@rustcorp.com.au 
   v1.0.5, 27 October 1998 
  .The official page is The Linux IP Firewall Chains Page 
   
   
  范例: 
  一.将所有来自 loopback address (127.0.0.1) 之 ICMP 封包挡掉: 
   # ping -c 1 127.0.0.1 
   PING 127.0.0.1 (127.0.0.1): 56 data bytes 
   64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms 
   --- 127.0.0.1 ping statistics --- 
   1 packets transmitted, 1 packets received, 0% packet loss 
   round-trip min/avg/max = 0.2/0.2/0.2 ms 
   # ipchains -A input -s 127.0.0.1 -p icmp -j DENY 
   # ping -c 1 127.0.0.1 
   PING 127.0.0.1 (127.0.0.1): 56 data bytes 
   --- 127.0.0.1 ping statistics --- 
   1 packets transmitted, 0 packets received, 100% packet loss 
   # 
   
   第一个 ping 成功的收到了一个 ICMP 封包 (选项 `-c 1\\\\\\\\\\\\\\\' 告诉 ping 只送 
   出一个封包) 
   接着我们加入(append, -A)一个规则到 `input\\\\\\\\\\\\\\\' chain 中,并指定其来源为 
   127.0.0.1 (`-s 127.0.0.1\\\\\\\\\\\\\\\') 以及通讯协议为 ICMP (`-p ICMP\\\\\\\\\\\\\\\') 同时将 
   target 调成 DENY. 
   当我们再度用 ping 来测试时,它会有一段延迟时间,原因是为了等待一个永 
   远都回不来的讯号. 
   
  二.要删除范例一所加入的规则,我们用下面的指令: 
   方法一: 
   # ipchains -D input 1 
   # 
   这是一个 numbered delete,它删除了 input chain 中之第一个规则,原因 
  是我们在 input chain 中只有一个规则 
   方法二: 
   如同范例一,将 append 改为 delete (`-D\\\\\\\\\\\\\\\'): 
   # ipchains -D input -s 127.0.0.1 -p icmp -j DENY 
   # 
   
  三.将所有进入的封包拒绝掉: 
   # ipchains -A input -s 0/0 -j DENY 
   # 
   它的作用就如同: 
   # ipchains -A input -j DENY 
   # 
  四.检视所有规则所规范之 byte 及 packet 数量: 
   # ipchains -L -v 
   # 
  五.产生一个新的规则链(chain),并指定名称为 "test" 
   
   # ipchains -N test 
   # 
   删除的方式类似: 
   # ipchains -X test 
   # 
   清空一个规则链中之规则: 
   # ipchains -F test 
   # 
   如果不指定名称,则所有的规则链都会被清的一乾二净 
  六.我们可以列出某个规则链中所有的规则,只要加个 `-L\\\\\\\\\\\\\\\' 参数即可: 
   # ipchains -L input 
   Chain input (refcnt = 1): (policy ACCEPT) 
   target prot opt source destination ports 
   ACCEPT icmp ----- anywhere anywhere any 
   # ipchains -L test 
   Chain test (refcnt = 0): 
   target prot opt source destination ports 
   DENY icmp ----- localnet/24 anywhere any 
   # 
  七.重设计数器: 
   利用 `-Z\\\\\\\\\\\\\\\' (zero counters) 选项,我们可以将计数器归零 
   # ipchains -v -L input 
   Chain input (refcnt = 1): (policy ACCEPT) 
   pkts bytes target prot opt tosa tosx ifname mark source destination ports 
   10 840 ACCEPT icmp ----- 0xFF 0x00 lo anywhere anywhere any 
   # ipchains -Z input 
   # ipchains -v -L input 
   Chain input (refcnt = 1): (policy ACCEPT) 
   pkts bytes target prot opt tosa tosx ifname mark source destination ports 
   0 0 ACCEPT icmp ----- 0xFF 0x00 lo anywhere anywhere any 
   # 

(http://www.fanqiang.com)
    进入【UNIX论坛

相关文章
ipchains网卡设置菜鸟必读 (2001-09-27 08:00:00)
ipchains的参数和使用 (2001-09-27 07:00:00)
ipchains参数介绍 (2001-08-21 10:00:00)
为什么我用 ipchains 构建的子网里的机器不能用 ftp? (2001-06-20 08:10:00)
ipchains 的问题 (2001-06-04 18:08:00)
怎样用ipchains构建防火墙 (2001-04-21 19:38:25)
ipchains的工作流程 (2001-04-21 18:02:09)
 

★  樊强制作 欢迎分享  ★