Apache APISIX open-appsec WAF के साथ एकीकृत हो गया है

Christopher Lutat

Christopher Lutat

October 21, 2024

Ecosystem

परिचय

open-appsec WAF, ओपन-सोर्स API गेटवे Apache APISIX के साथ एक नए एकीकरण की घोषणा करने के लिए उत्साहित है।

open-appsec और API7 टीमों के बीच यह नया सहयोग अब उपयोगकर्ताओं को उनके वेब API और Apache APISIX द्वारा एक्सपोज़ किए गए अन्य वेब सेवाओं को ज्ञात और अज्ञात हमलों के प्रकारों से प्रभावी रूप से सुरक्षित करने की अनुमति देता है, जो open-appsec की उन्नत मशीन-लर्निंग-आधारित तकनीक पर आधारित है और कई अन्य बढ़ी हुई सुरक्षा क्षमताओं को भी जोड़ता है।

Apache APISIX के बारे में

Apache APISIX एक आधुनिक, लचीला और उच्च-प्रदर्शन वाला ओपन-सोर्स API गेटवे समाधान है जो माइक्रोसर्विसेज और क्लाउड-नेटिव आर्किटेक्चर में विभिन्न उपयोग मामलों को संभालने के लिए डिज़ाइन किया गया है। इसका प्राथमिक उद्देश्य API प्रबंधन को सुविधाजनक बनाना है, जो क्लाइंट और बैकएंड सेवाओं के बीच API ट्रैफ़िक को प्रबंधित, सुरक्षित और अनुकूलित करने के लिए एक गेटवे के रूप में कार्य करता है।

APISIX के और भी उपयोग मामलों में लोड बैलेंसिंग, रेट लिमिटिंग, प्रमाणीकरण और अधिकृत करना शामिल है। यह ट्रैफ़िक नियंत्रण, डायनामिक अपस्ट्रीम और प्लगइन एक्स्टेंसिबिलिटी जैसी व्यापक सुविधाएँ प्रदान करता है, जो डेवलपर्स को उनकी विशिष्ट आवश्यकताओं के अनुसार कार्यक्षमता को अनुकूलित और विस्तारित करने में सक्षम बनाता है।

open-appsec WAF के बारे में

open-appsec WAF स्वचालित, पूर्वानुमानित खतरा निवारण प्रदान करता है और NGINX जैसे विभिन्न प्रकार के रिवर्स प्रॉक्सी के साथ-साथ APISIX जैसे API गेटवे के साथ एकीकृत होता है। यह मशीन-लर्निंग-आधारित है, जिसका अर्थ है कि इसे सिग्नेचर (या अपडेट) की आवश्यकता नहीं है। यह सच्चे ज़ीरो-डे हमलों के लिए भी स्वचालित, अत्याधुनिक खतरा निवारण प्रदान करने में सक्षम है, जबकि प्रशासनिक प्रयास और गलत सकारात्मकों की संख्या को काफी कम करता है।

इसके अलावा, open-appsec कई अतिरिक्त सुरक्षा परतें प्रदान करता है जैसे कि AntiBot, रेट लिमिटिंग, स्कीमा प्रवर्तन, snort सिग्नेचर समर्थन, कस्टम नियम/अपवाद, और बहुत कुछ। open-appsec को एक SaaS सेवा के रूप में प्रदान किए गए वेब UI का उपयोग करके केंद्रीय रूप से प्रबंधित किया जा सकता है और साथ ही एक घोषणात्मक कॉन्फ़िगरेशन फ़ाइल का उपयोग करके स्थानीय रूप से भी प्रबंधित किया जा सकता है।

Apache APISIX को open-appsec के साथ एकीकृत करना

इस नए एकीकरण के साथ, APISIX उपयोगकर्ताओं को अब open-appsec WAF तक पहुंच मिलेगी, जो उनके वेब API और वेब एप्लिकेशन की सुरक्षा के लिए एक एकीकृत, अत्याधुनिक मशीन-लर्निंग-आधारित WAF समाधान है।

