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

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.

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.

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


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
