2017-05-15 19 views
1

我是相當新的系統管理工作的深度,尤其是在這個層面上,並一直負責建立認證PHP應用程序和MySQL之間的進程間通信的「行業標準」的方式數據庫服務器PHP的MySQL進程間TLS

我似乎無法找到mysql或PHP文件中的任何引用。爲了加密的目的,我發現在PHP和Mysql之間的標準TLS信息量非常大,但對於相互身份驗證(在Mysql中對PHP應用程序進行身份驗證)完全沒有任何影響。這是可能的,或沒有自定義插件?

+0

我敢說,在實踐中,沒有一個驗證從MySQL的PHP​​應用程序保存正常的認證,其中用戶名/密碼組合是建立在MySQL,而該用戶被允許某些角色。除此之外,MySQL不會「知道」。這是另一個類似的問題:http:// stackoverflow。COM /問題/ 40881874 /如何對加密連接-PHP-和使用,互證書AUTHENT的mysql-間 –

回答

2

TLS只保證使用數據包嗅探工具的人不能剝奪你的憑據「脫線」。它無法確保連接到MySQL的設備或應用程序的身份。

對於諸如此類的事情,你需要一個像SSH的附加層,或某種自定義應用程序的,做驗證,允許通過的一些品種的代理渠道到MySQL連接之前。這可能是一項複雜的工作,它當然是而不是的行業標準。

當前的標準很簡單:

  • 限制哪些機器可以通過積極的防火牆規則訪問你的MySQL服務器。港口3306應該從來沒有是開放的一般互聯網。至少它應該被鎖定到少數白名單IP或像192.168.x.0/24這樣的網絡塊,作爲你的內部專用網絡的一部分。
  • 如果您無法確保MySQL服務器和應用程序之間的連接不安全,請使用TLS或SSH隧道。如果您的服務器位於不同的物理位置並且無法確保連接安全,這一點非常重要。
  • 使您的用戶名和密碼憑據合理複雜,難以蠻力。由於這些是在應用程序級別配置的,所以60個以上的字母密碼不成問題。使它們變大並且完全隨機。你永遠不需要手工輸入這些。使用配置文件或密碼管理器。

如果您有其他疑問,得到的審計由一家著名的安全公司做,以確保你的策略是合理的。

0

有兩種常用的方法。首先,如果PHP應用程序正確檢查了mysql服務器的證書,那麼你知道mysql服務器就是它聲稱的那個人。這驗證了MySQL的MySQL。然後,當您發送數據庫密碼時,您已將該php應用程序認證到了mysql服務器。您在每個方向使用了不同的方法,但實現了相互認證。這是迄今爲止最常用的方法,它確實符合相互認證的定義。

不太常見的方法是使用client certificates;請參閱「要求還使用客戶端證書」的文本。 通過對mysql的命令行(以及來自php的類似連接參數)使用--ssl-cert和--ssl-key參數,可以向服務器提供客戶端證書。服務器的證書用於驗證服務器到php,以及客戶端證書來驗證php到服務器。