Блокировка по IP-адресам (NGINX)¶
По умолчанию блокировка по IP-адресам на стороне NGINX не активна. Для её активации необходимо выполнить следующие действия:
-
Перейдите в папку с конфигурационными файлами NGINX:
cd /etc/nginx/conf.d -
Создайте в текущей папке файл
wallarm-acl.confсо следующим содержимым:wallarm_acl_db default { wallarm_acl_path <путь-до-папки-Вебмониторэкс-ACL>; wallarm_acl_mapsize 64m; } server { listen 127.0.0.9:80; server_name localhost; allow 127.0.0.0/8; deny all; access_log off; location /wallarm-acl { wallarm_acl default; wallarm_acl_api on; } }В конфигурации выше
<путь-до-папки-Вебмониторэкс-ACL>— путь до любой пустой директории, в которой пользовательnginxможет создавать поддиректории и файлы для хранения списков управления доступом.Проверка прав пользователя
nginxДля того, чтобы узнать, имеет ли пользователь
nginxправа на действия с определенной директорией, выполните следующую команду:
sudo -u nginx [ -r <путь-до-директории> ] && [ -w <путь-до-директории> ] && echo "OK"В этой команде
<путь-до-директории>— это путь до папки, права на действия с которой вам необходимо проверить.Из-за префикса
sudo -u nginxэта команда будет выполнена под пользователемnginx.[ -r <путь-до-директории]проверяет, есть ли у пользователя права на чтение директории.[ -w <путь-до-директории]проверяет, есть ли у пользователя права на запись в директорию.
Если пользователь
nginxимеет права на просмотр и редактирование директории, путь до которой вы указали в команде, то терминал выведет сообщениеОК. Такая директория подходит для указания в качестве значенияwallarm_acl_path.Если у пользователя
nginxнет необходимых прав, вывод терминала будет пуст.Пример:
Директории, подходящие для хранения списков управления доступом, зависят от типа установки WAF‑ноды и от операционной системы:
-
Динамический модуль NGINX:
/var/cache/nginx/wallarm_acl_default/var/cache/nginx/wallarm_acl_default/var/cache/nginx/wallarm_acl_default/var/cache/nginx/wallarm_acl_default/var/cache/nginx/wallarm_acl_default/var/lib/nginx/wallarm_acl_default/var/lib/nginx/wallarm_acl_default -
Динамический модуль NGINX из репозиториев ОС:
/var/lib/nginx/wallarm_acl_default/var/lib/nginx/wallarm_acl_default/var/lib/nginx/wallarm_acl_default/var/lib/nginx/wallarm_acl_default/var/lib/nginx/wallarm_acl_default/var/lib/nginx/wallarm_acl_default/var/lib/nginx/wallarm_acl_default -
Модуль NGINX Plus:
/var/lib/nginx/wallarm_acl_default/var/lib/nginx/wallarm_acl_default/var/lib/nginx/wallarm_acl_default/var/lib/nginx/wallarm_acl_default/var/lib/nginx/wallarm_acl_default/var/lib/nginx/wallarm_acl_default/var/lib/nginx/wallarm_acl_default
-
Включите блокировку для соответствующих виртуальных хостов и/или location'ов, добавив следующие строки в их конфигурационные файлы:
server { ... wallarm_acl default; ... } -
Добавьте в файл
/etc/wallarm/node.yamlследующие строки:sync_blacklist: nginx_url: http://127.0.0.9/wallarm-acl -
Перезапустите NGINX:
sudo service nginx reload -
Активируйте синхронизацию черных списков.
Один из способов сделать это — снять комментарий со строки, содержащей
sync-blacklistв качестве подстроки, удалив символ#из начала этой строки в файле/etc/cron.d/wallarm-node-nginx.Вы также можете исполнить следующую команду, которая сделает это за вас:
sed -i -Ee 's/^#(.*sync-blacklist.*)/\1/' /etc/cron.d/wallarm-node-nginxРабота с командой
sedSed — это потоковый редактор.
По умолчанию sed записывает изменения в стандартный поток вывода. Опция
-iозначает, что все изменения будут записаны в редактируемый файл.Опция
-eE— это комбинация двух отдельных опций:- Опция
-eозначает следующее: - Первый параметр, не являющийся опцией, будет использован на входные данные в качестве скрипта;
- Второй параметр, не являющийся опцией, будет использован в качестве файла со входными данными.
- Опция
-Eозначает, что следующий за этой опцией скрипт написан на расширенном языке регулярных выражений.
Следующий за опциями скрипт заменит в файле
/etc/cron.d/wallarm-node-nginxстроки, которые удовлетворяют регулярному выражению^#(.*sync-blacklist.*)на последовательности символов, которые удовлетворяют регулярному выражению внутри круглых скобок. Обратная ссылка\ 1в этом скрипте означает, что подвыражение в первой паре круглых скобок должно использоваться в качестве замены.Строка, удовлетворяющая регулярному выражению
^#(.*sync-blacklist.*):- Начинается с символа
#; - Содержит
sync-blacklistв качестве подстроки.
Замена для описанной строки — подстрока этой строки без символа
#в начале строки.Эта команда снимает комментарий со строки, указывающей на синхронизацию черного списка. Таким образом, будет активирована синхронизация черных списков.
Подробнее о работе потокового редактора sed вы можете узнать здесь.
- Опция
-
Адреса можно добавлять в белый список, чтобы пропускать запросы, приходящие с этих адресов, без проверки на принадлежность к черному списку. Например, следующие строки в конфигурационном файле хоста или location'а добавляют в его белый список диапазон IP-адресов
1.2.3.4/32:server { ... wallarm_acl default; allow 1.2.3.4/32; satisfy any; ... }После сохранения правок в конфигурации, перезапустите NGINX:
sudo service nginx reload