Top.Mail.Ru
Вход
Регистрация

Защита облачных приложений и API в средах Kubernetes

Защита облачных приложений и API в средах Kubernetes

Защита облачных приложений и API в средах Kubernetes

С ростом популярности облачных инфраструктур и платформ контейнеризации все сложнее становится ландшафт угроз, от которых приходится защищать как облачные приложения, так и используемые ими API.

По данным аналитической компании Gartner, 83 % интернет-трафика сейчас приходится на вызовы API. К 2022 году этот показатель может вырасти до 90 %. Это делает API очень привлекательной целью для злоумышленников. Какие угрозы актуальны?

·      Топ10 классических уязвимостей по версии сообщества OWASP (Open Web Application Security Project), в который входят SQL-инъекции, XXE (XML External Entity) и т.д.

·      Топ10 угроз для API по версии OWASP 2019 года

·       Отдельно стоит отметить атаки типа API Abuse, когда API перегружается большим объемом бот-трафика

·       Угрозы Credential stuffing/Account takeover, когда атака основана на использовании учетных записей

·       Атаки с перебором паролей и другие, которые можно отнести к методам «грубой силы»

Для защиты от большей части перечисленных угроз используются программные решения класса WAF (Web Application Firewall). Но как подобное ПО может применяться для облачных приложений, реализованных на основе контейнерной инфраструктуры Kubernetes?

В классической инфраструктуре между интернетом и интерфейсами nginx расположены балансировщики нагрузки уровня L3 или более высокого. Сами nginx также решают задачу балансировки нагрузки, выполняют задачи SSL termination и отправляют трафик непосредственно на приложения. В этом случае WAF просто добавляется к nginx.

Если же речь идет об инфраструктуре Kubernetes, то существуют две популярные схемы использования WAF.

·       Первый вариант – Ingress Controller nginx. Он балансирует и распределяет трафик между сервисами, поэтому является самым подходящим местом, где может быть установлена защита.

·       Второй вариант – использование nginx в качестве пода приложения и добавление защиты уже на этом уровне. Эта схема несколько более затратна по вычислительным ресурсам, но это позволяет защищаться и от того внутреннего трафика, который ходит между приложениями.

Бесплатная безопасность

Какой же WAF выбрать? Начать можно с бесплатного и открытого модуля ModSecurity, который широко известен в сообществе специалистов по информационной безопасности.  

Решение представляет собой опенсорсный модуль для nginx, который развивает большое сообщество разработчиков. Свою популярность он заработал благодаря высокой эффективности выявления атак топ-10 OWASP и целого ряда других. Кроме того, он поддерживает виртуальные патчи и имеет очень детальные настройки.

К недостаткам ModSecurity можно отнести сложность составления новых правил, синтаксис и структура которых требует значительного времени на освоение. При этом, если использовать базовый набор правил, модуль генерирует достаточно много ложных срабатываний. А так как мы говорим об инструменте, использующем сигнатурный принцип работы, настраивать правила приходится постоянно.

Еще один недостаток также связан с сигнатурным методом и заключается в том, что он никогда не покрывает все виды атак.

Алертинг и мониторинг

Даже самый хороший инструмент WAF, работающий в среде Kubernetes на уровне Ingress Controller, нуждается в дополнительных средствах мониторинга и оповещения, которые позволили бы администратору в удобном виде воспринимать информацию от него.

Создать хороший дашборд, который взаимодействовал бы с ModSecurity, относительно несложно. Для этого можно использовать связку Fluentd, Elasticsearch + Kibana и ElastAlert + Slack. При этом Fluentd парсит логи и отправляет их в Elasticsearch, где они визуализируются с помощью Kibana. Поверх всего этого можно развернуть фреймворк для оповещения ElastAlert, который будет рассылать уведомления в различные системы на основе данных, полученных из Elasticsearch.

Вот примерный список событий, на которые стоит настроить уведомления:

  • За время Y произошло более Х событий (частота)

  • Частота событий увеличилась или уменьшилась

  • Определенное поле совпадает с записью в черном/белом списке

  • Произошло событие, которое подходит под конкретный фильтр

  • Одно и то же поле имеет разные значения в определенном промежутке времени

  • Произошло событие, которое никогда прежде не фиксировалось

ElastAlert умеет рассылать уведомления во множество сервисов, начиная с электронной почты и заканчивая мессенджерами.

Борьба с ботами, фродом и другими вызовами

Есть много актуальных угроз для инфраструктуры Kubernetes, при которых ModSecurity ничем не сможет помочь. Среди них:

  • Сайт-скрэпинг

  • DDoS-атаки на уровне L7

  • Злоупотребление API

  • Атаки с использованием учетных записей и метода «грубой силы»

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

Так, например, в nginx имеется крайне полезный модуль GeoIP, который позволяет блокировать трафик из целых стран. В более практическом смысле можно заблокировать TOR-трафик, трафик из дата-центров, от облачных и хостинг-провайдеров и пр.

Это достаточно грубый путь, который может усложнить доступ к сервису вполне валидным пользователям. Более точным методом может стать блокировка выходных узлов TOR, сервисов-анонимайзеров, конкретных потенциально опасных IP по списку и пр.

Хорошим способом блокировать ботов может стать использование модуля testcookie. В моменты DDoS-атак уровня L7 он будет выступать в качестве фильтра, отсеивая нежелательные запросы. Модуль проверяет, умеет ли источник запроса отдавать куки-файлы, поддерживает ли он HTTP Redirect, JavaScript, Flash и т.д. Так можно отличить настоящий интернет-браузер от не слишком сложного бота.

Недостатками testcookie являются неспособность фильтрации «белых» ботов и слабая защита от ботов, эмулирующих браузер целиком.

Наконец, для борьбы с фродом можно использовать небольшую библиотеку fingerprint.js. Она позволяет присвоить каждому экземпляру браузера уникальный идентификатор, а затем проверить его на подозрительные действия – многочисленные регистрации и пр.

Расширенная безопасность с Wallarm

Изложенный выше перечень инструментов защиты Kubernetes доступен каждому специалисту. Из них можно самостоятельно собрать достаточно эффективную связку, которая покроет большинство угроз. В то же время, добиться значительно лучшего результата помогут расширенные методы защиты, реализованные в платформе Wallarm от одноименного российского разработчика.

Wallarm уже заработал себе хорошую репутацию в РФ, решение востребовано и далеко за пределами страны. При этом платформа отечественная, что делает ее привлекательным выбором при планировании программы импортозамещения.

В основе платформы лежит WAF нового поколения и целый ряд модулей, обеспечивающих защиту API. Кроме того, в пакет модулей входит сканер периметра безопасности, который помогает определить, какие приложения нуждаются в защите, найти незакрытые уязвимости и даже обнаружить факты эксплуатации этих уязвимостей.

API – новые приложения

Wallarm построен на новых принципах, и защита API здесь имеет первостепенное значение. Структурно платформа представляет собой набор фильтрующих нод, установленных в клиентской инфраструктуре. Они взаимодействуют с центральным вычислительным кластером Wallarm, отправляя туда метаданные о запросах содержащих атаки. 

Кластер в свою очередь выгружает в ноды своды кастомизированных правил фильтрации, а также отвечает за управление и визуализацию результатов работы. Еще одна важная функция кластера – интеграция платформы со сторонними системами.

Спектр поддерживаемых Wallarm API весьма широк:

  • SOAP / XML-RPC и прочие API на базе XML

  • REST / RESTFul и прочие API на базе JSON

  • GraphQL

  • gRPC

  • WebSockets

Эффективно защищать от всех перечисленных в начале статьи угроз платформе помогает глубокий парсинг API-запросов. Он не требует схем и загрузки конфигураций, так как способен автоматически выделять из любого «сырого» запроса нужные данные. Из коробки Wallarm может быть интегрирован с несколькими SIEM-системами, SOAR, инструментами DevOps и мессенджерами.