1.定義
什麼是防火牆?防火牆是指一種將內網和外網邏輯上分隔開的一種技術,對兩邊的網絡進行包過濾。防火牆可分爲網絡防火牆和主機防火牆。網絡防火牆一般是在網絡邊界(如外網出口,局域網之間)上的硬件設備,可以對整個局域網內的主機和設備進行防護。主機防護牆是指在主機系統上的防護軟件,可以針對每一臺主機自定義防護等級。
什麼是iptables?windows10的防火牆是defender防火牆,Linux的防火牆是處於內核的netfilter,iptables就是netfilter防火牆的一個命令行管理工具,處於用戶層面,可以管理Linux的防火牆。
2.規則策略
規則是管理員預設的條件,數據包匹配到這個預設的條件後,會根據策略進行放行(accept)、拒絕(reject)和丟棄(drop)。拒絕和丟棄的結果相同數據包不會通過防火牆,區別拒絕是丟棄數據包,同時會給數據發送端一個響應的信息,客戶端剛請求就會收到拒絕的信息;而丟棄則是將數據包直接丟棄而用戶不會得到任何系統上的提示。匹配成功後的數據包就不會繼續匹配後面的規則了。
默認規則是防火牆中最後一條規則,是一條託底的規則,當數據包沒有匹配所有預設條件時會匹配最後一條默認規則,放行或者丟棄。一般默認規則都是丟棄,如果設置成放行而過濾規則不夠豐富,防火牆就是失去作用了。
3.數據方向
根據數據的流向可以將數據包分爲以下幾類,其中重點需要處理的就是外網進入內網的數據了。
處理流入的數據包(INPUT)
處理流出的數據包(OUTPUT)
處理轉發的數據包(FORWARD)
在進行路由選擇後處理數據包(POSTROUTING)
在進行路由選擇前處理數據包(PREROUTING)
4.iptables的使用
iptables命令可以根據流量的源地址、目的地址、傳輸協議、服務類型等信息進行匹配,一旦匹配成功,iptables就會根據策略規則所預設的動作來處理這些流量。
參數 作用
-P 設置默認策略
-F 清空規則鏈
-L 查看規則鏈
-A 在規則鏈的末尾加入新規則
-I 在規則鏈的頭部加入新規則
-D 刪除某一條規則
-j 處理規則策略的動作ACCEPT、REJECT、DROP
-s 匹配源地址,加歎號“!”表示除這個IP外
-d 匹配目標地址
-i 網卡名稱 匹配從這塊網卡流入的數據
-o 網卡名稱 匹配從這塊網卡流出的數據
-p 匹配協議,如TCP、UDP、ICMP
--dport num 匹配目標端口號
--sport num 匹配來源端口號
4.1使用iptables -L查看策略,默認策略都是放通,這樣防火牆並沒有作用,我們清空策略並設置默認策略拒絕。
[root@localhost Desktop]# iptables -F
[root@localhost Desktop]# iptables -P INPUT DROP
這樣再看另一臺主機ping這臺設備時就不通了,所以ping不通不一定是設備關機或者網絡故障了,可能是開啓了防火牆過濾了ICMP包了。
4.2開啓只允許192.168.10.20這個主機對本設備的ping包策略。
[root@localhost Desktop]# iptables -I INPUT -s 192.168.10.30/32 -p icmp -j ACCEPT
4.3開啓只允許192.168.10.20這個主機對本設備的SSH端口策略。
[root@localhost Desktop]# iptables -I INPUT -s 192.168.10.20 -p tcp --dport 22 -j ACCEPT
4.4添加所有人允許訪問服務器的DNS策略。
[root@localhost Desktop]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
[root@localhost Desktop]# iptables -A INPUT -p udp --dport 53 -j ACCEPT
4.5開啓自定義端口65510-65520的所有端口策略。
[root@localhost Desktop]# iptables -A INPUT -p udp --dport 65510:65520 -j ACCEPT
[root@localhost Desktop]# iptables -A INPUT -p tcp --dport 65510:65520 -j ACCEPT
4.6查看策略並保存。
[root@localhost Desktop]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 192.168.10.20 anywhere tcp dpt:ssh
ACCEPT icmp -- 192.168.10.20 anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpts:65510:65520
ACCEPT tcp -- anywhere anywhere tcp dpts:65510:65520
以下省略...
[root@localhost Desktop]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]