防火牆策略通常分爲兩種,一種叫「通」策略,一種叫「堵」策略,通策略,默認門是關着的,必需要定義誰能進。堵策略則是,大門是洞開的,可是你必須有身份認證,不然不能進。因此咱們要定義,讓進來的進來,讓出去的出去,因此通,是要全通,而堵,則是要選擇。當咱們定義的策略的時候,要分別定義多條功能,其中:定義數據包中容許或者不容許的策略,filter過濾的功能,而定義地址轉換的功能的則是nat選項。爲了讓這些功能交替工做,咱們制定出了「表」這個定義,來定義、區分各類不一樣的工做功能和處理方式。網絡
用的比較多個功能有3個:
1.filter 定義容許或者不容許的
2.nat 定義地址轉換的
3.mangle功能:修改報文原數據tcp
iptables是工做在用戶空間的,它可讓規則進行生效的,自己不是一種服務,並且規則是當即生效的。而咱們iptables如今被作成了一個服務,能夠進行啓動,中止的。啓動,則將規則直接生效,中止,則將規則撤銷。 ide
iptables還支持本身定義鏈。可是本身定義的鏈,必須是跟某種特定的鏈關聯起來的。在一個關卡設定,指定當有數據的時候專門去找某個特定的鏈來處理,當那個鏈處理完以後,再返回。接着在特定的鏈中繼續檢查。代理
規則(rules)其實就是網絡管理員預約義的條件,規則通常的定義爲「若是數據包頭符合這樣的條件,就這樣處理這個數據包」。規則存儲在內核空間的信息 包過濾表中,這些規則分別指定了源地址、目的地址、傳輸協議(如TCP、UDP、ICMP)和服務類型(如HTTP、FTP和SMTP)等。當數據包與規 則匹配時,iptables就根據規則所定義的方法來處理這些數據包,如放行(accept)、拒絕(reject)和丟棄(drop)等。配置防火牆的 主要工做就是添加、修改和刪除這些規則。rest
注意:規則的次序很是關鍵,誰的規則越嚴格,應該放的越靠前,而檢查規則的時候,是按照從上往下的方式進行檢查的。日誌
規則表之間的優先順序 Raw——mangle——nat——filter接口
iptables(選項)(參數)ip
選項
-t<表>:指定要操縱的表;
-A:向規則鏈中添加條目;在當前鏈的最後新增一個規則
-D num:從規則鏈中刪除條目;明確指定刪除第幾條規則
-I num:向規則鏈中插入條目;把當前規則插入爲第幾條
-R num :替換規則鏈中的條目;Replays替換/修改第幾條規則
-L num:顯示規則鏈中已有的條目;
-F:清除規則鏈中已有的條目;
-Z:清空規則鏈中的數據包計算器和字節計數器;
-N:建立新的用戶自定義規則鏈;
-P:定義規則鏈中的默認目標;
-h:顯示幫助信息;
-p:指定要匹配的數據包協議類型;-p tcp|udp --dport 80
-s:指定要匹配的數據包源ip地址;
-j<目標>:指定要跳轉的目標;
-i<網絡接口>:指定數據包進入本機的網絡接口;eth0 流入通常用在INPUT和PREROUTING上
-o<網絡接口>:指定數據包要離開本機所使用的網絡接口。eth0 流出通常在OUTPUT和POSTROUTING上路由
iptables命令選項輸入順序:
iptables -t 表名 <-A/I/D/R> 規則鏈名 [規則號] <-i/o 網卡名> -p 協議名 <-s 源IP/源子網> --sport 源端口 <-d 目標IP/目標子網> --dport 目標端口 -j 動做get
表名包括
raw:高級功能,如:網址過濾。
mangle:數據包修改(QOS),用於實現服務質量。
net:地址轉換,用於網關路由器。
filter:包過濾,用於防火牆規則
動做包括
ACCEPT:接收數據包。
DROP:丟棄數據包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址轉換。
DNAT:目標地址轉換。
MASQUERADE:IP假裝(NAT),用於ADSL。
LOG:日誌記錄。
容許全部IP訪問
iptables -A INPUT -j ACCEPT
禁止全部網絡訪問
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT
開放指定IP訪問
iptables -A INPUT -s 192.167.3.4 -j ACCEPT
拒絕指定IP訪問
iptables -A INPUT -s 192.167.3.4 -j REJECT
容許指定源IP訪問指定目標IP
iptables -A INPUT -i eth0 -s 10.1.6.41 -d 10.1.6.129 -j ACCEPT
容許指定源IP訪問指定目標IP 以及目標端口
iptables -A INPUT -i eth0 -s 10.1.6.41 -d 10.1.6.129 -p tcp --dport 22 -j ACCEPT
指定連續的端口--dport 8080-9000 不能指定多個非連續端口
iptables -A INPUT -i eth0 -s 10.1.6.41 -d 10.1.6.129 -p tcp --dport 8080-9000 -j ACCEPT
-p tcp:TCP協議的擴展
--dport 21 指定目標端口
--sport 指定源端口
-p udp:UDP協議的擴展
--dport:指定目標端口
--sport:指定源端口
-p icmp:icmp數據報文的擴展
--icmp-type:
echo-request(請求回顯),通常用8 來表示
因此 --icmp-type 8 匹配請求回顯數據包
echo-reply (響應的數據包)通常用0來表示
容許本地迴環接口(即運行本機訪問本機)
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
#容許已創建的或相關連的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#容許全部本機向外的訪問
iptables -A OUTPUT -j ACCEPT
容許全部網絡訪問22|80|ftp21|ftp20端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
容許指定IP網絡訪問22|80|ftp21|ftp20端口
iptables -A INPUT -s ip -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s ip -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s ip -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -s ip -p tcp --dport 20 -j ACCEPT
禁止指定IP訪問22|80|ftp21|ftp20端口,屏蔽某個網絡段:123.0.0.0/8|16|24
iptables -A INPUT -s ip -p tcp --dport 22 -j REJECT|DROP
iptables -A INPUT -s ip -p tcp --dport 80 -j REJECT|DROP
iptables -A INPUT -s ip -p tcp --dport 21 -j REJECT|DROP
iptables -A INPUT -s ip -p tcp --dport 20 -j REJECT|DROP
規則保存
service iptables save
查看防火牆規則:
iptables -L -n -v
iptables -S
刪除已添加的iptables規則
清空防火牆策略
iptabes -F
將全部iptables以序號標記顯示,執行:
iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 10.1.6.41 10.1.6.129 tcp dpt:22
2 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
好比要刪除INPUT裏序號爲8的規則,執行:
iptables -D INPUT 2
控制規則的存放以及開啓
注意:你所定義的全部內容,當你重啓的時候都會失效,要想咱們可以生效,須要使用一個命令將它保存起來
1.service iptables save 命令
它會保存在/etc/sysconfig/iptables這個文件中
2.iptables-save 命令
iptables-save > /etc/sysconfig/iptables
3.iptables-restore 命令開機的時候,它會自動加載/etc/sysconfig/iptabels若是開機不能加載或者沒有加載,而你想讓一個本身寫的配置文件(假設爲iptables.2)手動生效的話:iptables-restore < /etc/sysconfig/iptables.2則完成了將iptables中定義的規則手動生效