paint-brush
Apache APISIX API গেটওয়ে দিয়ে কীভাবে ওয়েব দুর্বলতাগুলি মোকাবেলা করবেনদ্বারা@nfrankel
302 পড়া
302 পড়া

Apache APISIX API গেটওয়ে দিয়ে কীভাবে ওয়েব দুর্বলতাগুলি মোকাবেলা করবেন

দ্বারা Nicolas Fränkel9m2024/02/10
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

Coraza এবং Core Ruleset ব্যবহার করে আমরা OWASP Top 10 এর বিরুদ্ধে Apache APISIX কে শক্ত করতে পারি।
featured image - Apache APISIX API গেটওয়ে দিয়ে কীভাবে ওয়েব দুর্বলতাগুলি মোকাবেলা করবেন
Nicolas Fränkel HackerNoon profile picture


ওপেন ওয়ার্ল্ডওয়াইড অ্যাপ্লিকেশন সিকিউরিটি প্রজেক্ট হল একটি অনলাইন সম্প্রদায় যা IoT, সিস্টেম সফ্টওয়্যার এবং ওয়েব অ্যাপ্লিকেশন সুরক্ষার ক্ষেত্রে অবাধে উপলব্ধ নিবন্ধ, পদ্ধতি, ডকুমেন্টেশন, সরঞ্জাম এবং প্রযুক্তি তৈরি করে। OWASP বিনামূল্যে এবং উন্মুক্ত সম্পদ প্রদান করে। এটি OWASP ফাউন্ডেশন নামে একটি অলাভজনক দ্বারা পরিচালিত হয়। OWASP Top 10 - 2021 হল 40 টিরও বেশি অংশীদার সংস্থা থেকে সংকলিত ব্যাপক তথ্যের উপর ভিত্তি করে সাম্প্রতিক গবেষণার প্রকাশিত ফলাফল।

-- OWASP ওয়েবসাইট


OWASP নিয়মিতভাবে একটি শীর্ষ 10 দুর্বলতার প্রতিবেদন প্রকাশ করে। প্রতিবেদনটি ওয়েব অ্যাপ্লিকেশনের দুর্বলতাকে লক্ষ্য করে।


এই পোস্টে, আমি বর্ণনা করতে চাই কিভাবে Apache APISIX API গেটওয়ের মাধ্যমে তাদের কিছু ঠিক করা যায়।

OWASP শীর্ষ 10 2021৷

2021 সালে, প্রতিবেদনে উল্লেখ করা হয়েছে:


  • A01:2021-ভাঙা অ্যাক্সেস কন্ট্রোল
  • A02:2021-ক্রিপ্টোগ্রাফিক ব্যর্থতা
  • A03:2021-ইনজেকশন
  • A04:2021-অনিরাপদ
  • A05:2021-নিরাপত্তা ভুল কনফিগারেশন
  • A06:2021- দুর্বল এবং পুরানো উপাদান
  • A07:2021- সনাক্তকরণ এবং প্রমাণীকরণ ব্যর্থতা
  • A08:2021-সফ্টওয়্যার এবং ডেটা ইন্টিগ্রিটি ব্যর্থতা
  • A09:2021-নিরাপত্তা লগিং এবং মনিটরিং ব্যর্থতা
  • A10:2021-সার্ভার-সাইড অনুরোধ জালিয়াতি


আরো বিস্তারিত জানার জন্য, সম্পূর্ণ রিপোর্ট চেক করুন.


একটি দুর্বলতা ঠিক করা তার সঠিক প্রকৃতির উপর নির্ভর করে। উদাহরণস্বরূপ, দুর্বল এবং পুরানো উপাদানগুলিকে ঠিক করা প্রক্রিয়া-চালিত, সংস্করণগুলি পরিচালনা করার এবং পুরানোগুলিকে অবসর নেওয়ার ক্ষেত্রে শৃঙ্খলার প্রয়োজন৷ কিছু, যাইহোক, প্রযুক্তিগত এবং শুধুমাত্র বিপরীত প্রক্সি বা API গেটওয়েতে যথাযথ কনফিগারেশন প্রয়োজন, যেমন , সার্ভার সাইড অনুরোধ জালিয়াতি

কেউ নিরাপত্তার কথা ভাবছে না