वे अब open-appsec के मुफ्त और ओपन-सोर्स "कम्युनिटी एडिशन" का उपयोग कर सकते हैं, जो उनके APISIX API गेटवे द्वारा एक्सपोज़ किए गए सभी चीज़ों के लिए ज्ञात और अज्ञात हमलों के खिलाफ प्रभावी, AI-आधारित सुरक्षा प्रदान करता है, जबकि साथ ही गलत सकारात्मकों की संख्या को काफी कम करता है, जिससे प्रशासक को अपवाद बनाने, पारंपरिक सिग्नेचर-आधारित नीतियों को अपडेट करने और अन्य कार्यों से मुक्त करता है।

यह एकीकरण सभी सामान्य प्लेटफॉर्म के लिए उपलब्ध होगा: Linux, Docker, और Kubernetes।

Linux

Linux "एम्बेडेड" डिप्लॉयमेंट के लिए, एक open-appsec इंस्टॉलर मौजूदा APISIX इंस्टॉलेशन में एक "open-appsec अटैचमेंट" मॉड्यूल जोड़ेगा और साथ ही "open-appsec एजेंट" को भी इंस्टॉल करेगा, जो अटैचमेंट से ट्रैफ़िक प्राप्त करेगा, उसका निरीक्षण करेगा, और ट्रैफ़िक को ब्लॉक या अनुमति देने के लिए निष्कर्षित कार्रवाई को APISIX या उसके साथ एकीकृत open-appsec अटैचमेंट को वापस भेजेगा।

यहाँ Linux डिप्लॉयमेंट के लिए एक सरल आर्किटेक्चर स्कीमैटिक है।

Linux डिप्लॉयमेंट के लिए आर्किटेक्चर

Docker

Docker-आधारित डिप्लॉयमेंट के लिए, APISIX के साथ open-appsec WAF के लिए एक विशेष APISIX कंटेनर इमेज उपलब्ध है, जिसमें open-appsec अटैचमेंट पहले से ही जोड़ा गया है और एक बढ़ाया गया docker-compose फ़ाइल भी है, जो APISIX गेटवे कंटेनर और open-appsec एजेंट दोनों को डिप्लॉय करता है, जो सुरक्षा निरीक्षण करता है और APISIX गेटवे को ट्रैफ़िक को अनुमति या ब्लॉक करने के लिए निष्कर्षित निर्णय वापस भेजता है।

यहाँ Docker पर डिप्लॉयमेंट के लिए एक सरल आर्किटेक्चर स्कीमैटिक है।

Docker-आधारित डिप्लॉयमेंट के लिए आर्किटेक्चर

Kubernetes

Kubernetes-आधारित डिप्लॉयमेंट के लिए, APISIX को open-appsec के साथ एकीकृत करने के लिए एक Helm चार्ट उपलब्ध है, जो आधिकारिक APISIX Helm चार्ट पर आधारित है और इसे APISIX गेटवे कंटेनर में open-appsec अटैचमेंट को शामिल करने के लिए और साथ ही open-appsec एजेंट को डिप्लॉय करने के लिए बढ़ाया गया है। इसके अलावा, आप open-appsec को open-appsec केंद्रीय प्रबंधन वेब UI का उपयोग करने के विकल्प के रूप में K8s में कस्टम संसाधनों का उपयोग करके एक घोषणात्मक "DevOps-शैली" में कॉन्फ़िगर करने का विकल्प भी रखेंगे।

यहाँ Kubernetes पर डिप्लॉयमेंट के लिए एक सरल आर्किटेक्चर स्कीमैटिक है।

Kubernetes डिप्लॉयमेंट के लिए आर्किटेक्चर

Linux पर APISIX में open-appsec WAF जोड़ना

Linux सिस्टम पर APISIX इंस्टॉल किए गए open-appsec को इंस्टॉल करने के लिए, कृपया इन चरणों का पालन करें:

1. पूर्वापेक्षाएँ

  • Linux प्लेटफॉर्म Ubuntu 22.04 होना चाहिए।
  • सुनिश्चित करें कि APISIX इंस्टॉल है।

आप समर्थित APISIX संस्करणों की सूची यहाँ पा सकते हैं: https://downloads.openappsec.io/packages/supported-apisix.txt

यदि आपने अभी तक APISIX इंस्टॉल नहीं किया है, तो आप निम्नलिखित कमांड का उपयोग करके APISIX को "पारंपरिक मोड" में इंस्टॉल कर सकते हैं। इन कमांड को चलाकर आप पहले APISIX के लिए etcd डेटाबेस इंस्टॉल करेंगे, फिर आवश्यक रेपोज़ जोड़ेंगे और उसके बाद 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 इंस्टॉल करें

मौजूदा APISIX इंस्टॉलेशन के साथ एकीकृत करने के लिए open-appsec इंस्टॉल करें।

ध्यान दें कि --prevent फ्लैग open-appsec को डिफ़ॉल्ट नीति के साथ इंस्टॉल करेगा जो पहले से ही प्रिवेंट मोड में सेट है।

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

4. APISIX एडमिन कुंजी प्राप्त करें और स्टोर करें

APISIX config.yaml कॉन्फ़िगरेशन फ़ाइल से APISIX एडमिन कुंजी प्राप्त करें और इसे APISIX_KEY env वेरिएबल में स्टोर करें।

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

5. सेवाओं को एक्सपोज़ करने के लिए रूट कॉन्फ़िगर करें

APISIX गेटवे में एक उदाहरण रूट कॉन्फ़िगर करें ताकि एक बाहरी वेब सेवा या वेब API को एक्सपोज़ किया जा सके। इस उदाहरण में, हम 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 इंजेक्शन हमले का अनुकरण करें

अब आइए APISIX गेटवे द्वारा एक्सपोज़ किए गए httpbin.org सेवा के खिलाफ एक SQL इंजेक्शन हमले का अनुकरण करने का प्रयास करें, जो अब open-appsec WAF द्वारा सुरक्षित है।

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

यह अनुकरणित हमला अब open-appsec के संदर्भात्मक मशीन-लर्निंग WAF इंजन द्वारा सफलतापूर्वक ब्लॉक किया जाता है।

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 को एक आसान-से-उपयोग वेब UI के साथ केंद्रीय रूप से प्रबंधित किया जा सके, सुरक्षा घटनाओं की निगरानी की जा सके और बहुत कुछ, अधिक जानकारी के लिए नीचे अपने open-appsec WAF डिप्लॉयमेंट को केंद्रीय रूप से कैसे प्रबंधित करें? अनुभाग देखें।

बधाई हो! आपने सफलतापूर्वक अपने मौजूदा APISIX इंस्टॉलेशन में open-appsec WAF जोड़ा है और सत्यापित किया है कि APISIX गेटवे द्वारा एक्सपोज़ किए गए आपके वेब सेवाएँ अब वेब हमलों से सुरक्षित हैं।

कंटेनराइज़्ड प्लेटफॉर्म (Docker) पर APISIX को open-appsec WAF के साथ डिप्लॉय करना

Docker पर APISIX को open-appsec के साथ एकीकृत करने के लिए, आप नीचे दिखाए गए चरणों का पालन कर सकते हैं।

ऊपर दिए गए उदाहरण के विपरीत, यहाँ हम APISIX को "स्टैंडअलोन मोड" में डिप्लॉय कर रहे हैं, जिसका अर्थ है कि इसे एक docker वॉल्यूम माउंट के साथ घोषणात्मक रूप से कॉन्फ़िगर किया गया है, जिसमें कॉन्फ़िगरेशन रखने वाली एक yaml फ़ाइल है और इसलिए etcd डेटाबेस डिप्लॉयमेंट की आवश्यकता नहीं होगी।

