2021-05-12 14:32:11
iptables基礎知識詳解
iptables命令是Linux上最常用的防火牆代理,可以很好得控制進出流量以及限速等。
iptables不是真正意義上得防火牆,我們應該把它理解為一個代理,使用者通過iptables這個代理,將使用者的安全設定執行到對應的"安全框架"裡面,【netfilter】,這個框架才是真正的防火牆。
netfilter位於核心空間。
iptables是一個命令列工具,位於使用者空間。
首先,我們介紹幾個基本概念。
netfilter:
Linux作業系統核心層的內部的一個封包處理模組,它有如下幾個功能:
- 網路地址轉換(NAT)
- 封包內容修改
- 封包過濾【防火牆功能】
rules:
規則是網路管理員預定義的條件,一般形式為"如果符合XXX的條件,就XXX這樣處理"。
規則儲存在核心空間的資訊包過濾表中,這些規則分別指定了源/目的地址,傳輸協定,服務型別等。
當封包與規則匹配時,就按照定義的方法進行處理【放行,拒絕,丟棄】。
設定防火牆主要就是設定這些規則。
鏈:
核心要想實現報文的【放行,拒絕,丟棄】,就要在核心設定關卡,符合條件放行,不符合阻止,這些所謂的關卡就叫鏈,主要包括【input,output】。
而報文並不是每次的目標主機都是本機,當主機支援 IP_FROWARD時,我們可以把報文轉發給其他伺服器,也就是其他鏈,"路由前","轉發","路由後"。
如圖:
鏈為什麼叫鏈呢?
我們前文已經說過,防火牆的作用就是對經過關卡的報文匹配規則,然後執行相對應的動作。但是關卡上的規則可能不止一條,有可能有很多條,每個經過此關卡的報文,都要將這些所有的規則都匹配一遍,所以,我們將這些關卡稱之為鏈。
鏈名 |
功能 |
INPUT |
處理輸入封包 |
OUTPUT |
處理輸出封包 |
PORWARD |
處理轉發封包 |
PREROUTING |
用於目標地址轉換(DNAT) |
POSTOUTING |
用於源地址轉換(SNAT) |
表:
我們把具有相同功能的規則的集合叫做表。
表名 |
功能 |
核心模組 |
主要用於 |
filter |
負責過濾功能 |
iptables_filter |
防火牆 |
nat |
網路地址轉換 |
iptable_nat |
閘道器路由器 |
mangle |
拆解報文,修改,重新封裝 |
iptable_mangle |
服務品質(QOS) |
raw |
關閉nat表上啟用的連線追蹤機制 |
iptable_raw |
高階功能,如:網址過濾 |
所有的規則都儲存在這四張表中。
表的優先順序為: raw -> mangle -> nat -> filter
動作:
accept |
接收封包 |
DROP |
丟棄封包 |
REDIRECT |
重定向、對映、透明代理 |
SNAT |
源地址轉換 |
DNAT |
目標地址轉換 |
MASQUERADE |
IP偽裝(NAT),用於ADSL |
LOG |
紀錄檔記錄 |
接下來,我們介紹一下iptables的使用:
•基本命令
?清除已有的規則
iptables -F
iptables -X
iptables -Z
?檢視已有的規則
iptables -vnL
iptables -L -n --line-numbers(刪除前檢視序號)
?刪除已有的規則
iptables -D INPUT 8
•開放指定埠
?iptables -A OUTPUT -j ACCEPT #允許所有本機向外的存取
?iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允許存取22埠
?iptables -A INPUT -j reject #禁止其他未允許的規則存取
?iptables -A FORWARD -j REJECT #禁止其他未允許的規則存取
•遮蔽指定埠
?iptables -I INPUT -s 123.45.6.7 -j DROP #遮蔽單個IP的命令
?iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即從123.45.6.1到123.45.6.254的命令
•相對複雜的命令
iptables -A INPUT -i br-ext -p tcp --dport 5355 -j DROP -m comment --comment 'huwangxingdong'
鏈 介面 協定 目的埠 丟棄 備註
•選項
-t<表> |
指定要操縱的表; |
-A |
向規則鏈中新增條目; |
-D |
從規則鏈中刪除條目; |
-i |
向規則鏈中插入條目; |
-R |
替換規則鏈中的條目; |
-L |
顯示規則鏈中已有的條目; |
-F |
清除規則鏈中已有的條目; |
-Z |
清空規則鏈中的封包計算器和位元組計數器; |
-N |
建立新的使用者自定義規則鏈; |
-P |
定義規則鏈中的預設目標; |
-h |
顯示幫助資訊; |
-p |
指定要匹配的封包協定型別; |
-s |
指定要匹配的封包源ip地址; |
-j<目標> |
指定要跳轉的目標; |
-i<網路介面> |
指定封包進入本機的網路介面; |
-o<網路介面> |
指定封包要離開本機所使用的網路介面。 |
相關文章