একটি ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল যা আপনি নিজেই চালান মানে আর একটি স্থবির সি মডিউলের সাথে কুস্তি করা নয়। OWASP Coraza 3.8.1 হল নতুন রিলিজ, এবং প্রকল্পটি ব্যবহারকারীদেরকে আপগ্রেড করার জন্য আগের যেকোনো 3.x রিলিজকে বলে। এই টিউটোরিয়ালটি উবুন্টুতে একটি সম্পূর্ণ Coraza WAF সেটআপের মধ্য দিয়ে চলে, Caddy কে বিপরীত প্রক্সি হিসেবে ব্যবহার করে এবং OWASP কোর রুল সেট (CRS) রুলসবুক হিসেবে। আপনি একটি কার্যকরী WAF দিয়ে শেষ করুন যা একটি বাস্তব আপস্ট্রিম অ্যাপের সামনে SQL ইনজেকশন, ক্রস-সাইট স্ক্রিপ্টিং এবং পাথ ট্রাভার্সালকে ব্লক করে।

পরিচালিত WAF হল সহজ উত্তর, এবং Cloudflare WAF সেট আপ করার জন্য আমাদের গাইড সেই রুটকে কভার করে। একটি স্ব-হোস্টেড ইঞ্জিন বোধগম্য হয় যখন ট্র্যাফিক আপনার নেটওয়ার্ক ছেড়ে যেতে পারে না, যখন আপনি সংস্করণ নিয়ন্ত্রণে নিয়ম চান, বা যখন আপনি প্রতি অনুরোধে অর্থ প্রদান করতে অস্বীকার করেন। Coraza হল ModSecurity Rule Language (SecLang) এর একটি Go বাস্তবায়ন, তাই একই CRS ফাইল যা Apache এবং Nginx ফ্লিটগুলিকে রক্ষা করে এখানেও চলে। আপনি ক্রমানুসারে নীচের 13টি ধাপ অনুসরণ করলে বিল্ডটি প্রায় 60 মিনিট সময় নেয়।

·

Google · পছন্দের উৎস

Google-এ নতুন প্রযুক্তির গল্প মিস করবেন না

Google অ্যাপে একবার টেক ইনসাইডার যোগ করুন এবং আমাদের গল্পগুলি আপনার সংবাদের পরামর্শগুলিতে প্রদর্শিত হবে৷

এখন যোগ করুন

কেন কোরাজা এবং মূল নিয়ম 2026 সালে সেট করা হয়েছে

এই বছর তিনটি জিনিস পরিবর্তিত হয়েছে যা কোরাজা ডাব্লুএএফ সেটআপকে এখন করার যোগ্য করে তুলেছে। প্রথমত, সিআরএস প্রকল্প একটি এলটিএস শাখা প্রকাশ করেছে। CRS 4.25.0 মার্চ 2026-এ CRS 4-এর প্রথম দীর্ঘমেয়াদী-সাপোর্ট রিলিজ হয়ে ওঠে, এবং প্রকল্পটি বলে যে 4.25.x লাইনটি Q3 2027 পর্যন্ত নিরাপত্তা সংশোধন করে। দ্বিতীয়ত, পুরানো CRS 3.3 লাইনটি প্রকল্পের LTS ঘোষণার সময় অনুযায়ী, Q3 2026-এ তার সমর্থন উইন্ডোর শেষে পৌঁছেছে। যদি আপনার WAF এখনও 3.3 নিয়ম লোড করে, আপনি আজ একটি অসমর্থিত রুলবুক চালাচ্ছেন।

তৃতীয়, কোরাজা চালানোর জন্য সস্তা হয়েছে। প্রকল্পের একটি মার্চ 2026 ইঞ্জিনিয়ারিং পোস্ট রিপোর্ট করেছে যে সংকলিত রেজেক্স এবং আহো-কোরাসিক প্যাটার্নগুলি ভাগ করে নেওয়ার ফলে প্রতিটি অতিরিক্ত WAF উদাহরণ 21.5 MiB এর পরিবর্তে মোটামুটি 2.1 MiB ব্যবহার করতে দেয়। এটি একটি ছোট VPS-এ গুরুত্বপূর্ণ, এবং আপনি যখন ভার্চুয়াল হোস্ট প্রতি একটি WAF দৃষ্টান্ত চালান তখন এটি আরও বেশি গুরুত্বপূর্ণ। OWASP ডেভেলপার গাইডও ModSecurity-এর পাশে Coraza কে একটি সমর্থিত CRS ইঞ্জিন হিসেবে তালিকাভুক্ত করে, এবং CRS মাইগ্রেশন উপাদান ModSecurity v2, ModSecurity v3 (libmodsecurity) এবং Coraza-এর জন্য সমর্থন নিশ্চিত করে।

এই টিউটোরিয়ালের জন্য গুরুত্বপূর্ণ দুটি স্বাদে কোরাজা জাহাজ। আপনি একটি Go প্রোগ্রাম বা প্রক্সিতে ইঞ্জিন এম্বেড করতে পারেন, অথবা আপনি একটি সংযোগকারীর মাধ্যমে একটি বিদ্যমান সার্ভারে এটি সংযুক্ত করতে পারেন। Caddy, Nginx, HAProxy এবং প্রক্সি-ওয়াসম হোস্ট যেমন এনভয়-এর জন্য সংযোগকারী বিদ্যমান। আমরা Caddy ব্যবহার করি কারণ সংযোগকারী সরাসরি ওয়েব সার্ভার বাইনারিতে কম্পাইল করে, কোনো বাহ্যিক পরিষেবার প্রয়োজন হয় না এবং কনফিগারেশনটিকে একটি ফাইলে রাখে।

আমরা উদ্দেশ্যমূলকভাবে 4.30.0 মেইনলাইন রিলিজের পরিবর্তে CRS 4.25.2 LTS পিন করি। একটি WAF নিয়মপুস্তক হল উৎপাদন কোড। LTS পয়েন্ট শুধুমাত্র নিরাপত্তা এবং সঠিকতার জন্য পরিবর্তনের নিয়ম প্রকাশ করে, তাই মঙ্গলবারের আপডেট হঠাৎ করে আপনার চেকআউট ফর্ম ব্লক করা শুরু করবে না। আপনি যদি নতুন সনাক্তকরণের নিয়ম চান এবং একটি স্টেজিং পরিবেশ পেতে চান, তাহলে ধাপ 5-এ একটি ভেরিয়েবল অদলবদল করুন এবং অন্য সবকিছু একই রাখুন।

