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

MySQL 安全性指南 (一):內部安全 — 保護資料目錄存取

     編輯:MySQL 資料庫相關知識

雙層安全模型

  • 內部安全:檔案系統層級,防止本機帳號存取資料目錄
  • 外部安全:網路層級,控制客戶端連線授權

若資料目錄權限過鬆,外部授權設定再完美也無用 — 攻擊者可直接複製/竄改表檔案。

必須保護的內容

  1. 資料庫檔案:核心資產,防止未授權讀取/複製
  2. 日誌檔案:查詢日誌、更新日誌含敏感 SQL (含 GRANT、SET PASSWORD 明文密碼)
  3. 狀態檔案:.pid、.sock 等,防止偽造/刪除

資料目錄權限檢查

ls -l /var/lib/mysql/

危險徵兆:出現「group」或「other」有 r/w/x 權限的檔案/目錄。

不安全範例

drwxrwxr-x  2 mysqladm wheel  512 Jan 25 20:40 mysql   <-- group/other 可讀寫執行
drwxrwxr-x  7 mysqladm wheel  512 Aug 31 1998 sql-bench

安全範例

drwx------  2 mysqladm mysqlgrp 512 Apr 16 15:57 manager   <-- 僅擁有者可存取
drwx------  2 mysqladm mysqlgrp 512 Apr 16 15:57 test

攻擊情境:竊取資料表檔案

  1. 攻擊者取得表檔案 (.MYD, .MYI, .frm)
  2. 自行安裝 MySQL,設定不同 port/socket/datadir
  3. 執行 mysql_install_db 成為自建實例的 root
  4. 將竊取檔案放入自建實例的 test 資料庫目錄
  5. 啟動服務,SELECT * 直接讀取資料
  6. 甚至開放匿名存取,公開竊取資料

修正權限標準流程

  1. 停止 MySQL 服務
  2. 設定資料目錄擁有者:chown -R mysql:mysql /var/lib/mysql
  3. 設定目錄權限:chmod 700 /var/lib/mysql (遞迴)
  4. 設定檔案權限:chmod 660 /var/lib/mysql/*/* (資料檔)
  5. 日誌檔同樣限制:chmod 640 /var/log/mysql/*; 擁有者 mysql:adm
  6. 啟動服務驗證

關鍵原則

MySQL 資料目錄應視同 /etc/shadow 等級機密 — 僅 MySQL 進程擁有者可存取。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved