Apache APISIX integriert open-appsec WAF
October 21, 2024
Einführung
open-appsec WAF freut sich, eine neue Integration mit dem Open-Source-API-Gateway Apache APISIX bekannt zu geben.
Diese neue Zusammenarbeit zwischen den Teams von open-appsec und API7 ermöglicht es Benutzern, ihre Web-APIs und andere Webdienste, die von Apache APISIX bereitgestellt werden, effektiv gegen bekannte und unbekannte Angriffsarten zu schützen. Dies basiert auf der fortschrittlichen, maschinellen Lernverfahren nutzenden Technologie von open-appsec und fügt zusätzlich mehrere erweiterte Sicherheitsfunktionen hinzu.
Über Apache APISIX
Apache APISIX ist eine moderne, flexible und leistungsstarke Open-Source-API-Gateway-Lösung, die für verschiedene Anwendungsfälle in Microservices- und Cloud-Native-Architekturen entwickelt wurde. Ihr Hauptzweck besteht darin, das API-Management zu erleichtern, indem sie als Gateway für die Verwaltung, Sicherung und Optimierung des API-Datenverkehrs zwischen Clients und Backend-Diensten dient.
Weitere Anwendungsfälle für APISIX als API-Gateway umfassen Lastenausgleich, Ratenbegrenzung, Authentifizierung und Autorisierung. Es bietet umfassende Funktionen wie Verkehrskontrolle, dynamisches Upstream und Plugin-Erweiterbarkeit, die es Entwicklern ermöglichen, die Funktionalität nach ihren spezifischen Anforderungen anzupassen und zu erweitern.
-
Website: apisix.apache.org
-
Github: github.com/apache/apisix
-
Dokumentation: apisix.apache.org/docs
Über open-appsec WAF
open-appsec WAF bietet automatische, präventive Bedrohungsabwehr und integriert sich in verschiedene Arten von Reverse-Proxys wie NGINX sowie API-Gateways wie APISIX. Es basiert auf maschinellem Lernen, was bedeutet, dass es überhaupt keine Signaturen (oder Updates) benötigt. Dies ermöglicht es, automatisch modernste Bedrohungsabwehr auch für echte Zero-Day-Angriffe zu bieten, während gleichzeitig der administrative Aufwand und die Anzahl der Fehlalarme erheblich reduziert werden.
Darüber hinaus bietet open-appsec viele zusätzliche Sicherheitsebenen wie AntiBot, Ratenbegrenzung, Schema-Erzwingung, Snort-Signaturunterstützung, benutzerdefinierte Regeln/Ausnahmen und mehr. open-appsec kann zentral über eine als SaaS-Dienst bereitgestellte Web-UI verwaltet werden und auch lokal über eine deklarative Konfigurationsdatei.
-
Website: www.openappsec.io
-
Github: github.com/openappsec
-
Dokumentation: docs.openappsec.io
-
Playgrounds: www.openappsec.io/playground
Integration von Apache APISIX mit open-appsec
Mit dieser neuen Integration haben APISIX-Benutzer nun Zugriff auf open-appsec WAF als integrierte, modernste, auf maschinellem Lernen basierende WAF-Lösung zum Schutz ihrer Web-APIs und Webanwendungen.
Sie können jetzt beispielsweise die kostenlose und Open-Source-"Community Edition" von open-appsec verwenden, um effektiven, KI-basierten Schutz gegen bekannte und unbekannte Angriffe für alles zu erhalten, was über ihr APISIX-API-Gateway bereitgestellt wird, während gleichzeitig die Anzahl der Fehlalarme erheblich reduziert wird, was den Administrator von mühsamen Aufgaben wie dem Erstellen von Ausnahmen, dem Aktualisieren traditioneller signaturbasierter Richtlinien und mehr entlastet.
Diese Integration wird für alle gängigen Plattformen verfügbar sein: Linux, Docker und Kubernetes.
Linux
Für Linux-"eingebettete" Bereitstellungen von APISIX wird ein open-appsec-Installer ein "open-appsec-Attachment"-Modul zur bestehenden APISIX-Installation hinzufügen und auch den "open-appsec-Agenten" daneben installieren, der den Datenverkehr vom Attachment empfängt, ihn überprüft und die getroffene Entscheidung, den Datenverkehr zu blockieren oder zuzulassen, an das APISIX bzw. das damit integrierte open-appsec-Attachment zurückgibt.
Hier ist ein einfaches Architekturdiagramm für die Linux-Bereitstellung.
Docker
Für Docker-basierte Bereitstellungen von APISIX mit open-appsec WAF steht ein spezielles APISIX-Container-Image zur Verfügung, dem das open-appsec-Attachment bereits hinzugefügt wurde, sowie eine erweiterte docker-compose-Datei, die sowohl das APISIX-Gateway-Container als auch einen open-appsec-Agenten bereitstellt, der die Sicherheitsüberprüfung durchführt und die getroffenen Entscheidungen an das APISIX-Gateway zurückgibt, um den Datenverkehr zuzulassen oder zu blockieren.
Hier ist ein einfaches Architekturdiagramm für die Bereitstellung auf Docker.
Kubernetes
Für Kubernetes-basierte Bereitstellungen von APISIX, die mit open-appsec integriert sind, steht ein Helm-Chart zur Verfügung, das auf dem offiziellen APISIX-Helm-Chart basiert und weiterentwickelt wurde, um auch das open-appsec-Attachment im APISIX-Gateway-Container zu enthalten und den open-appsec-Agenten bereitzustellen. Darüber hinaus haben Sie die Möglichkeit, open-appsec in einer deklarativen "DevOps-Art" mithilfe von benutzerdefinierten Ressourcen in K8s zu konfigurieren, anstatt die zentrale Verwaltungs-Web-UI von open-appsec zu verwenden.
Hier ist ein einfaches Architekturdiagramm für die Bereitstellung auf Kubernetes.
Hinzufügen von open-appsec WAF zu APISIX auf Linux
Um open-appsec auf einem Linux-System mit installiertem APISIX zu installieren, befolgen Sie bitte diese Schritte:
1. Voraussetzungen
- Die Linux-Plattform muss Ubuntu 22.04 sein.
- Stellen Sie sicher, dass APISIX installiert ist.
Die Liste der unterstützten APISIX-Versionen finden Sie hier: https://downloads.openappsec.io/packages/supported-apisix.txt.
Wenn Sie APISIX noch nicht installiert haben, können Sie die folgenden Befehle verwenden, um eine APISIX-Installation im "traditionellen Modus" durchzuführen. Durch Ausführen dieser Befehle installieren Sie zunächst die etcd-Datenbank für APISIX, fügen dann die erforderlichen Repositories hinzu, bevor Sie APISIX installieren und starten.
Installation der etcd-Datenbank
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
Hinzufügen und Aktualisieren von Paket-Repositories
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
Installation, Initialisierung und Start von APISIX
apt install apisix=3.9.1-0
apisix init
apisix start
2. Herunterladen des open-appsec-Installers
wget https://downloads.openappsec.io/open-appsec-install && chmod +x open-appsec-install
3. Installation von open-appsec
Installieren Sie open-appsec, um es in die bestehende APISIX-Installation zu integrieren.
Hinweis: Das Flag
--prevent
installiert open-appsec mit einer Standardrichtlinie, die bereits auf den Präventionsmodus eingestellt ist.
./open-appsec-install --auto --prevent
4. Abrufen und Speichern des APISIX-Admin-Schlüssels
Holen Sie sich den APISIX-Admin-Schlüssel aus der APISIX-config.yaml
-Konfigurationsdatei und speichern Sie ihn in der Umgebungsvariable APISIX_KEY
.
export APISIX_KEY=$(awk '/key:/{ if ($2 ~ /^edd1/) print $2 }' /usr/local/apisix/conf/config.yaml )
5. Konfigurieren einer Route zur Bereitstellung von Diensten
Konfigurieren Sie eine Beispielroute im APISIX-Gateway, um einen externen Webdienst oder eine Web-API bereitzustellen. In diesem Beispiel verwenden wir httpbin.org
als Beispiel-Backend.
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. Validierung
Lassen Sie uns überprüfen, ob diese Route funktioniert, indem wir darauf zugreifen.
curl -s -v -G --data-urlencode email=user@domain.abc http://localhost:9080/anything
7. Simulieren eines SQL-Injection-Angriffs
Lassen Sie uns nun versuchen, einen SQL-Injection-Angriff (siehe 'OR '1'='1'
in der folgenden HTTP-Anfrage) gegen den httpbin.org
-Dienst zu simulieren, der über das APISIX-Gateway bereitgestellt wird und jetzt durch die open-appsec WAF geschützt ist.
curl -s -v -G --data-urlencode email=user@domain.abc' OR '1'='1 http://localhost:9080/anything
Dieser simulierte Angriff wird nun erfolgreich von der kontextbasierten, maschinellen Lern-WAF-Engine von open-appsec blockiert.
8. Überprüfen der Protokolldateien
Überprüfen Sie die entsprechenden Protokolldateien, die die "Prävention" für die HTTP-Anfrage mit dem simulierten Angriff zeigen, den wir gerade gesendet haben.
tail -f /var/log/nano_agent/cp-nano-http-transaction-handler.log*| grep -i user@domain.abc
Alternativ können Sie das Tool open-appsec-ctl
verwenden:
open-appsec-ctl --view-logs | grep -i user@domain.abc
9. Verbindung zu open-appsec für zentrale Verwaltung (Optional)
Optional können Sie Ihre Bereitstellung jetzt mit https://my.openappsec.io verbinden, um open-appsec zentral mit einer benutzerfreundlichen Web-UI zu verwalten, Sicherheitsereignisse zu überwachen und mehr. Weitere Informationen finden Sie im Abschnitt Wie verwalten Sie Ihre open-appsec WAF-Bereitstellung zentral? weiter unten.
Herzlichen Glückwunsch! Sie haben open-appsec WAF erfolgreich zu Ihrer bestehenden APISIX-Installation hinzugefügt und überprüft, dass Ihre über das APISIX-Gateway bereitgestellten Webdienste jetzt vor Webangriffen geschützt sind.
Bereitstellung von APISIX mit open-appsec WAF auf containerisierten Plattformen (Docker)
Um APISIX mit open-appsec auf Docker zu installieren, können Sie die unten gezeigten Schritte befolgen.
Im Gegensatz zum obigen Beispiel stellen wir hier APISIX im "Standalone-Modus" bereit, was bedeutet, dass es deklarativ über eine Docker-Volume-Mount mit einer YAML-Datei konfiguriert wird, die die Konfigurationen enthält, und daher keine etcd-Datenbankbereitstellung erfordert.
Hinweis: APISIX unterstützt sowohl den traditionellen als auch den Standalone-Modus in allen Bereitstellungstypen (Linux, Docker, …)
1. Voraussetzung
Stellen Sie sicher, dass eine Linux-Plattform mit sowohl Docker als auch docker-compose-Tools installiert ist.
2. Erstellen eines Ordners für open-appsec
Erstellen Sie innerhalb des Verzeichnisses, das Sie für die Bereitstellung verwenden möchten, einen Ordner appsec-localconfig
, der die deklarative Konfigurationsdatei für open-appsec enthält:
mkdir ./appsec-localconfig
3. Herunterladen der open-appsec-Datei in den Ordner
Laden Sie die anfängliche deklarative Konfigurationsdatei für open-appsec in diesen Ordner herunter.
wget https://raw.githubusercontent.com/openappsec/openappsec/main/config/linux/latest/prevent/local_policy.yaml -O appsec-localconfig/local_policy.yaml
Hinweis: Diese Beispiel-Konfigurationsdatei ist bereits auf die Prävention von Angriffen eingestellt.
4. Erstellen eines Ordners für APISIX
Erstellen Sie einen weiteren Ordner apisix-localconfig
, der die deklarative Konfigurationsdatei für APISIX enthält: mkdir ./apisix-localconfig
.
5. Herunterladen der APISIX-Datei in den Ordner
Lassen Sie uns eine einfache deklarative Konfigurationsdatei auch für APISIX herunterladen, damit wir den open-appsec-Schutz nach der Bereitstellung überprüfen können.
wget https://raw.githubusercontent.com/openappsec/openappsec/main/deployment/apisix/apisix-example-config/apisix-standalone.yaml -O ./apisix-localconfig/apisix-standalone.yaml
6. Erstellen einer docker-compose.yaml
-Datei
Erstellen Sie eine docker-compose.yaml
-Datei mit dem untenstehenden Inhalt, die wie folgt heruntergeladen werden kann:
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:
# Passen Sie unten Ihre eigene E-Mail-Adresse an
- 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. Aktualisieren Ihrer E-Mail-Adresse (Optional)
Bearbeiten Sie die docker-compose.yaml
-Datei und ersetzen Sie "user@email.com" durch Ihre eigene E-Mail-Adresse, damit wir Ihnen im Falle von Problemen mit der spezifischen Bereitstellung in Zukunft Unterstützung bieten und Informationen proaktiv bezüglich open-appsec bereitstellen können.
Dies ist ein optionaler Parameter und kann entfernt werden. Wenn wir automatische E-Mails senden, wird auch eine Opt-Out-Option für den Erhalt ähnlicher Kommunikation in der Zukunft enthalten sein.
8. Starten aller Container
Führen Sie docker-compose up aus, um die Bereitstellung aller relevanten Container zu starten:
docker-compose up -d
9. Überprüfen des Container-Status
Überprüfen Sie, ob die Container apisix-attachment
und appsec-agent
aktiv und in Betrieb sind.
docker ps
10. Validierung der Standalone-Konfiguration
Lassen Sie uns überprüfen, ob die Standalone-Konfiguration funktioniert, indem wir darauf zugreifen.
curl -s -v -G --data-urlencode email=user@domain.abc http://localhost:9080/anything
11. Simulieren eines SQL-Injection-Angriffs
Lassen Sie uns nun versuchen, einen SQL-Injection-Angriff gegen den httpbin.org
-Dienst zu simulieren, der über das APISIX-Gateway-Container bereitgestellt wird und jetzt durch open-appsec geschützt ist.
curl -s -v -G --data-urlencode email=user@domain.abc' OR '1'='1 http://localhost:9080/anything
12. Verbindung zu open-appsec für zentrale Verwaltung (Optional)
Optional können Sie Ihre Bereitstellung jetzt mit https://my.openappsec.io
verbinden, um open-appsec zentral mit einer benutzerfreundlichen Web-UI zu verwalten, Sicherheitsereignisse zu überwachen und mehr. Weitere Informationen finden Sie im Abschnitt Wie verwalten Sie Ihre open-appsec WAF-Bereitstellung zentral? weiter unten.
Bereitstellung von APISIX mit open-appsec WAF auf Kubernetes mit Helm
1. Voraussetzung
Stellen Sie sicher, dass die Kubernetes-Plattform und das Helm-Tool verfügbar sind.
2. Herunterladen von open-appsec
Laden Sie open-appsec für das APISIX-Helm-Chart hier herunter.
wget https://downloads.openappsec.io/packages/helm-charts/apisix/open-appsec-k8s-apisix-latest.tgz
3. Installation des Helm-Charts
Dieser Beispielbefehl helm install
installiert das open-appsec für das APISIX-Helm-Chart, das auf einer erweiterten Version des offiziellen APISIX-Helm-Charts basiert.
Es stellt das APISIX-Gateway als APISIX Ingress Controller bereit sowie open-appsec WAF, das damit integriert ist. Es bietet auch eine zusätzliche Konfigurationsoption speziell für open-appsec WAF (siehe values.yaml
im Helm-Chart und die open-appsec Dokumentation).
Nach der Bereitstellung können Sie Ihre K8s-Ingress-Ressourcen dem APISIX-Gateway zuweisen, indem Sie sie so konfigurieren, dass sie die folgende Ingress-Klasse verwenden: 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=”<Ihre-E-Mail-Adresse>” \
--set appsec.agentToken= \
--create-namespace \
-n appsec-apisix
Ersetzen Sie
im Helm-Installationsbefehl oben durch Ihre eigene E-Mail-Adresse, damit wir Ihnen Neuigkeiten und Updates zu open-appsec senden und Sie bei Ihrer Bereitstellung besser unterstützen können, falls erforderlich! Sie können sich jederzeit abmelden oder alternativ einfach diese Zeile entfernen, wenn Sie Ihre E-Mail-Adresse nicht angeben möchten.
4. Validierung
Überprüfen Sie, ob die Pods korrekt bereitgestellt wurden und sich in einem bereiten Zustand befinden:
kubectl get pods -n appsec-apisix
5. Erstellen einer open-appsec-Richtlinienressource
Führen Sie den folgenden Befehl aus, um die "open-appsec-best-practice-policy" in K8s zu erstellen.
Hinweis: Diese Beispielrichtlinie ist bereits vorkonfiguriert, um Angriffe zu verhindern.
kubectl apply -f https://raw.githubusercontent.com/openappsec/openappsec/main/config/k8s/v1beta1/open-appsec-k8s-prevent-config-v1beta1.yaml
Sie können auch Ihre eigene benutzerdefinierte Richtlinie erstellen, hier finden Sie alle Details.
6. Abrufen des Namens der Zielressource
Finden Sie den Namen der relevanten Ingress-Ressource heraus, die Sie schützen möchten:
kubectl get ing -A
7. Bearbeiten der Ingress-Ressource
kubectl edit ing/<Ingress-Name> -n <Ingress-Namespace>
8. Ändern der ingressClassname
Ändern Sie die ingressClassname, um open-appsec zu verwenden:
spec: ingressClassName: appsec-apisix
9. Hinzufügen einer Annotation zur Ingress-Ressource
Fügen Sie diese Annotation zur Ingress-Ressource hinzu, um open-appsec für diesen Ingress zu aktivieren, indem Sie die gewünschte open-appsec-Richtlinienressource angeben.
openappsec.io/policy: open-appsec-best-practice-policy
10. Validierung der Standalone-Konfiguration
Lassen Sie uns überprüfen, ob die Standalone-Konfiguration funktioniert, indem wir darauf zugreifen:
curl -s -v -G --data-urlencode email=user@domain.abc http://[IHR-INGRESS-HOSTNAME]
11. Simulieren eines SQL-Injection-Angriffs
Lassen Sie uns nun versuchen, einen SQL-Injection-Angriff gegen den httpbin.org
-Dienst zu simulieren, der über das APISIX-Gateway-Container bereitgestellt wird und jetzt durch open-appsec geschützt ist.
curl -s -v -G --data-urlencode email=user@domain.abc' OR '1'='1 http://[IHR-INGRESS-HOSTNAME]
Ersetzen Sie [IHR-INGRESS-HOSTNAME] im obigen Befehl durch den Hostnamen, den Sie in der Ingress-Ressource festgelegt haben, die Sie in den vorherigen Schritten mit open-appsec WAF geschützt haben, und ändern Sie "http" in "https", falls erforderlich.
Herzlichen Glückwunsch! Sie haben APISIX erfolgreich mit open-appsec WAF bereitgestellt und überprüft, dass Ihre über das APISIX-Gateway bereitgestellten Webdienste jetzt vor Angriffen geschützt sind.
Wie verwalten Sie Ihre open-appsec WAF-Bereitstellung zentral?
Wenn Sie möchten, können Sie Ihre open-appsec WAF-Bereitstellung (integriert mit APISIX) auch zentral über die open-appsec Web-UI (SaaS-Dienst) verwalten, die unter https://my.openappsec.io verfügbar ist, indem Sie den open-appsec-Agenten mit einem Bereitstellungsprofil in der zentralen Web-UI verbinden.
Alternativ können Sie Ihre Bereitstellung weiterhin lokal verwalten, aber dennoch mit einem zentralen WebUI-Profil im "Deklarativen Modus" verbinden, sodass Sie die lokale Konfiguration (schreibgeschützt) in der Web-UI sehen können.
Neben der Konfiguration von open-appsec ermöglicht Ihnen die Web-UI auch, viel mehr Informationen wie den Status der bereitgestellten open-appsec-Agenten, Sicherheitsprotokolle, Dashboards und mehr zu sehen.
Anweisungen zum Verbinden Ihrer Bereitstellung mit der zentralen Web-UI finden Sie in der open-appsec-Dokumentation unter https://docs.openappsec.io.
Unten finden Sie einige Screenshots der Web-UI.
Zusammenfassung
In diesem Blog haben wir erklärt, wie open-appsec mit Apache APISIX auf allen folgenden Plattformen integriert werden kann: reguläre Linux-basierte Bereitstellungen, containerisierte Bereitstellungen (Docker) und auch Kubernetes-Umgebungen.
Nach den Bereitstellungsschritten für APISIX mit open-appsec WAF haben wir SQL-Injection-Angriffe simuliert, die effektiv durch die auf maschinellem Lernen basierende WAF-Technologie von open-appsec verhindert wurden.
Zusätzlich wurde erklärt, welche Vorteile die Verbindung zur zentralen WebUI von open-appsec für die Verwaltung, Überwachung, Protokollanalyse und Berichterstellung bietet.
Wir hoffen, dass diese neuen Integrationen sehr nützlich sein werden, um die Sicherheit Ihres APISIX-API-Gateways und der damit bereitgestellten Web-APIs und Webanwendungen mit der auf maschinellem Lernen basierenden WAF von open-appsec zu verbessern.
Wir heißen Sie willkommen, uns zu kontaktieren, wenn Sie Feedback, Fragen haben oder auf eine technische Herausforderung stoßen, bei der wir Ihnen helfen können. Sie können das open-appsec-Team über den Chat auf https://www.openappsec.io oder per E-Mail an info@openappsec.io erreichen.
Zusätzliche Ressourcen
open-appsec WAF
Website: https://www.openappsec.io
GitHub: https://github.com/openappsec
Dokumentation: 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
Dokumentation: https://apisix.apache.org/docs/