
Ich habe vor Kurzem die Verwendung von Event MPM in meiner Apache 2.4-Installation geändert, neben PHP-FPM und FastCGI-Proxy. Ich hoffe, das war nicht der Grund für mein Problem. Ich habe auch angefangen, mit namenbasierten VirtualHost-Direktiven zu arbeiten, obwohl ich nicht mehrere Websites habe. Linux (insbesondere CentOS 7) ist nur eine VM, die hinter NAT läuft.
Vor diesen Änderungen hat es einwandfrei funktioniert (zumindest glaube ich das, was ich später erklären werde), außer dass die VM immer noch hinter NAT lief. Aber die „IP erforderlich“-Funktion stört mich jetzt.
<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>
Wenn ich also die Webdateien in den public_html
Ordner lege, funktioniert es prima. Genial! Aber dann habe ich phpMyAdmin installiert und phpMyAdmin.conf
unter geändert /etc/httpd/conf.d/
, wie unten:
<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>
Anders als beim oben genannten VirtualHost habe ich dieses Mal nicht allen IP-Adressen Zugriff auf phpMyAdmin gewährt, da es äußerst gefährlich ist, wenn sie mit roher Gewalt in die Datenbank eindringen können.
Dasselbe gilt für /server-status
und /server-info
, nur bestimmte IPs können auf solche Seiten zugreifen und sicher nicht Require all granted
. Aber nachdem wir VirtualHost verwenden, können sie auf solche Seiten zugreifen, sodass der Abschnitt „IP erforderlich“ unter phpMyAdmin.conf und die Anweisungen, die ich für /server-status und /server-info erstellt habe, buchstäblich nicht richtig funktionieren.
Dann habe ich neugierig versucht, „Require all granted“ auszukommentieren httpd.conf
und zu sehen, was passiert, und dann ist phpMyAdmin wie erwartet nicht erreichbar. Es sieht also so aus, als ob „Require ip“ ausschließlich auf dem VirtualHost basiert. Die anderen 3 Seiten werden jedoch unter VirtualHost nicht erwähnt, also weiß ich nicht, was ich falsch gemacht habe.
Meine Frage ist: Wie kann ich dafür sorgen, dass „IP erforderlich“ für phpMyAdmin und /server-status und /server-info wieder funktioniert? Vielen Dank im Voraus für Ihre Hilfe!