В этой заметке вы узнаете о блокировке IP-адресов в Nginx.
Это позволяет контролировать доступ к серверу.
Nginx является одним из лучших веб-сервисов на сегодняшний день.
Скорость обработки запросов делает его очень популярным среди системных администраторов.
Кроме того, он обладает завидной гибкостью, что позволяет использовать его во многих ситуациях.
Наступает момент, когда необходимо ограничить доступ к определенным компьютерам или IP-адресам.
Это полезно в некоторых корпоративных средах, где не все компьютеры должны иметь доступ к определенным приложениям или веб-сайтам.
💗 Советы и рекомендации по обеспечению безопасности вашего веб-сервера Nginx
Блокирование IP-адресов на Nginx
Модуль ngx_http_access_module позволяет ограничить доступ к определенным клиентским адресам в соответствии с документацией Nginx.
Это позволяет использовать разрешающие и запрещающие правила для контроля IP-адресов, которые могут получить доступ к определенным ресурсам сервера Nginx.
Итак, давайте рассмотрим несколько примеров настройки
Блокирование доступа по IP-адресу к вашему сайту
В данном случае требуется, чтобы IP-адрес не мог получить доступ к вашему сайту.
Для этого необходимо открыть файл конфигурации сайта (ServeBlocks) или, как говорят в Apache, Virtualhost и добавить в него что-то вроде этого.
location / {
deny [IP];
}
Таким образом, доступ к указанному IP-адресу ограничивается корнем сайта.
То есть самого сайта.
IP-адрес можно указать как в IPv4, так и в IPv6, и Nginx полностью его распознает.
Затем сохраните изменения и закройте редактор.
А для применения изменений можно перезапустить службу.
Блокировка IP-адреса для подкаталога
Иногда случается так, что ограничение, которое Вы хотите ввести, не столь радикально, и Вы хотите сделать это только для определенного подкаталога.
В этом случае также можно, немного изменив предыдущее правило, определить новую директиву.
location /subdirectory {
deny 3.4.5.6;
}
В данном случае ограничивается IP-адрес 3.4.5.6 по пути /subdirectory.
Опять же, чтобы изменения вступили в силу, необходимо сохранить их, а затем перезапустить Nginx.
Разрешить доступ одному IP-адресу
Время от времени нам приходится выполнять обратную операцию, то есть разрешать доступ только одному IP-адресу и запрети доступ остальным.
Для этого можно комбинировать запрещающие и разрешающие правила, разрешая один и запрещая остальные,
location / {
allow 3.4.5.6;
deny all;
}
В этом случае доступ разрешен для IP-адреса 3.4.5.6, но запрещен для остальных.
Таким образом, доступ будет осуществляться только с одного IP-адреса.
Еще один пример блокировки IP на Nginx
Существуют и другие примеры использования данной ситуации.
Один из них – ограничение IP-адреса не для всего сайта, а для поддомена.
В этом случае придется редактировать не расположение сайта, а более общую конфигурацию сервера
server {
server subdomain.unixcop.com;
deny 7.8.9.10;
}
Конечно, можно также блокировать несколько IP-адресов или непосредственно диапазоны.
location / {
deny 192.168.1.1/24;
allow all;
}
Таким образом, можно быстро запретить диапазон IP-адресов в сети и разрешить остальные.
Заключение
Nginx настолько гибок, что с помощью нескольких строк можно заблокировать доступ одного или нескольких IP-адресов к вашему сайту.
см. также:
- 🌐 Как парсить логи доступа nginx
- 🌐 Ограничение скорости определенных URL-адресов с Nginx
- 🛡️ Как использовать обратный прокси Nginx для ограничения внешних вызовов внутри веб-браузера
- 🔏 Как настроить Nginx с Let’s Encrypt с помощью ACME на Ubuntu
- 🌐 Как собрать NGINX с ModSecurity на Ubuntu сервере
- 🌐 Как защитить паролем каталог с аутентификацией .htpasswd на Nginx
- 🌐 Как регистрировать информацию о шифровании и протоколе SSL в Nginx
- 🔐 Как защитить конкретную страницу паролем в Apache, Nginx, WordPress, на хостинге?