無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

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

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

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

TCP接続のなりすましを防ぐための最善の方法は、SSL証明書を使用し、クライアントがサーバの証明書を確実に検査することです。 これを行うためには、サーバは hostssl 接続( 項19.1 )のみを受け付け、SSLキーと証明書ファイル( 項17.9 )を持たせる必要があります。 TCPクライアントは sslmode=verify-ca もしくは verify-full を使用して接続し、また、適切なルート証明書ファイルをインストールしなけれななりません( 項31.18.1 )。


powered by SEO.CUG.NET