Apache APISIX integra-se ao open-appsec WAF

Introdução

O open-appsec WAF tem o prazer de anunciar uma nova integração com o gateway de API de código aberto Apache APISIX.

Esta nova colaboração entre as equipes do open-appsec e da API7 agora permite que os usuários protejam suas APIs web e outros serviços web expostos pelo Apache APISIX contra tipos de ataques conhecidos e desconhecidos de forma eficaz, com base na avançada tecnologia de aprendizado de máquina do open-appsec, além de adicionar várias outras capacidades de segurança aprimoradas.

Sobre o Apache APISIX

Apache APISIX é uma solução moderna, flexível e de alto desempenho para gateway de API de código aberto, projetada para lidar com diversos casos de uso em arquiteturas de microsserviços e nativas da nuvem. Seu principal objetivo é facilitar a gestão de APIs, servindo como um gateway para gerenciar, proteger e otimizar o tráfego de API entre clientes e serviços de backend.

Outros casos de uso para o APISIX como gateway de API incluem balanceamento de carga, limitação de taxa, autenticação e autorização. Ele oferece recursos abrangentes, como controle de tráfego, upstream dinâmico e extensibilidade de plugins, permitindo que os desenvolvedores personalizem e estendam a funcionalidade de acordo com suas necessidades específicas.

Sobre o open-appsec WAF

open-appsec WAF oferece prevenção automática e preventiva de ameaças e se integra a vários tipos de proxies reversos, como o NGINX, além de gateways de API como o APISIX. Ele é baseado em aprendizado de máquina, o que significa que não requer assinaturas (ou atualizações). Isso permite que ele forneça prevenção automática e de última geração contra ameaças, mesmo para ataques verdadeiramente zero-day, ao mesmo tempo que reduz significativamente o esforço administrativo e a quantidade de falsos positivos.

Além disso, o open-appsec oferece várias camadas adicionais de segurança, como AntiBot, limitação de taxa, imposição de esquema, suporte a assinaturas Snort, regras/exceções personalizadas e muito mais. O open-appsec pode ser gerenciado centralmente usando uma interface Web fornecida como um serviço SaaS e também localmente usando um arquivo de configuração declarativo.

Integrando o Apache APISIX com o open-appsec

Com esta nova integração, os usuários do APISIX agora terão acesso ao open-appsec WAF como uma solução integrada e de última geração baseada em aprendizado de máquina para a proteção de suas APIs web e aplicações web.

Agora, eles podem usar, por exemplo, a "Edição Comunitária" gratuita e de código aberto do open-appsec para obter proteção eficaz baseada em IA contra ataques conhecidos e desconhecidos para tudo o que é exposto pelo gateway de API APISIX, ao mesmo tempo que reduzem significativamente a quantidade de falsos positivos, aliviando o administrador de tarefas tediosas, como criar exceções, atualizar políticas baseadas em assinaturas tradicionais e muito mais.

Esta integração estará disponível para todas as plataformas comuns: Linux, Docker e Kubernetes.

Linux

Para implantações "embutidas" do APISIX no Linux, um instalador do open-appsec adicionará um módulo de "anexo open-appsec" à instalação existente do APISIX e também instalará o "agente open-appsec" ao lado dele, que receberá o tráfego do anexo, o inspecionará e retornará a ação concluída para bloquear ou permitir o tráfego de volta ao APISIX, respectivamente, ao anexo open-appsec integrado a ele.

Aqui está um esquema de arquitetura simples para implantação no Linux.

Arquitetura para Implantação no Linux

Docker

Para implantações baseadas em Docker do APISIX com o open-appsec WAF, há uma imagem de contêiner especial do APISIX disponível, à qual o anexo open-appsec já foi adicionado, além de um arquivo docker-compose aprimorado, que implanta tanto o contêiner do gateway APISIX quanto um agente open-appsec que faz a inspeção de segurança e retorna as decisões concluídas ao gateway APISIX para permitir ou bloquear o tráfego.

Aqui está um esquema de arquitetura simples para implantação no Docker.

Arquitetura para Implantação Baseada em Docker

Kubernetes

Para implantações baseadas em Kubernetes do APISIX integrado com o open-appsec, há um gráfico Helm disponível, que é baseado no gráfico Helm oficial do APISIX e aprimorado para incluir também o anexo open-appsec no contêiner do gateway APISIX e implantar o agente open-appsec. Além disso, você terá a opção de configurar o open-appsec de forma declarativa, no estilo "DevOps", usando recursos personalizados no K8s como uma alternativa ao uso da interface Web de gerenciamento central do open-appsec.

Aqui está um esquema de arquitetura simples para implantação no Kubernetes.

