- Обзор
- Оригинальное правило F5 iRule
- RELIANOID Миграционный подход
- Рекомендованные RELIANOID Архитектура
- Настройка правил WAF
- Как работает правило
- Настройка файла черного списка
- Настройте правило через веб-интерфейс.
- Важное оперативное примечание
- Валидация и тестирование
- ожидаемый результат
- Дополнительное улучшение: возврат HTTP 410.
- Диагностика неисправностей
- Лучшие практики
- Резюме
Обзор #
В этой статье объясняется, как перенести iRule для F5 BIG-IP, используемый для блокировки запросов на основе следующих параметров: X-Forwarded-For HTTP-заголовок в RELIANOID используя встроенный WAF/IPDS (Система предотвращения и обнаружения вторжений) Работает на основе правил ModSecurity/OWASP.
Оригинальное правило iRule проверяет X-Forwarded-For заголовок и возвращает HTTP 410 Gone когда найдено совпадение со списком IP-адресов.
Оригинальное правило F5 iRule #
когда HTTP_REQUEST { если { [HTTP::header values "X-Forwarded-For"] содержит "31.192.108.123" || [HTTP::header values "X-Forwarded-For"] содержит "65.103.109.21" || [HTTP::header values "X-Forwarded-For"] содержит "193.90.12.87" || [HTTP::header values "X-Forwarded-For"] содержит "208.100.0.117" || [HTTP::header values "X-Forwarded-For"] содержит "100.113.150.102" || [HTTP::header values "X-Forwarded-For"] содержит "176.10.99.200" || [HTTP::header values "X-Forwarded-For"] содержит "163.172.143.114" || [HTTP::header values "X-Forwarded-For"] содержит "163.172.209.46" || [HTTP::header values "X-Forwarded-For"] содержит "188.138.9.49" || [HTTP::header values "X-Forwarded-For"] содержит "217.23.13.129" || [HTTP::header values "X-Forwarded-For"] содержит "162.247.72.27" || [HTTP::header values "X-Forwarded-For"] содержит "194.67.208.57" || [HTTP::header values "X-Forwarded-For"] contains "41.216.186.114" } { HTTP::respond 410 } }
RELIANOID Миграционный подход #
In RELIANOIDЭту логику можно реализовать следующим образом:
- Модуль WAF/IPDS
- Пользовательские правила ModSecurity/OWASP
- файл соответствия внешнего IP-адреса
Этот подход более масштабируем и проще в обслуживании, чем встраивание множественных сравнений IP-адресов в скрипт.
Рекомендованные RELIANOID Архитектура #
Для миграции используются следующие методы:
- Проверка заголовка HTTP X-Forwarded-For
- Внешний файл черного списка, содержащий IP-адреса
- Динамическое сопоставление IP-адресов с использованием операторов набора правил ModSecurity/OWASP.
Преимущества:
- Упрощенное управление IP-адресами
- Централизованный черный список
- Нет необходимости редактировать правила при каждом изменении IP-адреса.
- Лучшая масштабируемость
Настройка правил WAF #
Следующее правило ModSecurity/OWASP можно настроить в режиме Raw Mode внутри модуля WAF/IPDS.
SecRule REQUEST_HEADERS:X-Forwarded-For "@ipMatchFromFile /usr/local/relianoid/config/ipds/waf/sets/xff_blacklist.data" "\ id:1001,\ msg:'Custom Match',\ phase:1,\ deny,\ nolog"
Как работает правило #
Это правило выполняет следующие действия:
REQUEST_HEADERS:X-Forwarded-For: Считывает HTTP-заголовок X-Forwarded-For
@ipMatchFromFile: Сравнивает значение заголовка с внешним файлом.
xff_blacklist.txtСодержит список заблокированных IP-адресов.
phase:1Выполняется во время обработки заголовка запроса.
denyБлокирует соответствующие запросы
nologОтключает ведение журнала для соответствующих запросов.
Настройка файла черного списка #
Создайте файл черного списка:
/usr/local/relianoid/config/ipds/waf/sets/xff_blacklist.data
Пример содержания:
31.192.108.123 65.103.109.21 193.90.12.87 208.100.0.117 100.113.150.102 176.10.99.200 163.172.143.114 163.172.209.46 188.138.9.49 217.23.13.129 162.247.72.27 194.67.208.57 41.216.186.114
Настройте правило через веб-интерфейс. #
Создайте список IP-адресов. #
Создайте новый файл данных WAF в соответствующем разделе. IPDS > WAF > Файлы включая содержимое списка IP-адресов:

