Page 1 of 1

Защита служебных директорий при помощи базовой авторизации сервера Nginx

Posted: Sat Mar 30, 2019 5:49 pm
by snaiperIW
Доброго времени суток!

Проблема следующего характера:
Стало необходимым реализовать защитный доступ к служебным папкам сайта путём базовой авторизации на уровне сервера Nginx.
Делалось все по рабочей инструкции: https://modhost.pro/help/nginx. Метод действительно рабочий, читал соответствующие форумы.

В кратце о его работе: при обращении в браузере к служебным файлам, например: админка - https://site.ru/manager, сервер дополнительно начинает запрашивать логин и пароль пользователя, указанный в файле .htpasswd, после авторизации становится доступным обычный вход в админ панель, где необходимо ввести уже логин и пароль от админки сайта.

Code: Select all

server {
		location ~* ^/(manager|core|connectors)/ {
		auth_basic "Restricted Access";
		auth_basic_user_file /home/логин/.htpasswd;
		try_files               $uri $uri/ @rewrite;
			location ~ \.php$ {
				include         fastcgi_params;
				fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
				fastcgi_pass    backend-логин;
			}
		}
	}
В моем случае сервер откатывает данные и стартует с базовым конфигом. Применять отказывается.
Моя конфигурация nginx+php-fpm+VestaCP. Вношу эти изменения в шаблон modx.tpl (т.к. сайт на MODX Revo), именно он в моём понимании отвечает за блок server.

В файле .htpasswd прописываю захешированный пароль согласно сервиса http://www.htaccesstools.com/htpasswd-generator/:
логин:$apr1$pCRaZDgh$B4v1ENPbaSm5jb......... .
Размещаю его: /home/логин/.htpasswd
Но видимо даже до его сверки не доходит сценарий. Может быть надо еще что-то сделать на VestaCP? У остальных то работает все без проблем, и на голом Nginx без панели тоже.

Правильно ли я редактирую шаблон modx.tpl, если мне нужны изменения в блоке server? Пробовал редактировать modx.stpl, но нет смысла, он подхватывает только .tpl шаблон, видимо потому что, код применения SSL сертификата лежит в nginx.conf.

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

Re: Защита служебных директорий при помощи базовой авторизации сервера Nginx

Posted: Wed Apr 03, 2019 12:12 pm
by Uselink
snaiperIW wrote:
Sat Mar 30, 2019 5:49 pm
Доброго времени суток!

Проблема следующего характера:
Стало необходимым реализовать защитный доступ к служебным папкам сайта путём базовой авторизации на уровне сервера Nginx.
Делалось все по рабочей инструкции: https://modhost.pro/help/nginx. Метод действительно рабочий, читал соответствующие форумы.

В кратце о его работе: при обращении в браузере к служебным файлам, например: админка - https://site.ru/manager, сервер дополнительно начинает запрашивать логин и пароль пользователя, указанный в файле .htpasswd, после авторизации становится доступным обычный вход в админ панель, где необходимо ввести уже логин и пароль от админки сайта.

Code: Select all

server {
		location ~* ^/(manager|core|connectors)/ {
		auth_basic "Restricted Access";
		auth_basic_user_file /home/логин/.htpasswd;
		try_files               $uri $uri/ @rewrite;
			location ~ \.php$ {
				include         fastcgi_params;
				fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
				fastcgi_pass    backend-логин;
			}
		}
	}
В моем случае сервер откатывает данные и стартует с базовым конфигом. Применять отказывается.
Моя конфигурация nginx+php-fpm+VestaCP. Вношу эти изменения в шаблон modx.tpl (т.к. сайт на MODX Revo), именно он в моём понимании отвечает за блок server.

В файле .htpasswd прописываю захешированный пароль согласно сервиса http://www.htaccesstools.com/htpasswd-generator/:
логин:$apr1$pCRaZDgh$B4v1ENPbaSm5jb......... .
Размещаю его: /home/логин/.htpasswd
Но видимо даже до его сверки не доходит сценарий. Может быть надо еще что-то сделать на VestaCP? У остальных то работает все без проблем, и на голом Nginx без панели тоже.

Правильно ли я редактирую шаблон modx.tpl, если мне нужны изменения в блоке server? Пробовал редактировать modx.stpl, но нет смысла, он подхватывает только .tpl шаблон, видимо потому что, код применения SSL сертификата лежит в nginx.conf.

Жду помощи от команды VestaCP, возможно решение проблемы лежит на поверхности, но я уже обезсилил его искать.
Если необходимы какие данные, предоставлю что смогу.
А Вы после внесения изменений в шаблон modx.tpl пересоздавали пользователя v-rebuild-web-domains USER restart и рестартовали NGINX systemctl restart nginx.service , nginx -t для применения изменений в шаблоне?

Re: Защита служебных директорий при помощи базовой авторизации сервера Nginx

Posted: Wed Apr 03, 2019 1:09 pm
by snaiperIW
Uselink wrote:
Wed Apr 03, 2019 12:12 pm
snaiperIW wrote:
Sat Mar 30, 2019 5:49 pm
Доброго времени суток!

Проблема следующего характера:
Стало необходимым реализовать защитный доступ к служебным папкам сайта путём базовой авторизации на уровне сервера Nginx.
Делалось все по рабочей инструкции: https://modhost.pro/help/nginx. Метод действительно рабочий, читал соответствующие форумы.

