Защита ваших API в дикой природе: глубокое погружение в интеграцию WAF и API Gateway
January 30, 2024
В современную цифровую эпоху API стали неотъемлемой частью нашей повседневной жизни. Они позволяют нам получать доступ и обмениваться данными между различными приложениями и сервисами. Однако с увеличением количества API-эндпоинтов, доступных публично, растет и риск кибератак и утечек данных. Именно поэтому крайне важно внедрять надежные меры безопасности для защиты ваших API от злонамеренных атак.
Преимущества интеграции WAF и API Gateway для защиты API
Технологии Web Application Firewall (WAF) и API Gateway являются одними из самых эффективных способов защиты API от атак. WAF — это решение безопасности, которое находится между интернетом и вашим API-сервером, анализируя входящие запросы и блокируя вредоносный трафик. С другой стороны, API Gateway — это промежуточный слой, который находится между вашим API-сервером и клиентом, управляя контролем доступа, маршрутизацией трафика и ограничением скорости.
Apache APISIX, популярный API-шлюз с открытым исходным кодом, предлагает мощный набор встроенных плагинов безопасности. Однако перед лицом все более изощренных атак, таких как CVE (Common Vulnerabilities and Exposures) и эксплойты нулевого дня, полагаться исключительно на эти плагины может оставить ваши API уязвимыми. Интеграция профессионального Web Application Firewall (WAF) с APISIX обеспечивает многоуровневую стратегию защиты, гарантируя комплексную защиту от современных угроз.
Возможности безопасности APISIX
-
Аутентификация и авторизация: APISIX поддерживает плагины для
JWT,basic auth,key authи интеграцию с провайдерами OpenID Connect, обеспечивая контроль доступа. -
Ограничение скорости: Предотвращает всплески вредоносного трафика и атаки типа DoS с помощью плагинов, таких как
limit-conn,limit-reqиlimit-count. -
Ограничение по IP и фильтрация User-Agent: Позволяет детально контролировать входящие запросы на основе IP-адресов и пользовательских агентов.
-
Защита от CSRF: Предотвращает атаки типа Cross-Site Request Forgery.
Ограничения API Gateway
-
Обнаружение на основе сигнатур: Плагины APISIX в основном полагаются на известные сигнатуры атак, что делает их неэффективными против эксплойтов нулевого дня, которые не имеют определенных шаблонов.
-
Отсутствие обновлений правил: Правила безопасности постоянно меняются, что требует участия профессиональных экспертов по безопасности и компаний для их поддержки.
-
Ограниченная область действия: Хотя APISIX защищает уровень шлюза, WAF обеспечивают более широкую защиту на уровне приложений.
Преимущества интеграции WAF и API Gateway
-
Проактивное обнаружение угроз: Современные WAF используют машинное обучение и анализ поведения для обнаружения аномального трафика, даже без предварительного знания уязвимостей.
-
Обновление правил в реальном времени: Облачные WAF могут быстро обновлять правила для устранения новых угроз, минимизируя окна уязвимости.
-
Глубокая защита приложений: WAF могут фильтровать и блокировать вредоносный трафик на уровне приложений, защищая от атак, которые обходят API-шлюзы.
-
Соответствие нормативным требованиям: В некоторых отраслях использование WAF обязательно для соблюдения нормативов по защите данных.
Подробное описание процесса интеграции
Для интеграции WAF и API Gateway необходимо выбрать подходящие инструменты. Apache APISIX — это популярное решение для API Gateway, которое предоставляет масштабируемую и гибкую платформу для управления вашими API. Chaitin SafeLine и Coraza — это решения WAF, которые предлагают расширенные функции безопасности и настраиваемые наборы правил.
APISIX и Chaitin SafeLine
WAF Chaitin SafeLine является встроенным плагином в APISIX 3.5. После включения плагина chaitin-waf трафик будет перенаправляться в сервис Chaitin WAF для обнаружения и предотвращения различных атак на веб-приложения, что защищает безопасность приложений и данных пользователей.

