Apache APISIX Terintegrasi dengan open-appsec WAF

Christopher Lutat

Christopher Lutat

October 21, 2024

Ecosystem

Pendahuluan

open-appsec WAF dengan bangga mengumumkan integrasi baru dengan gateway API open-source Apache APISIX.

Kolaborasi baru antara tim open-appsec dan API7 ini memungkinkan pengguna untuk melindungi API web dan layanan web lainnya yang diekspos oleh Apache APISIX dari serangan yang tidak dikenal maupun yang sudah dikenal, berdasarkan teknologi berbasis machine learning canggih dari open-appsec. Integrasi ini juga menambahkan beberapa kemampuan keamanan yang lebih ditingkatkan.

Tentang Apache APISIX

Apache APISIX adalah solusi gateway API open-source modern, fleksibel, dan berkinerja tinggi yang dirancang untuk menangani berbagai kasus penggunaan dalam arsitektur microservices dan cloud-native. Tujuan utamanya adalah memfasilitasi manajemen API dengan berfungsi sebagai gateway untuk mengelola, mengamankan, dan mengoptimalkan lalu lintas API antara klien dan layanan backend.

Kasus penggunaan lebih lanjut untuk APISIX sebagai gateway API termasuk load balancing, pembatasan kecepatan, autentikasi, dan otorisasi. APISIX menyediakan fitur komprehensif seperti kontrol lalu lintas, upstream dinamis, dan ekstensibilitas plugin, memungkinkan pengembang untuk menyesuaikan dan memperluas fungsionalitas sesuai kebutuhan spesifik mereka.

Tentang open-appsec WAF

open-appsec WAF menyediakan pencegahan ancaman otomatis dan preemptif serta terintegrasi dengan berbagai jenis reverse proxy seperti NGINX dan gateway API seperti APISIX. Ini berbasis machine learning, yang berarti tidak memerlukan tanda tangan (atau pembaruan) sama sekali. Hal ini memungkinkannya untuk memberikan pencegahan ancaman otomatis dan mutakhir bahkan untuk serangan zero-day sejati, sekaligus secara signifikan mengurangi upaya administratif dan jumlah false positive.

Selain itu, open-appsec menyediakan banyak lapisan keamanan tambahan seperti AntiBot, pembatasan kecepatan, penegakan skema, dukungan tanda tangan snort, aturan/pengecualian kustom, dan banyak lagi. open-appsec dapat dikelola secara terpusat menggunakan Web UI yang disediakan sebagai layanan SaaS dan juga secara lokal menggunakan file konfigurasi deklaratif.

Mengintegrasikan Apache APISIX dengan open-appsec

Dengan integrasi baru ini, pengguna APISIX sekarang memiliki akses ke open-appsec WAF sebagai solusi WAF berbasis machine learning yang terintegrasi dan mutakhir untuk melindungi API web dan aplikasi web mereka.

Mereka sekarang dapat menggunakan, misalnya, "Community Edition" open-appsec yang gratis dan open-source untuk mendapatkan perlindungan berbasis AI yang efektif terhadap serangan yang dikenal maupun yang tidak dikenal untuk semua yang diekspos oleh gateway API APISIX mereka, sekaligus mengurangi jumlah false positive secara signifikan, mengurangi beban administrator dari tugas-tugas yang membosankan seperti membuat pengecualian, memperbarui kebijakan berbasis tanda tangan tradisional, dan banyak lagi.

Integrasi ini akan tersedia untuk semua platform umum: Linux, Docker, dan Kubernetes.

Linux

Untuk deployment APISIX "embedded" di Linux, installer open-appsec akan menambahkan modul "open-appsec attachment" ke instalasi APISIX yang ada dan juga menginstal "open-appsec agent" bersamanya, yang akan menerima lalu lintas dari attachment, memeriksanya, dan mengembalikan keputusan yang diambil untuk memblokir atau mengizinkan lalu lintas kembali ke APISIX atau attachment open-appsec yang terintegrasi dengannya.

Berikut adalah skema arsitektur sederhana untuk deployment di Linux.

Arsitektur untuk Deployment Linux

Docker

Untuk deployment berbasis Docker dari APISIX dengan open-appsec WAF, tersedia image container APISIX khusus, di mana attachment open-appsec sudah ditambahkan dan juga file docker-compose yang ditingkatkan, yang akan mendeploy container gateway APISIX serta open-appsec Agent yang melakukan pemeriksaan keamanan dan mengembalikan keputusan yang diambil ke gateway APISIX untuk mengizinkan atau memblokir lalu lintas.

