🌐 Как контролировать доступ на основе IP-адреса клиента в NGINX |

🌐 Как контролировать доступ на основе IP-адреса клиента в NGINX

Мануал

Существует несколько способов усиления безопасности веб-сервера NGINX, одним из которых является контроль доступа на основе IP-адреса.

Это руководство объясняет, как обеспечить безопасность веб-приложений путем контроля доступа на основе IP-адреса клиента в NGINX.

Управление доступом на основе IP-адреса клиента в NGINX

Модуль ngx_http_access_module в NGINX позволяет ограничить доступ к определенным IP-адресам клиентов.

Вы можете активировать его с помощью директив allow и deny.

Директива allow, как следует из названия, разрешает доступ для определенного IP-адреса, сети, сокета Unix или всех (ключевое слово для предыдущих сущностей), а директива deny запрещает доступ для определенного IP-адреса, сети, сокета Unix или всех.

Обе директивы действительны в контексте HTTP, server, location, а также limit_except.

Вот пример использования директив allow и deny в контексте location для ограничения доступа к службе API:

upstream app_api {
	keepalive 100;
	server 10.1.1.50:5000;
	server 10.1.1.71:5001;
}
server {
    listen 80;
    server_name _;
    access_log /var/log/nginx/app_api_access.log main;
    error_log /var/log/nginx/app_api_error.log debug;
    root /usr/share/nginx/html/;    
    location / {
        try_files $uri /api;
    }
    location /api {
	proxy_read_timeout 3600;
    	proxy_connect_timeout 3600s;
	keepalive_timeout 15;
	send_timeout 300;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_redirect off;

	proxy_http_version 1.1;
 	proxy_set_header Connection "";
            proxy_pass http://app_api$request_uri;
	
	#list of allowed IPs to access API
	allow 10.10.10.20;
	allow 10.10.40.29;
	allow 192.168.2.23;  
	allow 192.168.10.0/24;
   	deny  all;
    }
}

В приведенном выше примере любой запрос на доступ к любой из проксированных конечных точек API разрешен только для IP-адресов 10.10.10.20, 10.10.40.29, 192.168.2.23 и любого из тех, что находятся в сети 192.168.10.0/24.

Запросы с любого другого IP-адреса, сети или сокета UNIX-домена будут отклонены.

Когда вы проверите журнал логов /var/log/nginx/app_api_error.log, вы найдете записи access forbidden by rule

см. также

🌐 Как парсить логи доступа nginx

🌐 Ограничение скорости определенных URL-адресов с Nginx

🛡️ Как использовать обратный прокси Nginx для ограничения внешних вызовов внутри веб-браузера

🔏 Как настроить Nginx с Let’s Encrypt с помощью ACME на Ubuntu

🌐 Как собрать NGINX с ModSecurity на Ubuntu сервере

🌐 Как защитить паролем каталог с аутентификацией .htpasswd на Nginx

🌐 Как регистрировать информацию о шифровании и протоколе SSL в Nginx

🔐 Как защитить конкретную страницу паролем в Apache, Nginx, WordPress, на хостинге?

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий