Внедрение WAF. Взгляд архитектора

Внедрение WAF. Взгляд архитектора

Еще 8 лет назад я изучил различные варианты внедрения WAF в инфраструктуру компании для защиты ее веб-ресурсов. Ни вендор, ни интегратор тогда не смогли мне толком ответить, каким образом правильнее интегрировать WAF под мои требования, только твердили "vendor-recommended design". В итоге пришлось делать все самому, причем на тот момент выбранный вариант шел вразрез с рекомендованным дизайном вендора (только через пару лет вендор изменил свой дизайн на тот, что выбрал я). Иногда я рассказываю на внешних или внутренних конференциях, как правильно выбрать архитектуру, отвечаю на возникающие вопросы, чтобы мой опыт пригодился и другим. Несколько дней назад я понял, что тема актуальна и до сих пор, поэтому решил написать эту статью. 

Составлю эту статью в основном из скриншотов слайдов презентаций, с которой выступал на разных конференциях.

Вряд ли для кого-то это будет новостью, но дам вводное определение WAF своими словами:


Иногда можно услышать споры о том, что лучше использовать: WAF, IDS или IPS. name='more'> Ключевое отличие последних - в многопротокольности (что логично), а WAF - в глубине и вариативности анализа веб-протоколов. Недавно обратили мое внимание на то, что WAF не используется на выходе из сети в Интернет. Абсолютная правда, хотя я никогда не акцентировал на этом внимание, ибо см. слайд с определением: WAF защищает конкретные ресурсы на входе из Интернет (и/или от рабочих станций, если в организации принят подход Zero Trust), и его невозможно использовать как прокси-сервер явного либо неявного типа при серфинге Интернета. В то же время, NGFW и IPS свои функции выполнят в направлении любого сетевого сегмента.


Нельзя сказать, что WAF необходимо использовать для всех ресурсов, потому что это может быть финансово нецелесообразно, но для некоторых (почти всех) он необходим:



Зачем необходимо использовать WAF, думаю, знают все, но, тем не менее, не ответить на этот вопрос я не мог, ибо обоснование бюджета зачастую требует более веских аргументов, чем экспертиза сотрудника:


Зачем еще нужен WAF организациям, обрабатывающим данные платежных карт, ответит PCI DSS. Привожу выдержку из актуальной на тот момент версии 3.2 (поиск в более актуальных версиях оставлю вам в качестве тренировки):


Список OWASP Top10 на момент составления презентации был таким. Сверка с актуальной версией - тоже на усмотрение читателя:


На этом краткий экскурс на тему "зачем нужен WAF" окончен, но вопрос ценообразования этого решения тоже немаловажен:




Пропускная способность в мегабитах защищаемых ресурсов замеряется с помощью MRTG/Cacti:



Количество новых TLS-handshake в секунду наиболее точно мне удалось посчитать, используя показатели установки новых TCP-сессий на firewall:



Количество одновременных соединений, которые должен уметь держать WAF, можно приблизительно рассчитать по такой формуле:




Рассмотрим возможные варианты архитектуры внедряемого решения:



Приведу для примера упрощенную схему для небольших организаций и территориально-распределенную - для крупных. Далее все варианты буду рассматривать на территориально-распределенной.




Начнем с самого простого варианта, который не влияет на сервис, но и толком не защищает, только алармит:



Некоторые действия, конечно, нужны, но их меньше, чем в других случаях. Я не буду указывать явно необходимые вещи, наподобие установки ключей для расшифровки HTTPS, подразумевая это по умолчанию:



Краткие преимущества и недостатки описаны. Не указана проблема с расшифровкой HTTPS при использовании DH:



Следующий вариант архитектуры - программный модуль, устанавливаемый на веб-сервер:



Действий тоже немного, если сервер один. Главное - не навредить:



То, что модуль устанавливается на сервер, имеет как плюсы, так и минусы:



Следующий вариант - reverse proxy. Один из наиболее распространенных вариантов, по этой схеме работает преобладающее количество облачных сервисов WAF.



Изменений вносить придется намного больше. Я такое упражнение прошел с более, чем сотней веб-сервисов (мы тоже предоставляем защиту веб-ресурсов как сервис), поэтому не так уж и страшно все это:



Приведу пример, описывающий территориально-распределенную схему и произведенные изменения. Можно использовать как примитивный checklist.



Reverse proxy имеет свои плюсы и минусы:



Следующий вариант - router. Довольно редкий случай для WAF в моей практике, но рассмотреть стоит, хотя бы для общего развития. 
Вариант, когда в каждый DMZ-сегмент ставим по экземпляру WAF:




И вариант, когда оба DMZ-сегмента защищаем одним WAF-router'ом:



Какие необходимо внести изменения:


И плюсы-минусы архитектуры:



Следующий вариант архитектуры - прозрачный режим bridge (если не выполняем терминацию трафика и скрытое проксирование) либо transparent reverse proxy (если делаем MITM с проксированием). По сути, с точки зрения сети это очень умный и очень дорогой кабель:



Кабель кабелем, а кое-какие изменения нужны:





У режима bridge есть свои плюсы-минусы:




У transparent reverse proxy - свои:




На что еще стоит обратить внимание при работе с WAF (некоторые пункты дублируются):





На этом краткое описание топологических вариантов внедрения WAF можно закончить. 
Надеюсь, материал был полезен.

Alt text

Большой брат следит за вами, но мы знаем, как остановить его

Подпишитесь на наш канал!

Андрей Дугин

Практическая информационная безопасность и защита информации | Information Security and Cyber Defense in Deed