Nginx: Ограничить доступ к каталогам сайта по IP адресам
К вопросам безопасности информационных систем в целом и веб сайтов в частности, с каждым годом относятся все серьезнее. Покупаются аппаратные или программные firewallы (WAF, NGFW и другие), а также настраиваются модули безопасности на веб-серверах. Один из способов уменьшение вектора атаки на веб сайт, это ограничение доступа кслужебным страницам по ip адресам (сетям), чтобы, например, ограничить возможности попасть впанель администрирования сайта только с корпоративных сетей. Ниже описан как раз такой модуль для nginx, который позволяет заблокировать доступ с определенных IP адресов или подсетей. Этот модуль называется ngx_http_access_module, именно с помощью него можно разрешать или запрещать доступ с IP адресов.
В этом примере, доступ к сайту разрешен только для сетей: 192.168.1.0/24, 10.1.1.0/16 и 2001:0db8::/32, но при этом запрещен доступ для хоста 192.168.1.1 (не смотря на разрешающее правило для сети). Подключения с сетей, которые не описаны разрешающими правилами выше, будут запрещены финальной директивой deny all.
Описание синтаксиса
Настройки, которые определяют, разрешено или запрещено с того или иного IP-адреса получать доступ к сайту, описываются в конфигурации сайтов nginx в секции location, для каждой описанной директории сайта (если в этом есть необходимость). По умолчанию, доступ разрешен всем ip адресам. разрешение или запрет указываются директивами allow (разрешить) и deny (запретить).Обход описанных директив выполнятеся последовательно сверху вниз и первая сработавшая директива будет определять разрешен доступ или нет. Ниже показан пример:location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
В этом примере, доступ к сайту разрешен только для сетей: 192.168.1.0/24, 10.1.1.0/16 и 2001:0db8::/32, но при этом запрещен доступ для хоста 192.168.1.1 (не смотря на разрешающее правило для сети). Подключения с сетей, которые не описаны разрешающими правилами выше, будут запрещены финальной директивой deny all.
Как заблокировать доступ к сайту для определенных IP
Чтобы заблокировать доступ к сайту для определенных IP адресов или IP сетей, в конфигурации сайтов nginx в секции location необходимо перечислить IP-адреса и сети, для которых необходимо запретить доступ. Например,location / {
deny 1.2.3.4;
deny 5.6.7.0/25;
}
В этом примере, для 1.2.3.4 и 5.6.7.0/25 доступ к сайту будет запрещен.Как разрешить доступ к каталогу сайта только с определенных IP
Например, на сайте установлен phpMyAdmin — веб-приложение для администрирования СУБД MySQL, которая доступна по пути /phpMyAdmin. Чтобы не дать возможность злоумешленникам использовать вдруг обнаруженную уязвимость, целесообразно ограничить доступ к каталогу сайта /phpMyAdmin только определенным IP-адресам администраторов. В этом случае, раздел конфигурации location может выглядеть так:location /phpMyAdmin {
allow 9.8.7.6;
allow 2.3.4.5/28;
deny all;
}
В примере, IP адрес 9.8.7.6 и сеть 2.3.4.5/28 - это адреса только для которых будет разрешен доступ к /phpMyAdmin.Применение настроек nginx без перезагрузки
Чтобы послать сигнал веб серверу Nginx перечитать и применить актуальную конфигурацию, достаточно в консоли выполнить команду:nginx -s reloadПосле выполнения этой команды, новый файл конфигурации будет применен, без перезапуска сервера, при условии, что новый файл конфигурации не содержить ошибок, в этом случае новый файл конфигурации не будет применен, подробнее описано в статье: Как применить обновление конфигурации Nginx без перезапуска сервера?
Похожие статьи:
09 февраль 2021, Вторник
WordPress: Как отключить плагин iThemes Security для WordPress?
04 февраль 2021, Четверг
Как запустить Adobe Flash Player
12 декабрь 2019, Четверг
Как применить обновление конфигурации Nginx без перезапуска сервера?
01 октябрь 2019, Вторник
Как установить VMware PowerCLI?
24 январь 2019, Четверг
Как отключить отображение версии Web-сервера в Http-заголовке
Комментарии: