★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

17.6. サーバのなりすましの防止

サーバが実行中、悪意のあるユーザがクライアント/サーバ通信を妨害することはできません。 しかし、サーバが停止している時、ローカルユーザに対し、独自のサーバを起動させることで正常なサーバになりすますことは可能です。 なりすましたサーバで、クライアントから送信されたパスワードを読み取ることも問い合わせを読み取ることも可能です。 しかし、PGDATAディレクトリの安全性はディレクトリの権限により維持されていますので、データを返すことはできません。 誰もがデータベースサーバを起動させることができるため、なりすましは可能です。 特殊な設定がなされていなければ、クライアントは無効なサーバであることを識別できません。

local接続に対して無効なサーバを防ぐ、もっとも簡単な方法は、信頼できるローカルユーザのみに書き込み権限を付与したUnixドメインソケットディレクトリ(unix_socket_directory)を使用することです。 これにより、悪意のあるユーザがそのディレクトリに独自のソケットを作成することを防ぐことができます。 一部のアプリケーションがソケットファイルのために/tmpを参照し、なりすましに対して脆弱であるかもしれないと気にするならば、オペレーティングシステムの起動時に、再割り当てされたソケットファイルを指し示す/tmp/.s.PGSQL.5432というシンボリックリンクを作成してください。 また、このシンボリックリンクを保護するために、/tmpを整理するスクリプトを変更する必要があるかもしれません。

TCP接続では、サーバはhostssl接続(項21.1)のみを受け付け、SSLのserver.key(キー)とserver.crt (証明書) ファイル(項17.8)を持たせる必要があります。 TCPクライアントはsslmode='require'項30.1)を使用して接続し、~/.postgresql/root.crt SSL証明書(項30.16)を持たせる必要があります。