Postgresql

pg_hba.conf 的安全問題

  • January 10, 2021

我的伺服器上有一個 PHP 腳本,需要訪問數據庫使用者才能正常工作。編寫 PHP 腳本的人告訴將以下內容添加到 pg_hba.conf :

host all all 127.0.0.1/32 trust

這會對我造成任何與安全相關的問題嗎?根據我的理解,該行的作用是它允許本地託管的腳本在沒有密碼的情況下連接到 pgsql。它是否正確 ?

該行的存在是否會導致在沒有數據庫密碼的情況下建立到我的數據庫的任何遠端連接?

是的,除了非常有限的特殊情況之外,您通常應該避免這種配置:

相信

無條件允許連接。此方法允許任何可以連接到 PostgreSQL 數據庫伺服器的人以他們希望的任何 PostgreSQL 使用者身份登錄,而無需密碼或任何其他身份驗證。

$$ .. $$ 信任認證僅適用於 TCP/IP 連接,前提是您信任每台機器上的每個使用者,這些使用者通過指定信任的 pg_hba.conf 行允許連接到伺服器。對除來自 localhost (127.0.0.1) 的 TCP/IP 連接之外的任何 TCP/IP 連接使用信任很少是合理的。

請注意,在不提供任何密碼的情況下允許連接可能已經是這種情況,因為許多發行版預設通過 unix 套接字作為連接使用者來驗證連接。這通常會導致www-data系統www-data使用者無需密碼即可使用 postgres 使用者。檢查其餘的身份驗證配置,看看是否是這種情況。

**建議:**提供密碼或證書身份驗證,不要繼續使用該trust選項。

另請注意,僅將某些內容限制為環回地址通常不足以保證防止外部訪問。通過充當非預期代理的其他軟體訪問環回綁定服務的歷史由來已久。

引用自:https://serverfault.com/questions/1049201