ハマログ

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

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日


関連記事

「example.com」について

先日、弊社の品質管理部の中でこんな話題がありました。 試験の中で「存在しないメー…

libfaketimeを使ってdocker-composeの複数コンテナでダミー時刻を設定する

私たちがDockerなどで使っているコンテナ技術の実態は、仮想マシン(VM)のそ…

AWS S3のデータを取り出す

現在、社内で利用しているサーバのデータはAWSにバックアップしています。いざとい…


← 前の投稿

次の投稿 →