Блокировка по IP‑адресам (iptables)¶
Экспериментальная функция
Функция блокировки по IP‑адресам является экспериментальной.
Функция может быть изменена без предупреждения.
Для блокировки по IP‑адресам с помощью iptables
используется готовый скрипт — block_with_iptables.rb
. Для успешного применения блокировок по IP‑адресам WAF‑ноде нужно регулярно получать из облака Вебмониторэкс обновленный список адресов, принадлежащих атакующим и подлежащих блокировке.
Белый список
Также есть возможность организовать белый список IP‑адресов. Если адрес находится в белом списке, то запросы с него будут пропускаться к серверу приложения без проверки на принадлежность к черному списку.
Настройте блокировку по IP‑адресам¶
-
Обратитесь в службу технической поддержки с запросом на создание системного пользователя для доступа к информации о черных списках.
-
Установите пакет
wallarm_extra_scripts
. Пакет находится в репозитории
Вебмониторэкс.Для установки пакета выполните команду:
sudo apt install wallarm-extra-scripts
sudo apt install wallarm-extra-scripts
sudo apt install wallarm-extra-scripts
sudo apt install wallarm-extra-scripts
sudo apt install wallarm-extra-scripts
sudo yum install wallarm-extra-scripts
sudo yum install wallarm-extra-scripts
Cкрипт
block_with_iptables.rb
будет установлен автоматически.
Предлагаемый скрипт при каждом запуске создает или обновляет цепочкуwallarm_blacklist
в таблицеfilter
. Для каждого заблокированного адреса добавляется правилоREJECT
. -
Создайте и сконфигурируйте таблицы
iptables
, указав какой трафик будет блокироваться. Например, для блокировки всего трафика, поступающего на 80 и 443 порты, выполните команды:iptables -N wallarm_check iptables -N wallarm_blacklist iptables -A INPUT -p tcp --dport 80 -j wallarm_check iptables -A INPUT -p tcp --dport 443 -j wallarm_check iptables -A wallarm_check -j wallarm_blacklist
-
Настройте регулярный запуск скрипта с помощью
cron
:-
Откройте для редактирования файл
crontab
пользователяroot
:crontab -e
-
Добавьте в этот файл следующие строки (замените
/path/to/log
на путь к лог‑файлу, в который скрипт будет писать логи):PATH=/bin:/sbin:/usr/bin:/usr/sbin */5 * * * * root timeout 90 /usr/share/wallarm-extra-scripts/block_with_iptables.rb >> /path/to/log 2>&1
Эта конструкция задает следующее поведение cron-задачи:
- Cкрипт
block_with_iptables.rb
будет запускаться каждые 5 минут от имени пользователяroot
. - Если скрипт не завершится до истечения таймаута в 90 секунд, то он будет завершен принудительно.
- Лог работы скрипта будет записан в заданный файл (например,
/path/to/log
); при этом поток вывода ошибокstderr
перенаправляется вstdout
.
- Cкрипт
-
-
Если необходимо, настройте мониторинг работы скрипта. Для этого можно отслеживать время модификации (
mtime
) файла/tmp/.wallarm.blacklist-sync.last
, которое будет изменяться при каждом успешном запуске скрипта. -
Добавление адресов в белый список.
Чтобы внести несколько IP‑адресов в белый список, выполните следующую команду для диапазона адресов. Вместо
1.2.3.4/30
, укажите нужное значение:iptables -I wallarm_check -s 1.2.3.4/30 -j RETURN
Чтобы внести один IP‑адрес в белый список, замените значение 1.2.3.4
на необходимый адрес:
iptables -I wallarm_check -s 1.2.3.4 -j RETURN