পূর্বশর্ত এবং সংস্করণ আপনার প্রয়োজন

আপনার রুট অ্যাক্সেস সহ একটি নতুন উবুন্টু হোস্ট প্রয়োজন, আপনার বিশ্বাসযোগ্য একটি শেল এবং প্রায় 60 মিনিট। ক্যানোনিকাল দীর্ঘ-চলমান কাজের চাপের জন্য 26.04 LTS রিলিজের সুপারিশ করে, কারণ এর 26.10 রিলিজ নোটগুলি নির্দেশ করে, এবং এটি এখানে প্রতিটি কমান্ডের জন্য বেসলাইন। 26.10 অন্তর্বর্তী রিলিজটিও কাজ করে, কিন্তু এটির সমর্থন জুলাই 2027 এ শেষ হয়, যা উৎপাদন ট্র্যাফিককে রক্ষা করে এমন কিছুর জন্য একটি দুর্বল ফিট। 24.04 LTS রিলিজের জন্য কমান্ডগুলি অভিন্ন, তাই পুরানো সার্ভারগুলির কোনও পরিবর্তনের প্রয়োজন নেই৷

দুটি সংস্করণ নোট পরে ঝামেলা বাঁচায়। কোরাজা-ক্যাডি সংযোগকারীটি কোরাজা ইঞ্জিনের নিজস্ব অনুলিপি টেনে নেয়, তাই আপনি যে ইঞ্জিন সংস্করণটি চালান তা নির্ভর করে আপনার তৈরি করা সংযোগকারী রিলিজের উপর। অনুমান না করে ধাপ 3 এ বিল্ড করার পরে এটি পরীক্ষা করুন। এবং CRS সংস্করণের সাথে কোরাজা ইঞ্জিন সংস্করণকে কখনও বিভ্রান্ত করবেন না। এগুলি পৃথক রিলিজ ট্রেন সহ পৃথক প্রকল্প, এই কারণেই টেবিলটি তাদের পৃথক সারিতে তালিকাভুক্ত করে।

কিভাবে টুকরা একসাথে ফিট

পোর্ট 8080 এ আসা একটি অনুরোধের চিত্র করুন। ক্যাডি এটি গ্রহণ করে এবং কোনো প্রক্সি করার আগে এটি কোরাজা হ্যান্ডলারের কাছে হস্তান্তর করে। Coraza পাঁচটি প্রক্রিয়াকরণ পর্যায়ের মাধ্যমে অনুরোধ চালায়: অনুরোধ শিরোনাম, অনুরোধ বডি, প্রতিক্রিয়া শিরোনাম, প্রতিক্রিয়া বডি এবং লগিং। প্রতিটি পর্বে, CRS নিয়ম ট্রাফিক পরিদর্শন করে এবং একটি অসঙ্গতিপূর্ণ স্কোরে পয়েন্ট যোগ করে। একটি SQL ইনজেকশন স্বাক্ষর 5 পয়েন্ট যোগ করতে পারে। একটি সন্দেহজনক ব্যবহারকারী এজেন্ট 2 যোগ করতে পারে। অনুরোধের পর্যায়গুলির পরে, একটি চূড়ান্ত CRS নিয়ম একটি থ্রেশহোল্ডের সাথে মোটের তুলনা করে এবং স্কোর পৌঁছালে অনুরোধটি ব্লক করে।

এই অসঙ্গতি স্কোরিং মডেল টিউটোরিয়ালের মাধ্যমে বহন করার মূল ধারণা। ব্যক্তিগত নিয়ম তাদের নিজস্ব কিছু অবরুদ্ধ না. তারা ভোট দেয়। এই নকশাটি আপনাকে নিয়মপুস্তকটি পুনঃলিখন না করে একটি থ্রেশহোল্ড বাড়িয়ে বা কমিয়ে বা একটি একক গোলমালের নিয়মকে নীরব করে WAF টিউন করতে দেয়। এটি আরও ব্যাখ্যা করে যে কেন সবচেয়ে নিরাপদ রোলআউট প্রথমে সনাক্তকরণ মোডে চলে, কয়েক দিনের জন্য ভোট সংগ্রহ করে এবং শুধুমাত্র তারপর ব্লক করা শুরু করে।

আপনি যদি ইতিমধ্যেই Nginx-এ TLS বন্ধ করে দেন এবং উবুন্টু গাইডে আমাদের Certbot সেটআপ থেকে Certbot প্রবাহ চালান, Nginx সংযোগকারী হল নিম্ন-ঘর্ষণ পথ। ধাপ 5 থেকে 13 পর্যন্ত সবকিছু (নিয়ম, টিউনিং এবং লগ বিশ্লেষণ) অপরিবর্তিত বহন করে, কারণ প্রতিটি সংযোগকারীতে নিয়মের ভাষা একই। শুধুমাত্র ধাপ 2, 3, 8 এবং 9 ক্যাডি নির্দিষ্ট।

ধাপ 1: উবুন্টু হোস্ট প্রস্তুত করুন

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

ফায়ারওয়ালের সাথে প্রত্যাশিত আউটপুট শেষ হয় সক্রিয় এবং সিস্টেম স্টার্টআপে সক্ষম। আপনি যদি SSH-এর মাধ্যমে সংযুক্ত থাকেন, তাহলে সক্ষম করার আগে OpenSSH লাইনটি অবশ্যই আসতে হবে, অন্যথায় আপনি নিজেকে লক করে দেবেন।

ধাপ 2: Go এবং xcaddy ইনস্টল করুন

ক্যাডি প্লাগইন কম্পাইল করা হয়, রানটাইমে লোড হয় না। তার মানে বিল্ড টাইমে একবার গো টুলচেন দরকার। স্ন্যাপ থেকে Go ইনস্টল করুন যাতে আপনি ডিস্ট্রো আর্কাইভে পুরোনোটির পরিবর্তে একটি বর্তমান রিলিজ পান, তারপরে ক্যাডির জন্য অফিসিয়াল কাস্টম-বিল্ড সহায়ক xcaddy ইনস্টল করুন।

sudo snap install go --classic go version # xcaddy ল্যান্ড ~/go/bin go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest export PATH="$PATH:$HOME/go/bin" xcaddy সংস্করণ

