
最近、PHP-FPM および FastCGI プロキシとともに、Apache 2.4 インストールで Event MPM を使用するように変更しました。これが問題の原因でないことを願っています。また、複数の Web サイトがあるわけではありませんが、名前ベースの VirtualHost ディレクティブの使用も開始しました。Linux (具体的には CentOS 7) は、NAT の背後で実行される VM にすぎません。
これらの変更を行う前は、VM がまだ NAT の背後で実行されていたことを除いて、正常に動作していました (少なくとも私はそう信じています。これについては後で説明します)。しかし、現在は「IP が必要」が問題になっています。
<VirtualHost *:80>
DocumentRoot /home/website/public_html
<Directory /home/website>
Allow from all
Options +Indexes
AllowOverride All
</Directory>
<Location />
# Allow Internal IPs
Require ip 10.0.0.0/8
Require ip 172.16.0.0/12
Require ip 192.168.0.0/16
Require ip 0.0.0.0/8
Require ip 127.0.0.0/8
# Allow Company IPs
Require forward-dns broadband1.company.com
Require forward-dns broadband2.company.com
# Allow all IPs (comment it if disallowed)
Require all granted
</Location>
</VirtualHost>
そこで、Web ファイルを フォルダーの下に置くとpublic_html
、うまく動作します。すばらしい! しかし、その後、phpMyAdmin をインストールし、phpMyAdmin.conf
の下/etc/httpd/conf.d/
を以下のように変更しました。
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
# Allow Internal IPs
Require ip 10.0.0.0/8
Require ip 172.16.0.0/12
Require ip 192.168.0.0/16
Require ip 0.0.0.0/8
Require ip 127.0.0.0/8
# Allow Company IPs
Require forward-dns broadband1.company.com
Require forward-dns broadband2.company.com
# Was here by default
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
上記の VirtualHost とは異なり、今回は、ブルートフォース攻撃でデータベースに侵入されると非常に危険なため、すべての IP アドレスに phpMyAdmin へのアクセスを許可しませんでした。
/server-status
同じことがおよびにも当てはまります/server-info
。特定の IP のみがそのようなページにアクセスでき、 はアクセスできませんRequire all granted
。しかし、VirtualHost を使い始めてからは、そのようなページにアクセスできるようになりました。そのため、phpMyAdmin.conf の「Require IP」セクションと、/server-status および /server-info 用に作成したディレクティブは、文字通り正しく機能していません。
それから、好奇心から「Require all grant」を試してコメントを付けてhttpd.conf
何が起こるか確認したところ、予想通り phpMyAdmin にアクセスできなくなりました。つまり、「Require ip」は VirtualHost のみに基づいているようです。ただし、他の 3 つのページは VirtualHost の下には記載されていないため、何を間違えたのかわかりません。
私の質問は、phpMyAdmin と /server-status および /server-info で「Require ip」を再び機能させるにはどうすればよいかということです。ご協力をよろしくお願いします。