私のサーバーには、正常に動作するためにデータベース ユーザーにアクセスする必要がある PHP スクリプトがあります。その PHP スクリプトをプログラムした人は、pg_hba.conf に次のコードを追加するように指示しました。
host all all 127.0.0.1/32 trust
これにより、セキュリティ関連の問題が発生する可能性がありますか? 私の理解では、この行は、ローカルにホストされているスクリプトがパスワードなしで pgsql に接続できるようにするものです。これは正しいですか?
この行が存在すると、データベース パスワードなしでデータベースへのリモート接続が確立される可能性がありますか?
答え1
はい、それは非常に限られた特別な場合を除いて、一般的には避けるべきである:
信頼
接続を無条件に許可します。この方法では、PostgreSQL データベース サーバーに接続できるすべてのユーザーが、パスワードやその他の認証を必要とせずに、任意の PostgreSQL ユーザーとしてログインできます。
[..]
信頼認証は、信頼を指定する pg_hba.conf 行によってサーバーへの接続が許可されているすべてのマシン上のすべてのユーザーを信頼する場合にのみ、TCP/IP 接続に適しています。ローカルホスト (127.0.0.1) 以外の TCP/IP 接続に信頼を使用することはほとんど合理的ではありません。
多くのディストリビューションでは、デフォルトで接続ユーザーとして Unix ソケット経由で接続を認証するため、パスワードを入力せずに接続を許可する設定が既に行われている可能性があることに注意してください。これにより、通常、www-data
システム ユーザーはパスワードなしで postgres ユーザーを使用できるようになりますwww-data
。認証設定の残りの部分をチェックして、これが当てはまるかどうかを確認してください。
おすすめ:パスワードまたは証明書認証をプロビジョニングし、ないオプションを続行しますtrust
。
また、何かをループバック アドレスのみに制限することは、一般に、外部からのアクセスに対する十分なセキュリティの保証にはならないことにも注意してください。意図しないプロキシとして機能する他のソフトウェアを介してループバック バウンド サービスがアクセスされるという長い歴史があります。