Создайте условие правила #
Создайте новый набор правил WAF в соответствующем разделе. IPDS > WAF > Наборы правил включая условие совпадения IP-адреса:

Включите правило в ферме. #
Включите набор правил и назначьте его необходимым фермам.

Важное оперативное примечание #
Любые изменения файла черного списка требуют:
- Отмена правила WAF
- Снова запускаем правило WAF.
Это перезагрузит правило и применит обновленный список IP-адресов. Это повлияет только на правила WAF, проверенные в затронутых фермах, и не затронет фактический трафик, проходящий через балансировщик нагрузки.
Валидация и тестирование #
Для проверки работы правила можно использовать следующую команду:
curl -k -H "X-Forwarded-For: IP_ADDRESS" https://LB_VIP -v
Пример:
curl -k -H "X-Forwarded-For: 31.192.108.123" https://192.168.1.100 -v
ожидаемый результат #
Когда IP-адрес соответствует черному списку:
- Запрос отклонен WAF.
- Возвращается ответ с ошибкой HTTP.
Дополнительное улучшение: возврат HTTP 410. #
Исходное правило F5 iRule возвращает следующее:
HTTP 410 Gone
По умолчанию правила ModSecurity/OWASP запрещают действия, возвращающие HTTP-запросы. 403 Forbidden.
Если требуется точное соответствие поведения, правило можно усовершенствовать, чтобы оно возвращало... 410.
Пример:
SecRule REQUEST_HEADERS:X-Forwarded-For "@ipMatchFromFile /usr/local/relianoid/config/ipds/waf/xff_blacklist.txt" "\ id:1001,\ msg:'Custom Match',\ phase:1,\ deny,\ status:410,\ nolog"
Диагностика неисправностей #
Правило не срабатывает #
Убедитесь, что:
- WAF/IPDS включен на ферме.
- Правило загружено корректно.
- Заголовок присутствует в запросе.
- Правило перезапущено после внесения изменений в файл.
Запросы не заблокированы #
Проверьте:
- Форматирование IP-адреса внутри файла
- Нет лишних пробелов или скрытых символов.
- Исправьте права доступа к файлу.
Отсутствует заголовок #
Некоторые вышестоящие прокси-серверы могут не отправлять данные. X-Forwarded-ForПодтвердите с помощью:
curl -k -H "X-Forwarded-For: 1.2.3.4" https://LB_VIP -v
Ведение журналов необходимо для устранения неполадок. #
Временно удалить:
нолог
Это позволяет вести журналы правил ModSecurity/OWASP в целях отладки.
Лучшие практики #
- Централизованное ведение файлов черного списка
- Используйте автоматизацию для обновления черных списков.
- Периодически проверяйте заблокированные IP-адреса.
- Защитите файлы правил WAF, предоставив им соответствующие права доступа.
- Для обеспечения масштабируемости отдавайте предпочтение внешним файлам, а не жестко закодированным правилам.
Резюме #
F5 iRules выполняет X-Forwarded-For Фильтрацию можно эффективно перенести в RELIANOID с использованием встроенного модуля WAF/IPDS и правил ModSecurity.
Такой подход обеспечивает:
- Централизованное управление IP-адресами
- Лучшая масштабируемость
- Более легкое обслуживание
- Встроенная интеграция WAF
- Снижена сложность написания скриптов.