公開する Apache 側でも厳格なセキュリティ対策が求められます。特に postgres (スーパーユーザー)権限を持つ PostgreSQL ユーザーの接続はWebサーバー側でセキュリティを確立できない、又はそれだけのスキルが無ければ phpPgAdmin を利用したネットワーク経由のデータベース接続は利用すべきでありません。
phpPgAdmin でスーパーユーザー権限を持つアカウントで接続する場合は、少なくともSSL による接続に限定し、接続するローカルホストを限定する必要があります。外部(WAN)から接続する場合は、更にBasic 認証(.htaccess) を併用する事を推奨します。
サーバー管理者の利用に限定する場合は Apache のSSLクライアント認証の導入も検討して下さい。
Apache 2 では公開ディレクトリ毎にディレクティブ設定ファイルが設置できるようになっています。/etc/httpd/conf.d ディレクトリに phpPgAdmin.conf (任意名) を作成して、phpPgAdmin を公開します。
特にセキュリティに関しては細心の注意が必要です。ブラウザを経由してデータベースに接続する場合、PostgreSQL の認証コードが平文で流れることになります。前のページで説明したように、md5 などの PostgreSQL の暗号化認証は意味を持ちません。
また、Unix アカウントと PostgreSQL 内のデータベースユーザーのアカウントを併用している場合は、Unix の認証コードがネットワークを流れることになります。そのため、phpPgAdmin の利用は SSL に限定すべきです。
以下の例は、Apache 2 の phpPgAdmin 公開ディレクティブの設定例です。通信は SSL に限定し、有効な証明書を提示しなければセッションを確立できないようにしています。
# ドキュメントルートの指定
Alias /phpPgAdmin/ "/var/www/phpPgAdmi/"
<Directory /var/www/phpPgAdmin/>
Options FollowSymLinks ExecCGI +Includes
AllowOverride AuthConfig
# https (SSL) による接続に限定し、http での接続は拒否する
SSLRequireSSL
# SSLクライアント認証の有効化と評価基準
SSLVerifyClient require
SSLVerifyDepth 1
SSLOptions +OptRenegotiate
# 接続ホストの評価基準とアクセス制限
order deny,allow
deny from all
allow from 192.168.3.100 192.168.3.101 192.168.3.102 192.168.3.103
</Directory>
Apache を再起動してポリシ通りか確認してください。上記例だと URL は https://hogehoge.com/phpPgAdmin/ になります。
それぞれのセキュリティポリシに応じた設定が必要になります。そのまま写しても意味はありませんのでご注意ください。 RHL7 の頃に書いた古い記事ですが Apache Web サーバーのSSL化に関しては以下で紹介していますので参考にして下さい。
参照 => セキュアWEBサーバー構築