Apache APISIX يتكامل مع open-appsec WAF
October 21, 2024
مقدمة
يسر open-appsec WAF أن تعلن عن تكامل جديد مع بوابة API مفتوحة المصدر Apache APISIX.
يسمح هذا التعاون الجديد بين فريقَي open-appsec وAPI7 للمستخدمين بحماية واجهات برمجة التطبيقات (APIs) الخاصة بهم والخدمات الأخرى المعروضة عبر Apache APISIX ضد أنواع الهجمات المعروفة والمجهولة بشكل فعال، وذلك باستخدام تقنية open-appsec المتقدمة القائمة على التعلم الآلي. كما يضيف هذا التكامل عدة قدرات أمان محسّنة.
حول Apache APISIX
Apache APISIX هو حل حديث ومرن وعالي الأداء لبوابة API مفتوحة المصدر، مصمم للتعامل مع حالات استخدام متنوعة في بنى المايكروسيرفيس والبنى السحابية. هدفه الرئيسي هو تسهيل إدارة APIs من خلال العمل كبوابة لإدارة وتأمين وتحسين حركة المرور بين العملاء والخدمات الخلفية.
تشمل حالات الاستخدام الأخرى لـ APISIX كبوابة API موازنة الحمل، والحد من المعدل، والمصادقة، والتفويض. يوفر ميزات شاملة مثل التحكم في حركة المرور، والتحكم الديناميكي في الخدمات الخلفية، وإمكانية توسيع الوظائف عبر الإضافات، مما يسمح للمطورين بتخصيص وتوسيع الوظائف وفقًا لاحتياجاتهم الخاصة.
-
الموقع: apisix.apache.org
-
Github: github.com/apache/apisix
-
الوثائق: apisix.apache.org/docs
حول open-appsec WAF
open-appsec WAF يوفر حماية تلقائية واستباقية من التهديدات ويتكامل مع أنواع مختلفة من الخوادم العكسية مثل NGINX وكذلك بوابات API مثل APISIX. يعتمد على التعلم الآلي، مما يعني أنه لا يحتاج إلى توقيعات (أو تحديثات) على الإطلاق. هذا يسمح له بتوفير حماية تلقائية ومتقدمة حتى ضد الهجمات الصفرية الحقيقية، مع تقليل الجهد الإداري وكمية الإنذارات الكاذبة بشكل كبير.
بالإضافة إلى ذلك، يوفر open-appsec العديد من طبقات الأمان الإضافية مثل AntiBot، والحد من المعدل، وإنفاذ المخططات، ودعم توقيعات snort، والقواعد/الاستثناءات المخصصة، والمزيد. يمكن إدارة open-appsec بشكل مركزي باستخدام واجهة ويب مقدمة كخدمة SaaS، وأيضًا محليًا باستخدام ملف تكوين تصريحي.
-
الموقع: www.openappsec.io
-
Github: github.com/openappsec
-
الوثائق: docs.openappsec.io
-
الملاعب: www.openappsec.io/playground
تكامل Apache APISIX مع open-appsec
مع هذا التكامل الجديد، سيتمكن مستخدمو APISIX الآن من الوصول إلى open-appsec WAF كحل متكامل ومتقدم قائم على التعلم الآلي لحماية واجهات برمجة التطبيقات والتطبيقات الويب الخاصة بهم.
يمكنهم الآن استخدام الإصدار المجاني والمفتوح المصدر "Community Edition" من open-appsec للحصول على حماية فعالة قائمة على الذكاء الاصطناعي ضد الهجمات المعروفة والمجهولة لكل ما يتم عرضه عبر بوابة APISIX، مع تقليل كمية الإنذارات الكاذبة بشكل كبير وتخفيف العبء عن المسؤول من المهام المملة مثل إنشاء الاستثناءات وتحديث السياسات القائمة على التوقيعات التقليدية والمزيد.
سيكون هذا التكامل متاحًا لجميع المنصات الشائعة: Linux، Docker، وKubernetes.
Linux
للنشر المدمج على Linux لـ APISIX، سيقوم مثبت open-appsec بإضافة وحدة "open-appsec attachment" إلى تثبيت APISIX الحالي، كما سيتم تثبيت "open-appsec agent" بجانبه، والذي سيتلقى حركة المرور من الوحدة المرفقة، ويفحصها، ويعيد القرار النهائي لحظر أو السماح بحركة المرور إلى APISIX أو الوحدة المرفقة المتكاملة معها.
إليك مخطط بسيط لنشر Linux.
Docker
للنشر القائم على Docker لـ APISIX مع open-appsec WAF، هناك صورة حاوية خاصة لـ APISIX متاحة، والتي تمت إضافة وحدة open-appsec attachment إليها بالفعل، بالإضافة إلى ملف docker-compose محسّن، والذي يقوم بنشر كل من حاوية بوابة APISIX وكذلك وكيل open-appsec الذي يقوم بفحص الأمان ويعيد القرارات النهائية إلى بوابة APISIX للسماح أو حظر حركة المرور.
إليك مخطط بسيط للنشر على Docker.
Kubernetes
للنشر القائم على Kubernetes لـ APISIX المتكامل مع open-appsec، هناك مخطط Helm متاح، والذي يعتمد على مخطط Helm الرسمي لـ APISIX وتم تحسينه ليشمل أيضًا وحدة open-appsec attachment في حاوية بوابة APISIX، كما يقوم بنشر وكيل open-appsec. بالإضافة إلى ذلك، ستكون لديك خيار تكوين open-appsec بطريقة تصريحية "DevOps-style" باستخدام موارد مخصصة في K8s كبديل لاستخدام واجهة الويب المركزية لإدارة open-appsec.
إليك مخطط بسيط للنشر على Kubernetes.
إضافة open-appsec WAF إلى APISIX على Linux
لتثبيت open-appsec على نظام Linux مع تثبيت APISIX، يرجى اتباع الخطوات التالية:
1. المتطلبات الأساسية
- يجب أن تكون المنصة Linux Ubuntu 22.04.
- تأكد من تثبيت APISIX.
يمكنك العثور على قائمة إصدارات APISIX المدعومة هنا: https://downloads.openappsec.io/packages/supported-apisix.txt.
إذا لم يكن لديك APISIX مثبتًا بعد، يمكنك استخدام الأوامر التالية لإجراء تثبيت APISIX في "الوضع التقليدي". من خلال تشغيل هذه الأوامر، ستقوم أولاً بتثبيت قاعدة بيانات etcd لـ APISIX، ثم إضافة المستودعات المطلوبة قبل تثبيت وتشغيل APISIX.
تثبيت قاعدة بيانات 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
إضافة وتحديث مستودعات الحزم
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
تثبيت وتهيئة وتشغيل APISIX
apt install apisix=3.9.1-0
apisix init
apisix start
2. تنزيل مثبت open-appsec
wget https://downloads.openappsec.io/open-appsec-install && chmod +x open-appsec-install
3. تثبيت open-appsec
قم بتثبيت open-appsec للتكامل مع تثبيت APISIX الحالي.
لاحظ أن العلم
--prevent
سيؤدي إلى تثبيت open-appsec مع سياسة افتراضية مضبوطة على وضع "منع".
./open-appsec-install --auto --prevent
4. الحصول على مفتاح إدارة APISIX وتخزينه
احصل على مفتاح إدارة APISIX من ملف التكوين config.yaml
لـ APISIX وقم بتخزينه في متغير البيئة APISIX_KEY
.
export APISIX_KEY=$(awk '/key:/{ if ($2 ~ /^edd1/) print $2 }' /usr/local/apisix/conf/config.yaml )
5. تكوين مسار لعرض الخدمات
قم بتكوين مسار مثال في بوابة APISIX لعرض خدمة ويب خارجية أو واجهة برمجة تطبيقات. في هذا المثال، نستخدم httpbin.org
كخدمة خلفية.
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. التحقق
لنرى إذا كان هذا المسار يعمل من خلال الوصول إليه.
curl -s -v -G --data-urlencode email=user@domain.abc http://localhost:9080/anything
7. محاكاة هجوم حقن SQL
الآن دعونا نحاول محاكاة هجوم حقن SQL (انظر 'OR '1'='1'
في طلب HTTP أدناه) ضد خدمة httpbin.org
المعروضة عبر بوابة APISIX المحمية الآن بواسطة open-appsec WAF.
curl -s -v -G --data-urlencode email=user@domain.abc' OR '1'='1 http://localhost:9080/anything
تم حظر هذا الهجوم المحاكى بنجاح بواسطة محرك WAF القائم على التعلم الآلي في open-appsec.
8. مراجعة ملفات السجلات
تحقق من ملفات السجلات المقابلة التي تظهر "منع" لطلب HTTP مع الهجوم المحاكى الذي أرسلناه للتو.
tail -f /var/log/nano_agent/cp-nano-http-transaction-handler.log*| grep -i user@domain.abc
بدلاً من ذلك، يمكنك استخدام أداة open-appsec-ctl
:
open-appsec-ctl --view-logs | grep -i user@domain.abc
9. الاتصال بـ open-appsec للإدارة المركزية (اختياري)
يمكنك اختياريًا توصيل نشرك الآن بـ https://my.openappsec.io لإدارة open-appsec بشكل مركزي باستخدام واجهة ويب سهلة الاستخدام، ومراقبة أحداث الأمان، والمزيد. راجع قسم كيفية إدارة نشر open-appsec WAF بشكل مركزي؟ أدناه للحصول على مزيد من المعلومات.
تهانينا! لقد نجحت في إضافة open-appsec WAF إلى تثبيت APISIX الحالي الخاص بك وتحقق من أن خدمات الويب المعروضة عبر بوابة APISIX محمية الآن ضد هجمات الويب.
نشر APISIX مع open-appsec WAF على المنصات المعتمدة على الحاويات (Docker)
لتثبيت APISIX المتكامل مع open-appsec على Docker، يمكنك اتباع الخطوات الموضحة أدناه.
على عكس المثال السابق، هنا نقوم بنشر APISIX في "الوضع المستقل"، مما يعني أنه يتم تكوينه تصريحيًا باستخدام نقطة تركيب حجم docker مع ملف yaml يحوي التكوينات، وبالتالي لن يتطلب نشر قاعدة بيانات etcd.
لاحظ أن APISIX يدعم كلاً من الوضع التقليدي والمستقل في جميع أنواع النشر (Linux، Docker، …)
1. المتطلبات الأساسية
تأكد من وجود منصة Linux مع تثبيت أدوات Docker و docker-compose.
2. إنشاء مجلد لـ open-appsec
ضمن الدليل الذي تريد استخدامه للنشر، قم بإنشاء مجلد appsec-localconfig
والذي سيحمل ملف التكوين التصريحي لـ open-appsec:
mkdir ./appsec-localconfig
3. تنزيل ملف open-appsec في المجلد
قم بتنزيل ملف التكوين التصريحي الأولي لـ open-appsec في هذا المجلد.
wget https://raw.githubusercontent.com/openappsec/openappsec/main/config/linux/latest/prevent/local_policy.yaml -O appsec-localconfig/local_policy.yaml
لاحظ أن ملف التكوين التصريحي هذا مضبوط بالفعل على منع الهجمات.
4. إنشاء مجلد لـ APISIX
قم بإنشاء مجلد آخر apisix-localconfig
والذي سيحمل ملف التكوين التصريحي لـ APISIX: mkdir ./apisix-localconfig
.
5. تنزيل ملف APISIX في المجلد
لنقم بتنزيل ملف تكوين تصريحي بسيط أيضًا لـ APISIX حتى نتمكن من التحقق من حماية open-appsec بعد النشر.
wget https://raw.githubusercontent.com/openappsec/openappsec/main/deployment/apisix/apisix-example-config/apisix-standalone.yaml -O ./apisix-localconfig/apisix-standalone.yaml
6. إنشاء ملف docker-compose.yaml
قم بإنشاء ملف docker-compose.yaml
بالمحتوى أدناه، والذي يمكن تنزيله كما يلي:
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:
# اضف بريدك الإلكتروني أدناه
- 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. تحديث عنوان بريدك الإلكتروني (اختياري)
قم بتحرير ملف docker-compose.yaml
واستبدل "user@email.com" بعنوان بريدك الإلكتروني الخاص، حتى نتمكن من تقديم المساعدة في حالة وجود أي مشاكل مع النشر المحدد في المستقبل وتقديم معلومات بشكل استباقي حول open-appsec.
هذه معلمة اختيارية ويمكن إزالتها. إذا قمنا بإرسال رسائل بريد إلكتروني تلقائية، فسيتم أيضًا تضمين خيار إلغاء الاشتراك لتلقي اتصالات مماثلة في المستقبل.
8. تشغيل جميع الحاويات
قم بتشغيل docker-compose up لبدء نشر جميع الحاويات ذات الصلة:
docker-compose up -d
9. التحقق من حالة الحاويات
تحقق مما إذا كانت حاويات apisix-attachment
و appsec-agent
تعمل.
docker ps
10. التحقق من التكوين المستقل
لنرى إذا كان التكوين المستقل يعمل من خلال الوصول إليه.
curl -s -v -G --data-urlencode email=user@domain.abc http://localhost:9080/anything
11. محاكاة هجوم حقن SQL
الآن دعونا نحاول محاكاة هجوم حقن SQL ضد خدمة httpin.org المعروضة عبر حاوية بوابة APISIX المحمية الآن بواسطة open-appsec.
curl -s -v -G --data-urlencode email=user@domain.abc' OR '1'='1 http://localhost:9080/anything
12. الاتصال بـ open-appsec للإدارة المركزية (اختياري)
يمكنك اختياريًا توصيل نشرك الآن بـ https://my.openappsec.io
لإدارة open-appsec بشكل مركزي باستخدام واجهة ويب سهلة الاستخدام، ومراقبة أحداث الأمان، والمزيد. راجع قسم كيفية إدارة نشر open-appsec WAF بشكل مركزي؟ أدناه للحصول على مزيد من المعلومات.
نشر APISIX مع open-appsec WAF على Kubernetes باستخدام Helm
1. المتطلبات الأساسية
تأكد من توفر منصة Kubernetes وأداة Helm.
2. تنزيل open-appsec
قم بتنزيل open-appsec لمخطط Helm لـ APISIX هنا.
wget https://downloads.openappsec.io/packages/helm-charts/apisix/open-appsec-k8s-apisix-latest.tgz
3. تثبيت مخطط Helm
هذا الأمر helm install
المثال يقوم بتثبيت open-appsec لمخطط Helm لـ APISIX والذي يعتمد على نسخة موسعة من مخطط Helm الرسمي لـ APISIX.
سيقوم بنشر بوابة APISIX كـ APISIX Ingress Controller، بالإضافة إلى open-appsec WAF المتكامل معها. كما يوفر خيار تكوين إضافي خاص بـ open-appsec WAF (انظر values.yaml
داخل مخطط Helm ووثائق open-appsec docs).
بعد النشر، يمكنك تعيين موارد K8s ingress الخاصة بك إلى بوابة APISIX عن طريق تكوينها لاستخدام فئة 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=”<your-email-address>” \
--set appsec.agentToken= \
--create-namespace \
-n appsec-apisix
استبدل
في أمر تثبيت Helm أعلاه بعنوان بريدك الإلكتروني الخاص، حتى نتمكن من إرسال أخبار وتحديثات متعلقة بـ open-appsec ودعمك بشكل أفضل مع نشرك إذا لزم الأمر! يمكنك إلغاء الاشتراك في أي وقت أو ببساطة إزالة هذا السطر إذا كنت تفضل عدم تقديم بريدك الإلكتروني.
4. التحقق
تحقق من أن الحاويات تم نشرها بشكل صحيح وهي في حالة جاهزة:
kubectl get pods -n appsec-apisix
5. إنشاء مورد سياسة open-appsec
قم بتشغيل الأمر التالي لإنشاء "open-appsec-best-practice-policy" في K8s.
لاحظ أن هذه السياسة المثال مضبوطة مسبقًا على منع الهجمات.
kubectl apply -f https://raw.githubusercontent.com/openappsec/openappsec/main/config/k8s/v1beta1/open-appsec-k8s-prevent-config-v1beta1.yaml
يمكنك أيضًا إنشاء سياسة مخصصة خاصة بك، هنا تجد كل التفاصيل.
6. جلب اسم المورد المستهدف
اكتشف اسم مورد ingress ذي الصلة الذي تريد حمايته:
kubectl get ing -A
7. تحرير مورد ingress
kubectl edit ing/<ingress name> -n <ingress namespace>
8. تغيير ingressClassname
قم بتغيير ingressClassname لاستخدام open-appsec:
spec: ingressClassName: appsec-apisix
9. إضافة تعليق إلى مورد ingress
أضف هذا التعليق إلى مورد ingress لتفعيل open-appsec لهذا ingress عن طريق تحديد مورد سياسة open-appsec المطلوب.
openappsec.io/policy: open-appsec-best-practice-policy
10. التحقق من التكوين المستقل
لنرى إذا كان التكوين المستقل يعمل من خلال الوصول إليه:
curl -s -v -G --data-urlencode email=user@domain.abc http://[YOUR-INGRESS-HOSTNAME]
11. محاكاة هجوم حقن SQL
الآن دعونا نحاول محاكاة هجوم حقن SQL ضد خدمة httpin.org
المعروضة عبر حاوية بوابة APISIX المحمية الآن بواسطة open-appsec.
curl -s -v -G --data-urlencode email=user@domain.abc' OR '1'='1 http://[YOUR-INGRESS-HOSTNAME]
استبدل [YOUR-INGRESS-HOSTNAME] في الأمر أعلاه باسم المضيف الذي قمت بتعيينه في مورد ingress الذي قمت بحمايته باستخدام open-appsec WAF في الخطوات السابقة، وغير "http" إلى "https" إذا لزم الأمر.
تهانينا! لقد نجحت في نشر APISIX المتكامل مع open-appsec WAF وتحقق من أن خدمات الويب المعروضة عبر بوابة APISIX محمية الآن ضد الهجمات.
كيفية إدارة نشر open-appsec WAF بشكل مركزي؟
إذا كنت ترغب، يمكنك أيضًا إدارة نشر open-appsec WAF (المتكامل مع APISIX) بشكل مركزي باستخدام واجهة الويب الخاصة بـ open-appsec (خدمة SaaS) المتاحة على https://my.openappsec.io، عن طريق توصيل وكيل open-appsec بملف تعريف نشر في واجهة الويب المركزية.
يمكنك أيضًا الاستمرار في إدارة نشرك محليًا ولكن مع الاتصال بملف تعريف واجهة الويب المركزية في "الوضع التصريحي" بحيث يمكنك رؤية التكوين المحلي (للقراءة فقط) في واجهة الويب.
إلى جانب تكوين open-appsec، تسمح لك واجهة الويب برؤية المزيد من المعلومات مثل حالة وكلاء open-appsec المنشورين، وسجلات الأمان، ولوحات التحكم، والمزيد.
للحصول على تعليمات حول كيفية توصيل نشرك بواجهة الويب المركزية، راجع وثائق open-appsec المتاحة على https://docs.openappsec.io.
أدناه ستجد بعض لقطات الشاشة لواجهة الويب.
ملخص
في هذه المدونة، شرحنا كيف يمكن لـ open-appsec التكامل مع Apache APISIX على جميع ما يلي: النشرات القائمة على Linux العادية، والنشرات المعتمدة على الحاويات (Docker)، وكذلك بيئات Kubernetes.
بعد اتباع خطوات النشر لـ APISIX مع open-appsec WAF، قمنا بمحاكاة هجمات حقن SQL، والتي تم منعها بشكل فعال بواسطة تقنية WAF القائمة على التعلم الآلي في open-appsec.
بالإضافة إلى ذلك، تم شرح فوائد الاتصال بواجهة الويب المركزية لـ open-appsec للإدارة، والمراقبة، وتحليل السجلات، وإعداد التقارير.
نأمل أن تكون هذه التكاملات الجديدة مفيدة جدًا لتعزيز أمان بوابة APISIX API والخدمات الويب المعروضة عبر واجهات برمجة التطبيقات والتطبيقات الويب باستخدام WAF القائم على التعلم الآلي من open-appsec.
نرحب بك للتواصل معنا إذا كان لديك أي ملاحظات، أو أسئلة، أو واجهت بعض التحديات الفنية التي تريد منا المساعدة فيها. يمكنك الوصول إلى فريق open-appsec عبر الدردشة على https://www.openappsec.io أو عبر البريد الإلكتروني إلى: info@openappsec.io.
موارد إضافية
open-appsec WAF
الموقع: https://www.openappsec.io
GitHub: https://github.com/openappsec
الوثائق: https://docs.openappsec.io
الملاعب: https://www.openappsec.io/playground
المدونات: https://www.openappsec.io/blogs
Apache APISIX
الموقع: https://apisix.apache.org
GitHub: https://github.com/apache/apisix
الوثائق: https://apisix.apache.org/docs/
المدونات: https://apisix.apache.org/blog/