নিরাপত্তা একটি স্পর্শকাতর বিষয় কারণ কঠোর নিরাপত্তা ব্যবসায় কোনো মূল্য আনে না। ক্যারিয়ার-চালিত পরিচালকরা নিরাপত্তার বিষয়ে চিন্তা করবেন না কারণ তারা তাদের পরবর্তী বার্ষিক মূল্যায়নে কোম্পানির মুনাফা X% বৃদ্ধি করেছে তা প্রদর্শন করতে সক্ষম হবে না। বোর্ড নিরাপত্তাকে গুরুত্ব সহকারে বিবেচনা না করলে, কেউ পাত্তা দেবে না। এই কারণে, বেশিরভাগ সংস্থা চেকবক্স-ভিত্তিক নিরাপত্তা প্রয়োগ করে, ওরফে বিশ্বাসযোগ্য অস্বীকারযোগ্যতা। আপনি যদি নিরাপত্তা যথাযথভাবে প্রয়োগ করতে আগ্রহী হন, আমি পূর্ববর্তী ব্লগ পোস্টে কিছু চিন্তা লিখেছি: নিরাপত্তাকে ঝুঁকি হিসেবে বিবেচনা করুন


সব মিলিয়ে, সুরক্ষিত অ্যাপ্লিকেশনগুলি খুব বেশি বাজেট পাবে না, যদি থাকে। অতএব, আমাদের অবশ্যই এটি সম্পর্কে স্মার্ট হতে হবে এবং একটি বিদ্যমান উপাদান অনুসন্ধান করতে হবে। সৌভাগ্যবশত, OWASP টপ 10 পরিচালনা করার জন্য একটি আউট-অফ-দ্য-বক্স কনফিগারেশন অফার করে, যেটি Core Rule Set নামে একটি কনফিগারেশনের মাধ্যমে ঠিক করা যায়। দুর্ভাগ্যবশত, এটি ModSecurity কে লক্ষ্য করে:


ModSecurity, কখনও কখনও Modsec বলা হয়, একটি ওপেন সোর্স ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল (WAF)। মূলত Apache HTTP সার্ভারের জন্য একটি মডিউল হিসাবে ডিজাইন করা হয়েছে, এটি Apache HTTP সার্ভার, মাইক্রোসফ্ট IIS এবং Nginx সহ বিভিন্ন প্ল্যাটফর্ম জুড়ে অন্যান্য সুরক্ষা বৈশিষ্ট্যগুলির সাথে হাইপারটেক্সট ট্রান্সফার প্রোটোকল অনুরোধ এবং প্রতিক্রিয়া ফিল্টারিং ক্ষমতাগুলির একটি অ্যারে প্রদান করতে বিকশিত হয়েছে। এটি Apache লাইসেন্স 2.0 এর অধীনে মুক্তিপ্রাপ্ত বিনামূল্যের সফ্টওয়্যার।

-- উইকিপিডিয়ায় ModSecurity


যদিও Apache APISIX কনফিগারেশনের মাধ্যমে Nnginx কনফিগার করা তাত্ত্বিকভাবে সম্ভব, সেখানে আরও একটি সহজ উপায় রয়েছে।

OWASP কোর রুলসেট এবং কোরাজা

কোর রুলসেটের বর্ণনা আমাদের প্রয়োজনের সাথে বেশ প্রাসঙ্গিক:


OWASP® ModSecurity Core Rule Set (CRS) হল ModSecurity বা সামঞ্জস্যপূর্ণ ওয়েব অ্যাপ্লিকেশন ফায়ারওয়ালের সাথে ব্যবহারের জন্য জেনেরিক আক্রমণ সনাক্তকরণ নিয়মের একটি সেট। CRS-এর লক্ষ্য হল ন্যূনতম মিথ্যা সতর্কতা সহ OWASP শীর্ষ দশ সহ বিস্তৃত আক্রমণ থেকে ওয়েব অ্যাপ্লিকেশনগুলিকে রক্ষা করা। CRS অনেক সাধারণ আক্রমণ বিভাগের বিরুদ্ধে সুরক্ষা প্রদান করে, যার মধ্যে রয়েছে:

  • SQL ইনজেকশন (SQLi)
  • ক্রস সাইট স্ক্রিপ্টিং (XSS)
  • স্থানীয় ফাইল অন্তর্ভুক্তি (LFI)
  • দূরবর্তী ফাইল অন্তর্ভুক্তি (RFI)
  • পিএইচপি কোড ইনজেকশন
  • জাভা কোড ইনজেকশন
  • HTTPoxy
  • বাক্রোধ
  • ইউনিক্স/উইন্ডোজ শেল ইনজেকশন
  • সেশন ফিক্সেশন
  • স্ক্রিপ্টিং/স্ক্যানার/বট সনাক্তকরণ
  • মেটাডেটা/ত্রুটি লিকেজ

-- OWASP® ModSecurity Core Rule Set ওয়েবসাইট


OWASP কোরাজাও প্রদান করে, একটি Go লাইব্রেরি হিসাবে উপলব্ধ ModSecurity-এর একটি পোর্ট। কোরাজা প্রক্সি ওয়াসম কোরাজার উপরে নির্মিত এবং প্রক্সি-ওয়াসম ABI প্রয়োগ করে, যা প্রক্সির জন্য Wasm ইন্টারফেসের একটি সেট নির্দিষ্ট করে। অবশেষে, Apache APISIX প্রক্সি-ওয়াসম ইন্টিগ্রেশন অফার করে।