Berikut adalah skema arsitektur sederhana untuk deployment di Docker.

Arsitektur untuk Deployment Berbasis Docker

Kubernetes

Untuk deployment berbasis Kubernetes dari APISIX yang terintegrasi dengan open-appsec, tersedia Helm chart yang didasarkan pada Helm chart resmi APISIX dan ditingkatkan untuk menyertakan attachment open-appsec dalam container gateway APISIX dan juga mendeploy open-appsec agent. Selain itu, Anda akan memiliki opsi untuk mengkonfigurasi open-appsec secara deklaratif "DevOps-style" menggunakan sumber daya kustom di K8s sebagai alternatif dari menggunakan Web UI manajemen terpusat open-appsec.

Berikut adalah skema arsitektur sederhana untuk deployment di Kubernetes.

Arsitektur untuk Deployment Kubernetes

Menambahkan open-appsec WAF ke APISIX di Linux

Untuk menginstal open-appsec pada sistem Linux dengan APISIX yang sudah terinstal, silakan ikuti langkah-langkah berikut:

1. Prasyarat

  • Platform Linux harus Ubuntu 22.04.
  • Pastikan APISIX sudah terinstal.

Anda dapat menemukan daftar versi APISIX yang didukung di sini: https://downloads.openappsec.io/packages/supported-apisix.txt.

Jika Anda belum menginstal APISIX, Anda dapat menggunakan perintah berikut untuk melakukan instalasi APISIX dalam "mode tradisional". Dengan menjalankan perintah ini, Anda akan menginstal database etcd untuk APISIX terlebih dahulu, kemudian menambahkan repositori yang diperlukan sebelum menginstal dan memulai APISIX.

Instal Database 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

Tambahkan dan Perbarui Repositori Paket

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

Instal, Inisialisasi, dan Mulai APISIX

apt install apisix=3.9.1-0 apisix init apisix start

2. Unduh Installer open-appsec

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

3. Instal open-appsec

Instal open-appsec untuk mengintegrasikannya dengan instalasi APISIX yang ada.

Perhatikan bahwa flag --prevent akan menginstal open-appsec dengan kebijakan default yang sudah diatur ke mode prevent.

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

4. Dapatkan dan Simpan Kunci Admin APISIX

Dapatkan kunci admin APISIX dari file konfigurasi config.yaml APISIX dan simpan dalam variabel env APISIX_KEY.

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

5. Konfigurasi Rute untuk Mengekspos Layanan

Konfigurasi contoh rute di gateway APISIX untuk mengekspos layanan web atau API web eksternal. Dalam contoh ini, kami menggunakan httpbin.org sebagai backend contoh.

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

Mari kita lihat apakah rute ini berfungsi dengan mengaksesnya.

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

7. Simulasikan Serangan SQL Injection

