Linux防火牆之iptables基礎

經過爲防火牆提供有關對來自某個源,到某個目的地或具備特定協議類型的信息包要執行操做的指令及規則控制信息包的過濾。經過使用Netfilter/iptables系統提供的特殊命令iptables創建這些規則,並將其添加到內核空間的特定信息包過濾表內的鏈中。添加,除去及編輯規則命令的通常語法以下:安全

$ iptables [-t table] command [match] [target]網絡

大部分規則都是按這種語法寫的,若是不想用標準的表,就要在「table」處指定表名。通常狀況下,沒有必要指定使用的表,由於iptables默認使用Filter表來執行全部的命令。也沒有必要必須在這裏指定表名。spa

  • command:告訴程序該作什麼,好比插入一個規則,在鏈的末尾增長一個規則,或者刪除一個規則。設計

  • match:描述包的某個特色,以使這個包區別於其餘全部的包,能夠指定包的來源IP地址,網絡接口,端口,協議類型或者其餘。接口

若數據包符合全部的match,那麼內核使用target來處理它,或者說把包發往target。例如,可讓內核把包發送到當前表中的其餘鏈(多是本身創建的),或者只是丟棄這個包而不作任何處理,或者向發送者返回某個特殊的應答。Netfilter/iptables內核空間默認的表和鏈以下:ip


下面逐個討論這些選項:get

1. tabletable

[-t table]選項容許使用標準表以外的任何表。表是包含僅處理特定類型信息包的規則和鏈的信息包過濾表。有3種可用的表選項,即Filter,NAT和Mangle。該選項不是必需的,若是未指定,則Filter用做默認表。這裏咱們就只講講Filter表。Filter表用來過濾數據包,能夠在任什麼時候候匹配包並將其過濾,根據包的內容對包作DROP或ACCEPT。固然也能夠預先在其餘處作一些過濾,可是這個表纔是設計用來過濾的。幾乎全部的target均可以在此使用。iptables

2. command語法

命令中必要的組成部分command是iptables命令的最重要部分,它告訴iptables命令要執行的操做。例如,插入規則,將規則添加到鏈的末尾或刪除規則。下表展現了經常使用命令及其功能:


部分選項及其功能:


3. match

iptables命令的可選match部分指定信息包與規則匹配所應具備的特徵(如源和目的地址及協議等),可歸爲5類:一是generic matches(通用的匹配),適用於全部的規則;二是TCP matches,只能用於TCP包;三是UDP ,只能用於UDP包;四是ICMP matches,針對ICMP包;五是針對狀態,指全部者和訪問的頻率限制等。在此只介紹通用匹配:


4. target

目標是由規則指定的操做,那些與規則匹配的信息包執行這些操做。除了容許用戶定義的目標以外,還有許多可用的目標選項用於創建高級規則的目標,如LOG, REDIRECT, MARK, MIRROR和MASQUERADE等。經常使用目標及其說明:

5. 狀態機制

狀態機制是iptables中特殊的一部分,鏈接跟蹤可讓Netfilter知道某個特定鏈接的狀態。運行鏈接跟蹤的防火牆稱爲「帶有狀態機制的防火牆」,如下簡稱爲「狀態防火牆」。狀態防火牆比非狀態防火牆要安全,由於它容許編寫更嚴密的規則。在iptables中,包和被跟蹤鏈接的4種不一樣狀態有關,即:NEW, ESTABLISHED, RELATED和INVALID。

相關文章
相關標籤/搜索