WAF перед 1С и служебные пути платформы
Рекомендация
Рекомендация
Заголовок раздела «Рекомендация»При публикации 1С за WAF/Servicepipe учитывать служебный трафик платформы: часть
легитимных запросов веб-клиента идёт с пустым User-Agent и к служебным путям
(/e1cib/tempstorage/). Глухая блокировка по UA или размеру ломает интерфейс
пользователя, а не атакующего.
- Для служебных путей 1С сделать исключение на пустой UA, но не «дырку»:
дополнительно проверять авторизационные cookie сессии (
v8scid). Сам веб-сервер 1С отобьёт неавторизованный доступ на уровне приложения (401/403), а всплеск частоты погасит rpm-лимит. - Логировать реальный IP клиента за WAF (
X-Forwarded-Forв Apache) — иначе инциденты неразбираемы. - Prod и test WAF-профили держать в одинаковом поведении, чтобы баг не «прятался» между контурами.
- Веб-клиент 1С шлёт пачку запросов к
/e1cib/tempstorage/; часть с UAV8WebKitпроходит, часть с пустым UA блокируется. Сессия получает повреждённый поток (вместо бинарного файла — HTML-заглушка/обрыв) → фатальная ошибкаChar 0x0 out of allowed range. - Большие тела (ЭДО > 20 МБ) отбиваются на WAF кодом
403ещё до Apache — см. долгие и большие операции.
Правильно
Заголовок раздела «Правильно»Логирование реального IP за WAF — на стороне Apache, иначе в access_log все запросы приходят с адреса WAF:
# Apache за WAF/прокси: в лог пишем адрес из X-Forwarded-ForRemoteIPHeader X-Forwarded-ForRemoteIPProxiesHeader X-Forwarded-ByRemoteIPTrustedProxy 10.0.0.0/8 # сеть WAF/балансировщикаLogFormat "%a %l %u %t \"%r\" %>s %b \"%{User-Agent}i\"" combined_realipCustomLog "logs/1c_access.log" combined_realipСинтаксис правил зависит от конкретного WAF (пример — в нотации ModSecurity); переносится сам принцип: исключение по пути + признак сессии, а не отключение проверки целиком.
Когда не применять
Заголовок раздела «Когда не применять»Публикации без внешнего WAF (только внутренний контур) — правило неактуально. Границы применимости — периметр, где трафик 1С проходит через сторонний фильтр.