Apache APISIX интегрируется с open-appsec WAF
October 21, 2024
Введение
open-appsec WAF рад объявить о новой интеграции с API-шлюзом с открытым исходным кодом Apache APISIX.
Это новое сотрудничество между командами open-appsec и API7 теперь позволяет пользователям эффективно защищать свои веб-API и другие веб-сервисы, предоставляемые Apache APISIX, от неизвестных и известных типов атак, используя передовые технологии на основе машинного обучения open-appsec, а также добавляет несколько дополнительных улучшенных функций безопасности.
О Apache APISIX
Apache APISIX — это современное, гибкое и высокопроизводительное решение для API-шлюза с открытым исходным кодом, предназначенное для обработки различных сценариев использования в микросервисах и облачных архитектурах. Его основная цель — упростить управление API, выступая в качестве шлюза для управления, защиты и оптимизации трафика API между клиентами и серверными службами.
Дополнительные сценарии использования APISIX в качестве API-шлюза включают балансировку нагрузки, ограничение скорости, аутентификацию и авторизацию. Он предоставляет широкий набор функций, таких как управление трафиком, динамическое управление вышестоящими серверами и расширяемость через плагины, что позволяет разработчикам настраивать и расширять функциональность в соответствии с их конкретными потребностями.
-
Веб-сайт: apisix.apache.org
-
Github: github.com/apache/apisix
-
Документация: apisix.apache.org/docs
О open-appsec WAF
open-appsec WAF предоставляет автоматическую, превентивную защиту от угроз и интегрируется с различными типами обратных прокси, такими как NGINX, а также с API-шлюзами, такими как APISIX. Он основан на машинном обучении, что означает, что ему не требуются сигнатуры (или обновления). Это позволяет ему обеспечивать автоматическую, передовую защиту от угроз, включая атаки нулевого дня, при этом значительно снижая административные усилия и количество ложных срабатываний.
Кроме того, open-appsec предоставляет множество дополнительных уровней безопасности, таких как AntiBot, ограничение скорости, проверка схемы, поддержка сигнатур Snort, пользовательские правила/исключения и многое другое. open-appsec можно централизованно управлять с помощью веб-интерфейса, предоставляемого как SaaS-сервис, а также локально с использованием декларативного конфигурационного файла.
-
Веб-сайт: www.openappsec.io
-
Github: github.com/openappsec
-
Документация: docs.openappsec.io
-
Песочницы: www.openappsec.io/playground
Интеграция Apache APISIX с open-appsec
С этой новой интеграцией пользователи APISIX теперь получат доступ к open-appsec WAF как к интегрированному, передовому решению WAF на основе машинного обучения для защиты своих веб-API и веб-приложений.
Теперь они могут использовать, например, бесплатную и открытую "Community Edition" open-appsec для получения эффективной, основанной на ИИ защиты от известных, а также неизвестных атак для всего, что предоставляется их API-шлюзом APISIX, одновременно значительно снижая количество ложных срабатываний и избавляя администратора от утомительных задач, таких как создание исключений, обновление традиционных политик на основе сигнатур и многое другое.
Эта интеграция будет доступна для всех распространенных платформ: Linux, Docker и Kubernetes.
Linux
Для "встроенных" развертываний APISIX на Linux установщик open-appsec добавит модуль "open-appsec attachment" к существующей установке APISIX, а также установит "агент open-appsec" рядом с ним, который будет получать трафик от модуля attachment, анализировать его и возвращать решение о блокировке или разрешении трафика обратно в APISIX или в интегрированный с ним модуль open-appsec attachment.
Вот простая схема архитектуры для развертывания на Linux.

Docker
Для развертываний APISIX на основе Docker с open-appsec WAF доступен специальный образ контейнера APISIX, в который уже добавлен модуль open-appsec attachment, а также улучшенный файл docker-compose, который развертывает как контейнер шлюза APISIX, так и агент open-appsec, который выполняет проверку безопасности и возвращает принятые решения в шлюз APISIX для разрешения или блокировки трафика.
Вот простая схема архитектуры для развертывания на Docker.

