透過iptables策略修復安全漏洞

隨著網路安全威脅的不斷增加,安全中心掃描越來越頻繁。尤其是在大資料安全中心的漏洞報告中,許多漏洞在生產環境中無法透過服務升級來修復,例如:

  • Oracle MySQL cURL 元件輸入驗證錯誤漏洞(CVE-2022-32221)
  • MySQL 拒絕服務漏洞(CVE-2023-21912)
  • Oracle MySQL 安全漏洞(CVE-2022-37434)
  • Oracle MySQL curl/libcURL 安全漏洞(CVE-2023-38545)
生產環境直接升級 MySQL 版本往往不可行。因此,可以透過配置 iptables 規則限制流量和訪問許可權,間接修復這些安全漏洞。iptables 是 Linux 系統上功能強大且靈活的防火牆工具,能夠透過精細化規則實現流量控制和訪問限制。本文將介紹如何利用 iptables 修復常見的安全漏洞。
下載安裝iptables(centos(線上、離線)安裝iptables_離線安裝iptables-CSDN部落格[1])
如果 iptables 正在執行,通常會有規則生效,可以透過以下命令檢視規則是否存在:

iptables -L -n -v

規則策略

#iptables 規則具有順序依賴性
# 新增允許特定IP地址訪問3306埠的規則

iptables -A INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT

iptables -A INPUT -p tcp -s 192.167.10.194 --dport 3306 -j ACCEPT

iptables -A INPUT -p tcp -s 192.167.10.197 --dport 3306 -j ACCEPT

iptables -A INPUT -p tcp -s 192.167.10.199 --dport 3306 -j ACCEPT

iptables -A INPUT -p tcp -s 192.167.10.196 --dport 3306 -j ACCEPT


# 新增拒絕所有其他IP地址訪問3306埠的規則
# 這條規則會匹配所有到3306埠的TCP流量,但由於前面的允許規則,它只會對那些未被允許的IP地址生效。

iptables -A INPUT -p tcp --dport 3306 -j DROP

或者

iptables -A INPUT -p tcp --dport 3306 -j REJECT

執行效果

  • 來自 127.0.0.1192.167.10.194192.167.10.197192.167.10.199192.167.10.196 的連線會被允許透過。
  • 所有其他 IP 地址(即不在允許列表中的 IP 地址)將被拒絕訪問埠 3306。

DROP和REJECT區別:

1. DROP

  • 功能:直接丟棄資料包,不傳送任何響應給傳送方。
  • 效果:從傳送方的角度來看,請求像是被“忽略”了,沒有任何反饋。
  • 適用場景
    • 增加安全性:攻擊者無法得知埠是否開放。
    • 防止埠掃描:讓對方認為埠是“隱形的”。
    • 節省頻寬:不需要傳送拒絕的響應。

2. REJECT

  • 功能:拒絕資料包,同時向傳送方傳送一個拒絕響應(如 ICMP 錯誤訊息)。
  • 效果:傳送方會收到明確的“拒絕”反饋。
  • 適用場景
    • 明確拒絕:告知合法使用者埠不可用。
    • 快速恢復:避免傳送方一直嘗試連線被阻止的埠。
    • 測試除錯:便於檢查網路規則或通訊問題。

補充:

iptables 會按規則順序匹配,早匹配的規則優先順序高,因此插入位置至關重要。
如果要在現有的策略上更新,可以使用 -I(插入)選項而不是 -A(追加)例:
如果你想在所有現有的 INPUT 鏈規則之前新增一條允許來自某個特定 IP 地址(比如 192.167.10.200)訪問 3306 埠的規則,你可以使用以下命令:

iptables -I INPUT -p tcp -s 192.167.10.200 --dport 3306 -j ACCEPT

這條命令會將新的規則插入到 INPUT 鏈的最前面,從而確保它優先於其他所有現有的 INPUT 鏈規則被處理。
連結:https://blog.csdn.net/m0_63004677/article/details/144269012?spm=1001.2014.3001.5502
(版權歸原作者所有,侵刪)

相關文章