您現在的位置是:首頁 > 籃球

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

  • 由 ArveyCheung 發表于 籃球
  • 2022-01-13
簡介4表5鏈N規則的之間構成的關係如下圖所示:以及各個表之間的鏈是按照一定順序進行來判斷的,如下圖所示:三、防火牆iptables運用:在遇到有不知如何操作的,可以透過iptables -h命令檢視幫助,找到對應的解決方法

如何設定防火牆級別

一、何為防火牆?

所謂防火牆也稱之為防護牆,它是一種位於內部網路與外部網路之間的網路安全系統。一項資訊保安的防護系統。按照給定的規則,允許或者限制網路報文透過。在這裡主要透過iptables工具新增“規則”,Linux主機防火牆由使用者態iptables工具+核心態netfilter模組來實現。

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

說到linux主機防火牆iptables的設定之前,先來理解下所謂的

4表5鏈N規則

是個什麼梗?

我們先來看看, 當客戶端瀏覽器去訪問web伺服器的時候, 一個客戶端的資料報文和伺服器的互動流程就如下圖所示:

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

所以為了使防火牆達到包過濾的目的, 我們需要在資料報文流經的路徑上,設定一些關卡: 只有讓所有進出的報文都流經這些關卡中, 同時我們在關卡上設定一些條件, 報文經過檢查後,符合放行條件的才給放行, 而那些不符合不達標的條件的報文則會被阻止,不能夠放行。

在Linux主機中的防火牆“

iptables

”中,關卡就稱之為“鏈”,所謂的條件就稱之為“規則”,根據題目要求所說的配置使用防火牆,其意思就是在相應的鏈中新增規則。

二、4表5鏈N規則:

1、Linux主機防火牆中設定了有5道關卡,即“5鏈”:

這個linux主機設定的5道關卡中,分別對應有:

INPUT

(輸入);

OUTPUT

(輸出);

PREROUTING

(路由前);

FORWARD

(轉發);

POSTROUTING

(路由後)。

目前要用到的有

input

output

兩個鏈,其他三個鏈是作為一些閘道器路由器裝置時才會使用,就先暫且不說。

而組合完整的一個數據報文的場景如下圖所示:

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

根據實際的場景,資料報文的流向:

PREROUTING -> INPUT

(外網 到本機的報文);

PREROUTING -> FORWARD -> POSTROUTING

(由本機路由器 轉發的報文) ;

OUTPUT -> POSTROUTING

(本機程序發出的報文);

2、鏈和規則之間的關係:

規則:

就是是滿足某個條件,就做什麼事情,由條件+操作組合而成。其操作 :

-j ACCEPT|DROP(允許/不允許)

來表示。

每個關卡中可以設定多條“

規則

”, 所謂的“

”即是“

關卡

”,就是每一個關卡中由多條規則串在一起的就叫“

”,

如下圖所示:

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

3、何為4表?

首先,我們先得知道防火牆的作用:

它就是對經過的報文匹配一定的“規則”, 然後執行對應的操作,比如放行或是阻攔。

在有些場景中,為了實現特定的功能,就需要在幾個不同關卡中去配置相應的規則,而這幾個不同關卡就統稱為“

”。

Linux主機系統中內建的有4個表,分別如下所示:

filter:

資料包過濾、 INPUT、FORWARD、OUTPUT ;

nat:

網路地址轉換(對映)、PREROUTING、INPUT、OUTPUT、POSTROUTING;

mangle:

報文拆解、修改報文並重新封裝:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING;

raw:

關閉連結追蹤機制等、PREROUTING、INPUT、OUTPUT。

注:

新版核心中增加內建表 security,同時 這裡只講下其中一個表“

filter”

4表5鏈N規則的之間構成的關係如下圖所示:

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

以及各個表之間的鏈是按照一定順序進行來判斷的,如下圖所示:

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

三、防火牆iptables運用:

在遇到有不知如何操作的,可以透過

iptables -h

命令檢視幫助,找到對應的解決方法。

我這裡先開啟看看我們原始的iptables配置,可以透過命令

iptables -L

