awesome-everything EN
↑ Обратно к восхождению

Сети и протоколы

WAF, межсетевые экраны, mTLS и HSTS

Суть Межсетевые экраны блокируют L3/L4-мусор; WAF проверяет HTTP-содержимое на паттерны атак; mTLS аутентифицирует сервисы; HSTS preload предотвращает атаки на понижение TLS.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на middle-высоте — в небе
◷ 14 min

Ваш межсетевой экран блокирует сканирование портов и явный мусор. Но злоумышленник отправляет валидные HTTP-запросы на порт 443. Межсетевой экран пропускает их все — он не видит внутрь зашифрованного TLS-пэйлоада. Для атак на прикладном уровне нужен другой инструмент, понимающий HTTP: WAF.

Межсетевые экраны против WAF: фундаментальное различие. Межсетевой экран (L3/L4) проверяет IP- и TCP-заголовки: IP-адрес источника, порт назначения, TCP-флаги. Он блокирует сканирование портов, подделку IP и нарушения протокола. Он не видит внутрь зашифрованных HTTPS-пэйлоадов. Web Application Firewall (WAF, L7) проверяет содержимое HTTP-запроса/ответа после завершения TLS: заголовки, параметры запросов, тела запросов — сопоставляя с известными паттернами атак (SQL-инъекция, XSS, обход пути). WAF должен видеть открытый текст для инспекции, поэтому он завершает TLS на edge или располагается на origin за TLS-терминацией. Оба необходимы: межсетевой экран останавливает сетевой мусор, WAF — атаки на прикладном уровне.

ИнструментУровеньЧто проверяетЧто останавливаетЧто пропускает
Межсетевой экранL3/L4IP src/dst, TCP-флаги, портСканирование портов, подделка IP, нарушения протоколаЗашифрованные пэйлоады, валидные HTTPS-атаки
WAFL7HTTP-заголовки, параметры запроса, телоSQLi, XSS, обход пути, паттерны ботовL3/L4-наводнения, SYN-наводнения, IP-атаки

Режимы обнаружения WAF. Сигнатурный: сопоставление с базой известных паттернов атак. OWASP ModSecurity Core Rule Set (CRS) содержит паттерны вроде union select (SQL-инъекция), <script> (XSS) и ../../../etc/passwd (обход пути). Быстрый, с низким числом ложных срабатываний на известных паттернах, но пропускает zero-day и обфусцированные варианты (например, un/**/ion select).

Аномальный/ML-based: моделирует нормальный трафик, помечает статистические выбросы. Обнаруживает новые атаки, но требует настройки — слишком строгий блокирует легитимных пользователей, слишком мягкий пропускает атаки.

Аномальное скорирование OWASP CRS. Каждое правило в OWASP CRS назначает оценку (1–8 баллов). Запрос блокируется при суммарной оценке >= 5. Уровни паранойи (PL1–PL4) контролируют количество активных правил: PL1 — разрешительный (меньше ложных срабатываний, пропускает часть атак); PL4 — строгий (блокирует больше, но и больше легитимных пользователей).

Компромисс при настройке WAF
Заблокированные легитимные запросы (PL1)
~0.1% ложных срабатываний
Заблокированные легитимные запросы (PL2)
~0.5%
Заблокированные легитимные запросы (PL3)
~2%
Заблокированные легитимные запросы (PL4)
~5%
Заблокированные атаки (PL1)
~70% покрытие
Заблокированные атаки (PL4)
~95% покрытие

Настройка WAF в production. Начните с PL1 в режиме обнаружения (логировать и оповещать, не блокировать) на 1–2 недели. Соберите базовые метрики: распределение аномальных оценок на реальном трафике, попадания по категориям правил. Затем повышайте уровень паранойи и наблюдайте за частотой ложных срабатываний. Если ложные срабатывания превысят допустимое значение, настройте правила: добавьте в белый список известные ложные срабатывания, скорректируйте веса или исключите низкоточные правила. Цель: блокировать 95%+ атак, затрагивая менее 0.1% реальных пользователей.

Викторина

Почему WAF неэффективен против SYN-наводнений?

mTLS для идентификации сервис-к-сервису. Mutual TLS: и клиент, и сервер предъявляют X.509-сертификаты друг другу, а не только сервер клиенту. В service mesh (Istio, Linkerd) каждый sidecar-прокси использует mTLS для общения с соседними sidecar’ами, обеспечивая zero-trust: запрос от Pod A к Pod B зашифрован и аутентифицирован. SPIFFE (Secure Production Identity Framework for Everyone) выпускает краткосрочные сертификаты (часто ~1 час) через SDS (Service Discovery Service), который sidecar загружает и автоматически ротирует. Ключ sidecar никогда не покидает локальный контейнер; control plane обновляет сертификат вне диапазона.

