linux iptables 防火牆

iptables包含有4個表,5個鏈,鏈在表中。html

4個表:filter,nat,mangle,raw。linux

默認表是filter(在沒有指定表的清空),表的優先級:rawtcp

>mangle>nat>filter.ide

filter:通常的過濾功能。
性能

nat:用於nat功能(端口映射,地址映射,)spa

mangle:對特定數據包的修改.net

raw:有限級最高,設置raw時通常是爲了避免再讓iptables作數據包的連接跟蹤處理,提升性能orm


5個鏈:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。htm

     INPUT:     位於 filter 表,匹配目的 IP 是本機的數據包 
     FORWARD:   位於 filter 表,匹配穿過本機的數據包, 
     PREROUTING: 位於 nat 表,用於修改目的地址(DNAT) 
     POSTROUTING:位於 nat 表,用於修改源地址 (SNAT)ip


PREROUTING:數據包進入路由表以前

INPUT:經過路由表後目的地爲本機

FORWARDING:經過路由表後,目的地不爲本機

OUTPUT:由本機產生,向外轉發



120807094039061.gif

120807094039062.gif


iptables語法使用:

iptables [-t 表名     <操做命令>   [要操做的鏈]  [規則號碼]      [匹配條件]    [-j 匹配到之後的動做] 

  操做命令:(-A -I -D -R -P -F)

  -A <鏈名>:增長一條規則(在全部規則的後面)

    例如:iptables -t filter -A INPUT -j DORP  

     #在filter表INPUT鏈中增長一條規則,匹配全部訪問本機ip的數據包,匹配到了就丟棄。

  -I <鏈名> [規則號碼]:插入一條規則

    例如:iptables -I INPUT 3 -j DORP

在filter表INPUT鏈插入一條規則,插入爲第3條,前面必需要有2條規則.若是沒有規則號碼,默認爲1,

 -D <鏈名> [規則號碼|鏈的內容]:刪除一條規則

    例如:iptables -D INPUT 2 

    #刪除filter表INPUT鏈的第2條規則

     iptables -D INPUT -s 192.168.0.1 -j DROP

      刪除filter表INPUT鏈內容爲 -s 192.168.0.1 -j DROP 的規則

      若規則列表中有多條相同的規則時,按內容匹配只刪除序號最小的一條 

  -R <鏈名><規則號碼><內容>:替換一條規則

    例如:iptables -R INPUT 3 -j ACCEPT

     將規則號3的內容替換爲‘-j ACCEPT’

  -P <鏈名> <動做> :設置某個鏈的默認規則

   例如:iptables -P INPUT DORP

      設置 INPUT表的默認規則爲DROP.若是數據包沒有匹配大規則裏的任何規則,就匹配默認規則

 -F <鏈名>:狀況規則

  例如:iptables -F INPUT 

     清空INPUT鏈的全部規則,-F僅是清空鏈中規則,-P設置的默認規則不被清空。


查看命令 [-(vnx)L]

  -L<鏈名>:列出規則(通常用iptables -nvL)

   v:顯示詳細信息

   x:在v的基礎上,禁止自動單位換算(K,M)

   n:只顯示ip地址和端口,不顯示域名和服務

  例如:iptables -nvL   #詳細列出filter表全部鏈的規則

      iptables -t nat -nvL OUTPUT #列出nat表OUTPUT鏈的規則


匹配條件

-i:流入    -o:流出

-s:來源地址    -d:目的地址

-sport:來源端口 -dport:目的端口

-p:協議類型  


-i和-o(匹配數據從網口的進和出)

-i eth0 #匹配從eth0網口進來的數據包

-o eth1 #匹配從eth1網口出去的數據包


-s(匹配來源地址)能夠是ip,網段,域名也能夠爲空(全部地址)

 -s 192.168.10.130   #匹配來自192.168.10.130的數據包

 -s 192.168.10.130/24 #匹配來自192.168.10.130/24網段的數據包


-d(匹配目的地址)能夠是ip,網段,域名也能夠爲空(全部地址)

 -d www.cong.com 匹配去往域名www.cong.com的數據包


-p(匹配協議類型)能夠爲tcp udp icmp等,也可爲空

 -p tcp

 -p udp


--sport(匹配來源端口)能夠是個別端口,也能夠是端口範圍

 --sport 80 匹配源端口是80的數據包

 --sport 80-8080 匹配源端口80-8080的數據包(含80,8080)

 --sport :80 匹配源端口是80如下的數據包(含80)

 --sport 80: 匹配源端口是80以上的數據包(含80)


--dport(匹配目的端口)能夠是個別端口,能夠是端口範圍

 --dport 80 匹配目的端口是80的數據包

 --dport 80-8080 匹配目的端口80-8080的數據包(含80,8080)

 --dport :80 匹配目的端口是80如下的數據包(含80)

 --dport 80: 匹配目的端口是80以上的數據包(含80)

--sport 和--dport必須配合-p參數使用,必須指明協議類型


匹配舉例

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

在INPUT增長一條規則匹配 協議類型爲tcp 目的端口爲80的規則操做爲放行經過

iptables -I OUTPUT -s 192.168.10.12 -d 192.168.10.131 -j ACCEPT

在OUTPUT插入一條 匹配源地址192.168.10.12目的地址192.168.10.131的規則,放行經過 

-s 192.168.10.12 -d www.cong.com -p tcp --dport 80

匹配來自192.168.10.12到www.cong.com 的80端口,tcp協議的數據包


動做/處理方式

 ACCEPT:經過,容許數據包經過,不攔截

 DROP:丟棄,阻止數據包經過本鏈而丟棄它

 SNAT:源地址轉換 能夠是單個ip也能夠是ip地址池

 DNAT:目的地址轉換 能夠是單個ip也能夠是ip地址池

 MASQUERADE:動態源地址轉換

 REDIRECT:用於把數據包轉發到另外一個端口

 REJECT:和DROP同樣,可是DROP不返回信息,REJECT能夠返回指定錯誤信息


-j ACCEPT

  匹配到的數據包容許經過

-j DROP

  匹配到的數據包不容許經過,丟棄

-j SNAT --to ip[-ip:端口-端口](在nat表的POSTROUTING鏈)

 例:iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to 1.1.1.1

    iptables -t nat -A POSTROUTING -s 192.168.10.12 -j SNAT --to 1.1.1.1-1.1.1.10


-j DNAT --to ip[-ip:端口-端口](在nat表的PREROUTING鏈)

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.10.12:80

iptables -t nat -A PREROUTING -d 192.168.10.12 -j DNAT --to 127.0.0.1


-j MASQUERDE

  iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE 
 將源地址是 192.168.0.0/24 的數據包進行地址假裝

-j REDIRECT

  iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

 訪問數據包訪問的80端口轉換爲8080端口

-j REJECT

iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with icmp-net-unreachable



附加模塊

按包狀態匹配(state)

按來源MAC匹配(mac)

按包速率匹配(limit)

多端口匹配(multiport)


state -m state --state狀態

狀態:

NEW:創建新的鏈接

RELATED:相關的 

ESTABLISHED:已創建鏈接

INVALID:無效的


iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT


mac  -m mac --mac-source MAC

     iptables -A FORWARD -m --mac-source xx:xx:xx:xx:xx:xx  -j DROP

  mac地址不能經過路由,因此不要去匹配路由後面的MAC地址


limit  -m limit --limit 速率

  iptables -A FORWARD -d 192.168.10.130 -m limit --limit 50/s -j ACCEPT


multiport (--sports|--dports|--ports)

 iptables -A INPUT -p tcp -m multiports --ports 22,25,80 -j ACCEPT

必須與-p參數一塊兒使用


參考:http://www.jb51.net/os/RedHat/1335.html

    http://www.linuxidc.com/Linux/2012-08/67505.htm

相關文章
相關標籤/搜索