18 Февраль 2018, 06:28

Цитата дня:

UNIX прост. Но надо быть гением, чтобы понять его простоту. Деннис Ритчи


Защита доступа к phpMyAdmin средствами Nginx

Автор STALKER_SLX, 16 Январь 2018, 23:28

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

Вниз

STALKER_SLX

Доброго времени суток, уважаемые форумчане!

Установил и настроил веб-сервер Nginx и phpMyAdmin в Ubuntu 16.04, согласно статьи Настраиваем веб-сервер на базе Nginx + PHP-FPM в Debian / Ubuntu Server с внесением корректив для PHP7.0.
Всё отлично заработало!

Но возник вопрос, как же защитить доступ к «phpMyAdmin» средствами самого Nginx, по аналогии с тем как это было при использовании веб-сервера Apache.

Немного погулив, решил внести такую секцию в файл виртуального хоста  моего тестового сайта - http://drupal-site.loc:

location /phpmyadmin/ {
    auth_basic "Restricted zone";
    auth_basic_user_file /home/tester/.htpasswd;
  }


Создал файл с паролями по указанному пути - «/home/tester/.htpasswd».

После этого выполнил:
service nginx reload

и nginx -t

Ошибок не обнаружено.

В результате при переходе по ссылке: http://drupal-site.loc/phpmyadmin/ - открывается окно с запросом логина и пароля доступа и после выполнения успешной авторизации выдает ошибку «404 Not Found» (?!).

Хотя до внесения вышеупомянутой конструкции по защите доступа - все было ОК.

Подскажите, пожалуйста, что я делаю не так?!


2. При обслуживании нескольких сайтов на одном сервере, дабы не плодить лишние конструкции в каждом конфиге виртуального хоста, какие изменения нужно внести в созданный раннее шаблон (согласно указанной выше статье) конфига «phpMyAdmin» для Nginx?!

Уваров А.С.

location /phpmyadmin/ {
    auth_basic "Restricted zone";
    auth_basic_user_file /home/tester/.htpasswd;
  }


А дальше? Nginx получил запрос, нашел location, аутентифицировал клиента и... Дальше то что?

Стандартная настройка Phpmyadmin для Nginx выглядит так:

location /phpmyadmin {
        root /usr/share/;
            index index.php index.html index.htm;

            location ~ ^/phpmyadmin/(.+\.php)$ {
                    try_files $uri =404;
                        root /usr/share/;
                        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
               }

               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
access_log    off;
    log_not_found    off;
    expires 1M;
               }
        }


Возьмите его на основу, в начало добавьте аутентификацию и проверьте как работает.

STALKER_SLX

Спасибо большое Вам, Андрей, за хорошую подсказку!

1. После внесения этих двух строк:
auth_basic "Restricted zone";
auth_basic_user_file /home/tester/.htpasswd;


в самое начало шаблона «phpmyadmin» (содержимое которого приведено Вами выше, а также в Вашей статье) сразу после строки
location /phpmyadmin {

но перед root /usr/share/; - все заработало как нужно!!!


2. Кроме того, хочу внести некоторую ясность. Всю настройку Nginx выполнял строго следуя методологии Вашей статье, используя шаблоны для phpmyadmin и php-fpm, поскольку Ваш материал отлично структурирован (логично-модульно), легче в понимании и усвоении для новичка, а такая схема гибче для дальнейшего применения.
За что Вам отдельная БЛАГОДАРНОСТЬ!

Также в первом своем сообщении я навел лишь одну секцию, отвечающую за авторизацию, отдельно выдранную из файла виртуального хоста, чтобы не загромождать.

STALKER_SLX

Вместе с этим хотел узнать Ваше мнение/позицию по поводу изменения URL для доступа к phpmyadmin, как это изложено в статьях:

http://devanswers.co/installing-phpmyadmin-nginx-ubuntu-16-04-17-04/

http://www.imdxf.com/2017/08/01/342.html

Иными словами, заменить дефолтный URL - http://drupal-site.loc/phpmyadmin/  на другой, к примеру - http://drupal-site.loc/pma_secure/


Если описанный в статьях способ добавляет дополнительную безопасность для phpmyadmin, то прошу Вас подсказать: как это можно реализовать при текущей нашей схеме настройки Nginx (описанный в Ваших замечательных статьях), возможно через шаблоны.

Уваров А.С.

Добавляет ли он безопасности? Вопрос неоднозначный. В принципе актуальный и работающий по защищенному протоколу phpmyadmin достаточно безопасен. Тем более, если ограничить доступ к нему через аутентификацию.

Способ позволяет довольно эффективно скрыть присутствие сервиса на хосте, но если в качестве нового имени использовать что-либо действительно нестандартное, скажем y9u2bkq6. Если переименовать в pma или что-то подобное, то толку не будет, все это широко известно и будет перебираться в первую очередь.

Тут возникает иной вопрос - насколько это удобно и вспомните ли вы это сочетание, если вам вдруг потребуется быстро войти в утилиту за пределами рабочего места.

Вверх