Стоимость: каждый новый TLS-хендшейк добавляет 20–50 мс на старом оборудовании; ротация сертификатов увеличивает операционную сложность. Преимущество: боковое перемещение предотвращается, даже если сетевая структура контейнера скомпрометирована.

TLS-стриппинг и HSTS. SSL-стриппинг (Мокси Марлинспайк, 2009): MITM держит пользователя на HTTP, пока сам общается по HTTPS с реальным сервером, расшифровывая оба направления. Пользователь не знает, что находится на открытом тексте. Защита: HTTP Strict Transport Security (HSTS) — заголовок Strict-Transport-Security: max-age=31536000 сообщает браузеру «используй только HTTPS для этого origin следующий год». Но заголовок доставляется по HTTP в первом ответе — если первый запрос уже был стриппирован, заголовок тоже стриппируется.

HSTS preload. Список доменов, встроенный в браузер, которые должны использовать только HTTPS — применяется до первого посещения домена. Google, Firefox, Chrome и Safari поставляют preload-списки. Вы запрашиваете включение своего домена; оно входит в следующий релиз браузера. Начиная с этого момента, HTTPS применяется даже для первых посетителей. Минимальный max-age для preload: 31 536 000 секунд (1 год). Требование в 1 год обусловлено тем, что preload поставляется с релизами браузера (циклы в 4 недели у Chrome) — более короткий max-age может истечь до того, как пользователи установят следующее обновление.

Проследи
1/4

Проследите эшелонированную защиту от DDoS-атаки.

1
Step 1 of 4
Шаг 1: на ваш origin IP приходит объёмная атака 100 Гбит/с. CDN нет. Что происходит?
2
Locked
Шаг 2: вы подключаете Cloudflare (CDN с DDoS-скруббингом). Что меняется?
3
Locked
Шаг 3: атакующий переходит на HTTP-наводнение (меньше пакетов, выглядит легитимнее). Что делает Cloudflare?
4
Locked
Шаг 4: атакующий использует 10 тысяч IP одновременно, каждый ниже лимита на IP. Что следующее?
Викторина

Почему HSTS preload требует минимального max-age в 1 год, а не 1 месяц?

Почему это работает

Почему mTLS — правильный ответ для zero-trust в микросервисах, а не IP-разрешение на сетевом уровне? IP-разрешение доказывает только «этот пакет пришёл из пода в подсети X» — но не какой именно сервис его отправил. Если любой под в разрешённой подсети скомпрометирован, он может имитировать любой другой сервис. mTLS доказывает «этот запрос пришёл от пода, имеющего валидный сертификат для сервиса Y, выданный нашим control plane в момент T». Краткосрочные сертификаты (1 час) означают, что даже при краже сертификата он быстро истекает. Сетевые контроли — это запасной вариант; криптографическая идентичность — правильный примитив.

Вспомните перед уходом
  1. 01
    Объясните разницу между RPKI и DNSSEC. Почему они защищают разные уровни?
  2. 02
    Что такое SSL-стриппинг и почему HSTS preload решает проблему, с которой не справляется обычный заголовок HSTS?
  3. 03
    Ваш WAF на PL2, атаки проходят. Вы поднимаете до PL4. Ложные срабатывания вырастают до 5%. Что лучше крайностей?
Итог

Межсетевые экраны и WAF работают на разных уровнях — межсетевые экраны блокируют IP/TCP-мусор, WAF блокирует HTTP-атаки (SQLi, XSS, обход пути) с аномальным скорингом OWASP CRS. Уровни паранойи WAF компромисс между частотой ложных срабатываний и покрытием атак: PL1 — 0.1% ложных срабатываний но 70% покрытие; PL4 — 95% покрытие но 5% ложных срабатываний. Начинайте в режиме обнаружения и настройте перед блокировкой. mTLS обеспечивает криптографическую идентичность сервисов в микросервисах, предотвращая боковое перемещение даже при компрометации сети; SPIFFE автоматизирует выпуск и ротацию краткосрочных сертификатов. HSTS preload применяет HTTPS до первого посещения, полностью устраняя SSL-стриппинг — но требует max-age в 1 год и явной регистрации в preload-списках браузеров.

Связанные уроки
встречается в258
Продолжить восхождение ↑Отравление DNS-кэша и BGP-перехват
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.