iptables(Unix-like 下的firewall)
關鍵字:Netfilter、 Nat、 filter、 mangle、 PERROUTING、 POSTROUTING、 INPUT/ OUTPUT、 FORWARD、
具體學習iptables之前,我們首先要瞭解到filter,nat,mangle三張表格,和三張表格裏面的各個chains。
filter表有INPUT、OUTPUT、FORWARD。三條chains。其具體的功能還是請man
nat表有PERROUTING(包進入)、 POSTROUTING(包出去)、 OUTPUT三條chains。其具體的功能依舊man
mangle表有PERROUTING、 OUTPUT、 INPUT、 FORWARD、 POSTROUTING三條chains。其具體的功能forever man。^ -- ^
man後的結果在-t選項出還有raw表格,man給出的原文是:This table is used mainly for configuring exemptions from connection tracking in combination with the NOTRACK target. It registers at the netfilter hooks with higher priority and is thus called before ip_conntrack, or any other IP tables. It provides the following built-in chains: PREROUTING (for packets arriving via any network interface) OUTPUT (for packets generated by local processes)。
這個表和表裏面各條chains有很大的關聯,謹請認真熟悉。
具體的還是iptables的各個參數。具體的參數有很多,還是請認真閱讀man手冊頁。
常用到的參數及具體的功能如下:
-A:追加一條規則。
-I:插入一條規則,如沒制定該規則的number,則變成第一條。有INPUT、OUTPUT、FORWARD,此chain又與-io有關。
-t:table,eg:nat/filter
-L:list,具體table的rule。
-n:不進行ip到hostname的查詢。
-v:更多的資訊
使用查詢後得到的資訊解釋,如下:
target:所進行的動作,具體有ACCEPT(放行),REJECT(拒絕),DROP(丟棄)
prot:使用的packets protocol,有ICMP, TCP, UDP。
opt:額外的選項說明。
source:源位址
destination:目標位址。
-F:清除(flush)所有的已定的規則
-X:刪除所有自訂的chain或tables
-Z:將所有的chain計數歸零
-P:制定Policy , target包含ACCEPT、DROP
-i:進入的那個network interface
-o:出去的那個network interface
-p:協議,封包的包格式,主要有TCP,UDP,IMCP,ALL
-s:源IP位址或網域,若非該IP位址則在ip位址前加!(感嘆號)
-d:同源IP位址格式對應,不過這是目標位址
-j:接的動作,主要的有ACCEPT(接受)、DROP(丟棄)、REJECT(拒絕)、LOG(記錄)。前面三個都瞭解後,這個LOG的意思就是從源位址進來的packages相關的資訊就記錄在/var/log/messages這個日誌檔案中。
--sport:後接端口或端口範圍,限制來源的端口。
--dport:格式同上,限制目標的端口。
TCP特殊的標誌SYN:主動的TCP連接標誌。
iptables的外接module
-m:接外接module,常見的外接module有:state、mac
--mac-source:就是源主機的MAC
--state:一些packages的狀態,主要有:INVALID、ESTABLISHED、NEW、RELATED
INVALID:無效的packets
ESTABLISHED:已經連接成功的連接狀態
NEW:想要建立新的連接packages狀態
RELATED:表示packages是與本機發出去的packages有關。
--icmp-type:後面必須接icmp包類型,也可用類型代號。
-j DNAT --to-destination IP:port :端口映射。
-j REDIRECT --to-port <port number>:同樣也是端口映射。
在工作日上用了兩天終於完成了該IPTABLES的學習。我看了看man的手冊頁,發現還有很多很多的參數,沒有講到比如:-D刪除一條規則,-C更改一條規則,--line-numbers獲得iptables規則的規則編碼,等等。更多的選項還是man更詳盡。
這篇學習總結裏面隻有一個指令,就是iptables其他的都是參數和各種target。
本文轉自ting2junshui51CTO部落格,原文連結:http://blog.51cto.com/ting2junshui/714160 ,如需轉載請自行聯系原作者