Kubernetes
Для развертываний APISIX на основе Kubernetes, интегрированных с open-appsec, доступен Helm-чарт, основанный на официальном Helm-чарте APISIX и дополнительно улучшенный для включения модуля open-appsec attachment в контейнер шлюза APISIX, а также для развертывания агента open-appsec. Кроме того, у вас будет возможность настроить open-appsec декларативно в стиле "DevOps" с использованием пользовательских ресурсов в K8s в качестве альтернативы использованию центрального веб-интерфейса управления open-appsec.
Вот простая схема архитектуры для развертывания на Kubernetes.

Добавление open-appsec WAF к APISIX на Linux
Чтобы установить open-appsec на систему Linux с установленным APISIX, выполните следующие шаги:
1. Предварительные требования
- Платформа Linux должна быть Ubuntu 22.04.
- Убедитесь, что APISIX установлен.
Список поддерживаемых версий APISIX можно найти здесь: https://downloads.openappsec.io/packages/supported-apisix.txt.
Если APISIX еще не установлен, вы можете использовать следующие команды для установки APISIX в "традиционном режиме". Выполнив эти команды, вы сначала установите базу данных etcd для APISIX, затем добавите необходимые репозитории перед установкой и запуском APISIX.
Установка базы данных etcd
ETCD_VERSION='3.5.4' wget https://github.com/etcd-io/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-amd64.tar.gz tar -xvf etcd-v${ETCD_VERSION}-linux-amd64.tar.gz && cd etcd-v${ETCD_VERSION}-linux-amd64 cp -a etcd etcdctl /usr/bin/ nohup etcd >/tmp/etcd.log 2>&1 & etcd
Добавление и обновление репозиториев пакетов
apt install gnupg echo "deb http://openresty.org/package/debian bullseye openresty" | tee /etc/apt/sources.list.d/openresty.list wget -O - https://openresty.org/package/pubkey.gpg | apt-key add - wget -O - http://repos.apiseven.com/pubkey.gpg | apt-key add - echo "deb http://repos.apiseven.com/packages/debian bullseye main" | tee /etc/apt/sources.list.d/apisix.list apt update
Установка, инициализация и запуск APISIX
apt install apisix=3.9.1-0 apisix init apisix start
2. Загрузка установщика open-appsec
wget https://downloads.openappsec.io/open-appsec-install && chmod +x open-appsec-install
3. Установка open-appsec
Установите open-appsec для интеграции с существующей установкой APISIX.
Обратите внимание, что флаг
--preventустановит open-appsec с политикой по умолчанию, уже настроенной на режим предотвращения.
./open-appsec-install --auto --prevent
4. Получение и сохранение ключа администратора APISIX
Получите ключ администратора APISIX из конфигурационного файла config.yaml APISIX и сохраните его в переменной окружения APISIX_KEY.
export APISIX_KEY=$(awk '/key:/{ if ($2 ~ /^edd1/) print $2 }' /usr/local/apisix/conf/config.yaml )
5. Настройка маршрута для предоставления сервисов
Настройте пример маршрута в шлюзе APISIX для предоставления внешнего веб-сервиса или веб-API. В этом примере мы используем httpbin.org в качестве примера серверной части.
curl http://127.0.0.1:9180/apisix/admin/routes/100 -H "X-API-KEY:$APISIX_KEY" -X PUT -d '{ "methods": [ "GET" ], "uri": "/anything", "upstream": { "type": "roundrobin", "nodes": { "httpbin.org:80": 1 } } }'
6. Проверка
Проверим, работает ли этот маршрут, обратившись к нему.
curl -s -v -G --data-urlencode email=user@domain.abc http://localhost:9080/anything
7. Симуляция атаки SQL-инъекции
Теперь попробуем симулировать атаку SQL-инъекции (см. 'OR '1'='1' в следующем HTTP-запросе) на сервис httpbin.org, предоставляемый шлюзом APISIX, который теперь защищен WAF open-appsec.
curl -s -v -G --data-urlencode email=user@domain.abc' OR '1'='1 http://localhost:9080/anything
Эта симулированная атака теперь успешно блокируется контекстным механизмом WAF на основе машинного обучения open-appsec.
8. Просмотр лог-файлов
Проверьте соответствующие лог-файлы, показывающие "prevent" для HTTP-запроса с симулированной атакой, который мы только что отправили.
tail -f /var/log/nano_agent/cp-nano-http-transaction-handler.log*| grep -i user@domain.abc
Альтернативно вы можете использовать инструмент open-appsec-ctl:
open-appsec-ctl --view-logs | grep -i user@domain.abc
9. Подключение к open-appsec для централизованного управления (опционально)
При желании вы можете подключить ваше развертывание к https://my.openappsec.io для централизованного управления open-appsec с помощью удобного веб-интерфейса, мониторинга событий безопасности и многого другого. Подробнее см. раздел Как централизованно управлять вашим развертыванием open-appsec WAF? ниже.
Поздравляем! Вы успешно добавили open-appsec WAF к вашей существующей установке APISIX и убедились, что ваши веб-сервисы, предоставляемые шлюзом APISIX, теперь защищены от веб-атак.
Развертывание APISIX с open-appsec WAF на контейнеризированных платформах (Docker)
Чтобы установить APISIX, интегрированный с open-appsec, на Docker, вы можете выполнить следующие шаги.
В отличие от предыдущего примера, здесь мы развертываем APISIX в "автономном режиме", что означает, что он настраивается декларативно с использованием монтирования тома Docker с файлом yaml, содержащим конфигурации, и поэтому не требует развертывания базы данных etcd.
Обратите внимание, что APISIX поддерживает как традиционный, так и автономный режимы во всех типах развертываний (Linux, Docker, …)
1. Предварительные требования
Убедитесь, что у вас есть платформа Linux с установленными инструментами Docker и docker-compose.
2. Создание папки для open-appsec
Внутри каталога, который вы хотите использовать для развертывания, создайте папку appsec-localconfig, которая будет содержать декларативный конфигурационный файл open-appsec:
mkdir ./appsec-localconfig
3. Загрузка файла open-appsec в папку
Загрузите начальный декларативный конфигурационный файл для open-appsec в эту папку.
wget https://raw.githubusercontent.com/openappsec/openappsec/main/config/linux/latest/prevent/local_policy.yaml -O appsec-localconfig/local_policy.yaml
Обратите внимание, что этот пример декларативного конфигурационного файла уже настроен на предотвращение атак.
4. Создание папки для APISIX
Создайте еще одну папку apisix-localconfig, которая будет содержать декларативный конфигурационный файл для APISIX: mkdir ./apisix-localconfig.
5. Загрузка файла APISIX в папку
Давайте загрузим простой декларативный конфигурационный файл также для APISIX, чтобы мы могли проверить защиту open-appsec после развертывания.
wget https://raw.githubusercontent.com/openappsec/openappsec/main/deployment/apisix/apisix-example-config/apisix-standalone.yaml -O ./apisix-localconfig/apisix-standalone.yaml
6. Создание файла docker-compose.yaml
Создайте файл docker-compose.yaml с содержимым ниже, который можно загрузить следующим образом:
wget https://raw.githubusercontent.com/openappsec/openappsec/main/deployment/apisix/docker-compose.yaml
version: "3" services: apisix: container_name: apisix image: "ghcr.io/openappsec/apisix-attachment:latest" ipc: service:appsec-agent restart: always volumes: - ./apisix-localconfig/apisix-standalone.yaml:/usr/local/apisix/conf/apisix.yaml:ro environment: - APISIX_STAND_ALONE=true ports: - "9180:9180/tcp" - "9080:9080/tcp" - "9091:9091/tcp" - "9443:9443/tcp" appsec-agent: container_name: appsec-agent image: 'ghcr.io/openappsec/agent:latest' ipc: shareable restart: unless-stopped environment: # укажите ваш email ниже - user_email=user@email.com - registered_server="APISIX Server" volumes: - ./appsec-config:/etc/cp/conf - ./appsec-data:/etc/cp/data - ./appsec-logs:/var/log/nano_agent - ./appsec-localconfig:/ext/appsec command: /cp-nano-agent
7. Обновление вашего email (опционально)
Отредактируйте файл docker-compose.yaml и замените "user@email.com" на ваш собственный email, чтобы мы могли предоставить помощь в случае возникновения проблем с конкретным развертыванием в будущем и предоставлять информацию о open-appsec.
Этот параметр является необязательным и может быть удален. Если мы отправляем автоматические письма, в них также будет включена возможность отказа от получения подобных сообщений в будущем.
8. Запуск всех контейнеров
Запустите docker-compose up для развертывания всех соответствующих контейнеров:
docker-compose up -d
9. Проверка статуса контейнеров
Проверьте, запущены ли контейнеры apisix-attachment и appsec-agent.
docker ps
10. Проверка автономной конфигурации
Проверим, работает ли автономная конфигурация, обратившись к ней.
curl -s -v -G --data-urlencode email=user@domain.abc http://localhost:9080/anything
11. Симуляция атаки SQL-инъекции
Теперь попробуем симулировать атаку SQL-инъекции на сервис httpbin.org, предоставляемый контейнером шлюза APISIX, который теперь защищен open-appsec.
curl -s -v -G --data-urlencode email=user@domain.abc' OR '1'='1 http://localhost:9080/anything
12. Подключение к open-appsec для централизованного управления (опционально)
При желании вы можете подключить ваше развертывание к https://my.openappsec.io для централизованного управления open-appsec с помощью удобного веб-интерфейса, мониторинга событий безопасности и многого другого. Подробнее см. раздел Как централизованно управлять вашим развертыванием open-appsec WAF? ниже.
Развертывание APISIX с open-appsec WAF на Kubernetes с использованием Helm
1. Предварительные требования
Убедитесь, что платформа Kubernetes и инструмент Helm доступны.
2. Загрузка open-appsec
Загрузите open-appsec для Helm-чарта APISIX здесь.
wget https://downloads.openappsec.io/packages/helm-charts/apisix/open-appsec-k8s-apisix-latest.tgz
3. Установка Helm-чарта
Эта команда helm install устанавливает open-appsec для Helm-чарта APISIX, который основан на расширенной версии официального Helm-чарта APISIX.
Она развернет шлюз APISIX как контроллер входящего трафика APISIX, а также интегрированный с ним WAF open-appsec. Она также предлагает дополнительную опцию конфигурации специально для WAF open-appsec (см. values.yaml внутри Helm-чарта и документацию open-appsec).
После развертывания вы можете назначить ваши ресурсы входящего трафика K8s шлюзу APISIX, настроив их на использование следующего класса входящего трафика: appsec-apisix.
helm install open-appsec-k8s-apisix-latest.tgz \ --name-template=appsec-apisix \ --set rbac.create=true \ --set appsec.mode=standalone \ --set service.type=LoadBalancer \ --set appsec.persistence.enabled=false \ --set ingress-controller.enabled=true \ --set ingress-controller.config.ingressClass=appsec-apisix \ --set appsec.userEmail=”<your-email-address>” \ --set appsec.agentToken= \ --create-namespace \ -n appsec-apisix
Замените
в команде установки Helm выше на ваш собственный email, чтобы мы могли отправлять вам новости и обновления, связанные с open-appsec, и лучше поддерживать ваше развертывание, если это потребуется! Вы можете отписаться в любое время или просто удалить эту строку, если предпочитаете не предоставлять ваш email.
4. Проверка
Проверьте, что поды были успешно развернуты и находятся в состоянии готовности:
kubectl get pods -n appsec-apisix
5. Создание ресурса политики open-appsec
Выполните следующую команду для создания политики "open-appsec-best-practice-policy" в K8s.
Обратите внимание, что эта примерная политика уже предварительно настроена на предотвращение атак.
kubectl apply -f https://raw.githubusercontent.com/openappsec/openappsec/main/config/k8s/v1beta1/open-appsec-k8s-prevent-config-v1beta1.yaml
Вы также можете создать свою собственную пользовательскую политику, здесь вы найдете все детали.
6. Получение имени целевого ресурса
Узнайте имя соответствующего ресурса входящего трафика, который вы хотите защитить:
kubectl get ing -A
7. Редактирование ресурса входящего трафика
kubectl edit ing/<имя входящего трафика> -n <пространство имен входящего трафика>
8. Изменение ingressClassname
Измените ingressClassname на использование open-appsec:
spec: ingressClassName: appsec-apisix
9. Добавление аннотации к ресурсу входящего трафика
Добавьте эту аннотацию к ресурсу входящего трафика, чтобы активировать open-appsec для этого входящего трафика, указав желаемый пользовательский ресурс политики open-appsec.
openappsec.io/policy: open-appsec-best-practice-policy
10. Проверка автономной конфигурации
Проверим, работает ли автономная конфигурация, обратившись к ней:
curl -s -v -G --data-urlencode email=user@domain.abc http://[ВАШ-HOSTNAME-ВХОДЯЩЕГО-ТРАФИКА]
11. Симуляция атаки SQL-инъекции
Теперь попробуем симулировать атаку SQL-инъекции на сервис httpbin.org, предоставляемый контейнером шлюза APISIX, который теперь защищен open-appsec.
curl -s -v -G --data-urlencode email=user@domain.abc' OR '1'='1 http://[ВАШ-HOSTNAME-ВХОДЯЩЕГО-ТРАФИКА]
Замените [ВАШ-HOSTNAME-ВХОДЯЩЕГО-ТРАФИКА] в команде выше на хост, который вы указали в ресурсе входящего трафика, защищенном WAF open-appsec на предыдущих шагах, также измените "http" на "https", если это требуется.
Поздравляем! Вы успешно развернули APISIX, интегрированный с WAF open-appsec, и убедились, что ваши веб-сервисы, предоставляемые шлюзом APISIX, теперь защищены от атак.
Как централизованно управлять вашим развертыванием open-appsec WAF?
Если хотите, вы также можете управлять вашим развертыванием open-appsec WAF (интегрированным с APISIX) централизованно с помощью веб-интерфейса open-appsec (SaaS-сервис), доступного по адресу https://my.openappsec.io, подключив агент open-appsec к профилю развертывания в центральном веб-интерфейсе.
Вы также можете продолжать управлять вашим развертыванием локально, но при этом подключиться к профилю центрального веб-интерфейса в "декларативном режиме", чтобы видеть локальную конфигурацию (только для чтения) в веб-интерфейсе.
Вместе с конфигурацией open-appsec веб-интерфейс позволяет вам также видеть гораздо больше информации, такую как статус развернутых агентов open-appsec, журналы безопасности, дашборды и многое другое.
Инструкции по подключению вашего развертывания к центральному веб-интерфейсу см. в документации open-appsec, доступной по адресу https://docs.openappsec.io.
Ниже вы найдете несколько скриншотов веб-интерфейса.


Итог
В этом блоге мы объяснили, как open-appsec может интегрироваться с Apache APISIX на всех следующих платформах: обычные развертывания на Linux, контейнеризированные развертывания (Docker), а также среды Kubernetes.
Следуя шагам развертывания APISIX с WAF open-appsec, мы симулировали атаки SQL-инъекции, которые были успешно предотвращены технологией WAF на основе машинного обучения open-appsec.
Кроме того, было объяснено, какие преимущества дает подключение к центральному веб-интерфейсу open-appsec для управления, мониторинга, анализа журналов и отчетности.
Мы надеемся, что эти новые интеграции окажутся очень полезными для повышения безопасности вашего API-шлюза APISIX и предоставляемых им веб-API и веб-приложений с помощью WAF на основе машинного обучения open-appsec.
Добро пожаловать связаться с нами, если у вас есть отзывы, вопросы или вы столкнулись с техническими трудностями, с которыми хотите, чтобы мы помогли. Вы можете связаться с командой open-appsec через чат на https://www.openappsec.io или по электронной почте: info@openappsec.io.
Дополнительные ресурсы
open-appsec WAF
Веб-сайт: https://www.openappsec.io
GitHub: https://github.com/openappsec
Документация: https://docs.openappsec.io
Песочницы: https://www.openappsec.io/playground
Блоги: https://www.openappsec.io/blogs
Apache APISIX
Веб-сайт: https://apisix.apache.org
GitHub: https://github.com/apache/apisix
Документация: https://apisix.apache.org/docs/