আউটপুট একটি Go সংস্করণ স্ট্রিং এবং একটি xcaddy সংস্করণ দেখায়। যদি xcaddy: কমান্ড খুঁজে পাওয়া যায়নি প্রদর্শিত হয়, PATH রপ্তানি আপনার বর্তমান শেলের জন্য প্রযোজ্য নয়। ~/.প্রোফাইলে যোগ করুন এবং আবার লগ ইন করুন৷

ধাপ 3: কোরাজা মডিউল দিয়ে ক্যাডি তৈরি করুন

এটি এমন পদক্ষেপ যা প্লেইন ক্যাডিকে একটি WAF এ পরিণত করে। coraza-caddy/v2 মডিউল একটি নতুন হ্যান্ডলার এবং একটি coraza_waf নির্দেশ নিবন্ধন করে। একটি পৃথক ফাইলের নাম তৈরি করুন যাতে প্যাকেজ-পরিচালিত ক্যাডি, যদি আপনি কখনও একটি ইনস্টল করেন, কখনও ওভাররাইট না হয়।

cd /tmp xcaddy বিল্ড --with github.com/corazawaf/coraza-caddy/v2 \ --output /tmp/caddy-coraza sudo install -m 0755 /tmp/caddy-coraza /usr/local/bin/caddy-coraza caddy-coraza সংস্করণ caddy-coraza তালিকা | grep -i waf

প্রথম নির্মাণ নির্ভরতা ডাউনলোড করে এবং একটি ছোট VPS-এ কয়েক মিনিট সময় নেয়। একটি ভাল ফলাফল একটি Caddy সংস্করণ এবং লাইন http.handlers.waf প্রিন্ট করে। কোন কোরাজা ইঞ্জিন সংস্করণ বেক হয়েছে তা দেখতে, নীচের কমান্ডটি চালান। এটি বাইনারি এর এমবেডেড বিল্ড তথ্য থেকে মডিউল তালিকা পড়ে।

যান সংস্করণ -m /usr/local/bin/caddy-coraza | grep -E 'corazawaf/(coraza|coraza-caddy)'

একটি github.com/corazawaf/coraza/v3 লাইন খুঁজুন। যদি এটি 3.8.1 এর নিচের একটি সংস্করণ দেখায়, তাহলে xcaddy কমান্ডে যোগ করা --with github.com/corazawaf/coraza/[email protected] দিয়ে পুনর্নির্মাণ করে নতুন ইঞ্জিনটিকে জোর করুন। কোরাজা রিলিজ নোটগুলি 3.8.1-কে বর্ণনা করে যে সংস্করণটি 3.8.0-এ আংশিক বাম সংশোধন করে, একটি প্রক্রিয়া-ক্র্যাশিং বাগ সহ, তাই একটি পুরানো ইঞ্জিনের জন্য স্থির করবেন না।

ধাপ 4: একটি ডেমো আপস্ট্রিম অ্যাপ তৈরি করুন

একটি WAF রক্ষা করার জন্য কিছু প্রয়োজন. টিউটোরিয়ালের জন্য, লুপব্যাকে একটি ছোট পাইথন ওয়েব সার্ভার যথেষ্ট। এটি আপনার দেওয়া স্ট্যাটিক পৃষ্ঠার সাথে প্রতিটি অনুরোধের উত্তর দেয়, যা আমাদেরকে অ্যাপের যুক্তিতে বাধা না দিয়ে WAF-এর আচরণ পরিমাপ করতে দেয়। Caddyfile এ একটি একক ঠিকানা পরিবর্তন করে পরে আপনার আসল অ্যাপ্লিকেশনে অদলবদল করুন।

প্রতিধ্বনি 'ডেমো আপস্ট্রিম জীবিত' |

চূড়ান্ত কার্ল প্রিন্ট ডেমো আপস্ট্রিম জীবন্ত. যেহেতু সার্ভারটি 127.0.0.1 এর সাথে আবদ্ধ, মেশিনের বাইরের কিছুই সরাসরি এটিতে পৌঁছাতে পারে না। এই বিশদটি গুরুত্বপূর্ণ: একটি WAF যা মূল বন্দরে আঘাত করে বাইপাস করা যায় তা হল সজ্জা। লুপব্যাকে বা একটি ব্যক্তিগত নেটওয়ার্কে বাস্তব আপস্ট্রিমগুলি রাখুন যেখানে শুধুমাত্র প্রক্সি পৌঁছাতে পারে৷

ধাপ 5: মূল নিয়ম সেটটি ডাউনলোড এবং পিন করুন

আপনি যে সঠিক CRS রিলিজটি চান তা ডাউনলোড করুন এবং এটিকে নিজস্ব ডিরেক্টরিতে রাখুন। সংস্করণের জন্য একটি ভেরিয়েবল ব্যবহার করা আপগ্রেডগুলিকে এক-লাইন পরিবর্তন করে। OWASP ডেভেলপার গাইড অনুসারে, CRS ModSecurity-সামঞ্জস্যপূর্ণ ইঞ্জিনগুলির জন্য তৈরি করা হয়েছে, এবং Coraza তাদের মধ্যে একটি, তাই স্টক নিয়ম ফাইলগুলি পরিবর্তন ছাড়াই লোড হয়৷

উদাহরণ ফাইল সংস্করণ মার্কার নিয়ম অক্ষত রাখে। head -n 8 sudo grep -c '^SecRule' /etc/coraza/crs/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf

তালিকাটি REQUEST-901-INITIALIZATION.conf এবং REQUEST-911-METHOD-ENFORCEMENT.conf এর মতো ফাইলগুলি দেখায় এবং SQL ইনজেকশন ফাইলটি ডজনের মধ্যে একটি নিয়ম গণনা প্রদান করে৷ /etc/coraza/crs-এ সিমলিংক হল এমন একটি কৌশল যা আপগ্রেডগুলিকে নিরাপদ করে। পরে একটি নতুন রিলিজে যেতে, আপনি এটিকে পুরানোটির পাশে আনপ্যাক করুন, লিঙ্কটি পুনরায় পয়েন্ট করুন এবং পুনরায় চালু করুন। রোল ব্যাক করা মানে পূর্ববর্তী ডিরেক্টরিতে লিঙ্কটি নির্দেশ করা।

