AWSで、ELB→EC2の環境にphpMyAdminを設置しました。
yumコマンドですぐ設置できた。
phpMyAdmin – Bringing MySQL to the web
OSとウェブサーバは、Amazon Linux + Apache2.4です。
まずは、Basic認証を設定してみます。
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アドレスどちらかをクリアできればサービスにアクセスすることができます。
では、また。






