.
Место для Вашей рекламы
10 июня 2013

NGINX ограничиваем доступ к папке

posted in CMS, NIX, security, Администрирование, Полезности |

Собственно, нужно правильно средствами NGINXа ограничить доступ к админке сайта.
В данном случае это Joomla и папочка /administrator/ которую последнее время сильно стали тревожить подозрительные запросы ...
Пишу «правильно» т.к. года два назад написал конфиг преследуя эту же цель и «вроде бы» всё работало как надо!
На днях всплыло, что не как надо :)
Итак:

location /administrator/ {
	auth_basic "Hello, please login";
        auth_basic_user_file /site_userpass_path/.htpasswd;
}

Оказалось вообще не верным, т.к. работало только на /administrator/
И пропускало все атаки, переборы и т.д. на /administrator/index.php — которые уходили в секцию обработки скриптов

location ~ \.php$ {

«Правильное» решение, сразу же найденное в сети — использование префикса ^~
то есть

location ^~ /administrator/ { ...

НО! в таком случае правило работает на все файлы находящиеся в /administrator/
и до location обрабатывающего статику а-ля

location ~* ^.+\.(jpg|jpeg|gif|png|ico)$ {

дело не доходит! а т.к. у меня fast-cgi то статика осталась вообще не удел
всё происходит из-за приоритетов обработки location
Правильно обработки папки /administrator/ имеет более высокий приоритет, и после его обработки дальнейшие location не обрабатываются

Подумал я и ничего лучше, чем обработку /administrator/ запихать в регулярку (для выравнивания приоритетов) не придумал
Финальный результат (закоментированные строки убирать специально не стал, т.к. имея статический IP — это самая лучшая защита админки)

location ~* ^/administrator/.+\.php {
#	    allow X.X.X.X;
#	    deny all;

            auth_basic "Hello, please login";
            auth_basic_user_file /site_userpass_path/.htpasswd;	    	    	    	    
	    fastcgi_pass   unix:/tmp/php-fcgi.sock;
	    include        /usr/local/etc/nginx/fastcgi_params;
	    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
	}

Таким образом все php из /administrator/ «пройдут» через секцию с авторизацией, не помешав обработке статики.
Ч.т.д.

Яндекс.Метрика