Предположим, что вы установили Apache APISIX и SafeLine, следующая команда интегрирует их:
curl http://127.0.0.1:9180/apisix/admin/plugin_metadata/chaitin-waf -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "nodes":[ { "host": "192.168.99.11", "port": 8000 } ] }'
192.168.99.11 — это IP-адрес сервиса SafeLine. Затем мы можем создать маршрут в APISIX:
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/*", "plugins": { "chaitin-waf": {} }, "upstream": { "type": "roundrobin", "nodes": { "192.168.99.12:80": 1 } } }'
192.168.99.12 — это IP-адрес вышестоящего сервиса. Интеграция завершена.
Теперь давайте смоделируем SQL-инъекцию, чтобы увидеть результат:
curl http://127.0.0.1:9080 -d 'a=1 and 1=1'
Был возвращен HTTP-код 403, и, как видно из сообщения об ошибке, Chaitin SafeLine успешно отразил атаку.
{"code":403,"success":false,"message":"blocked by Chaitin SafeLine Web Application Firewall","event_id":"18e0f220f7a94127acb21ad3c1b4ac47"}
APISIX и Coraza-proxy-wasm
APISIX поддерживает разработку плагинов с использованием WebAssembly (Wasm), и Coraza также предоставляет плагины Wasm в качестве опции. Таким образом, интеграция Coraza с APISIX требует относительно низких затрат.
Wasm может использоваться кроссплатформенно, что позволяет APISIX и Coraza работать без дополнительных масштабных изменений или адаптаций. Это исключает необходимость в обширных изменениях кода.
Coraza также является встроенным плагином Apache APISIX, который можно включить, изменив конфигурацию в файле conf/config-default.yaml:
wasm: plugins: - name: coraza-filter priority: 7999 file: /home/ubuntu/coraza-proxy-wasm/build/main.wasm
Затем создайте маршрут в APISIX с правилами Coraza:
curl -i http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{ "uri": "/anything", "plugins": { "coraza-filter": { "conf": { "directives_map": { "default": [ "SecDebugLogLevel 9", "SecRuleEngine On", "SecRule REQUEST_URI \"@beginsWith /anything\" \"id:101,phase:1,t:lowercase,deny\"" ] }, "default_directives": "default" } } }, "upstream": { "type": "roundrobin", "nodes": { "httpbin.org:80": 1 } } }'
Теперь отправим запрос, чтобы увидеть результат:
curl http://localhost:9080/anything -v
Проверьте логи в logs/error.log:
2023/08/31 09:20:39 [info] 126240#126240: *23933 Transaction interrupted tx_id="JVhHVfDuGjVbfgvDjik" context_id=2 action="deny" phase="http_request_headers", client: 127.0.0.1, server: _, request: "GET /anything HTTP/1.1", host: "localhost:9080" 2023/08/31 09:20:39 [debug] 126240#126240: *23933 Interruption already handled, sending downstream the local response tx_id="JVhHVfDuGjVbfgvDjik" context_id=2 interruption_handled_phase="http_request_headers"
Лучшие практики для защиты API с использованием интеграции WAF и API Gateway
Чтобы обеспечить безопасность ваших API, следуйте этим лучшим практикам:
-
Реализуйте стратегию защиты в глубину, включающую несколько уровней контроля безопасности;
-
Используйте шифрование SSL/TLS для защиты данных в процессе передачи;
-
Регулярно обновляйте наборы правил WAF, чтобы они соответствовали последним угрозам;
-
Мониторьте трафик и логи API для быстрого обнаружения и реагирования на инциденты безопасности.
Будущие тенденции и достижения в области безопасности и защиты API
С ростом количества используемых API возрастает потребность в более продвинутых мерах безопасности для их защиты. Некоторые из будущих тенденций и достижений в области безопасности и защиты API включают:
-
Решения безопасности на основе ИИ, которые могут автоматически обнаруживать и реагировать на угрозы;
-
Механизмы аутентификации и контроля доступа на основе блокчейна;
-
Микросервисные архитектуры API, которые предлагают большую гибкость и масштабируемость.
Заключение
В заключение, интеграция WAF и API Gateway является критически важным компонентом безопасности API. Следуя лучшим практикам и развертывая правильные инструменты, вы можете создать надежный уровень защиты, который защитит ваши API от широкого спектра атак. При правильном подходе вы можете обеспечить доступность, целостность и конфиденциальность ваших API и данных, которые они обменивают.