আপনি বিশ্বাস করার আগে আপনি কি ডাউনলোড করেছেন তা যাচাই করুন। CRS প্রকল্প স্বাক্ষরিত রিলিজ প্রকাশ করে, তাই সংরক্ষণাগারের বিপরীতে রিলিজ পৃষ্ঠা থেকে বিচ্ছিন্ন স্বাক্ষর এবং চেকসাম পরীক্ষা করুন। আপনি যদি স্টেজিং বক্সে নতুন মেইনলাইন নিয়ম চান, তার পরিবর্তে CRS_VERSION=4.30.0 সেট করুন, ব্লকটি পুনরায় চালু করুন এবং প্রচার করার আগে LTS লাইনের সাথে আচরণের তুলনা করুন।

ধাপ 6: বেস কোরাজা ওভাররাইড লিখুন

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

sudo tee /etc/coraza/custom/00-overrides.conf >/dev/null <<'EOF' # নিরাপদ শুরু করুন: লগ মিল, কিছুই ব্লক করবেন না।

প্রতিটি লাইন তার জায়গা অর্জন করে। 13,107,200 বাইটের বডি সীমা হল 12.5 MB, যা সাধারণ আপলোডের জন্য যথেষ্ট বড় এবং একটি তুচ্ছ মেমরি-ক্লান্তির প্রচেষ্টা বন্ধ করার জন্য যথেষ্ট ছোট। SecRequestBodyNoFilesLimit নন-ফাইল বডিগুলিকে 128 KB এ ক্যাপ করে, যা JSON API এবং ফর্ম পোস্টগুলি কভার করে। Coraza 3.8 ঘোষণা দুটি পরিচিত ফাঁকগুলির তালিকা দেয় যা আপনার পরিকল্পনা করা উচিত: মাল্টিপার্ট ফর্ম ক্ষেত্রগুলি SecArgumentsLimit-এ গণনা করা হয় না এবং SecUploadFileLimit পার্স করা হয় কিন্তু প্রয়োগ করা হয় না। প্রজেক্টটি সেই আইটেমগুলি বন্ধ না করা পর্যন্ত আপনার অ্যাপ্লিকেশনে বা প্রক্সিতে আপলোড গণনা জোরদার করুন৷

ধাপ 7: CRS সেটিংস ফাইল টিউন করুন

CRS 4 দুটি প্যারানইয়া সেটিংস ব্যবহার করে। blocking_paranoia_level নিয়ন্ত্রণ করে কোন নিয়ম কোন অনুরোধ ব্লক করতে পারে। detection_paranoia_level নিয়ন্ত্রণ করে কোন নিয়মগুলি চালানো এবং লগ করা। ব্লক করার চেয়ে বেশি ডিটেকশন সেট করা পুরো রুলবুকের সেরা কৌশল, কারণ আপনি দেখতে পাচ্ছেন যে একক গ্রাহককে ব্লক না করে একটি কঠোর স্তর কী ধরতে পারে। মনে রাখবেন যে CRS 3 একটি একক প্যারানোইয়া_লেভেল ভেরিয়েবল ব্যবহার করেছে এবং পুরোনো টিউটোরিয়াল থেকে কপি-পেস্ট করা স্নিপেটগুলি সেই নামটি ব্যবহার করেছে।

উপরের সেটিংসের সাথে, WAF লেভেল 2 থেকে নিয়মগুলি লগ করে কিন্তু শুধুমাত্র লেভেল 1 এ ব্লক করে। 5-এর থ্রেশহোল্ড মানে একটি একক ক্রিটিক্যাল ম্যাচ (5 পয়েন্টের মূল্য) একটি অনুরোধকে ব্লক করে, যখন দুটি সতর্কতা-স্তরের ম্যাচ (3 পয়েন্ট প্রতিটি)ও লাইনটি অতিক্রম করে। এটি হল সিআরএস ডিফল্ট, এবং সংখ্যা কমানো WAF কে কঠোর করে তোলে, শিথিল নয়।

ধাপ 8: coraza_waf নির্দেশিকা দিয়ে Caddyfile লিখুন

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

বৈধ কনফিগারেশনের সাথে বৈধতা শেষ হয়। প্রথম যাচাইকরণে কয়েক সেকেন্ড সময় লাগতে পারে কারণ Coraza প্রতিটি CRS রেগুলার এক্সপ্রেশনকে পার্স ও কম্পাইল করে। এটিও যেখানে পূর্বে বর্ণিত মেমরি শেয়ারিং বন্ধ করে দেয়। উত্পাদনের জন্য, আপনার ডোমেন নাম দিয়ে :8080 প্রতিস্থাপন করুন এবং ক্যাডি নিজেই একটি শংসাপত্রের অনুরোধ করবে এবং পুনর্নবীকরণ করবে।

ধাপ 9: একটি সিস্টেমড পরিষেবা হিসাবে WAF চালান

হাত দিয়ে প্রক্সি চালানো রিবুট সম্পর্কে কিছুই প্রমাণ করে না। একটি সিস্টেমড ইউনিট আপনাকে পুনরায় চালু করতে ব্যর্থতা, লগ ক্যাপচার এবং স্যান্ডবক্সিং দেয়। নীচের শক্ত হওয়া লাইনগুলি প্রক্সির প্রয়োজন হয় না এমন ক্ষমতাগুলি ড্রপ করে এবং বেশিরভাগ ফাইল সিস্টেমকে শুধুমাত্র পঠনযোগ্য করে তোলে। 1024 এর নিচের পোর্টগুলির জন্য একটি পরিবেষ্টিত ক্ষমতা প্রয়োজন, যা ইউনিট মঞ্জুর করে।

মাথা -n 5

ডেমো পৃষ্ঠা থেকে একটি HTTP/1.1 200 ওকে স্ট্যাটাস লাইন অনুসরণ করে প্রত্যাশিত আউটপুট সক্রিয়। Caddyfile-এ প্রশাসক বন্ধ থাকা অবস্থায়, ক্যাডি রিলোডের সাথে কথা বলার জন্য কোনো অ্যাডমিন API নেই, তাই প্রতিটি কনফিগারেশন পরিবর্তনের পরে sudo systemctl রিস্টার্ট caddy-waf ব্যবহার করুন। রিস্টার্ট হতে কয়েক সেকেন্ড সময় লাগে এবং রিস্টার্টের সময় ফ্লাইটে একটি অনুরোধ সংযোগের ত্রুটি পায়, তাই একটি শান্ত উইন্ডোর জন্য সময়সূচী নিয়ম পরিবর্তন হয়।

ধাপ 10: সনাক্তকরণ মোডে ফায়ার টেস্ট আক্রমণ

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

