Ubuntu 16.04 / phpMyAdmin / Wie man den Zugriff nur von bestimmten IPs ermöglicht
Um die IP-Adressen, die auf phpMyAdmin in Apache 2.4 zugreifen können, einzuschränken, verwenden Sie Require ip in den Zugriffseinstellungen des phpMyAdmin-Verzeichnisses. Geben Sie die zulässigen Adressen an, überprüfen Sie die Konfigurationssyntax und laden Sie dann Apache neu. Der Zugriff wird dann nur für die angegebenen Adressen auf den Pfaden erlaubt, auf denen die Einstellungen angewendet werden.
Anwendungsbereich und Voraussetzungen
Dieser Artikel verwendet das Beispiel von phpMyAdmin, das aus dem Paket auf Ubuntu installiert wurde und direkt von Apache 2.4 bereitgestellt wird, wobei das /usr/share/phpmyadmin-Verzeichnis in seiner Konfiguration verwendet wird. Die Installationsmethode, der virtuelle Host, Aliase und der Speicherort der Konfigurationsdateien variieren je nach Umgebung. Übernehmen Sie dieses Beispiel nicht unverändert für Setups, die Nginx, Container oder separate Proxies verwenden.
Die standardmäßige Sicherheitsunterstützung für Ubuntu 16.04 LTS endete im April 2021, und der Ubuntu Pro-Support endete im Mai 2026. Überprüfen Sie die Bedingungen für zusätzlichen Legacy-Support und planen Sie die Migration zu einer unterstützten Version. Den detaillierten Zeitplan können Sie unter Ubuntu Security Maintenance Schedule einsehen.
Wenn Einstellungen falsch angewendet werden, können selbst Administratoren möglicherweise nicht auf das System zugreifen. Bevor Änderungen vorgenommen werden, sichern Sie den Konsolen- oder SSH-Zugang zum Server und überprüfen Sie die tatsächlichen IP-Adressen der Administratoren, die Zugriff haben, sowie den von phpMyAdmin verwendeten Pfad. Beim Zugriff über das Internet ist in der Regel die öffentliche IP erforderlich, die vom Server gesehen wird, und nicht die private IP des Verwaltungs-PCs. Die vom Server gesehene Adresse kann je nach Verwendung von VPN, Proxy, NAT und IPv6 variieren.
Überprüfung der aktuellen Apache-Konfiguration und Backup
Überprüfen Sie die Aliase und Verzeichniseinstellungen von phpMyAdmin in der Apache-Version und der aktiven Konfiguration. Wenn die folgenden Dateien nicht existieren, suchen Sie die tatsächliche Konfigurationsdatei entsprechend der Installationsmethode. Die folgenden Suchergebnisse können Einstellungen enthalten, die nicht aktiv sind, überprüfen Sie daher auch die aktiven Einstellungen und virtuellen Hosts.
apache2 -v
sudo apache2ctl -S
sudo grep -R -n -i phpmyadmin /etc/apache2/conf-enabled /etc/apache2/sites-enabled
Wenn die Paketkonfiguration in /etc/apache2/conf-available/phpmyadmin.conf existiert und diese Konfiguration aktiv ist, sichern Sie sie, bevor Sie Änderungen vornehmen. Wenn die untenstehenden Backup-Dateien bereits existieren, geben Sie ihnen einen anderen Namen, um ein Überschreiben zu vermeiden.
sudo cp -a /etc/apache2/conf-available/phpmyadmin.conf /etc/apache2/conf-available/phpmyadmin.conf.before-ip-restriction
Öffnen Sie die tatsächliche Konfigurationsdatei mit einem Texteditor und suchen Sie den Abschnitt <Directory /usr/share/phpmyadmin>. Zum Beispiel können Sie sie mit folgendem Befehl bearbeiten.
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Erlaubte IP-Adressen festlegen
Nach Überprüfung der Zugriffsberechtigungsregeln im bestehenden phpMyAdmin-Verzeichnisabschnitt legen Sie die Genehmigungsregeln fest, die für diesen Abschnitt gelten, wie folgt. Die unten stehenden Adressen sind Beispiele zu Erklärungszwecken, daher müssen sie unbedingt durch die tatsächlichen Adressen des Administrators ersetzt werden. Behalten Sie die vorhandene PHP-Verarbeitung oder andere notwendige Einstellungen im ursprünglichen Abschnitt bei.
<Directory /usr/share/phpmyadmin>
Require ip 192.0.2.10
</Directory>
Der obige Block ist ein Beispiel, das den Zugriffskontrollteil zeigt. Löschen Sie nicht den gesamten bestehenden Verzeichnisabschnitt und fügen Sie ihn unverändert ein. Wenn Sie Require all granted und Require ip nebeneinander im selben Abschnitt platzieren, kann der Zugriff erlaubt werden, wenn eines von beiden erlaubt ist. Überprüfen Sie daher die bestehenden Genehmigungsregeln, um sicherzustellen, dass die beabsichtigten Einschränkungen tatsächlich angewendet werden. Andere Directory- oder Location-Abschnitte oder Authentifizierungseinstellungen können ebenfalls die Ergebnisse beeinflussen, also überprüfen Sie die gesamte Konfiguration.
Wenn es mehrere Adressen gibt, können Sie sie durch Leerzeichen getrennt auflisten. Zum Beispiel erlaubt die folgende Regel den Zugriff, wenn sie mit einer der beiden Adressen übereinstimmt. Wenn Sie einen Netzwerkbereich angeben, wird der gesamte Bereich erlaubt, also geben Sie nur den notwendigen Bereich an. IPv6-Adressen und die CIDR-Notation werden ebenfalls unterstützt.
Require ip 192.0.2.10 198.51.100.25
Die Direktiven Order, Deny und Allow sind Legacy-Syntax, die zur Kompatibilität in Apache 2.4 unterstützt wird. Vermeiden Sie es, alte und neue Regeln wahllos zu mischen; überprüfen Sie die vorhandene Konfiguration und alle anderen Authentifizierungsanforderungen, bevor Sie zur aktuellen Syntax migrieren. Siehe das Zugriffskontrollhandbuch von Apache und die Require ip-Dokumentation für Adressformate und -umfang.
Syntaxprüfung, Anwendung und Verbindungsprüfung
- Nach dem Speichern der Datei überprüfen Sie die Syntax der gesamten Apache-Konfiguration mit folgendem Befehl. Wenn
Syntax OKnicht erscheint, überprüfen und korrigieren Sie die Datei und die Zeile des Fehlers. Die Syntaxprüfung garantiert nicht, dass die Zugriffspolitik wie vorgesehen funktioniert.
sudo apache2ctl configtest
- Wenn die Syntaxprüfung erfolgreich ist, laden Sie die Konfiguration neu und überprüfen Sie den Dienststatus. Der Dienstname kann je nach Distribution variieren.
sudo systemctl reload apache2
sudo systemctl status apache2
- Greifen Sie von einem erlaubten Netzwerk aus über die vorhandene Adresse auf phpMyAdmin zu. Wenn Sie die Zugriffskontrolle bestehen, kann der Anmeldebildschirm erscheinen, aber eine separate Datenbankanmeldung ist erforderlich.
- Überprüfen Sie dieselbe Adresse von einem separaten Netzwerk, das nicht in der Positivliste enthalten ist. Wenn die betreffende Apache-Regel gilt und keine anderen Fehler vorliegen, wird im Allgemeinen
403 Forbiddenangezeigt. Wenn eine erlaubte Adresse blockiert wird oder eine nicht erlaubte Adresse die Seite öffnen kann, überprüfen Sie die Serverprotokolle, die zutreffenden Konfigurationsabschnitte, den Proxy und die IP-Adressen.
Proxy-Umgebung und zusätzliche Sicherheit
Wenn Apache hinter einem Reverse-Proxy oder Lastenausgleich steht, kann es die IP des Proxys anstelle der tatsächlichen Benutzer-IP sehen. In diesem Zustand kann das Zulassen der Proxy-Adresse mehr Benutzern Zugriff gewähren, als beabsichtigt, daher seien Sie vorsichtig. Um die tatsächliche Client-Adresse zu verwenden, ist es notwendig, nur vertrauenswürdige Proxies zu konfigurieren. Vertrauen Sie nicht blind auf Header, die von beliebigen Clients gesendet werden; nachdem Sie die Apache mod_remoteip-Dokumentation überprüft haben, konfigurieren Sie entsprechend Ihrem Netzwerk-Setup.
IP-Beschränkungen ersetzen nicht das phpMyAdmin-Login oder die Verwaltung von Datenbankberechtigungen. Verwenden Sie HTTPS und begrenzen Sie die Kontoberechtigungen auf den notwendigen Umfang. Wenn öffentliche IPs in Ihrer Umgebung häufig wechseln, ziehen Sie anstelle des blinden Zulassens eines großen Adressbereichs Zugriffspfade wie VPNs in Betracht.
Verbindungsprobleme und Zurücksetzen der Einstellungen
Wenn der Zugriff blockiert ist, überprüfen Sie die aktuelle öffentliche IP des Administrators, IPv4- und IPv6-Routen, ob die Konfigurationsdatei aktiv ist, und ob Freigaberegeln aus anderen Zonen angewendet werden. Der Speicherort der Apache-Fehlerprotokolle hängt von der Konfiguration ab, und in der Standard-Ubuntu-Installation können Sie /var/log/apache2/error.log überprüfen. Seien Sie vorsichtig beim Teilen von Protokollen, da sie sensible Informationen enthalten können.
Wenn Sie Änderungen rückgängig machen müssen, vergleichen Sie zuerst, um sicherzustellen, dass niemand sonst die Dateien seit dem Backup geändert hat, stellen Sie die Backup-Datei an ihrem ursprünglichen Pfad wieder her und führen Sie dann eine Syntaxprüfung durch und laden Sie neu. Die Wiederherstellung der vorherigen Konfiguration kann den zuvor erlaubten Zugriff erneut ermöglichen, überprüfen Sie daher nach der Wiederherstellung den Zugriffsumfang.
sudo cp -a /etc/apache2/conf-available/phpmyadmin.conf.before-ip-restriction /etc/apache2/conf-available/phpmyadmin.conf
sudo apache2ctl configtest && sudo systemctl reload apache2
Wenn eine Syntaxprüfung Fehler ergibt, laden Sie nicht erneut; beheben Sie stattdessen die Konfiguration. Überprüfen Sie außerdem, dass die beabsichtigten Anmelde- und Zugriffsrestriktionen sowohl in erlaubten als auch in nicht erlaubten Umgebungen eingehalten werden.




