تصون Apache APISIX باستخدام Coraza ومجموعة قواعد الأساسية من OWASP

مشروع الأمان العالمي المفتوح للتطبيقات هو مجتمع على الإنترنت ينتج مقالات متاحة مجانًا، ومنهجيات، ووثائق، وأدوات، وتقنيات في مجالات أمن الأجهزة الأثرياء، وبرمجة النظم، وأمن التطبيقات الويب. يوفر OWASP موارد مجانية ومفتوحة. يقودها منظمة غير هادفة للربح تسمى مؤسسة OWASP. الأمان العالمي المفتوح للتطبيقات العشرة الأولى – 2021 هو نتيجة منتشرة حديثًا للأبحاث التي تعتمد على بيانات شاملة مجمعة من أكثر من 40 منظمة شريك.

– موقع OWASP

ينشر OWASP بانتظام تقريرًا للإصابات العشرة الأولى. يهدف التقرير إلى الإصابات في التطبيقات الويب.

في هذا المنشور، أود أن أصف كيفية إصلاح بعضها عبر بوابة Apache APISIX API.

الأمان العالمي المفتوح للتطبيقات العشرة الأولى 2021

في عام 2021، يذكر التقرير:

  • A01:2021-التحكم المكسور في الوصول
  • A02:2021-الفشل الرقمي
  • A03:2021-الحقول المحرضة
  • A04:2021-غير الآمن
  • A05:2021-الترتيبات الأمنية غير الآمنة
  • A06:2021-المكونات الضعيفة والقديمة
  • A07:2021-فشل التعريف والتوثيق
  • A08:2021-فشل التأمين وتكامل البيانات
  • A09:2021-السجلات الأمنية وفشل الرصد
  • A10:2021-طلب الخادم الجانبي المطلوب

للحصول على مزيد من التفاصيل، يرجى الاطلاع على التقرير الكامل التقرير.

تصحيح الإصدارات التي تعتبر ضعيفة وغير حديثة ، يعتمد على طبيعتها بالضبط. على سبيل المثال، تصحيح المكونات التي تعتبر ضعيفة وغير حديثة هو عملية تتطلب الانضباط في إدارة الإصدارات وإهمال الإصدارات القديمة. ومع ذلك، بعضها يتطلب تكييفاً صحيحاً في مراسل العكس أو بوابة الواجهة التطبيقية، على سبيل المثال، الإصدار الذي يعتبر ضعيفاً وغير حديث.

لا أحد يهتم بالأمان

الأمان موضوع حساس لأن تصوير الأمان لا يجلب قيمة للأعمال. لن يهتم المديرون المهتمون بالمهنة بالأمان لأنهم لن يتمكنوا من عرض زيادة الربح التي حققوها للشركة بنسبة X٪ في التقييم السنوي التالي. إلا إذا اعتبر مجلس الإدارة جدياً بالأمان، فمن المحتمل ألا يهتم أحد. ولهذا السبب، تقوم معظم المنظمات بتنفيذ أمان يعتمد على الاختيارات، والتي تعرف بـ، التصوير المحتمل. إذا كنت مهتماً بتنفيذ الأمان بشكل صحيح، فقد كتبت بعض الأفكار في منشور مدونة من قبل: “التعامل مع الأمان كخطر.”

على أي حال، لن يحصل التأمين على التطبيقات على الكثير من الميزانية، إن وجدت. ولذلك، يجب أن نكون أذكياء في التعامل معها والبحث عن مكون موجود. ولحسن الحظ، يقدم OWASP تكييفًا من الصناديق للتعامل مع أعلى 10، والذي يمكن إصلاحه عبر تكييف يسمى مجموعة قواعد أساسية. ولسوء الحظ، يستهدف ModSecurity:

ModSecurity، المعروف أحيانًا باسم Modsec، هو جدار حماية للتطبيقات الويب (WAF) مفتوحة المصدر. صممت في الأصل كوحدة لخادم Apache HTTP Server، وتطورت لتوفر مجموعة من قدرات فلترة الطلبات والاستجابات لتحويل البروتوكول الأبيض والأسود وميزات أمنية أخرى عبر العديد من المنصات بما في ذلك خادم Apache HTTP Server وMicrosoft IIS وNginx. إنه برنامج حر مصدر تحت ترخيص Apache 2.0.

ModSecurity على ويكيبيديا

على الرغم من أنه من الممكن نظريًا تكوين Nginx عبر تكوين Apache APISIX، إلا أن هناك طريقة أكثر مباشرة.

مجموعة حواجز OWASP Core و Coraza

وصف مجموعة حواجز Core مترابط بحاجتنا:

مجموعة حواجز OWASP® ModSecurity Core Rule Set (CRS) هي مجموعة من قواعد الكشف عن الهجمات العامة للاستخدام مع ModSecurity أو جداول حماية التطبيقات الويب المتوافقة. تهدف المجموعة إلى حماية التطبيقات الويب من مجموعة واسعة من الهجمات، بما في ذلك أعلى عشر OWASP، بحيث يكون هناك أقل قدر ممكن من التنبؤات الخاطئة. توفر المجموعة حماية ضد العديد من فئات الهجمات الشائعة، بما في ذلك:

  • الحقلة السلوكية (SQLi)
  • البرمجة المتقطعة من الموقع (XSS)
  • تضمين ملف محلي (LFI)
  • تضمين ملف عن بعد (RFI)
  • حقوق تضمين PHP
  • حقوق تضمين Java
  • HTTPoxy
  • Shellshock
  • حقوق طلب Unix/Windows
  • تحديد الجلسة
  • كشف البرمجة/الماسح/الروبوت
  • التسربات الفنية/خطأ

– موقع OWASP® ModSecurity Core Rule Set

توفر OWASP أيضًا Coraza، نسخة من ModSecurity متاحة كمكتبة Go. Coraza Proxy Wasm مبنية على رأس Coraza وتنفذ ABI proxy-wasm، الذي يحدد مجموعة من واجهات Wasm للمروريات. وأخيرًا، يقدم Apache APISIX تكامل proxy-wasm.

جمع الجميع

لنلخص:

  1. تقدم OWASP قائمة بأهم 10 ثغرات أمنية الويب.
  2. يتم تنفيذها لـ ModSecurity عبر Core Ruleset.
  3. Coraza هي نسخة من ModSecurity، متاحة كتنفيذ لـ proxy-wasm.

يمكننا تكوين Apache APISIX بإعدادات أماني سليمة وآمنة هكذا. لنقم بذلك.

أولاً الأولى: Coraza ليست جزءًا من توزيع Apache APISIX. ومع ذلك، من السهل إضافتها هنا باستخدام Docker:

Dockerfile

 

FROM apache/apisix:3.8.0-debian

ENV VERSION 0.5.0                                                           #1
ENV CORAZA_FILENAME coraza-proxy-wasm-${VERSION}.zip                        #1

ADD https://github.com/corazawaf/coraza-proxy-wasm/releases/download/$VERSION/$CORAZA_FILENAME . #2

USER root                                                                   #3

RUN <<EOF

  apt-get install zip -y                                                    #4
  unzip $CORAZA_FILENAME -d /usr/local/apisix/proxywasm
  rm $CORAZA_FILENAME
  apt-get remove zip -y
  chown -R apisix:apisix /usr/local/apisix/proxywasm

EOF

USER apisix                                                                 #5

  1. تعريف المتغيرات لتحسين الصيانة
  2. احصل على إصدار Coraza Wasm.
  3. في إصدارات APISIX الأحدث، يكون المستخدم apisix لتصعيد الأمان. كما نحتاج لتثبيت الحزم، يجب علينا تبديل إلى root.
  4. تثبيت unzip لأنه غير مثبت، فك الأرشيف المُحمّل، إزالة الأرشيف، إلغاء تثبيت unzip، وتغيير صاحب المجلد المُستخرج.
  5. انتقل مرة أخرى إلى المستخدم apisix