Sekarang mari kita coba mensimulasikan serangan SQL injection (lihat 'OR '1'='1' dalam permintaan HTTP di bawah) terhadap layanan httpbin.org yang diekspos oleh gateway APISIX yang sekarang dilindungi oleh open-appsec WAF.

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

Serangan simulasi ini sekarang berhasil diblokir oleh mesin WAF berbasis machine learning kontekstual open-appsec.

8. Tinjau File Log

Periksa file log yang sesuai yang menunjukkan "prevent" untuk permintaan HTTP dengan serangan simulasi yang baru saja kami kirim.

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

Atau Anda dapat menggunakan alat open-appsec-ctl:

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

9. Hubungkan ke open-appsec untuk Manajemen Terpusat (Opsional)

Opsional, Anda dapat menghubungkan deployment Anda sekarang ke https://my.openappsec.io untuk mengelola open-appsec secara terpusat dengan Web UI yang mudah digunakan, memantau peristiwa keamanan, dan banyak lagi, lihat bagian Bagaimana Mengelola Deployment open-appsec WAF Anda Secara Terpusat? di bawah untuk informasi lebih lanjut.

Selamat! Anda berhasil menambahkan open-appsec WAF ke instalasi APISIX Anda dan memverifikasi bahwa layanan web yang diekspos oleh gateway APISIX sekarang dilindungi dari serangan web.

Mendeploy APISIX dengan open-appsec WAF di Platform Tercontainerisasi (Docker)

Untuk menginstal APISIX yang terintegrasi dengan open-appsec di Docker, Anda dapat mengikuti langkah-langkah yang ditunjukkan di bawah ini.

Berbeda dengan contoh di atas, di sini kami mendeploy APISIX dalam "mode standalone", yang berarti dikonfigurasi secara deklaratif menggunakan mount volume docker dengan file yaml yang menyimpan konfigurasi dan oleh karena itu tidak memerlukan deployment database etcd.

Perhatikan bahwa APISIX mendukung kedua mode, tradisional maupun standalone, dalam semua jenis deployment (Linux, Docker, …)

1. Prasyarat

Pastikan platform Linux memiliki Docker dan alat docker-compose yang terinstal.

2. Buat Folder untuk open-appsec

Dalam direktori yang ingin Anda gunakan untuk deployment, buat folder appsec-localconfig yang akan menyimpan file konfigurasi deklaratif appsec:

mkdir ./appsec-localconfig

3. Unduh File open-appsec ke dalam Folder

Unduh file konfigurasi deklaratif awal untuk open-appsec ke dalam folder tersebut.

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

Perhatikan bahwa file konfigurasi deklaratif contoh ini sudah diatur untuk mencegah serangan.

4. Buat Folder untuk APISIX

Buat folder lain apisix-localconfig yang akan menyimpan file konfigurasi deklaratif untuk APISIX: mkdir ./apisix-localconfig.

5. Unduh File APISIX ke dalam Folder

Mari unduh file konfigurasi deklaratif sederhana juga untuk APISIX sehingga kita dapat memverifikasi perlindungan open-appsec setelah deployment.

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

6. Buat File docker-compose.yaml

Buat file docker-compose.yaml dengan konten di bawah ini, yang dapat diunduh sebagai berikut:

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: # sesuaikan dengan email Anda di bawah ini - 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. Perbarui Alamat Email Anda (Opsional)

Edit file docker-compose.yaml dan ganti "user@email.com" dengan alamat email Anda sendiri, sehingga kami dapat memberikan bantuan jika ada masalah dengan deployment tertentu di masa depan dan memberikan informasi proaktif terkait open-appsec.

Ini adalah parameter opsional dan dapat dihapus. Jika kami mengirim email otomatis, akan ada opsi opt-out yang disertakan untuk menerima komunikasi serupa di masa depan.

8. Mulai Semua Container

Jalankan docker-compose up untuk memulai deployment semua container yang relevan:

docker-compose up -d

9. Periksa Status Container

Periksa apakah container apisix-attachment dan appsec-agent sudah berjalan.

docker ps

10. Validasi Konfigurasi Standalone

Mari kita lihat apakah konfigurasi standalone berfungsi dengan mengaksesnya.

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

11. Simulasikan Serangan SQL Injection

Sekarang mari kita coba mensimulasikan serangan SQL injection terhadap layanan httpbin.org yang diekspos oleh container gateway APISIX yang sekarang dilindungi oleh open-appsec.

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

12. Hubungkan ke open-appsec untuk Manajemen Terpusat (Opsional)

Opsional, Anda dapat menghubungkan deployment Anda sekarang ke https://my.openappsec.io untuk mengelola open-appsec secara terpusat dengan Web UI yang mudah digunakan, memantau peristiwa keamanan, dan banyak lagi, lihat bagian Bagaimana Mengelola Deployment open-appsec WAF Anda Secara Terpusat? di bawah untuk informasi lebih lanjut.

Mendeploy APISIX dengan open-appsec WAF di Kubernetes Menggunakan Helm

1. Prasyarat

Pastikan platform Kubernetes dan alat Helm tersedia.

2. Unduh open-appsec

Unduh open-appsec untuk Helm chart APISIX di sini.

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

3. Instal Helm Chart

Perintah helm install contoh ini menginstal open-appsec untuk Helm chart APISIX yang didasarkan pada versi yang diperluas dari Helm chart resmi APISIX.

Ini akan mendeploy gateway APISIX sebagai APISIX Ingress Controller, serta open-appsec WAF yang terintegrasi dengannya. Ini juga menawarkan opsi konfigurasi tambahan khusus untuk open-appsec WAF (lihat values.yaml di dalam Helm chart dan dokumentasi open-appsec).

Setelah deployment, Anda dapat menetapkan sumber daya ingress K8s Anda ke gateway APISIX dengan mengkonfigurasinya untuk menggunakan kelas ingress berikut: 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

Ganti dalam perintah instalasi Helm di atas dengan alamat email Anda sendiri, sehingga kami dapat mengirimkan berita dan pembaruan terkait open-appsec dan mendukung Anda dengan deployment Anda jika diperlukan! Anda dapat berhenti berlangganan kapan saja atau, sebagai alternatif, cukup hapus baris tersebut jika Anda lebih memilih untuk tidak memberikan email.

4. Validasi

Validasi bahwa pod telah dideploy dengan benar dan dalam keadaan siap:

kubectl get pods -n appsec-apisix

5. Buat Sumber Daya Kebijakan open-appsec

Jalankan perintah berikut untuk membuat "open-appsec-best-practice-policy" di K8s.

Perhatikan bahwa kebijakan contoh ini sudah dikonfigurasi sebelumnya untuk mencegah serangan.

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

Anda juga dapat membuat kebijakan kustom Anda sendiri, di sini Anda dapat menemukan semua detailnya.

6. Ambil Nama Sumber Daya Target

Cari tahu nama sumber daya ingress yang relevan yang ingin Anda lindungi:

kubectl get ing -A

7. Edit Sumber Daya Ingress

kubectl edit ing/<nama ingress> -n <namespace ingress>

8. Ubah ingressClassname

Ubah ingressClassname untuk menggunakan open-appsec:

spec: ingressClassName: appsec-apisix

9. Tambahkan Anotasi ke Sumber Daya Ingress

Tambahkan anotasi ini ke sumber daya ingress untuk mengaktifkan open-appsec untuk ingress ini dengan menentukan sumber daya kebijakan kustom open-appsec yang diinginkan.

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

10. Validasi Konfigurasi Standalone

Mari kita lihat apakah konfigurasi standalone berfungsi dengan mengaksesnya:

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

11. Simulasikan Serangan SQL Injection

Sekarang mari kita coba mensimulasikan serangan SQL injection terhadap layanan httpbin.org yang diekspos oleh container gateway APISIX yang sekarang dilindungi oleh open-appsec.

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

Ganti [YOUR-INGRESS-HOSTNAME] dalam perintah di atas dengan hostname yang Anda atur dalam sumber daya ingress yang Anda lindungi dengan open-appsec WAF pada langkah sebelumnya, juga ubah "http" menjadi "https" jika diperlukan.

Selamat! Anda berhasil mendeploy APISIX yang terintegrasi dengan open-appsec WAF dan memverifikasi bahwa layanan web yang diekspos oleh Gateway APISIX sekarang dilindungi dari serangan.

Bagaimana Mengelola Deployment open-appsec WAF Anda Secara Terpusat?

Jika Anda mau, Anda juga dapat mengelola deployment open-appsec WAF Anda (yang terintegrasi dengan APISIX) secara terpusat menggunakan Web UI open-appsec (Layanan SaaS) yang tersedia di https://my.openappsec.io, dengan menghubungkan open-appsec agent ke profil deployment di Web UI terpusat.

Anda juga dapat terus mengelola deployment Anda secara lokal tetapi tetap terhubung ke profil WebUI terpusat dalam "Mode Deklaratif" sehingga Anda dapat melihat konfigurasi lokal (hanya baca) di Web UI.

Selain konfigurasi open-appsec, Web UI memungkinkan Anda untuk melihat lebih banyak informasi seperti status open-appsec agent yang dideploy, log keamanan, dashboard, dan banyak lagi.

Untuk petunjuk tentang cara menghubungkan deployment Anda ke Web UI terpusat, lihat dokumentasi open-appsec yang tersedia di https://docs.openappsec.io.

Di bawah ini Anda dapat menemukan beberapa tangkapan layar dari Web UI.

Open-websec UI 1

Open-websec UI 2

Ringkasan

Dalam blog ini, kami menjelaskan bagaimana open-appsec dapat terintegrasi dengan Apache APISIX pada semua hal berikut: deployment berbasis Linux reguler, deployment tercontainerisasi (Docker), dan juga lingkungan Kubernetes.

Mengikuti langkah-langkah deployment untuk APISIX dengan open-appsec WAF, kami mensimulasikan serangan SQL injection, yang berhasil dicegah oleh teknologi WAF berbasis machine learning open-appsec.

Selain itu, dijelaskan apa manfaat menghubungkan ke WebUI terpusat open-appsec untuk mengelola, memantau, analisis log, dan pelaporan.

Kami berharap integrasi baru ini akan sangat berguna untuk meningkatkan keamanan gateway API APISIX Anda dan API web serta aplikasi web yang dieksposnya dengan WAF berbasis machine learning open-appsec.

Selamat datang untuk menghubungi kami jika Anda memiliki umpan balik, pertanyaan, atau mungkin menghadapi tantangan teknis yang ingin kami bantu. Anda dapat menghubungi tim open-appsec melalui chat di https://www.openappsec.io atau melalui email ke: info@openappsec.io.

Sumber Daya Tambahan

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/

Tags: