[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 系統管理 > 其它 > 正文
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)
 

★  樊強制作 歡迎分享  ★