ipchains引數介紹(轉)
ipchains引數介紹(轉)[@more@] 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 將如同你對多個地址都設定了命令一樣發生作用。假如主機名''解析為三個 IP 地址, 主機名''解析為兩個 IP 地址, 那麼命令 'ipchains -A input -j reject -s -d ' 將在 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假如你不指定鏈, 那麼所有鏈都將被清空。-Z, --zero重置計數器。但有時你想在重置計數器前知道它們的值。你可以同時使用 '-L' 和 '-Z' 命令, 讀計數器的同時重置它們。不幸的是, 假如你這樣做, 你不能只操作一個鏈, 你不得不列表和清零所有的鏈。-N, --new-chain以給定的名字建立一條新的user defined鏈。不能與已有鏈同名。-X, --delete-chain刪除鏈必須滿足兩個條件: 它們是空的,並且不是任何規則的目標. 但你不能刪除3個內建鏈中的任何一個。-P, --policy改變內建鏈政策。-M, --masquerading允許觀察當前IP偽裝的連線(與-L一起)。或者設定核心IP 偽裝的引數(與 –S 一起)。-S, --set tcp tcpfin udp設定偽裝的超時值,'-S' 後跟三個以秒錶示的超時值: TCP sessions, FIN 包到後的 TCP sessions, 和對於 UDP 包的。假如你不想改變這些值, 給個 '0' 值即可。預設值在 '/usr/include/net/ip_masp.h' 檔案中, 目前分別是 15分, 2分和 5分。僅允許和 -M 一起使用。-C, -- check有時你想知道一個確定的包進入機器後會發生什麼事情, 比如除錯防火鏈時。ipchains 的 '-C' 命令提供與核心檢查真實包完全相同的程式來讓你做這件事。你可以指定讓哪個鏈來檢測包, 把鏈的名字放在 '-C' 引數後即可。鑑於核心總是從 input, output 或 forward 鏈開始, 特許你從需要測試的鏈開始。包的細節用與設定防火牆規則相同的語法設定。 在個別時, 包的協議('-p'), 源地址('-s'), 目的地址('-d'), 和介面('-i') 必須有。假如協議是 TCP 或 UDP, 那麼必須指定一個源地址和一個目的埠, 對於 ICMP 協議必須指定型別和程式碼。(除非使用了 '-f' 標誌指定了一個片段規則, 在那種情況下這些選項是不合法的).假如協議是 TCP (並且沒有 '-f' 標誌), 可以使用 '-y' 標誌設定包的 SYN 位。這有一個例子, 測試一個 TCP SYN 包, 它從 192.168.1.1 埠 60000 到 192.168.1.2 www 埠, 進入 eth0 介面, 進入 'input' 鏈. (這是一個與 WWW 建立連線的典型例子)# ipchains -C input -p tcp -y -i eth0 -s 192.168.1.1 60000 -d 192.168.1.2 wwwpacket accepted#-h, --help幫助。-p, --protocol[!] protocol用 '-p' 來指定協議。協議可以用編號(假如你知道 IP 的數字化協議值)或名字'TCP', 'UDP', 'ICMP',’ALL’(0等價與ALL),大小寫無關, 'tcp' 與 'TCP' 一樣。協議名前面可以加字首 '!',來否定它,比如: ' -p ! TCP'。-s, --source [!] address[/mask] [!][port[:port]]有四種方法指定源頭(-s)和目的(-d) IP 地址。最常用的方法是使用全稱,比如 'localhost' 或 ''。第二種方法是指定 IP 地址,如 '127.0.0.1'。第三種和第四種方法是指定 IP 地址集, 比如 '199.95.207.0/24' '199.95.207.0/255.255.255.0'。這兩種方式都指定了從 192.95.207.0 到 192.95.207.255 的所有 IP 地址;'/'後的數字表示 IP 地址的哪部分(或'位')被指定。預設是 '/32' 或 '255.255.255.255' (與所有 IP 地址匹配)。完全指定所有 IP 地址用'/0'。對於特殊的 TCP 和 UDP 協議, 還有額外的引數可以指定,即它們的埠號或埠的範圍。範圍用 ':' 表示,比如 '6000:6010',它包含從6000到6010的11個埠,如果沒有下限,預設是0。如果沒有上限,預設是 65535。所以指定1024以下埠來的 TCP 連線,表示為 '-p TCP -s 0.0.0.0/0 :1023'。 埠號也可以用名字指定,如 'WWW'。埠指定也可以用'!'引數來否定它。ICMP 也可以有引數,但是它沒有埠(ICMP 有型別和程式碼),它們有不同的含義。可以在'-s'引數後放它們的 ICMP 名字來指定(使用 ipchains -h icmp 來列出這些名字)。或使用 ICMP 型別和程式碼的數字編號。型別跟在 '-s' 後。程式碼跟在 '-d' 後。ICMP 名相當長: 你只需輸入足夠長的字母能區分它們即可。注意:目前, ICMP 名的前面不能用'!'。等價於--src。--source-port [!] [port[:port]]用來分開源埠範圍,等價與—sport。-d,--destination [!] address[/mask] [!] [port[:port]]指定目標,用法與-s相同。等價於—dst。--destination-port [!] [port[:port]]指定目標埠範圍,等價於—dport。--icmp-type [!] typename允許指定icmp型別(使用 –h icmp 看有效的icmp型別名)。可以方便的在指定目標的後面使用。-j, --jump target指向規則的目標,例如,包匹配規則後怎麼辦。目標可以是一個user defined 鏈(非本規則所在鏈),也可以是一個可以立即決定包命運的特定的目標。最簡單的情況是不指定目標。這種型別的規則(通常叫記數規則)常用來做某種型別包的簡單記數。無論規則匹配與否, 核心將繼續檢查此鏈中的下一個的規則。但規則計數器將增加。-i, --interface [!] name用 '-i' 引數指定介面名字。介面是包進進出出的物理裝置。用於包進入(包透過進入鏈 )的介面被認為是進入介面, 同樣地, 用於包外出(包透過外出鏈)的介面被認為是外出介面. 用於包中轉的介面也被認為是外出介面。指定一個目前不存在的介面是完全合法的。規則直到此介面工作時才起作用,這種指定是非常有用,對於 PPP 及其類似的連線。作為一個特例, 一個結尾是'+'的介面將適合所有此類介面(無論它們是否工作)。例如:設定一個規則適合所有的 PPP 連線, 可以用 -i ppp+ 來指定介面。此引數忽略時,預設符合所有介面。介面可以使用否定符'!'來匹配不是指定介面來的包。[!] -f, --fragment此規則指定fragmented packets的第二個和以後的分塊。因為這樣的分塊沒有源和目標埠資訊(或 ICMP 型別),所以它不匹配一些指定它的規則。可以在它前面使用'!',來指定一個不適用於第二個及其後續的片段包的規則。-b, --bidirectional雙向模式。這個標誌使 ipchains 象你輸入命令兩次一樣工作,第二次是把 '-s' 和 '-d' 引數顛倒。-v, --verbose詳細輸出。它顯示出對於你的命令, ipchains 是如何響應的. 假如你使用的命令可以影響多個規則, 它是很有用的。-n, --numeric數字化輸出。IP地址和埠號將以數字格式顯示。預設顯示主機名和網路名,和服務名。當DNS不起作用時,此引數及其有用。-l, --log對匹配包實行核心紀錄,當設定此引數時,Linux核心將透過printk()對於所有匹配包列印一些資訊。-o, --output [maxsize]複製匹配的包到使用者空間裝置。主要由開發者使用。要使用此引數,編譯核心時必須設定 CONFIG_IP_FIREWALL_NETLINK Set。-m, --mark markvalue標誌匹配的包。包被一個32位的無符號整數標誌。如果你不是一個核心駭客,你不必關心這些。如果標誌值以 ‘+’ 或 ‘-‘開頭,那麼這個值將會從當前包的標誌值加或減(初始值為0)。-t, --TOS and xormask用於改變IP頭的TOS域。當包匹配規則,它的TOS域首先與第一個掩碼逐位相與,結果再與第二個掩碼逐位異或,掩碼將會被指定為8位16進位制數。TOS的最低有效位必須沒有被改變。TOS域的四個位是最小延時"Minimum Delay", 最大吞吐量"Maximum Throughput", 最大可靠程度"Maximum Reliability"和最小費用"Minimum Cost"。最常用的是把 telnet 和 ftp 的控制連線設為最小延時和把 FTP 資料設為最大吞吐量. 這樣做:ipchains -A output -p tcp -d 0.0.0.0/0 telnet -t 0x01 0x10ipchains -A output -p tcp -d 0.0.0.0/0 ftp -t 0x01 0x10ipchains -A output -p tcp -s 0.0.0.0/0 ftp-data -t 0x01 0x08如果這些太難理解, 使用下表:TOS Name Value Typical UsesMinimum Delay 0x01 0x10 ftp, telnetMaximum Throughput 0x01 0x08 ftp-dataMaximum Reliability 0x01 0x04 snmpMinimum Cost 0x01 0x02 nntp-x, --exact展開數字,包和位元組計數器顯示時使用字尾 'K', 'M', 'G' 來表示1000 1,000,000 和 1,000,000,000。不管數值多大, 使用 '-x' 標誌可以完全顯示它們。這個引數只可以在 –L 後使用。[!] –y, --syn僅僅匹配設定了SYN位,清除了ACK、FIN位的的TCP包。這些包被用來請求初始化的TCP連線,阻止從介面來的這樣的包將會阻止外來的 TCP連線請求。但輸出的TCP連線請求將不受影響。這個引數僅僅當協議型別設定為TCP時才能使用。此引數前可以使用!標誌匹配所有的非請求連線的包。--line-numbers在使用列表規則時,在每行開頭加行號,表示規則在鏈中的位置。--no-warnings去掉所有的警告資訊。Hello Everybody, I am from software.cn99.com.hehe ^_^
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940603/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- docker 引數介紹Docker
- gcc 常用引數介紹GC
- HRMS Function 引數介紹Function
- Oracle 各版本引數/隱藏引數 介紹Oracle
- MongoDB啟動引數介紹MongoDB
- PostgreSQLGUC引數級別介紹SQL
- margin引數簡單介紹
- margin 引數簡單介紹
- SED 手冊 - 4.介紹函式引數(轉)函式
- Oracle expdp impdp dump引數介紹Oracle
- eclipse 啟動引數介紹Eclipse
- 【儲存】megacli 常用引數介紹
- javascript bind()第一個引數以後引數介紹JavaScript
- Oracle 靜態引數與動態引數型別介紹Oracle型別
- mysql一些引數的介紹MySql
- ORACLE推導引數Derived Parameter介紹Oracle
- 【體系結構】Oracle引數介紹Oracle
- 資料表建立引數介紹(一)
- 資料表建立引數介紹(二)
- 資料表建立引數介紹(三)
- 資料表建立引數介紹(四)
- oracle 塊基本引數介紹(英文) (zt)Oracle
- Oracle sqlplus prelim 引數介紹OracleSQL
- mysqldump中skip-tz-utc引數介紹MySql
- ORACLE初始化引數檔案介紹Oracle
- linux的vm相關引數介紹Linux
- Oracle 優化引數 optimizer_mode 介紹Oracle優化
- 【手摸手玩轉 OceanBase 172】清理備份相關引數介紹
- 龍芯1A處理器引數介紹
- java基礎(九) 可變引數列表介紹Java
- CoreImage濾鏡效果及API引數介紹(五)API
- Oracle 最佳化引數 optimizer_mode 介紹Oracle
- Oracle q' 簡化單引號轉義介紹Oracle
- Java 語法介紹(三):變數(轉)Java變數
- 介紹tomcat Connector 引數優化說明Tomcat優化
- 聯發科MT7610EN WiFi晶片引數介紹WiFi晶片
- mysql二進位制日誌的引數介紹MySql
- oracle impdp network_link引數使用介紹Oracle