我正在通過Postgresql配置文件,最近發現有一個ssl
選項。我想知道這是什麼時候需要的。
說出是否有應用程序服務器和數據庫服務器 - 不在專用網絡中運行。如果用戶嘗試登錄,如果SSL未啓用,則應用服務器在查詢其是否有效的用戶名/密碼時,將明文中的用戶密碼傳輸到數據庫?
這是什麼標準做法?我應該設置我的數據庫來使用SSL嗎?
如果是這樣,那麼在我的Rails應用程序中,config/database.yml
中的連接設置是否有區別?
謝謝!
我正在通過Postgresql配置文件,最近發現有一個ssl
選項。我想知道這是什麼時候需要的。
說出是否有應用程序服務器和數據庫服務器 - 不在專用網絡中運行。如果用戶嘗試登錄,如果SSL未啓用,則應用服務器在查詢其是否有效的用戶名/密碼時,將明文中的用戶密碼傳輸到數據庫?
這是什麼標準做法?我應該設置我的數據庫來使用SSL嗎?
如果是這樣,那麼在我的Rails應用程序中,config/database.yml
中的連接設置是否有區別?
謝謝!
像其他協議索姆鏈接,使用SSL/TLS對PostgreSQL允許您以確保客戶端與服務器之間的連接。您是否需要它取決於您的網絡環境。
沒有SSL/TLS,竊聽者可以看到客戶端和服務器之間的流量:所有的查詢和響應,以及可能的密碼,取決於您配置pg_hba.conf
(是否the client is using md5
or a plaintext password)的方式。
據我所知,it's the server that requests MD5 or plaintext password authentication,所以當不使用SSL/TLS時,一個活躍的中間人攻擊者可以降級並獲取密碼。
一個配置良好的SSL/TLS連接應該能夠防止密碼和數據的竊聽和MITM攻擊。
您可以要求使用SSL在服務器端使用sslhost
在pg_hba.conf
,但這只是問題的一部分。最終,just like for web servers,這完全取決於客戶端驗證SSL,並且它與正確的服務器一起使用。
Table 31-1 in the libpq documentation總結了您獲得的保護級別。
本質:
disable
,allow
和prefer
是無用的(不帶「否」或「也許」,如果你想安全)。require
幾乎沒有用,因爲它根本不驗證遠程服務器的身份。verify-ca
不驗證主機名,這使得它易受MITM攻擊。如果安全問題給您的是verify-full
你想要的。
這些SSL模式名稱由libpq設置。其他客戶端可能不會使用相同的(例如純Ruby實現或JDBC)。
據我所知,ruby-pg依賴於libpq。不幸的是,它only lists "disable|allow|prefer|require" for its sslmode
。如果直接傳遞,也許verify-full
也可以工作。但是,還需要一種配置CA證書的方法。
考慮密碼以外的數據。如果你使用或不是我幾乎是一個安全態勢問題。你需要你的系統有多安全?如果連接剛好在您的私人網絡上,那麼您在該網絡上的任何人都可以列出來。如果不接受使用SSL的情況,我就不啓用它。如果連接正常,則應啓用互聯網SSL。
正如@Wooble所說。您不應該首先將密碼作爲明文發送出去。在這種情況下,stanard解決方案是將散列存儲在數據庫中,並僅發送散列以進行驗證。
Here是關於軌道部分
@Wooble顯然這是一個人爲的例子。有多種原因希望加密應用程序服務器和數據庫之間的流量,即使使用散列密碼也是如此。不幸的是,你的評論沒有絲毫有用。 – Brandon 2013-03-12 16:56:55