Apache 2.4 の「Require ip」は、httpd.conf に VirtualHost ディレクティブを追加しても /server-status、/phpMyAdmin などで動作しません。

Apache 2.4 の「Require ip」は、httpd.conf に VirtualHost ディレクティブを追加しても /server-status、/phpMyAdmin などで動作しません。

最近、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」を再び機能させるにはどうすればよいかということです。ご協力をよろしくお願いします。

関連情報