本章主要討論作為
mysql管理員的您,在維護
mysql安裝的安全性和完整性方面能夠做些什麼。我們已經在第11章中略微談到了一點安全性問題,如設定初始的
mysqlroot 的口令的重要性以及怎樣建立使用者賬號。這些內容是作為啟動和執行安裝過程的一部分被討論
為什麼說安全性是重要的,應該警惕哪些攻擊?
從伺服器主機中的使用者那裡您將面臨什麼風險(內部安全性蘢鍪裁矗?br> 從在網路上連線到伺服器的客戶機那裡您將面臨什麼風險(外部安全性),能做什麼?
mysql管理員有責任保護資料庫內容的安全,使得記錄只能由經過嚴格認證的那些使用者訪問。這包括內部安全性和外部安全性。
內部安全性關心檔案系統級的問題,如保護
mysql資料目錄免遭擁有執行伺服器的機器賬號的使用者的攻擊。但是,如果資料目錄內容的檔案許可權過分隨意,有人可以將對應這些表的檔案進行簡單的替換的話,內部安全性就不能很好地確保適當建立對網路上客戶機訪
問的授權表的控制。
外部安全性關心客戶機從外部連線的問題,如防止
mysql伺服器免遭通過網路進來的通過伺服器的連線請求對資料庫內容訪問的攻擊。要建立
mysql授權表使得它們不允許對伺服器所管理的資料庫的訪問(除非提供了有效的名字和口令)。
本章提供了應該了解的有關問題的指導,並說明如何防止內部和外部級別中未認證的訪問。
mysql伺服器提供了乙個通過
mysql資料庫中的授權表來實現的靈活的許可權系統。可以設定這些表的內容來允許或拒絕資料庫對客戶機的訪問。這提供了關於未認證的網路訪問資料的安全性。但是,如果伺服器主機上的其他使用者具有對該資料目錄內容的直接訪問權,則
將不能對訪問資料的網路建立良好的安全性。除非知道您是曾在執行
mysql伺服器的機器上註冊的惟一的乙個人,否則需要關心在該機器上的其他使用者獲得對資料目錄訪問的可能性。
以下是您想要保護的內容:
資料庫檔案。顯然想要維護由伺服器維護的資料庫的保密性。資料庫的所有者通常要考慮資料庫內容的專有性。即使他們不考慮,也最多是使資料庫的內容公共化,而不會使那些內容因資料庫目錄安全性低而被洩露。
日誌檔案。常規和更新日誌必須安全,因為它們包含了查詢文字。這有相當的利害關係,因為具有日誌檔案訪問的任何人都可以監控發生在資料庫中的事務處理。
與日誌檔案有關的更為特殊的安全性問題是,像grant 和set password 這樣的查詢被記錄在日誌中了。常規和更新日誌檔案包含敏感的查詢文字,其中包括了口令(
mysql使用口令加密,但這只適用於在口令設定之後的連線建立。設定口令的過程包含在grant、insert 或set password 這樣的查詢中,但這些查詢以純文字的形式被記錄。)如果乙個攻擊者具有對日誌的讀訪問權,那他只需在日誌中對grant 或password 這樣的詞執行grep 就能找到敏感資訊。
顯然,您不想讓伺服器主機上的其他使用者擁有對資料目錄檔案的寫訪問權,因為那樣的話,他們就可以在狀態檔案或資料庫表上肆意踐踏。但讀訪問也很危險。如果表檔案可讀取,那麼竊取檔案並使
mysql自己以純文字的形式顯示表的內容是微不足道的事。可按下列步
驟進行:
1) 在伺服器主機上安裝您的
mysql伺服器,但使用與正式伺服器不同的埠、套接字和資料檔案。
2) 執行
mysql_install_db 初始化您的資料目錄。這將允許您作為
mysql的root 使用者訪問伺服器,因此您將具有完全控**務器訪問機制的權利。它還建立了乙個test 資料庫。
3) 將您想竊取的表的相應檔案拷貝到伺服器資料目錄下的test 子目錄中。
4) 啟動作案伺服器。您可以隨意訪問這些表。show tables from test 將顯示您擁有乙個被竊取表的備份, select * 將顯示任何這些表的全部內容。
5) 如果更壞一點,開啟伺服器的匿名使用者賬號的許可權,使任何人都能從任何地方連線到該伺服器來訪問您的test 資料庫。現在,您已經向全世界公布了這些被偷竊的表。
考慮一下剛才的情況,然後顛倒過來想。您希望有人對您這樣做嗎?當然不要。
通過在資料目錄中執行ls -l 可以確定資料目錄中是否包含非安全的檔案或目錄。應檢視具有以開啟的「組」或「其他」許可權的檔案或目錄。以下是乙個非安全資料目錄的部分列表,是該資料目錄中的一部分資料庫目錄:
正如您所看到的,有些資料庫目錄有正確的許可權,而有些則不是這樣。本例中的情況是由於時間引起的。較老的伺服器建立了限制較少的許可權,且較老的伺服器與較新的伺服器相比,在設定許可權方面不嚴格(請注意,有更多限制的目錄, menager 和t m p,都有更為新的日期)。
mysql當前的版本確保這些檔案只對伺服器執行的使用者可讀。
讓我們來安排這些許可權,使得只有伺服器的使用者才能訪問它們。主要的保護手段來自由unix 檔案系統本身提供的工具,這些工具可設定檔案和目錄的所有權及方式。操作步驟如下:
1) 定位到資料目錄中:
% cd datadir
2 ) 設定該資料目錄下所有檔案的所有權為執行該伺服器的賬號所擁有(必須以root 身份執行這一步)。在本書中,筆者對此賬號的使用者名稱和組名使用
mysqladm 和
mysqlg r p。可以用下列命令之一修改所有權:
# chown -r
mysqladmin.
mysqlgrp
# find . -follow -type d -print | xargs chown
mysqladmin.
mysqlgrp
3 ) 修改資料目錄和資料庫目錄的方式,使得它們僅對於
mysqladm 是可讀的。這樣防止了其他使用者訪問資料目錄的內容。可以利用下列命令之一來進行,這些命令或者以root 或者以
mysqladm 執行(後者更好,可以使作為root 執行的命令數量最小化):
% chmod -r go-rwx
% find . -follow -type d -print | xargs chmod go -rwx
4 ) 對
mysqladm 使用者設定資料目錄內容的所有權和方式。現在,您應該確保總是以
mysqladm 執行,因為它現在是唯一擁有該資料目錄訪問權的使用者。作為非root 使用者執行伺服器的過程已在第11章中介紹。
在上述步驟之後,將擁有以下許可權:
mysql安全性試驗 Mysql安全性測試
一 沒有進行預處理的sql語句 1.連線資料庫 conn mysql connect 127.0.0.1 3306 root 518666 if conn die could not connect mysql error 2.選擇資料庫 mysql select db mysql safe con...
FTP伺服器如何實現安全性
原文 ftp伺服器如何實現安全性 作為internet 上的ftp 伺服器,系統的安全性是非常重要的,這是建立 ftp伺服器者所考慮的第乙個問題。其安全性主要包括以下幾個方面 一 未經授權的使用者禁止在伺服器上進行ftp操作。二 ftp使用者不能讀取未經系統所有者允許的檔案或目錄。三 未經允許,ft...
FTP伺服器如何實現安全性
作為internet上的ftp伺服器,系統的安全性是非常重要的,這是建立ftp伺服器者所考慮的第乙個問題。其安全性主要包括以下幾個方面 一 未經授權的使用者禁止在伺服器上進行ftp操作。二 ftp使用者不能讀取未經系統所有者允許的檔案或目錄。三 未經允許,ftp使用者不能在伺服器上建立檔案或目錄。四...