সবগুলোকে একত্রে রাখ

আসুন সারসংক্ষেপ করা যাক:


  1. OWASP শীর্ষ 10 ওয়েব নিরাপত্তা দুর্বলতার একটি তালিকা প্রদান করে
  2. এটি Core Ruleset এর মাধ্যমে ModSecurity এর জন্য তাদের প্রয়োগ করে
  3. Coraza হল ModSecurity-এর একটি পোর্ট, একটি প্রক্সি-ওয়াসম বাস্তবায়ন হিসাবে উপলব্ধ৷


আমরা এইভাবে Apache APISIX কনফিগার করতে পারি বুদ্ধিমান এবং সুরক্ষিত ডিফল্ট সহ। চল এটা করি.

প্রথম জিনিস প্রথম: কোরাজা Apache APISIX বিতরণের অংশ নয়। তবুও, ডকারের সাথে এটি এখানে যোগ করা সহজ:


 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. কোরাজা ওয়াসম রিলিজ পান
  3. সাম্প্রতিক APISIX সংস্করণে, ব্যবহারকারী নিরাপত্তা কঠোর করার জন্য apisix । আমাদের যেমন প্যাকেজ ইনস্টল করতে হবে, আমাদের অবশ্যই root -এ স্যুইচ করতে হবে।
  4. unzip ইনস্টল করুন যেহেতু এটি ইনস্টল করা নেই, ডাউনলোড করা সংরক্ষণাগারটি আনজিপ করুন, সংরক্ষণাগারটি সরান, unzip আনইনস্টল করুন এবং নিষ্কাশিত ফোল্ডারের মালিক পরিবর্তন করুন
  5. ব্যবহারকারী apisix ফিরে যান


পরের ধাপ হল কোরাজা ওয়াসম প্লাগইন ব্যবহার করার জন্য APISIX কনফিগার করা।


 wasm: plugins: - name: coraza-filter #1 priority: 7999 #2 file: /usr/local/apisix/proxywasm/coraza-proxy-wasm.wasm #3
  1. ফিল্টারের নাম Wasm কোডে সেট করা আছে
  2. সর্বোচ্চ অগ্রাধিকার সেট করুন যাতে এটি অন্য কোনো প্লাগইনের আগে চলে
  3. নিষ্কাশিত ফাইলের পথ, উপরের Dockerfile দেখুন


অবশেষে, আমরা রুটে প্লাগইন বরাদ্দ করতে পারি বা প্রতিটি রুটে প্রয়োগ করার জন্য এটিকে একটি বিশ্বব্যাপী নিয়ম হিসাবে সেট করতে পারি। আমি স্ট্যাটিক কনফিগারেশন ব্যবহার করছি:


 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. কোরাজা সেটআপ ব্যবহার করুন
  6. সমস্ত নিয়ম ব্যবহার করুন। আরও সূক্ষ্ম নিয়ন্ত্রণের জন্য আমরা যেগুলি চাই তা বাছাই করতে এবং বেছে নিতে পারি
  7. উপরে সংজ্ঞায়িত default কনফিগারেশন ব্যবহার করুন


আমরা আমাদের সেটআপ পরীক্ষা করার জন্য https://httpbin.org/- এর রুটগুলি সংজ্ঞায়িত করতে এগিয়ে যাই। আসুন রুটটিকে কল করি /get :


 curl localhost:9080?user=foobar


প্রতিক্রিয়া আশানুরূপ:


 { "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" }


এখন, ক্যোয়ারী স্ট্রিং-এ জাভাস্ক্রিপ্ট পাঠানোর চেষ্টা করা যাক। এই অনুরোধটি সার্ভার-সাইড প্রত্যাশিত হওয়ার কোন উপায় নেই, তাই আমাদের পরিকাঠামো আমাদেরকে এটি থেকে রক্ষা করবে।


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


প্রতিক্রিয়া হল একটি 403 HTTP স্ট্যাটাস কোড। যদি আমরা লগটি দেখি, আমরা নিম্নলিখিত ইঙ্গিতগুলি দেখতে পাব:


 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 এবং Core Ruleset ব্যবহার করে OWASP Top 10 এর বিরুদ্ধে Apache APISIX কে শক্ত করতে পারি।


আরো যেতে:



এই পোস্টের জন্য সম্পূর্ণ সোর্স কোড GitHub এ পাওয়া যাবে।


মূলত 4ঠা ফেব্রুয়ারি, 2024-এ A Java Geek এ প্রকাশিত