ध्यान दें कि APISIX सभी डिप्लॉयमेंट प्रकार (Linux, Docker, …) में पारंपरिक और स्टैंडअलोन दोनों मोड का समर्थन करता है।

1. पूर्वापेक्षा

सुनिश्चित करें कि आपके पास Docker और docker-compose टूल्स इंस्टॉल किए गए Linux प्लेटफॉर्म है।

2. open-appsec के लिए एक फ़ोल्डर बनाएँ

जिस डायरेक्टरी का उपयोग आप डिप्लॉयमेंट के लिए करना चाहते हैं, उसके भीतर एक फ़ोल्डर appsec-localconfig बनाएँ जो 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. एक docer-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 इंजेक्शन हमले का अनुकरण करें

अब आइए APISIX गेटवे कंटेनर द्वारा एक्सपोज़ किए गए httpin.org सेवा के खिलाफ एक SQL इंजेक्शन हमले का अनुकरण करने का प्रयास करें, जो अब 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 को एक आसान-से-उपयोग वेब UI के साथ केंद्रीय रूप से प्रबंधित किया जा सके, सुरक्षा घटनाओं की निगरानी की जा सके और बहुत कुछ, अधिक जानकारी के लिए नीचे अपने open-appsec WAF डिप्लॉयमेंट को केंद्रीय रूप से कैसे प्रबंधित करें? अनुभाग देखें।

Helm का उपयोग करके Kubernetes पर APISIX को open-appsec WAF के साथ डिप्लॉय करना

1. पूर्वापेक्षा

सुनिश्चित करें कि Kubernetes प्लेटफॉर्म और Helm टूल उपलब्ध हैं।

2. open-appsec डाउनलोड करें

APISIX Helm चार्ट के लिए open-appsec यहाँ डाउनलोड करें।

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

3. Helm चार्ट इंस्टॉल करें

यह उदाहरण helm install कमांड open-appsec के लिए APISIX Helm चार्ट को इंस्टॉल कर रहा है, जो आधिकारिक APISIX Helm चार्ट के एक विस्तारित संस्करण पर आधारित है।

यह APISIX गेटवे को APISIX Ingress Controller के रूप में डिप्लॉय करेगा, साथ ही open-appsec WAF को उसके साथ एकीकृत करेगा। यह open-appsec WAF के लिए एक अतिरिक्त कॉन्फ़िगरेशन विकल्प भी प्रदान करता है (Helm चार्ट के अंदर values.yaml और open-appsec डॉक्स देखें)।

डिप्लॉयमेंट के बाद, आप अपने K8s इन्ग्रेस संसाधनों को APISIX गेटवे को असाइन कर सकते हैं, उन्हें निम्नलिखित इन्ग्रेस क्लास का उपयोग करने के लिए कॉन्फ़िगर करके: 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 नीति संसाधन बनाएँ

K8s में "open-appsec-best-practice-policy" बनाने के लिए निम्नलिखित कमांड चलाएँ।

ध्यान दें कि यह उदाहरण नीति पहले से ही हमलों को रोकने के लिए प्री-कॉन्फ़िगर है।

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

आप अपनी खुद की कस्टम नीति भी बना सकते हैं, यहाँ आपको सभी विवरण मिलेंगे।

6. लक्ष्य संसाधन का नाम प्राप्त करें

जिस इन्ग्रेस संसाधन को आप सुरक्षित करना चाहते हैं, उसका नाम पता करें:

kubectl get ing -A

7. इन्ग्रेस संसाधन को संपादित करें

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

8. ingressClassname बदलें

ingressClassname को open-appsec का उपयोग करने के लिए बदलें:

spec: ingressClassName: app
Tags: