ハマログ

株式会社イーツー・インフォの社員ブログ

AWSに設置したphpMyAdminにBasic認証を設定/特定のIPアドレスによる制限

AWSで、ELB→EC2の環境にphpMyAdminを設置しました。
yumコマンドですぐ設置できた。

phpMyAdmin – Bringing MySQL to the web

OSとウェブサーバは、Amazon Linux + Apache2.4です。

まずは、Basic認証を設定してみます。

jiko_tojimari

phpMyAdminをyumでインストールした場合、設定ファイルは以下になります。

/etc/httpd/conf.d/phpMyAdmin.conf

変更前の状態

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
    <IfModule mod_authz_core.c>
    # Apache 2.4
    <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
    </RequireAny>
    </IfModule>
#(略)

Basic認証を設定

#(略)
    <RequireAny>
        AuthType Basic
        AuthName "Secret Zone"
        AuthUserFile /etc/httpd/conf.d/phpMyAdmin.htpasswd
        Require valid-user
    </RequireAny>
#(略)

phpMyAdmin.htpasswdを設置して完成です。

さて、毎回認証情報を入力するのもめんどくさいので、特定のIP制限からアクセスされた場合はBasic認証を表示せず、そのままサービスにアクセスできるようにします。

通常は、

<RequireAny>
Require ip 999.999.999.999
</RequireAny>

と記載すればOKなのですが、ELB+EC2の場合、EC2のApacheにはELBのIPアドレスでアクセスされるため、上記では動きません。

調べてみたところ、http2.4にはmod_remoteipというモジュールが標準で含まれていて、こちらを利用することで、本当のアクセスもとのIPアドレスが取得できるようになります。

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

# ↓追加
RemoteIPHeader X-Forwarded-For

<Directory /usr/share/phpMyAdmin/>
    AddDefaultCharset UTF-8
    AllowOverride All

    <IfModule mod_authz_core.c>
    # Apache 2.4
    <RequireAny>
        AuthType Basic
        AuthName "Secret Zone"
        AuthUserFile /etc/httpd/conf.d/phpMyAdmin.htpasswd
        Require valid-user

        # ↓追加
        Require ip 999.999.999.999
    </RequireAny>

#(略)

RequireAnyタグについて

RequireAll:定義されているすべての条件に一致
RequireAny:定義されている、いずれか1つ以上の条件に一致
RequireNone:すべてに該当しない

上記の例の場合、RequireAnyで定義しているため、Basic認証か許可されたIPアドレスどちらかをクリアできればサービスにアクセスすることができます。

では、また。

Amazon Web ServiceAWSBasic認証EC2IP制限phpMyAdmin

  kaneko tomo   2016年9月4日


関連記事

Amazon EventBridgeを利用して定期メール送信を自動化する

以下のようなリマインダーを隔週でチャットワークで内部通知しています。手動での定型…

eclipseではまってしまったこと

きっかけ そもそもの始まりはjavaをアップデートしようと思ったのがきっかけでご…

Google Cloud Ops エージェントでLaravelログをCloud Loggingに転送する

Ops エージェントでVMインスタンス上のログファイルをクラウド側に送る設定をし…


← 前の投稿

次の投稿 →