Обзор #
В этой статье объясняется, как перенести правило iRule для F5 BIG-IP, используемое для ограничения размеров загружаемых HTTP-запросов, в другую систему. RELIANOID используя встроенный WAF (брандмауэр веб-приложений) питание от ModSecurity и OWASP CRS.
Оригинальное правило iRule проверяет:
- Метод HTTP (
POST) Content-Lengthзаголовок
И блокирует загрузки размером больше 200 MB с использованием HTTP 413 Payload Too Large ответ.
Оригинальное правило F5 iRule #
when HTTP_REQUEST { if { [HTTP::method] eq "POST" } { set content_length [HTTP::header "Content-Length"] if { $content_length ne "" && $content_length > 200000000 } { # Отклонять запросы размером более 200 МБ HTTP::respond 413 content "Размер загружаемого файла превышает лимит." event disable } } }
RELIANOID Миграционный подход #
In RELIANOIDДанная функциональность может быть реализована с помощью:
- Модуль WAF / IPDS
- Правила безопасности
- Интеграция с OWASP CRS
Такой подход обеспечивает:
- Централизованное обеспечение безопасности
- Улучшенное ведение журналов и прозрачность.
- Более легкое обслуживание
- Проверка нативных HTTP-запросов
Развертывание с помощью ручного набора правил. #
RELIANOID Пример конфигурации WAF #
Под тропой /usr/local/relianoid/config/ipds/waf/sets/ Создайте конфигурационный файл со следующим содержимым:
## начало конфигурации SecRuleEngine on SecDefaultAction "pass,log,logdata:'client:%{REMOTE_ADDR}',phase:1" SecDefaultAction "pass,log,logdata:'client:%{REMOTE_ADDR}',phase:2" SecDefaultAction "pass,log,logdata:'client:%{REMOTE_ADDR}',phase:3" SecDefaultAction "pass,log,logdata:'client:%{REMOTE_ADDR}',phase:4" ## конец конфигурации SecRule REQUEST_METHOD "POST" \ "id:910001,\ phase:1,\ t:none,\ chain,\ deny,\ status:413,\ msg:'Размер загружаемого файла превышает лимит.',\ log" SecRule REQUEST_HEADERS:Content-Length "@gt 200000000"
Как работает правило #
Правило выполняет следующую логику:
REQUEST_METHOD "POST"Проверяет только POST-запросы.
REQUEST_HEADERS:Content-Length: Размер загружаемых данных
@gt 200000000Проверяет, превышает ли размер 200 МБ.
deny,status:413Отклоняет запрос.
msg:'Upload size exceeds limit.': Генерирует сообщение в журнал аудита
Эквивалентное сопоставление поведения от F5 iRule к RELIANOID WAF #
HTTP::method: REQUEST_METHOD
HTTP::header "Content-Length": REQUEST_HEADERS:Content-Length
HTTP::respond 413: deny,status:413
event disable: Immediate WAF deny
Развертывание через веб-интерфейс #
Эту конфигурацию также можно развернуть напрямую через RELIANOID Веб-интерфейс.
Путь к настройке веб-интерфейса #
Перейдите в IPDS > WAF > Правила
Затем Создавай Набор правил WAF, содержащий правило с двумя условиями, как показано ниже.

Проверка #
Тестирование с помощью CURL #
Пример запроса:
curl -k -X POST -H "Content-Length: 250000000" https://LB_VIP/upload -v
ожидаемый результат #
В ответ должно быть получено следующее:
HTTP/1.1 413 Слишком большой размер полезной нагрузки
Запрос должен быть заблокирован до того, как достигнет бэкэнда.
Проверка логирования #
Проверьте журналы WAF на наличие:
Размер загружаемого файла превышает лимит.
Важные замечания #
Зависимость от длины содержимого #
Это правило зависит от того, отправляет ли клиент действительный запрос. Content-Length заголовок. Если при загрузке используется кодирование с передачей по частям или потоковая загрузка, могут потребоваться дополнительные меры защиты.
Ограничить доступ только к определенным URL-адресам. #
Данное правило можно объединить с проверкой URI.
Пример:
SecRule REQUEST_URI "@beginsWith /upload"
Диагностика неисправностей #
Правило не срабатывает #
Убедитесь, что:
- WAF включен на ферме.
- Правило прикреплено правильно.
- Метод запроса: POST
- Заголовок Content-Length присутствует.
Загрузки по-прежнему попадают в бэкэнд. #
Возможные причины:
- WAF не был применен к правильной ферме
- Проблема синтаксиса правила
- При загрузке используется поблочное кодирование.
Ложные срабатывания #
Некоторые приложения могут обоснованно требовать загрузки больших файлов.
Рекомендация:
- Создавайте исключения, специфичные для конкретного приложения.
- Тщательно отрегулируйте пороговые значения.
Лучшие практики #
- Используйте ограничения на загрузку, специфичные для каждого приложения.
- По возможности сочетайте с ограничением скорости запросов.
- Регулярно отслеживайте журналы WAF.
- Избегайте неоправданно высоких пороговых значений для загрузки.
- Проверьте поведение загрузки после развертывания.
Резюме #
Правила iRules от F5, используемые для ограничения размеров загружаемых файлов, можно перенести в RELIANOID с использованием встроенных правил WAF/ModSecurity, интегрированных с OWASP CRS.
Такой подход обеспечивает:
- Централизованное применение политик
- Улучшенное ведение журналов и прозрачность.
- Более простая масштабируемость
- Снижена сложность написания скриптов.
- Проверка запросов на основе стандартов