sqli 200 xss 200 lfi 200 স্ক্যান 200 ক্লিন 200

পাঁচটি রিটার্ন 200, যা নিশ্চিত করে যে শুধুমাত্র সনাক্তকরণ মোড চালু আছে। এখন দেখুন যে লগটি চারটি আক্রমণ রেকর্ড করেছে এবং পরিষ্কার অনুরোধটি একা রেখে গেছে।

sudo wc -l /var/log/coraza/audit.log sudo tail -n 1 /var/log/coraza/audit.log | jq '.transaction.request.uri, [.messages[].data.id]'

লগ ফাইলে চারটি নতুন এন্ট্রি থাকলে, পাইপলাইন শেষ থেকে শেষ পর্যন্ত কাজ করে। একবার আপনি আরামদায়ক হয়ে গেলে একটি বাস্তব নিরাপত্তা স্ক্যানার দিয়ে একই পেলোড চালান। OWASP ZAP সেট আপ করার জন্য আমাদের গাইড দেখায় যে কীভাবে এই ধরনের লক্ষ্যে একটি স্বয়ংক্রিয় স্ক্যান লক্ষ্য করা যায় এবং WAF যা পতাকাঙ্কিত করেছে তার সাথে এর ফলাফলের তুলনা করুন।

ধাপ 11: অডিট লগ পড়ুন এবং নিয়ম র‌্যাঙ্ক করুন

কাঁচা JSON চোখের দ্বারা স্ক্যান করা কঠিন, তাই দুটি jq ওয়ান-লাইনার তৈরি করুন যা আপনি স্থাপনের জীবনের জন্য পুনরায় ব্যবহার করবেন। প্রথমটি কত ঘন ঘন মেলে তা অনুসারে নিয়মগুলি নির্ধারণ করে৷ দ্বিতীয়টি দেখায় কোন ইউআরআই একটি নির্বাচিত নিয়মকে ট্রিগার করে। একসাথে তারা পাঠ্যের একটি দেয়ালকে একটি সংক্ষিপ্ত টিউনিং টু-ডু তালিকাতে পরিণত করে।

# হিট কাউন্ট sudo jq -r '.messages[] দ্বারা শীর্ষ নিয়ম আইডি? | "\(.data.id) \(.message)"' /var/log/coraza/audit.log \ | সাজান | uniq -c | sort -rn | head -n 15 # URI যা একটি প্রদত্ত নিয়মকে ট্রিগার করেছে (উদাহরণ: 942100) sudo jq -r 'select(any(.messages[]?; .data.id == 942100)) | .transaction.request.uri' \ /var/log/coraza/audit.log | সাজান | uniq -c | sort -rn | মাথা

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

সেই 949110 লাইনটি উৎপাদনে দেখার জন্য। যখনই একটি অনুরোধ ব্লকিং থ্রেশহোল্ড অতিক্রম করে তখন এটি ফায়ার হয়, তাই সনাক্তকরণ মোডে এটি আপনাকে ঠিক কতগুলি অনুরোধ ব্লক করা হয়েছে তা বলে। আপনি যদি স্বাভাবিক ব্রাউজিং থেকে প্রতিদিন শত শত দেখতে পান, তবে এখনও ব্লকিং এ স্যুইচ করবেন না। প্রথমে টিউন করুন। আপনি যদি একটি SIEM-এ লগ পাঠান, আমাদের ওয়াজুহ বনাম ইলাস্টিক বনাম গ্রেলগ অংশের তুলনা আপনাকে এই JSON-এর জন্য একটি গন্তব্য বাছাই করতে সাহায্য করে।

ধাপ 12: বাদ দিয়ে মিথ্যা ইতিবাচক টিউন করুন

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

# /etc/coraza/custom/after-crs.conf (সিআরএস নিয়মের পরে লোড হয়) # বিশ্বব্যাপী একটি নিয়ম সরান। সংযতভাবে ব্যবহার করুন এবং কারণটি নথিভুক্ত করুন। #920350: হোস্ট হেডার হল একটি সাংখ্যিক IP ঠিকানা (আমরা স্টেজিংয়ে IP দ্বারা পরীক্ষা করি) SecRuleRemoveById 920350

দুটি ফাইলের মধ্যে বিভাজন CRS কনভেনশন অনুসরণ করে। রানটাইম এক্সক্লুশন যা ctl ব্যবহার করে: অ্যাকশনগুলি তাদের পরিবর্তন করা নিয়মের আগে চলতে হবে, তাই তারা আগের ফাইলে থাকে। SecRuleRemoveById ব্যবহার করে এমন অপসারণগুলি লোডের সময়ে কাজ করে এবং নিয়মটি বিদ্যমান থাকার পরে অবশ্যই আসতে হবে। CRS যে রেঞ্জ ব্যবহার করে তার বাইরে কাস্টম নিয়ম আইডি বেছে নিন। পরিষেবাটি পুনঃসূচনা করুন, ট্র্যাফিকটি পুনরায় চালান যা মিথ্যা পজিটিভ সৃষ্টি করে এবং নিশ্চিত করুন যে নিয়মটি লগে আর প্রদর্শিত হবে না।

ধাপ 13: ব্লকিং মোডে স্যুইচ করুন এবং লগ রোটেশন যোগ করুন

সত্যিকারের ট্র্যাফিকের কয়েক দিনের একটি শান্ত 949110 গণনা দেখালে, সুইচটি ফ্লিপ করুন। একটি লাইন পরিবর্তন করুন, পুনরায় চালু করুন এবং পাঁচটি পরীক্ষার অনুরোধ পুনরায় চালান। তারপর লগ রোটেশন যোগ করুন, কারণ একটি ব্যস্ত সাইটে একটি JSON অডিট লগ আপনার প্রত্যাশার চেয়ে দ্রুত একটি ছোট ডিস্ক পূরণ করতে পারে।

লেজ -n 3

sqli 403 ক্লিন 200

আক্রমণটি এখন একটি 403 পায় এবং পরিষ্কার অনুরোধটি এখনও 200 পায়৷ আপনার একটি কাজ আছে, WAF ব্লক করা৷ কপিট্রুনকেট বিকল্পটি ঘূর্ণনের পরে প্রক্সিকে সংকেত দেওয়ার প্রয়োজনীয়তা এড়ায়, সম্ভবত অনুলিপি করার সময় কয়েকটি লাইন হারানোর স্বল্প খরচে।

সনাক্তকরণ থেকে ব্লক করা পর্যন্ত একটি নিরাপদ রোলআউট পরিকল্পনা

ধাপ 10 থেকে 13 একটি রোলআউট সংকুচিত করে যা বাস্তব জীবনে অনেক দিন সময় নেয়। নীচের পরিকল্পনাটি তাদের একটি সময়সূচীতে প্রসারিত করে যা আপনি একটি দলের হাতে দিতে পারেন। এর যুক্তিটি সহজ: WAF কে বাস্তব ট্র্যাফিকের কাছে প্রকাশ করুন যখন এটি ব্লক করার ক্ষমতা নেই, লগগুলি যা দেখায় তা ঠিক করুন, তারপরে একে একে এক টুকরো কীগুলি হস্তান্তর করুন৷ একটি খারাপ সকালের পরে দলগুলি তাদের WAF বন্ধ করে দেওয়ার সবচেয়ে সাধারণ কারণ হল সরাসরি সম্পূর্ণ ব্লকিং এ চলে যাওয়া।

সপ্তাহ-3 সারি প্রতি-অনুরোধ নিয়ন্ত্রণের উপর নির্ভর করে। আপনার আগে-সিআরএস ফাইলের একটি নিয়ম ইঞ্জিনটিকে একটি একক পথের জন্য ব্লক করার জন্য স্যুইচ করতে পারে যখন সাইটটির বাকি অংশ সনাক্তকরণ মোডে থাকে। এটি আপনাকে একটি ছোট বিস্ফোরণ ব্যাসার্ধ সহ একটি বাস্তব উত্পাদন পরীক্ষা দেয়।

# /etc/coraza/custom/before-crs.conf # গ্লোবাল মোড শুধুমাত্র সনাক্তকরণই থাকবে। ব্লকিং শুধুমাত্র /admin/login এর অধীনে প্রযোজ্য। SecRule REQUEST_URI "@beginsWith /admin/login" \" id:10010,phase:1,pass,nolog,ctl:ruleEngine=On"

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

একটি অনুমানের পরিবর্তে একটি পরিমাপ সঙ্গে পরিকল্পনা ক্ষমতা. বর্তমান WAF ব্লকের সাথে প্রক্সির মাধ্যমে একটি লোড পরীক্ষা চালান, তারপর আবার এটি সরিয়ে দিয়ে, এবং মধ্যমা এবং 95 তম পার্সেন্টাইল লেটেন্সি উভয়ই রেকর্ড করুন। প্যারানিয়া স্তরে প্রতিটি পরিবর্তনের পরে পুনরাবৃত্তি করুন। স্টার্টআপের পরে মেমরির ব্যবহার রেকর্ড করার জন্য দ্বিতীয় নম্বর, যেহেতু সংকলিত নিয়মগুলি প্রক্রিয়াটির জীবনের জন্য RAM এ বসে। এই দুটি বেসলাইন আপনাকে বলতে দেয় যে পরবর্তী স্লোডাউন WAF থেকে আসে নাকি আপনার অ্যাপ্লিকেশন থেকে।

সম্পূর্ণ ওয়ার্কিং প্রজেক্ট: ওয়ান-স্ক্রিপ্ট বুটস্ট্র্যাপ এবং স্মোক টেস্ট

হাতে 13টি ধাপ টাইপ করা আপনাকে টুকরোগুলো শেখায়। পাঁচটি সার্ভার জুড়ে সেগুলিকে পুনরাবৃত্তি করার ফলে ভুলগুলি ঘটে। নীচের স্ক্রিপ্টটি একটি পরিষ্কার উবুন্টু হোস্ট থেকে পুরো স্ট্যাকটি পুনর্নির্মাণ করে এবং দ্বিতীয় স্ক্রিপ্টটি প্রমাণ করে যে এটি কাজ করে। প্রথমটিকে bootstrap-coraza.sh হিসাবে সংরক্ষণ করুন, এটি পর্যালোচনা করুন, তারপর sudo দিয়ে চালান। এটি সনাক্তকরণ মোডে শুরু হয়, হুবহু ম্যানুয়াল প্রবাহের মতো, এবং এটি উপরের ভেরিয়েবল থেকে প্রতিটি সংস্করণ পড়ে তাই একটি আপগ্রেড একটি দ্বি-লাইন সম্পাদনা।

{ echo "রুট হিসাবে চালান"; প্রস্থান 1; } apt-get update -y apt-get install -y curl jq git tar ufw ca-certificates snapd id caddywaf >/dev/null 2>&1 ||

স্ক্রিপ্ট অনুমান করে যে আপনার আপস্ট্রিম ইতিমধ্যেই UPSTREAM ঠিকানায় শুনছে৷ আপনি যদি ধাপ 4 অনুসরণ করেন, সেটি হল ডেমো পরিষেবা। এর পরে, ধোঁয়া পরীক্ষা। এটি অ্যাটাক সেট পাঠায়, প্রথম আর্গুমেন্ট থেকে প্রত্যাশিত স্ট্যাটাস পড়ে এবং যেকোন অমিলে নন-জিরো থেকে প্রস্থান করে, যা একটি ডিপ্লোয় পাইপলাইন বা একটি ক্রোন জবের সাথে সংযোগ স্থাপন করা সহজ করে যা WAF তার কাজ করা বন্ধ করলে আপনাকে পেজ করে।

শিফট 2 local got got=$(curl -s -o /dev/null -w '%{http_code}' "$@") if [ "$got" = "$want" ]; তারপর printf 'PASS %-6s %s\n' "$name" "$got" অন্য printf 'FAIL %-6s পেয়েছে %s, চাইছে %s\n' "$name" "$got" "$want"; ব্যর্থ = 1;

ধোঁয়া পরীক্ষা উদ্দেশ্যমূলকভাবে GET অনুরোধগুলি ব্যবহার করে, কারণ ডেমো আপস্ট্রিম (পাইথনের অন্তর্নির্মিত সার্ভার) নিজে থেকেই POST অনুরোধগুলি প্রত্যাখ্যান করে এবং স্ট্যাটাস কোডগুলিকে ঘোলা করে দেয়। আপনি যখন একটি বাস্তব অ্যাপ্লিকেশনে WAF নির্দেশ করেন, তখন POST চেক যোগ করুন যা এর লগইন এবং অনুসন্ধান ফর্মের সাথে মেলে। একটি মন্তব্য মার্কার সহ একটি খালি একক উদ্ধৃতি একটি দুর্বল সংকেত, তাই উপরে UNION SELECT স্ট্রিংয়ের মতো শক্তিশালী পেলোড দিয়ে পরীক্ষা করুন।

