#linux #ubuntu #nginx #iptables
Как можно сделать белый список для n (около 300 и в планах вырастит до 700) числа ip адресов к 80 порту? Информация о сервере: Ubuntu v16.04.1 (Linux v4.4.0-31) и Nginx v1.11.3
Ответы
Ответ 1
Нужно добавить в конфигурацию виртуального хоста примерно следующие строки, если вы хотите это сделать через NGINX location / { allow 100.23.45.14; ## IP которому нужно разрешить доступ allow 100.23.45.15; ## IP которому нужно разрешить доступ deny all; } Если хотите сделать это через Iptables, то вам требуется прописать следующие строки: iptables -I INPUT -s-p tcp --dport 80 -i eth0 -j ACCEPT iptables -A INPUT -j DROP -p tcp -i eth0 --dport 80 Первую строку нужно повторять столько раз, сколько нужно добавить IP в список разрешенных. Рассмотрим параметры iptables: I: Вставка правила в начало A: Вставить правило в конец s: IP-адрес источника j: Выполнить действие, если пакету соответствует текущее правило (ACCEPT принять пакет, DROP блокирование пакета) p: Протокол dport: Порт, через который ожидается пакет i: Интерфейс Ответ 2
Допишу как отдельный ответ, я его уже дал в комментариях к предыдущему ответу, просто форматирование теряется в комментариях. Во-первых, для nginx нужно выделить все allow в отдельный файл -- чтобы не захламлять конфиг-файл и улучшить читаемость. location / { include whitelist.txt; } Файл whitelist.txt: allow 100.23.45.14; allow 100.23.45.15; deny all; Во-вторых, проскальзывало в комментариях про большое количество хостов: не забывайте, что nginx (в отличие от apache, который до сих пор не умеет, позор!) понимает подсети: # Rostelecom provider, Belgorod allow 213.24.126.0/24; deny all;Ответ 3
Для белого списка использовал ipset + iptables Создаем 2 новые списков: ipset -N whitelist iphash # Для адресов ipset -N whitelist_net nethash # Для сетей Добавить новые адреса в whitelist: ipset -A whitelist 100.23.45.14 ipset -A whitelist_net 100.23.45.0/24 Создается правило для использования списков: iptables -A INPUT -m set --match-set whitelist src -p tcp --dport 80 -j ACCEPT iptables -A INPUT -m set --match-set whitelist_net src -p tcp --dport 80 -j ACCEPT и закрываем 80: iptables -A INPUT -j DROP -p tcp --dport 80 Дополнительная информация: https://habrahabr.ru/post/108691/
Комментариев нет:
Отправить комментарий