Arquitetura para Implantação no Kubernetes

Adicionando o open-appsec WAF ao APISIX no Linux

Para instalar o open-appsec em um sistema Linux com o APISIX instalado, siga estas etapas:

1. Pré-requisitos

  • A plataforma Linux deve ser Ubuntu 22.04.
  • Certifique-se de ter o APISIX instalado.

Você pode encontrar a lista de versões do APISIX suportadas aqui: https://downloads.openappsec.io/packages/supported-apisix.txt.

Se você ainda não tiver o APISIX instalado, pode usar os seguintes comandos para realizar uma instalação do APISIX no "modo tradicional". Ao executar esses comandos, você primeiro instalará o banco de dados etcd para o APISIX, depois adicionará os repositórios necessários antes de instalar e iniciar o APISIX.

Instalar o Banco de Dados 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

Adicionar e Atualizar Repositórios de Pacotes

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

Instalar, Iniciar e Iniciar o APISIX

apt install apisix=3.9.1-0
apisix init
apisix start

2. Baixar o Instalador do open-appsec

wget https://downloads.openappsec.io/open-appsec-install && chmod +x open-appsec-install

3. Instalar o open-appsec

Instale o open-appsec para integrar com a instalação existente do APISIX.

Observe que a flag --prevent instalará o open-appsec com uma política padrão já configurada para o modo de prevenção.

./open-appsec-install --auto --prevent

4. Obter e Armazenar a Chave de Administração do APISIX

Obtenha a chave de administração do APISIX do arquivo de configuração config.yaml do APISIX e armazene-a na variável de ambiente APISIX_KEY.

export APISIX_KEY=$(awk '/key:/{ if ($2 ~ /^edd1/) print $2 }' /usr/local/apisix/conf/config.yaml )

5. Configurar Rota para Expor Serviços

Configure uma rota de exemplo no gateway APISIX para expor um serviço web ou API web externa. Neste exemplo, usamos httpbin.org como o backend de exemplo.

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. Validar

Vamos verificar se esta rota funciona acessando-a.

curl -s -v -G --data-urlencode email=user@domain.abc http://localhost:9080/anything

7. Simular um Ataque de Injeção de SQL

Agora vamos tentar simular um ataque de injeção de SQL (veja 'OR '1'='1' na solicitação HTTP abaixo) contra o serviço httpbin.org exposto pelo gateway APISIX, que agora está protegido pelo open-appsec WAF.

curl -s -v -G --data-urlencode email=user@domain.abc' OR '1'='1 http://localhost:9080/anything

Este ataque simulado agora é bloqueado com sucesso pelo mecanismo de WAF baseado em aprendizado de máquina contextual do open-appsec.

8. Revisar Arquivos de Log

Verifique os arquivos de log correspondentes que mostram a "prevenção" para a solicitação HTTP com o ataque simulado que acabamos de enviar.

tail -f /var/log/nano_agent/cp-nano-http-transaction-handler.log*| grep -i user@domain.abc

Alternativamente, você pode usar a ferramenta open-appsec-ctl:

open-appsec-ctl --view-logs | grep -i user@domain.abc

9. Conectar ao open-appsec para Gerenciamento Central (Opcional)

Opcionalmente, você pode conectar sua implantação agora a https://my.openappsec.io para gerenciar o open-appsec centralmente com uma interface Web fácil de usar, monitorar eventos de segurança e muito mais. Consulte a seção Como Gerenciar Sua Implantação do open-appsec WAF Centralmente? abaixo para mais informações.

Parabéns! Você adicionou com sucesso o open-appsec WAF à sua instalação existente do APISIX e verificou que seus serviços web expostos pelo gateway APISIX agora estão protegidos contra ataques web.

Implantando o APISIX com o open-appsec WAF em Plataformas Containerizadas (Docker)

Para instalar o APISIX integrado com o open-appsec no Docker, você pode seguir as etapas mostradas abaixo.

Ao contrário do exemplo acima, aqui estamos implantando o APISIX no "modo autônomo", o que significa que ele é configurado de forma declarativa usando uma montagem de volume do Docker com um arquivo yaml que contém as configurações e, portanto, não requer uma implantação do banco de dados etcd.

Observe que o APISIX suporta tanto o modo tradicional quanto o autônomo em todos os tipos de implantação (Linux, Docker, …)

1. Pré-requisito

Certifique-se de ter uma plataforma Linux com as ferramentas Docker e docker-compose instaladas.

2. Criar uma Pasta para o open-appsec

Dentro do diretório que você deseja usar para a implantação, crie uma pasta appsec-localconfig que conterá o arquivo de configuração declarativo do appsec:

mkdir ./appsec-localconfig

3. Baixar o Arquivo do open-appsec na Pasta

Baixe o arquivo de configuração declarativo inicial para o open-appsec nessa pasta.

wget https://raw.githubusercontent.com/openappsec/openappsec/main/config/linux/latest/prevent/local_policy.yaml -O appsec-localconfig/local_policy.yaml

Observe que este arquivo de configuração declarativo de exemplo já está configurado para prevenir ataques.

4. Criar uma Pasta para o APISIX

Crie outra pasta apisix-localconfig que conterá o arquivo de configuração declarativo para o APISIX: mkdir ./apisix-localconfig.

5. Baixar o Arquivo do APISIX na Pasta

Vamos baixar um arquivo de configuração declarativo simples também para o APISIX para que possamos verificar a proteção do open-appsec após a implantação.

wget https://raw.githubusercontent.com/openappsec/openappsec/main/deployment/apisix/apisix-example-config/apisix-standalone.yaml -O ./apisix-localconfig/apisix-standalone.yaml

6. Criar um Arquivo docker-compose.yaml

Crie um arquivo docker-compose.yaml com o conteúdo abaixo, que pode ser baixado da seguinte forma:

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:
      # ajuste com seu próprio e-mail abaixo
      - 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. Atualizar Seu Endereço de E-mail (Opcional)

Edite o arquivo docker-compose.yaml e substitua "user@email.com" pelo seu próprio endereço de e-mail, para que possamos fornecer assistência em caso de problemas com a implantação específica no futuro e fornecer informações proativamente sobre o open-appsec.

Este é um parâmetro opcional e pode ser removido. Se enviarmos e-mails automáticos, também haverá uma opção de cancelamento de recebimento de comunicações semelhantes no futuro.

8. Iniciar Todos os Contêineres

Execute docker-compose up para iniciar a implantação de todos os contêineres relevantes:

docker-compose up -d

9. Verificar o Status dos Contêineres

Verifique se os contêineres apisix-attachment e appsec-agent estão em execução.

docker ps

10. Validar a Configuração Autônoma

Vamos verificar se a configuração autônoma funciona acessando-a.

curl -s -v -G --data-urlencode email=user@domain.abc http://localhost:9080/anything

11. Simular um Ataque de Injeção de SQL

Agora vamos tentar simular um ataque de injeção de SQL contra o serviço httpbin.org exposto pelo contêiner do gateway APISIX, que agora está protegido pelo open-appsec.

curl -s -v -G --data-urlencode email=user@domain.abc' OR '1'='1 http://localhost:9080/anything

12. Conectar ao open-appsec para Gerenciamento Central (Opcional)

Opcionalmente, você pode conectar sua implantação agora a https://my.openappsec.io para gerenciar o open-appsec centralmente com uma interface Web fácil de usar, monitorar eventos de segurança e muito mais. Consulte a seção Como Gerenciar Sua Implantação do open-appsec WAF Centralmente? abaixo para mais informações.

Implantando o APISIX com o open-appsec WAF no Kubernetes Usando Helm

1. Pré-requisito

Certifique-se de que a plataforma Kubernetes e a ferramenta Helm estejam disponíveis.

2. Baixar o open-appsec

Baixe o open-appsec para o gráfico Helm do APISIX aqui.

wget https://downloads.openappsec.io/packages/helm-charts/apisix/open-appsec-k8s-apisix-latest.tgz

3. Instalar o Gráfico Helm

Este exemplo de comando helm install está instalando o open-appsec para o gráfico Helm do APISIX, que é baseado em uma versão estendida do gráfico Helm oficial do APISIX.

Ele implantará o gateway APISIX como o Controlador de Ingress APISIX, bem como o open-appsec WAF integrado a ele. Ele também oferece uma opção de configuração adicional especificamente para o open-appsec WAF (veja values.yaml dentro do gráfico Helm e a documentação do open-appsec).

Após a implantação, você pode atribuir seus recursos de ingress do K8s ao gateway APISIX configurando-os para usar a seguinte classe de ingress: 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=<seu-endereço-de-email>\
--set appsec.agentToken= \
--create-namespace \
-n appsec-apisix

Substitua <seu-endereço-de-email> no comando de instalação do Helm acima pelo seu próprio endereço de e-mail, para que possamos enviar notícias e atualizações relacionadas ao open-appsec e apoiá-lo melhor com sua implantação, se necessário! Você pode cancelar a inscrição a qualquer momento ou, alternativamente, apenas remover essa linha se preferir não fornecer seu e-mail.

4. Validar

Valide se os pods foram implantados corretamente e estão em um estado pronto:

kubectl get pods -n appsec-apisix

5. Criar um Recurso de Política do open-appsec

Execute o seguinte comando para criar a "open-appsec-best-practice-policy" no K8s.

Observe que esta política de exemplo já está pré-configurada para prevenir ataques.

kubectl apply -f https://raw.githubusercontent.com/openappsec/openappsec/main/config/k8s/v1beta1/open-appsec-k8s-prevent-config-v1beta1.yaml

Você também pode criar sua própria política personalizada, aqui você encontra todos os detalhes.

6. Obter o Nome do Recurso de Destino

Descubra o nome do recurso de ingress relevante que você deseja proteger:

kubectl get ing -A

7. Editar o Recurso de Ingress

kubectl edit ing/<nome-do-ingress> -n <namespace-do-ingress>

8. Alterar o ingressClassname

Altere o ingressClassname para usar o open-appsec:

spec: ingressClassName: appsec-apisix

9. Adicionar Anotação ao Recurso de Ingress

Adicione esta anotação ao recurso de ingress para ativar o open-appsec para este ingress, especificando o recurso de política personalizado do open-appsec desejado.

openappsec.io/policy: open-appsec-best-practice-policy

10. Validar a Configuração Autônoma

Vamos verificar se a configuração autônoma funciona acessando-a:

curl -s -v -G --data-urlencode email=user@domain.abc http://[SEU-HOSTNAME-DO-INGRESS]

11. Simular um Ataque de Injeção de SQL

Agora vamos tentar simular um ataque de injeção de SQL contra o serviço httpbin.org exposto pelo contêiner do gateway APISIX, que agora está protegido pelo open-appsec.

curl -s -v -G --data-urlencode email=user@domain.abc' OR '1'='1 http://[SEU-HOSTNAME-DO-INGRESS]

Substitua [SEU-HOSTNAME-DO-INGRESS] no comando acima pelo hostname que você configurou no recurso de ingress que você protegeu com o open-appsec WAF nas etapas anteriores, também altere "http" para "https" se necessário.

Parabéns! Você implantou com sucesso o APISIX integrado com o open-appsec WAF e verificou que seus serviços web expostos pelo Gateway APISIX agora estão protegidos contra ataques.

Como Gerenciar Sua Implantação do open-appsec WAF Centralmente?

Se desejar, você também pode gerenciar sua implantação do open-appsec WAF (integrada com o APISIX) centralmente usando a interface Web do open-appsec (serviço SaaS) disponível em https://my.openappsec.io, conectando o agente open-appsec a um perfil de implantação na interface Web central.

Você pode, alternativamente, continuar a gerenciar sua implantação localmente, mas ainda se conectar a um perfil da interface Web central no "Modo Declarativo", para que você possa ver a configuração local (somente leitura) na interface Web.

Além da configuração do open-appsec, a interface Web permite que você veja muito mais informações, como o status dos agentes open-appsec implantados, logs de segurança, painéis e muito mais.

Para instruções sobre como conectar sua implantação à interface Web central, consulte a documentação do open-appsec disponível em https://docs.openappsec.io.

Abaixo, você encontra algumas capturas de tela da interface Web.

Interface Web do open-appsec 1

Interface Web do open-appsec 2

Resumo

Neste blog, explicamos como o open-appsec pode se integrar ao Apache APISIX em todos os seguintes: implantações regulares baseadas em Linux, implantações containerizadas (Docker) e também ambientes Kubernetes.

Seguindo as etapas de implantação do APISIX com o open-appsec WAF, simulamos ataques de injeção de SQL, que foram efetivamente prevenidos pela tecnologia de WAF baseada em aprendizado de máquina do open-appsec.

Além disso, foi explicado quais são os benefícios de se conectar à interface Web central do open-appsec para gerenciamento, monitoramento, análise de logs e relatórios.

Esperamos que essas novas integrações sejam muito úteis para aprimorar a segurança do seu gateway de API APISIX e suas APIs web e aplicações web expostas com o WAF baseado em aprendizado de máquina do open-appsec.

Seja bem-vindo a entrar em contato conosco se tiver algum feedback, dúvida ou enfrentar algum desafio técnico que deseja que ajudemos a resolver. Você pode entrar em contato com a equipe do open-appsec via chat em https://www.openappsec.io ou por e-mail para: info@openappsec.io.

Recursos Adicionais

open-appsec WAF

Website: https://www.openappsec.io

GitHub: https://github.com/openappsec

Docs: https://docs.openappsec.io

Playgrounds: https://www.openappsec.io/playground

Blogs: https://www.openappsec.io/blogs

Apache APISIX

Website: https://apisix.apache.org

GitHub: https://github.com/apache/apisix

Docs: https://apisix.apache.org/docs/

Blogs: https://apisix.apache.org/blog/

Share article link