সাধারণ ক্ষতি যা একটি কোরাজা WAF সেটআপ ভেঙে দেয়

এই ছয়টি ভুল বেশিরভাগ ব্যর্থ স্থাপনার জন্য দায়ী যা আমরা কমিউনিটি ফোরাম এবং প্রজেক্ট ইস্যু ট্র্যাকারে বর্ণিত দেখি। লাইভে যাওয়ার আগে সেগুলি পড়ুন।

গ্লোবাল অর্ডার লাইন ভুলে যাওয়া। ক্যাডি একটি অনিবন্ধিত হ্যান্ডলার অর্ডার সম্পর্কে একটি ত্রুটি দিয়ে শুরু করতে অস্বীকার করে যদি অর্ডার coraza_waf প্রথমে অনুপস্থিত থাকে। নির্দেশিকা একটি প্লাগইন, তাই Caddy এর জন্য কোন ডিফল্ট অবস্থান নেই।

সরাসরি ব্লক করা যাচ্ছে। এমনকি প্যারানইয়া লেভেল 1-এ CRS কিছু বাস্তব ট্র্যাফিক যেমন রিচ-টেক্সট পোস্ট, JSON অনুসন্ধান ফিল্টার এবং স্বাক্ষরিত ওয়েবহুকগুলিতে ভ্রমণ করবে। প্রথমে সনাক্তকরণ মোড চালান এবং অসঙ্গতি-স্কোর এন্ট্রিগুলি পড়ুন।

ভুল ক্রমে নিয়ম লোড হচ্ছে. CRS নিয়মের আগে সেটআপ ফাইল লোড হতে হবে, আপনার ctl: exclusions লোড হতে হবে নিয়ম পরিবর্তন করার আগে, এবং আপনার অপসারণ অবশ্যই এর পরে লোড হবে। একটি ভুল আদেশ নীরবে ব্যর্থ হয়.

CRS 3 এবং CRS 4 ভেরিয়েবলের নামগুলি মিশ্রিত করা। tx.paranoia_level সেট করা স্নিপেটগুলি পুরানো লাইনের অন্তর্গত, যা Q3 2026-এ সমর্থন হারিয়েছে। CRS 4 পৃথক ব্লকিং এবং সনাক্তকরণ স্তর ব্যবহার করে।

অরিজিন নাগাল রেখে যাওয়া। আপনার আসল অ্যাপটি যে পোর্টে শোনে তা ইন্টারনেটের জন্য খোলা থাকলে, আক্রমণকারীরা সম্পূর্ণরূপে WAF এড়িয়ে যায়। আপস্ট্রিমগুলিকে লুপব্যাক বা একটি ব্যক্তিগত সাবনেটের সাথে আবদ্ধ করুন এবং অন্য সবকিছু ফায়ারওয়াল করুন।

ভুল ক্লায়েন্ট আইপি বিশ্বাস করা. একটি CDN বা লোড ব্যালেন্সারের পিছনে, অডিট লগ প্রক্সি ঠিকানা দেখায় যদি না আপনি Caddy-এ বিশ্বস্ত প্রক্সি কনফিগার করেন। সেই আইপিতে তৈরি রেট-লিমিট এবং ব্লকলিস্ট লজিক তাহলে ভুল পক্ষকে শাস্তি দেবে।

একটি সপ্তম ফাঁদ তার নিজের শাস্তি প্রাপ্য. WAF কে এক স্তর হিসাবে বিবেচনা করুন, কখনোই একমাত্র নয়। আপনি একটি দুর্বল অ্যাপ আপগ্রেড করার সময় ভার্চুয়াল প্যাচিং সময় ক্রয় করে, কিন্তু এটি কোড ফিক্সিং প্রতিস্থাপন করে না। এই স্তরের ক্লাউড-নেটিভ সমতুল্যের জন্য, একটি ALB টিউটোরিয়াল-এ আমাদের AWS WAF সেটআপের পদ্ধতির তুলনা করুন, যা CRS-এর জায়গায় পরিচালিত নিয়ম গোষ্ঠী ব্যবহার করে।

আপনার কোরাজা WAF সেটআপের সমস্যা সমাধান করা হচ্ছে

যখন কিছু ভেঙে যায়, তখন দুটি কমান্ড দিয়ে শুরু করুন: স্টার্টআপ ত্রুটির জন্য journalctl -u caddy-waf -n 50 --no-pager এবং নিয়ম কার্যকলাপের জন্য sudo tail -f /var/log/coraza/audit.log। নীচের সারণীটি একটি কারণ এবং সমাধানের জন্য বারোটি সবচেয়ে সাধারণ উপসর্গকে ম্যাপ করে।

সমস্যা 4 এর জন্য, একক সবচেয়ে নির্ভরযোগ্য চেক হল লাইভ সিস্টেমকে জিজ্ঞাসা করা যে এটি কনফিগার ফাইল পড়ার পরিবর্তে কি করছে। একটি আক্রমণ পাঠান এবং স্থিতি কোড তাকান. একটি 200 প্লাস একটি নতুন অডিট এন্ট্রি মানে সনাক্তকরণ মোড। একটি 200 এবং নো অডিট এন্ট্রি মানে নিয়মগুলি কখনই চলেনি, তাই ধাপ 8 থেকে অন্তর্ভুক্ত অর্ডার এবং বৈধতা আউটপুট দেখুন।

প্রোডাকশন কোরাজা স্থাপনার জন্য উন্নত টিপস

তারা উৎপাদনে পৌঁছানোর আগে CI-তে পরীক্ষার নিয়ম

আপনার বর্জন ফাইলগুলি কোড, তাই তাদের পরীক্ষা দিন। সিআরএস প্রকল্পটি তার রিগ্রেশন পরীক্ষাগুলি নিয়ম সেটের টেস্ট ডিরেক্টরিতে প্রেরণ করে এবং এর পরীক্ষা রানার, গো-এফটিডব্লিউ, যেকোন ইঞ্জিনের বিরুদ্ধে সেগুলি পুনরায় চালাতে পারে। যখনই আপনি CRS সংস্করণ পরিবর্তন করেন বা একটি বর্জন সম্পাদনা করেন তখনই আপনার Caddy বিল্ডের স্টেজিং কপির বিরুদ্ধে স্যুটটি চালান। আপনার নিজের কয়েকটি অনুরোধ যোগ করুন যেগুলিকে অবশ্যই অনুমোদিত থাকতে হবে, যেমন আপনার মোবাইল অ্যাপ চেকআউটের সময় যে JSON পাঠায়। একটি ব্যর্থ পরীক্ষা একটি ব্যর্থ আদেশের চেয়ে সস্তা।