В кратце о его работе: при обращении в браузере к служебным файлам, например: админка - https://site.ru/manager, сервер дополнительно начинает запрашивать логин и пароль пользователя, указанный в файле .htpasswd, после авторизации становится доступным обычный вход в админ панель, где необходимо ввести уже логин и пароль от админки сайта.

Code: Select all

server {
		location ~* ^/(manager|core|connectors)/ {
		auth_basic "Restricted Access";
		auth_basic_user_file /home/логин/.htpasswd;
		try_files               $uri $uri/ @rewrite;
			location ~ \.php$ {
				include         fastcgi_params;
				fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
				fastcgi_pass    backend-логин;
			}
		}
	}
В моем случае сервер откатывает данные и стартует с базовым конфигом. Применять отказывается.
Моя конфигурация nginx+php-fpm+VestaCP. Вношу эти изменения в шаблон modx.tpl (т.к. сайт на MODX Revo), именно он в моём понимании отвечает за блок server.

В файле .htpasswd прописываю захешированный пароль согласно сервиса http://www.htaccesstools.com/htpasswd-generator/:
логин:$apr1$pCRaZDgh$B4v1ENPbaSm5jb......... .
Размещаю его: /home/логин/.htpasswd
Но видимо даже до его сверки не доходит сценарий. Может быть надо еще что-то сделать на VestaCP? У остальных то работает все без проблем, и на голом Nginx без панели тоже.

Правильно ли я редактирую шаблон modx.tpl, если мне нужны изменения в блоке server? Пробовал редактировать modx.stpl, но нет смысла, он подхватывает только .tpl шаблон, видимо потому что, код применения SSL сертификата лежит в nginx.conf.

Жду помощи от команды VestaCP, возможно решение проблемы лежит на поверхности, но я уже обезсилил его искать.
Если необходимы какие данные, предоставлю что смогу.
А Вы после внесения изменений в шаблон modx.tpl пересоздавали пользователя v-rebuild-web-domains USER restart и рестартовали NGINX systemctl restart nginx.service , nginx -t для применения изменений в шаблоне?
Все уже выяснено из этой темки, спасибо:
viewtopic.php?f=29&t=18511&start=10

Re: Защита служебных директорий при помощи базовой авторизации сервера Nginx

Posted: Wed Apr 03, 2019 2:37 pm
by Uselink
Кстати, коль, тема Ваша решена, хотел узнать у вас. Например, при наборе админки MODX Revo таким образом: https://site.ru/manager/index.php срабатывает Nginx Basic Authentication, открывается дополнительное окно аутентификации с запросом логина и пароля, или же сразу появляется окно админки MODX Revo, без базовой аутентификации Nginx?
У меня вот именно слетала дополнительная базовая аутентификация, не было защиты админки если забивать url https://site.ru/manager/index.php таким образом, пришлось в шаблоне modx.stpl дополнительно писать и ставить "костыль" после локейшена с базовой аутентификацией, который убирает index.php из url: https://site.ru/manager/index.php После этого окно Nginx Basic Authentication появилось.

Code: Select all

#   Nginx Basic Authentication MODX REVO
    location ~* ^\/(manager|core|connectors)\/(?:.*)$ {
        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/auth_user/.htpasswd_%user%;
        try_files $uri $uri/ @rewrite;
        location ~ \.php$ {
                include         fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass %backend_lsnr%;
        }
    }

#   MODX /manager/index.php to /manager/
    location /manager/ {
        rewrite /index.php/(.*) /$1 permanent;
    }

Re: Защита служебных директорий при помощи базовой авторизации сервера Nginx

Posted: Wed Apr 03, 2019 4:38 pm
by snaiperIW
Uselink wrote:
Wed Apr 03, 2019 2:37 pm
Кстати, коль, тема Ваша решена, хотел узнать у вас. Например, при наборе админки MODX Revo таким образом: https://site.ru/manager/index.php срабатывает Nginx Basic Authentication, открывается дополнительное окно аутентификации с запросом логина и пароля, или же сразу появляется окно админки MODX Revo, без базовой аутентификации Nginx?
У меня вот именно слетала дополнительная базовая аутентификация, не было защиты админки если забивать url https://site.ru/manager/index.php таким образом, пришлось в шаблоне modx.stpl дополнительно писать и ставить "костыль" после локейшена с базовой аутентификацией, который убирает index.php из url: https://site.ru/manager/index.php После этого окно Nginx Basic Authentication появилось.

Code: Select all

#   Nginx Basic Authentication MODX REVO
    location ~* ^\/(manager|core|connectors)\/(?:.*)$ {
        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/auth_user/.htpasswd_%user%;
        try_files $uri $uri/ @rewrite;
        location ~ \.php$ {
                include         fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass %backend_lsnr%;
        }
    }

#   MODX /manager/index.php to /manager/
    location /manager/ {
        rewrite /index.php/(.*) /$1 permanent;
    }
Базовая авторизация открывается сразу же по запросу: https://site.ru/manager. Попробовал: https://site.ru/manager/index.php - тоже самое, запрос идет.
Пока не будет введен логин и пароль не будет открыта админка MODX, в этом и есть огромный плюс этой авторизации для безопасности на уровне сервера.

У Вас в главном location мне кажется лишние слэши, мой рабочий код:

Code: Select all

location ~* ^/(manager|core|connectors)/ {
		auth_basic "Restricted Access";
		auth_basic_user_file /home/[b]логин[/b]/.htpasswd;
		try_files                           $uri $uri/ @rewrite;
			location ~ \.php$ {
				include             /etc/nginx/fastcgi_params;
				fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
				fastcgi_pass      %backend_lsnr%
			}
		}