الخطوة التالية هي تكوين APISIX نفسها لاستخدام ملحق Wasm لـ Coraza.

YAML

 

wasm:
  plugins:
    - name: coraza-filter                                                   #1
      priority: 7999                                                        #2
      file: /usr/local/apisix/proxywasm/coraza-proxy-wasm.wasm              #3

  1. اسم المرشح المعين في رمز Wasm
  2. حدد أعلى أولوية لتشغيله قبل أي مكون آخر.
  3. مسار الملف المُستخرج (انظر Dockerfile أعلاه)

أخيرًا ، يمكننا تعيين المكون للطرق أو تعيينه كقاعدة عامة لتطبيقها على كل طريقة. أنا أستخدم التكوين الثابت:

YAML

 

global_rules:
  - id: 1
    plugins:
      coraza-filter:                                                        #1
        conf:
          directives_map:                                                   #2
            default:
              - SecDebugLogLevel 9                                          #3
              - SecRuleEngine On                                            #4
              - Include @crs-setup-conf                                     #5
              - Include @owasp_crs/*.conf                                   #6
          default_directives: default                                       #7

  1. قم بتكوين مكون coraza-filter الآن بما أنه متاح.
  2. حدد التكوينات. هنا ، نحدد واحدة فقط ، default ، لكننا يمكن أن نحدد عدة ونستخدم أنواع مختلفة في طرق مختلفة.
  3. زيادة مستوى السجل لرؤية ما يحدث في السجلات.
  4. قم بتشغيل المحرك.
  5. استخدم إعداد Coraza.
  6. استخدم جميع القواعد. يمكننا اختيار القواعد التي نريدها للتحكم بدقة أكبر.
  7. استخدم التكوين default المحدد أعلاه.

نواصل تعريف الطرق لاختبار إعدادنا. لنطلق اسم الطريقة إلى /get:

Shell

 

curl localhost:9080?user=foobar

الرد كما هو متوقع:

JSON

 

{
  "args": {
    "user": "foobar"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Host": "localhost", 
    "User-Agent": "curl/8.4.0", 
    "X-Amzn-Trace-Id": "Root=1-65b9fa13-75900dc029e156ec764ae204", 
    "X-Forwarded-Host": "localhost"
  }, 
  "origin": "192.168.65.1, 176.153.7.175", 
  "url": "http://localhost/get?user=foobar"
}

الآن ، لنجرب إرسال JavaScript في سلسلة الاستعلام. لا يوجد طريقة لطلب هذا النوع من الطلب من الخادم ، لذا يجب أن يحمينا بنيتنا منه.

Shell

 

curl 'localhost:9080?user=<script>alert(1)</script>'

الرد هو رمز حالة 403 HTTP. إذا نظرنا إلى السجل ، يمكننا رؤية التلميحات التالية:

Plain Text

 

Coraza: Warning. XSS Attack Detected via libinjection [file "@owasp_crs/REQUEST-941-APPLICATION-ATTACK-XSS.conf"]
Coraza: Warning. NoScript XSS InjectionChecker: HTML Injection
Coraza: Warning. Javascript method detected
Coraza: Access denied (phase 1). Inbound Anomaly Score Exceeded in phase 1

Coraza قام بالمهمة!

الخاتمة

معظم المنظمات لا تحفز على الأمان الإلكتروني. ولذا ، نحتاج إلى أن نكون أذكياء بشأنه وإستخدام المكونات الحالية بقدر الإمكان.

يمكننا تصون أباتشي أبيسكس ضد أعلى 10 من أكواب عن طريق استخدام كورازا ومجموعة القواعد الأساسية.

للذهاب أبعد

يمكن العثور على الكود المصدري الكامل لهذا المنشور على GitHub.

Source:
https://dzone.com/articles/hardening-apache-apisix-with-the-owasps-coraza-and