সিমলিংক এবং একটি ক্যানারি দিয়ে CRS আপগ্রেড করুন

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

WAF এর সামনে একটি IP খ্যাতি স্তর যুক্ত করুন

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

রোডম্যাপের জন্য আরও একটি আইটেম। জানুয়ারী 2026-এ CRS প্রকল্পটি CRSLang চালু করেছে, একটি YAML-ভিত্তিক নিয়ম ভাষা যা এটি পরবর্তী বড় CRS রিলিজে SecLang-এর জায়গায় ব্যবহার করার পরিকল্পনা করছে। এই টিউটোরিয়ালের কিছুই এর কারণে বিরতি দেয় না, তবে আপনার কাস্টম নিয়মগুলি ছোট রাখুন এবং ভাল মন্তব্য করুন যাতে মাইগ্রেশন সস্তা থাকে। প্রতিরক্ষামূলক গাইডের বিস্তৃত সেট আমাদের সাইবার নিরাপত্তা বিভাগে বসবাস করে।

Coraza WAF সেটআপ সম্পর্কিত প্রায়শ জিজ্ঞাস্য প্রশ্নাবলী

কোরাজা কি মোডসিকিউরিটির প্রতিস্থাপন?

অনেক স্থাপনার জন্য, হ্যাঁ। Coraza একই SecLang নিয়মের ভাষা পড়ে এবং একই OWASP মূল নিয়ম সেট চালায়, এবং CRS প্রকল্পটি ModSecurity v2, ModSecurity v3 এবং Coraza সমর্থিত ইঞ্জিন হিসাবে তালিকাভুক্ত করে। আচার-আচরণ স্থানভেদে ভিন্ন হয়, তাই আপনি কাটার আগে কোরাজাতে আপনার নিয়মগুলি পরীক্ষা করুন এবং আপনি যে নির্দেশাবলীর উপর নির্ভর করেন তার জন্য প্রকল্পের সামঞ্জস্যপূর্ণ নোটগুলি পড়ুন।

নভেম্বর 2026-এ আমার কোন কোরাজা এবং CRS সংস্করণ ইনস্টল করা উচিত?

উৎপাদনের জন্য 2 অক্টোবর, 2026 সালে প্রকাশিত Coraza 3.8.1 এবং CRS 4.25.2 LTS ব্যবহার করুন। CRS 4.30.0 হল নতুন মেইনলাইন রিলিজ এবং স্টেজিং পরিবেশের জন্য উপযুক্ত। CRS 3.3 এড়িয়ে চলুন, যার সমর্থন উইন্ডোটি Q3 2026 এ শেষ হয়েছে।

কোরাজা ডাব্লুএএফ-এর কি কিছু খরচ হয়?

নং কোরাজা হল একটি ওপেন-সোর্স OWASP প্রকল্প এবং CRS হল একটি ওপেন-সোর্স নিয়ম যার কোনো অর্থপ্রদানের স্তর নেই। আপনার খরচ হল সার্ভার, টিউন করার জন্য আপনার সময় এবং আপনার যোগ করা যেকোনো লগ স্টোরেজ।

WAF প্রতিটি অনুরোধে কতটা ওভারহেড যোগ করে?

এটি প্যারানিয়ার স্তর, শরীরের আকার এবং প্রতিক্রিয়া পরিদর্শন চলছে কিনা তার উপর নির্ভর করে। আমরা একটি লেটেন্সি ফিগার প্রকাশ করি না কারণ এটি আপনার ট্রাফিকে স্থানান্তর করবে না। সনাক্তকরণ মোডে WAF এর সাথে একই লোড পরীক্ষা চালিয়ে এবং coraza_waf ব্লক সরিয়ে দিয়ে এটি নিজেই পরিমাপ করুন, তারপর 95 তম শতাংশের তুলনা করুন।

আমি কি ক্যাডির পরিবর্তে Nginx বা HAProxy এর সাথে এই সেটআপটি ব্যবহার করতে পারি?

হ্যাঁ। 5 থেকে 13 ধাপের নিয়ম ফাইল, ওভাররাইড, টিউনিং এবং লগ বিশ্লেষণ একই থাকে। শুধুমাত্র বিল্ড এবং প্রক্সি কনফিগার পরিবর্তন। Coraza Nginx, HAProxy এবং Wasm-ভিত্তিক প্রক্সিগুলির জন্য সংযোগকারী রয়েছে এবং প্রত্যেকটির নিজস্ব সংস্করণ লাইন রয়েছে, তাই ইঞ্জিনের পাশাপাশি সংযোগকারী রিলিজটিকে পিন করুন।

আমার কতক্ষণ সনাক্তকরণ মোডে থাকা উচিত?

এটি কমপক্ষে একটি সম্পূর্ণ ব্যবসা চক্রের জন্য চালান, যা সাধারণত এক সপ্তাহ। আপনি মাস-শেষের রিপোর্ট, সাপ্তাহিক ব্যাচের কাজ এবং একটি সময়সূচীতে চলা যেকোনো অ্যাডমিন কাজ দেখতে চান। যখন সাধারণ ব্যবহারকারীদের জন্য ব্লক করা ইভেন্টের দৈনিক গণনা শূন্যের কাছাকাছি হয় তখন ব্লকিং-এ স্যুইচ করুন।

একটি WAF কি আমার অ্যাপে প্রতিটি আক্রমণ বন্ধ করবে?

না। এটি পরিচিত আক্রমণের ধরণগুলিকে ব্লক করে এবং আপনাকে প্যাচ করার জন্য সময় দেয়, কিন্তু এটি ত্রুটিপূর্ণ ব্যবসায়িক যুক্তি, ভাঙা অ্যাক্সেস নিয়ন্ত্রণ বা চুরি করা শংসাপত্রগুলি ঠিক করতে পারে না। প্যাচিং চালিয়ে যান, সর্বনিম্ন বিশেষাধিকার অ্যাক্সেস রাখুন এবং আপনার নিজের অ্যাপ স্ক্যান করতে থাকুন।