進行檢視。

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

1、"-A"追加:

這上面是原始的,沒配置過的,現在,比如我們在伺服器80埠上面部署了一個網站,我想讓其新增一條規則,以至於讓大家都訪問不了這個網站怎麼辦?這時候可以透過以下命令來達到要求:

iptables -t filter -A INPUT -p tcp ——dport 80 -j DROP

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

其意思就是往iptables防火牆中的

filter表

裡的

INPUT鏈

追加一條

規則,

協議是

TCP

的,並且目的地址是

80埠的

就丟棄掉。

2、檢視行號:

或者檢視對應的行號,透過以下命令:

iptables -t filter -L ——line-numbers

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

3、"-D"刪除:

知道了行號,可以透過刪除對應的行號,以下命令實現:

iptables -t filter -D INPUT 1

結果,刪除成功:

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

此“

D

”為刪除某個鏈中的第幾條規則。

4、"-I"插入:

有刪除,既有插入規則,可以透過以下命令實現:

iptables -t filter -I INPUT 1 -p tcp ——dport 80 -j ACCEPT

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

5、"-R"替換:

也可以透過 “

-R”

將某個鏈中的第幾條規則替換成新的規則,透過以下命令:

iptables -t filter -R INPUT 2 -p tcp ——dport 23 -j ACCEPT

沒替換之前:

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

替換之後:

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

6、"-F"清空:

作用:

清空某個鏈的規則,如果鏈的引數沒有給定,那麼就清空整個表,

命令如下

iptables -t filter -F INPUT

如今,整個表清空之後已恢復初始的樣子:

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

注:

如果

iptables -t filter -F

(後面不帶任何對應的鏈),則清空整個表。

當然條件中,還有涉及到以下條件:

-s 源ip地址:

匹配ip報文源地址是某個IP;

-d 目的ip地址:

匹配ip報文目的地址是某個IP;

-p <協議>:

如-p tcp|udp等等;

擴充套件的選項,判斷埠號:

如——dport 目標埠號,——sport 源埠號;

-i 網絡卡名:

從哪個網絡卡流入的報文;

-o 網絡卡名:

從哪個網絡卡流出的報文。

例如:

開放 80埠給所有請求,命令可以這樣:

iptables -t filter -A INPUT -p tcp ——dport 80 -j ACCEPTiptables -t filter -A OUTPUT -p tcp ——sport 80 -j ACCEPT

假設有一條堡壘機的ip地址為192.168.1.1,那麼開放23埠給堡壘機的命令則可以這麼寫:

iptables -t filter -A INPUT -s 192。168。1。1 -p tcp ——dport 23 -j ACCEPTiptables -t filter -A OUTPUT -d 192。168。1。1 -p tcp ——sport 23 -j ACCEPT

以及禁止所有請求訪問,可以設定所有鏈中的預設策略為

DROP

,這裡僅設為INPUT的預設策略為DROP,命令則可以這樣:

iptables -t filter -P INPUT DROP

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

以上等等條件,根據不用情況具體問題具體分析。

防火牆的iptables規則的判斷順序是從第一條開始一條條往下判斷的,如果條件匹配就執行對應的操作,則不會再繼續往下走。

四、對於ping攻擊如何防護?

有一種低階的DDoS攻擊,像這種透過

ping -s <數量> 也會導致伺服器損失網路流量資源以及cpu計算資源的危害,icmp 8號型別的請求其實就是 icmp echo-request ,,直接拒絕掉。

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

可以透過命令設定:

iptables -t filter -A INPUT -p icmp ——icmp-type 8 -j DROP

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

同時出去的報文如果是

icmp echo-reply

型別(0號) ,也是要禁止的,可以命令設定為:

iptables -t filter -A OUTPUT -p icmp ——icmp-type 0 -j DROP

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

最後,也可以透過配置伺服器,來關閉ping的echo報文的響應,

命令則可以這樣

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

五、防火牆iptables如何進行匯出與匯入?

1、匯出:

比如透過這串命令:

iptables-save > /要儲存的檔案路徑/iptables。rule

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

2、匯入:

透過這串命令:

iptabels-restore < /之前所儲存的檔案路徑/iptables。rule

就可以看到之前所配置的規則了,儲存匯出的資料相當於備份了一份檔案。

六、安全審計:

什麼是安全審計?

[安全審計就是一種事後追蹤技術,比如被入侵了,從核心中去監控使用者的行為,記錄使用者的敏感操作,也並不是要將使用者的所有操作都記錄下來,僅只需要記錄敏感資訊。]

在對這個工作進行前,需要安裝安全審計服務的工具“

auditd

”,如果Linux中沒有自帶,可以自行安裝即可,安裝之前,先更新一下源:

透過命令

apt-get update

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

安裝步驟如下

第一步安裝:

sudo apt install auditd

我之前安裝過了,所以顯示:

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

第二步啟動審計服務:

sudo /etc/init。d/auditd start 或者透過 systemctl status auditd。service

這代表啟動成功的介面:

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

第三步驗證安裝是否成功?能夠看到 auditd 就行:

ps aux | grep audit

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

七、安全審計使用:

工具安裝好了之後,現在是配置檔案環節,配置檔案有個注意的地方,不看清楚的話,也算是個[

小坑

]。

注意:

這個小坑在於配置檔案的檔案路徑是在這個目錄下的:

/etc/audit/rules.d/audit.rules,

而非

/etc/audit/audit.rules

檔案目錄下,因為這個檔案是最後生成的臨時檔案,每次重啟服務都會重新生成一個,就是你每次配置設定這個檔案之後,每當重啟服務後,發現修改是無效的。

檢視日誌動態的檔案可以透過進入:

/var/log/audit/ ,然後執行命令:

tail -f audit。log

透過檢視

/var/log/audit/audit.log

日誌來確定使用者的行為,包括可以檢視其日誌型別包含了時間戳,對應的程序號、使用者id、組id、終端id,執行的命令以及命令的地址以及關鍵字等。如果多個使用者同時ssh連線,每個ssh連線對應終端號也不一樣。

比如透過這個命令可以檢視對應的時間:

date -d “@1635082742。047”

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

1、auditctl用法:

審計服務的核心控制命令,audit。rulese就是要使用這個命令來載入配置規則的。

透過

auditctl -w 檔名..... -p 許可權 -k 關鍵字。

注意:這個

同樣也是一個臨時檔案,重啟audit後也會不存在,最終還是需要到這個

/etc/audit/rules.d/audit.rules

檔案裡去配置。

所以我這裡先新增一條審計規則

auditctl -w /home/arveycheung/software/test/testss。txt -p rwxa -k hello

以下有三個命令:

auditctl -l:可以

檢視當前生效的規則;

auditctl -s:

可以檢視審計服務的執行狀態;

auditctl -D:

可以清空當前審計服務生效的規則。

效果如下所示:

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

2、ausearch的使用:

作用:

依賴審計日誌來進行日誌查詢,以下有三個命令方法的實現:

(1)、ausearch -k keyname :

可以檢視關鍵字key相關的內容;

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

(2)、ausearch -f filename :

可以檢視和檔案相關內容;

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

(3)、ausearch -ui uidtext :

可以檢視某個使用者id相關內容。

這裡內容過多就不截圖了。

3、aureport的使用:

作用:

依賴審計日誌來產生一個報告,正常的審查流程是先檢視報告的,若報告有問題再去檢視具體的日誌資訊。

(1)、

透過這個 [

aureport

] 命令得到如下資訊;

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

(2)、

透過這個命令 [

aureport -au

] 可以檢視和鑑權相關的資訊;

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

(3)、

透過這個命令 [

aureport -m

] 可以檢視和賬戶修改相關的資訊;

Linux系統主機防火牆Iptables如何配置?該如何進行安全審計?

八、總結:

除了有iptables防火牆之外,還有一種輕量級別的防火牆“

tcpwrapper

”,使用前提,服務可執行程式需要連線了libwrap。so動態庫,對於一些人來說很麻煩。總而言之,能用iptables防火牆儘量就用iptables吧。

Top