Безопасный PHPMyAdmin в Ubuntu Nginx - прямой доступ к index.php все еще существует

311
C.A. Vuyk

На веб-сервере Ubuntu - Nginx я пытаюсь защитить PHPMyAdmin.

Существует множество учебных пособий, которые распространяют информацию об использовании auth_basic или разрешают владеть / запрещать все другие IP-адреса и / или использовать обфускацию путем переименования символической ссылки в PHPmyadmin. Это все хорошо, но если я использую эти методы, когда кто-то переходит на domainname.tld / phpmyadmin / index.php, экран входа PHPmyadmin по-прежнему появляется.

Что я могу сделать, чтобы обеспечить безопасность PHPmyadmin?

Конфу-файл nginx sites-available содержит следующее:

set $allowed 0; if ($remote_addr = my.ip.address) { set $allowed 1; } location /phpmyadmin { if ($allowed != 1) { rewrite ^ /404 break; } } 
1
Это кажется несколько запутанным. Почему обычной [директивы доступа] (http://nginx.org/en/docs/http/ngx_http_access_module.html) недостаточно? Seth 6 лет назад 0
Да, это можно сделать, но есть еще несколько мест, не разрешенных. Главный вопрос, как также заблокировать domainname.tld / phpmyadmin / index.php C.A. Vuyk 6 лет назад 0
С блоком местоположения, как вы написали. Возможно, вам придется соблюдать порядок, в котором появляются директивы, и может иметь значение, какие совпадения вы используете для блоков местоположения. AKA блока phpmyadmin должно быть достаточно. Если это не так, вероятно, ваш блок php имеет приоритет. Следовательно, вы все равно будете уязвимы, потому что люди смогут вызывать любой файл .php. Может быть, проверьте [эту статью о цифровом океане] (https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms) Seth 6 лет назад 0
Хорошо, спасибо, я нашел ответ, как описано ниже. Как вы думаете, это создает какую-то новую уязвимость, или мое понимание неверно? C.A. Vuyk 6 лет назад 0
Как я уже объяснил, да. Потому что ваш оригинальный подход должен был быть достаточным. Это не так, скорее всего, что-то не так с вашей конфигурацией. Просто попробуйте получить доступ к одному из других файлов .php в папке phpmyadmin из местоположения, которое должно быть в состоянии. Если вы можете получить доступ к этому файлу и не получите 404, вы знаете, что вы все еще потенциально уязвимы. Seth 6 лет назад 0
Проблема с моим первоначальным подходом заключалась в том, что DID позволял кому-либо выполнять /phpmyadmin/index.php - решение, приведенное ниже, запрещает это, но разрешает выполнение других файлов php. Я не понял, как это остановить. Ваша ссылка была хорошей, я тоже использовал эту. C.A. Vuyk 6 лет назад 0

1 ответ на вопрос

0
C.A. Vuyk

Это похоже на работу, добавил местоположение index.php и напрямую обрабатывает php в этом месте (в противном случае php не анализируется):

 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; } 

Похожие вопросы