首頁 > 軟體

iptables基礎知識詳解

2020-06-16 16:33:31

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<網路介面>

指定封包要離開本機所使用的網路介面。


IT145.com E-mail:sddin#qq.com