首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL Root 弱口令安全防範:攻擊原理剖析與加固指南

     編輯:MySQL 資料庫相關知識

⚠️ 安全聲明

本文旨在防禦視角剖析弱口令攻擊原理,幫助管理員理解風險並實施加固。嚴禁用於未授權系統測試或攻擊,違者承擔法律責任。

攻擊鏈原理剖析 (典型利用路徑)

  1. 弱口令爆破:Root 賬戶使用簡單密碼 (如 root/123456),攻擊者通過字典/暴力破解獲取訪問權限。
  2. 獲取數據庫權限:登錄後擁有最高權限,可讀寫任意數據、創建/刪除庫表。
  3. 利用 INTO OUTFILE 寫文件:
    SELECT '' INTO OUTFILE '/var/www/html/shell.php';
    前提:secure_file_priv 未限制、MySQL 用戶有目標目錄寫權限、知曉 Web 絕對路徑。
  4. 利用 UDF 提權:向 mysql.func 插入惡意 UDF (如 sys_exec),調用執行系統命令。
  5. 寫入啟動項/計劃任務:如原文示例寫 VBS 到啟動文件夾,待重啟觸發添加管理員用戶。

核心防禦體系

1. 賬戶與認證加固 (第一道防線)

  • Root 強密碼:≥16 位,含大小寫、數字、特殊符號,定期輪換。
  • 禁止 Root 遠程登錄:
    DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');
    FLUSH PRIVILEGES;
  • 啟用強密碼驗證插件 (5.7+):
    INSTALL PLUGIN validate_password SONAME 'validate_password.so';
    SET GLOBAL validate_password_policy = 'STRONG';
    SET GLOBAL validate_password_length = 16;
  • 最小權限原則:應用使用專用賬戶,僅授予必要庫表的 SELECT/INSERT/UPDATE/DELETE。

2. 文件系統權限收斂 (阻斷寫 Shell)

  • secure_file_priv = /var/lib/mysql-files/ (限制導入導出目錄),目錄權限 750 mysql:mysql。
  • Web 目錄與 MySQL 數據目錄嚴格分離,MySQL 進程用戶無 Web 目錄寫權限。
  • 禁用 LOAD DATA LOCAL INFILE (客戶端參數 --local-infile=0)。

3. 功能模塊禁用 (減少攻擊面)

  • 不使用 UDF → 刪除 mysql.func 表內容、或編譯時 --without-udf。
  • 不使用符號鏈接 → skip-symbolic-links (Windows) / symbolic-links=0 (Linux)。
  • 不使用本地數據導入 → local_infile=0。

4. 網絡層隔離

  • MySQL 端口 (3306) 僅對應用服務器 IP 開放,安全組/防火牆嚴格限制來源。
  • 啟用 SSL 傳輸:require_secure_transport=ON,配置 CA/Server/Client 證書。
  • 非必要不綁定公網 IP:bind-address=127.0.0.1 或內網 IP。

5. 審計與監控

  • 安裝審計插件:MariaDB Audit Plugin、MySQL Enterprise Audit、McAfee MySQL Audit。
  • 記錄:登錄嘗試 (成功/失敗)、DDL/DML 操作、權限變更、INTO OUTFILE 操作。
  • 異常告警:短時大量登錄失敗、非常用時間段管理員登錄、敏感表大量讀取。

6. 定期滲透測試與漏洞掃描

  • 使用 nmap --script mysql-brute、hydra 定期自查弱口令。
  • 掃描 CVE:CVE-2012-2122 (認證繞過)、CVE-2016-6662 (配置文件注入) 等。

應急響應清單 (發現入侵時)

  1. 立即隔離網絡:修改安全組/防火牆拒絕所有外部連接。
  2. 保證現場:拷貝錯誤日志、慢查詢日志、二進制日志、/tmp 可疑文件。
  3. 檢查賬戶:SELECT User, Host, authentication_string FROM mysql.user; 尋找異常賬戶。
  4. 檢查 UDF:SELECT * FROM mysql.func;。
  5. 檢查定時任務:crontab -l、/etc/cron*/、Windows 計劃任務。
  6. 修改所有密碼、吊鑰可疑證書、重新部署乾淨環境恢復業務。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved