Sicheres PHPMyAdmin auf Ubuntu Nginx - direkter Zugriff auf index.php ist noch vorhanden

397
C.A. Vuyk

Auf einem Ubuntu-Nginx-Webserver versuche ich, PHPMyAdmin abzusichern.

Es gibt viele Tutorials, die die Verwendung von auth_basic verbreiten oder alle anderen IP-Adressen zulassen / verweigern und / oder die Verschleierung verwenden, indem der Symlink in PHPmyadmin umbenannt wird. Das ist alles in Ordnung und gut, aber wenn ich diese Methoden verwende, wenn jemand zu domainname.tld / phpmyadmin / index.php wechselt, erscheint der Loginscreen von PHPmyadmin immer noch.

Was kann ich tun, um PHPmyadmin sicherer zu machen?

Die Nginx Sites-Available-Conf-Datei enthält Folgendes:

set $allowed 0; if ($remote_addr = my.ip.address) { set $allowed 1; } location /phpmyadmin { if ($allowed != 1) { rewrite ^ /404 break; } } 
1
Dies scheint etwas kompliziert zu sein. Warum reicht eine reguläre [Zugriffsanweisung] (http://nginx.org/de/docs/http/ngx_http_access_module.html) nicht aus? Seth vor 6 Jahren 0
Ja, das könnte man tun, aber es sind einige weitere Standorte nicht erlaubt. Die Hauptfrage ist, wie Sie außerdem domainname.tld / phpmyadmin / index.php blockieren können C.A. Vuyk vor 6 Jahren 0
Mit einem Standortblock, wie Sie ihn geschrieben haben. Möglicherweise müssen Sie jedoch die Reihenfolge beachten, in der die Direktiven angezeigt werden, und es ist möglicherweise von Bedeutung, welche Art von Übereinstimmungen Sie für die Standortblöcke verwenden. AKA sollte der phpmyadmin-Block ausreichend sein. Wenn dies nicht der Fall ist, hat Ihr PHP-Block wahrscheinlich Vorrang. Daher sind Sie immer noch verwundbar, da die Benutzer jede .php-Datei aufrufen können. Vielleicht sehen Sie sich [diesen digitalen Ozeanartikel] an (https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms). Seth vor 6 Jahren 0
Ok danke, ich fand die Antwort wie unten beschrieben. Denken Sie, dass dies zu einer neuen Anfälligkeit führt, oder ist mein Verständnis nicht richtig? C.A. Vuyk vor 6 Jahren 0
Wie ich schon sagte, ja. Weil Ihr ursprünglicher Ansatz hätte ausreichen sollen. Es war nicht so, dass etwas mit Ihrer Konfiguration nicht stimmt. Versuchen Sie einfach, auf eine der anderen .php-Dateien im Ordner phpmyadmin von einem Ort aus zuzugreifen, der dazu in der Lage sein sollte. Wenn Sie auf diese Datei zugreifen können und keine 404 erhalten, wissen Sie, dass Sie möglicherweise noch anfällig sind. Seth vor 6 Jahren 0
Das Problem bei meinem ursprünglichen Ansatz war, dass es niemandem erlaubt war, /phpmyadmin/index.php auszuführen - die Lösung unten verbietet dies, erlaubt aber die Ausführung anderer PHP-Dateien. Ich habe nicht herausgefunden, wie ich das aufhalten kann. Ihr Link war gut, ich habe diesen auch verwendet. C.A. Vuyk vor 6 Jahren 0

1 Antwort auf die Frage

0
C.A. Vuyk

Dies scheint zu funktionieren, fügte die Position von index.php hinzu und fügte direkt die PHP-Verarbeitung in dieser Position ein (andernfalls wird die PHP-Analyse nicht analysiert):

 set $allowed 0; if ($remote_addr = my.ip.address) { set $allowed 1; } location /phpmyadmin { if ($allowed != 1) { rewrite ^ /404 break; } } location = /phpmyadmin/index.php { if ($allowed != 1) { rewrite ^ /404 break; } include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; }