Перенос ограничений на размер загружаемых файлов в F5 iRules на RELIANOID

Просмотр категорий

Перенос ограничений на размер загружаемых файлов в F5 iRules на RELIANOID

3 min read

Обзор #

В этой статье объясняется, как перенести правило 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, содержащий правило с двумя условиями, как показано ниже.

relanoid ipds waf content length limit

Проверка #

Тестирование с помощью 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.

Такой подход обеспечивает:

  • Централизованное применение политик
  • Улучшенное ведение журналов и прозрачность.
  • Более простая масштабируемость
  • Снижена сложность написания скриптов.
  • Проверка запросов на основе стандартов

📄 Загрузите этот документ в формате PDF #

    EMAIL: *

    Powered by BetterDocs