身為MySQL管理員,維護資料庫安裝的安全性與完整性至關重要。本文深入探討內部安全性——即檔案系統層面的防護,防止擁有伺服器主機帳號的用戶(無論合法或竊取)對MySQL資料目錄發動攻擊。
MySQL透過授權表提供靈活的權限系統,可控制網路層面的客戶端存取。然而,若主機上的其他用戶擁有對資料目錄的直接存取權,網路層面的防護便形同虛設。除非你是該主機唯一的登入用戶,否則必須防範其他用戶存取資料目錄的可能性。
GRANT、SET PASSWORD等敏感操作中的明文密碼。攻擊者若具讀取權限,僅需grep即可竊取憑證。若表檔案可讀,攻擊者可在同一主機上啟動一個「特製」MySQL伺服器(不同埠、Socket、資料目錄),將目標表檔案複製至其test資料庫目錄,隨即以SHOW TABLES與SELECT *讀取完整內容。若再開放匿名帳號,更可將竊取資料公開給全世界。
cd DATADIRmysqladm:mysqlgrp)
# chown -R mysqladm:mysqlgrp . # find . -follow -type d -print | xargs chown mysqladm:mysqlgrp
mysqladm可讀
% chmod -R go-rwx . % find . -follow -type d -print | xargs chmod go-rwx
mysqladm身份執行。drwx------ 2 mysqladm mysqlgrp 512 Jan 25 20:40 mysql drwx------ 2 mysqladm mysqlgrp 1536 May 6 06:11 test drwx------ 2 mysqladm mysqlgrp 1024 May 8 18:43 tmp
透過UNIX檔案系統原生的權限機制,將資料目錄鎖定為僅供MySQL服務帳號存取,是內部安全性的核心防線。搭配外部網路層面的授權表管控,方能構建完整的MySQL安全防禦體系。