Apache APISIX integra-se ao open-appsec WAF
October 21, 2024
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.
-
Website: apisix.apache.org
-
Github: github.com/apache/apisix
-
Docs: apisix.apache.org/docs
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.
-
Website: www.openappsec.io
-
Github: github.com/openappsec
-
Docs: docs.openappsec.io
-
Playgrounds: www.openappsec.io/playground
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.
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.
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.
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.
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