সরাসরি পর্বে যান
পর্ব ৫০ · ৬২-এর মধ্যে · মডিউল ৮

প্রচলিত আক্রমণ আর প্রতিরক্ষা — DDoS, spoofing, MITM আর IDS

Common Network Attacks & Defences — Taxonomy, DDoS Capacity Math, Spoofing, MITM & HSTS, Scanning from the Defender's View, IDS/IPS and the Base-Rate Fallacy

Taught in Bangla, this lesson surveys common network attacks from the defender's view: an attack taxonomy and kill chain, DoS and DDoS types, botnets and capacity math, layered DDoS defences, spoofing, man-in-the-middle attacks and why TLS still protects, reconnaissance, scanning and password attacks, IDS and IPS with the base-rate fallacy, and logs, SIEM, honeypots and alert triage.

এই পর্বে যা শিখবেন

  • আক্রমণের একটি শ্রেণিবিভাগ — CIA, স্তর আর passive/active — আর কোনটি কোন পর্বে বিস্তারিত পড়েছেন
  • রক্ষকের চোখে আক্রমণের ধাপ (খোঁজখবর থেকে ক্ষতি পর্যন্ত), MITRE ATT&CK-এর ভাষা, আর কোন নিয়ন্ত্রণ কোন ধাপে থামায়
  • DDoS-এর তিন ধরন, botnet, ধারণক্ষমতার হিসাব, আর overprovisioning থেকে RTBH ও BCP 38 পর্যন্ত প্রতিরক্ষার স্তর — simulator চালিয়ে
  • Spoofing আর MITM-এর সাধারণ ছবি, SSL stripping কীভাবে HSTS-এ আটকায়, আর scanning ও password আক্রমণের চিহ্ন ও প্রতিরক্ষা
  • IDS/IPS-এর ধরন, false positive আর base-rate fallacy-র হিসাব, log, SIEM, honeypot আর একটি alert কীভাবে যাচাই করা হয়

শুরুতেই একটি কথা: এই পর্ব পুরোপুরি রক্ষকের দৃষ্টিকোণ থেকে লেখা। আক্রমণ কী, কেন কাজ করে আর কীভাবে ঠেকানো যায় — শুধু এটুকু ধারণা। কোনো আক্রমণ-টুল চালানোর নির্দেশনা, অন্যের নেটওয়ার্কে পরীক্ষা বা সুরক্ষা এড়ানোর কৌশল এখানে নেই, থাকবেও না। যা কিছু পরীক্ষা করবেন, শুধু নিজের যন্ত্রে, নিজের ল্যাবে বা লিখিত অনুমতি নিয়ে।

১ · আক্রমণের মানচিত্র — লক্ষ্য, স্তর আর ধরন

মডিউল ২ থেকে ৭-এ প্রায় প্রতিটি protocol-এর দুর্বল দিকও দেখেছেন — MAC table ভরানো, জাল ARP, SYN flood, DNS cache poisoning, জাল ইমেইল। এই পর্বের কাজ সেগুলোকে এক মানচিত্রে বসানো, যাতে নতুন আক্রমণের নাম শুনলেই জিজ্ঞেস করতে পারেন: “এটি কী ভাঙতে চায়, কোন স্তরে, আর প্রতিরক্ষা কোন জাতের?”

পর্ব ৪৬-এ (নেটওয়ার্ক নিরাপত্তার ভিত্তি) নিরাপত্তার তিনটি মূল লক্ষ্য দেখেছেন — একসাথে বলা হয় CIA triad:

  • Confidentiality (গোপনীয়তা): যার দেখার কথা নয়, সে দেখবে না। আড়ি পাতা এটি ভাঙে।
  • Integrity (অখণ্ডতা ও সত্যতা): বার্তা পথে বদলাবে না, আর প্রেরক যে বলে সে-ই। জাল ঠিকানা, জাল উত্তর এটি ভাঙে।
  • Availability (প্রাপ্যতা): সেবা দরকারের সময় পাওয়া যাবে। Denial of service এটি ভাঙে।

দ্বিতীয় ভাগ ধরন দিয়ে। Passive attack-এ আক্রমণকারী শুধু শোনে বা দেখে — কিছু বদলায় না, তাই ধরা কঠিন; প্রতিরক্ষা মূলত এনক্রিপশন। Active attack-এ সে packet বানায়, বদলায়, আটকায় বা বন্যা বইয়ে দেয় — ধরা তুলনামূলক সহজ, প্রতিরক্ষা যাচাই, সীমা আর ছাঁকনি।

একটি বড় বাড়ির দারোয়ানের কথা ভাবুন। কেউ জানালার নিচে কথা শুনছে (passive, গোপনীয়তা); কেউ মালিকের নামে ভুয়া চিঠি দিয়ে যাচ্ছে (active, সত্যতা); একদল লোক গেটে ভিড় করে আছে যাতে অতিথি ঢুকতে না পারেন (active, প্রাপ্যতা)। প্রতিরক্ষাও তিন রকম — পর্দা টানা, চিঠির সই মেলানো, আর মোড়েই ট্রাফিক পুলিশ।

নিচের টেবিলে কোর্সের পরিচিত আক্রমণগুলো একসাথে। শেষ কলামে বিস্তারিত যেখানে পড়েছেন — এখানে সেগুলোর পুনরাবৃত্তি করব না, শুধু সাধারণ নীতিগুলো জোড়া লাগাব।

আক্রমণস্তরযা ভাঙেধরনপ্রধান প্রতিরক্ষাকোথায় পড়েছেন
আড়ি পাতা (Wi-Fi, তারে)১–২CpassiveWPA2/WPA3, TLSপর্ব ১৪, ৪৮
Wi-Fi-র দুর্বলতা (WPS, KRACK)২C, IactiveWPS বন্ধ, firmware হালনাগাদপর্ব ১৪
MAC flooding২C, Aactiveport securityপর্ব ১২
VLAN hopping২C, IactiveDTP বন্ধ, native VLAN অব্যবহৃতপর্ব ১৩
ARP spoofing, rogue DHCP২–৩C, IactiveDHCP snooping, DAIপর্ব ১৮
ICMP flood, smurf৩Aactiverate limit, directed broadcast বন্ধপর্ব ২০
BGP prefix hijack৩ (routing)A, C, IactiveRPKI, prefix filterপর্ব ২৫
UDP reflection/amplification৩–৪AactiveBCP 38, open সেবা বন্ধ, RRLপর্ব ২৮
SYN flood৪AactiveSYN cookieপর্ব ২৯
DNS cache poisoning৭Iactiveএলোমেলো port, DNSSECপর্ব ৩৫
XSS, CSRF (cookie চুরি ও অপব্যবহার)৭C, IactiveSameSite, HttpOnly, escapingপর্ব ৩৬
Web cache poisoning/deception৭I, Cactivecache key ঠিক রাখাপর্ব ৩৮
Email spoofing, phishing৭IactiveSPF, DKIM, DMARCপর্ব ৩৯
Slowloris, ধীর অনুরোধ৭Aactivetimeout, প্রতি-IP সীমাপর্ব ৪৩, ৪৫
IP spoofing (সাধারণ)৩Iactiveingress filteringএই পর্ব, অংশ ৫
MITM, SSL stripping২–৭C, IactiveTLS যাচাই, HSTSএই পর্ব, অংশ ৬
Port scan (খোঁজখবর)৩–৪— (প্রস্তুতি)activeattack surface কমানো, নজরদারিএই পর্ব, অংশ ৭
Credential stuffing, brute force৭CactiveMFA, rate limitএই পর্ব, অংশ ৭
মূল ধারণা

কোনো একক “নিরাপত্তা যন্ত্র” এই সারির সবগুলো ঠেকায় না। Link-এর আক্রমণ থামে switch-এ, routing-এর আক্রমণ থামে RPKI-তে, application-এর আক্রমণ থামে কোডে। এজন্যই defense in depth — স্তরে স্তরে আলাদা আলাদা পাহারা।

২ · আক্রমণকারীর পথ — রক্ষকের চোখে

গুরুতর আক্রমণ সাধারণত একটি ঘটনা নয়, একটি যাত্রা। রক্ষকের জন্য এর সুখবর: আক্রমণকারীকে প্রতিটি ধাপে সফল হতে হয়, আর রক্ষক যেকোনো একটি ধাপে থামাতে পারলেই চলে।

ধাপআক্রমণকারী যা চায়রক্ষক কী দেখেযে নিয়ন্ত্রণ থামায়
১. Reconnaissance (খোঁজখবর)কোন সেবা খোলা, কোন সংস্করণ, কর্মীদের ইমেইলfirewall log-এ scan, অস্বাভাবিক DNS প্রশ্নattack surface কমানো, banner ছোট রাখা, নজরদারি
২. Initial access (প্রথম প্রবেশ)phishing, পুরোনো সফটওয়্যারের দুর্বলতা, চুরি করা পাসওয়ার্ডব্যর্থ login-এর ঢেউ, অদ্ভুত সংযুক্তিpatch, MFA, ইমেইল যাচাই (পর্ব ৩৯), WAF
৩. ঘাঁটি গাড়া (execution, persistence)নিজের প্রোগ্রাম চালানো, রিবুটের পরেও টিকে থাকানতুন সেবা, অজানা প্রক্রিয়া, ফাইল বদলHIDS, কম অনুমতি (OS নিরাপত্তা)
৪. Lateral movement (ভেতরে ছড়ানো)এক যন্ত্র থেকে পাশের সার্ভারেভেতরের যন্ত্রগুলোর মধ্যে নতুন ধরনের সংযোগsegmentation, VLAN (পর্ব ১৩), ভেতরের firewall (পর্ব ৪৯), DAI
৫. Exfiltration বা ক্ষতিডেটা বাইরে পাঠানো, এনক্রিপ্ট করে মুক্তিপণ, সেবা অচলবাইরে বড় আকারের অস্বাভাবিক upload, নিয়মিত ছন্দের সংযোগegress filtering, flow নজরদারি, ব্যাকআপ

এই ধাপগুলোর খুঁটিনাটি নাম দেওয়ার জনপ্রিয় কাঠামো MITRE ATT&CK — অলাভজনক প্রতিষ্ঠান MITRE-এর উন্মুক্ত জ্ঞানভান্ডার, যেখানে বাস্তবে দেখা আক্রমণ-আচরণ “tactic” (উদ্দেশ্য, যেমন Initial Access, Lateral Movement) আর “technique” (পদ্ধতি) হিসেবে সাজানো। রক্ষকেরা এটিকে মূলত ভাষা হিসেবে ব্যবহার করেন: “কোন technique ধরার ব্যবস্থা আছে, কোনগুলোতে আমরা অন্ধ?” এটি সরল ক্রম নয় — বাস্তব আক্রমণ ধাপ বাদ দেয়, ফিরে যায়।

DDoS এই যাত্রার বাইরে: আক্রমণকারী ঢুকতে চায় না, শুধু দরজা বন্ধ করতে চায় — তাই প্রতিরক্ষাও আলাদা জাতের।

৩ · DoS আর DDoS — তিন ধরন, botnet আর ধারণক্ষমতার অঙ্ক

DDoS-এর মূল চিন্তা একটাই: প্রতিটি সেবার কোনো না কোনো সীমিত সম্পদ আছে — link-এর bandwidth, firewall বা সার্ভারের সংযোগ-টেবিল, CPU আর ডেটাবেস। যেকোনো একটি ফুরিয়ে দিলেই আসল ব্যবহারকারীরা আর সেবা পান না। কোন সম্পদ লক্ষ্য, তা দিয়ে তিন ধরন:

ধরনযা ফুরায়মাপের এককউদাহরণমূল প্রতিরক্ষা
Volumetriclink-এর bandwidthbit প্রতি সেকেন্ড (Gbps, Tbps)UDP flood, reflection/amplification (পর্ব ২৮)উজানে ছাঁকা: anycast, scrubbing, ISP
Protocol / state exhaustionসংযোগের অবস্থা রাখার টেবিল — সার্ভারের SYN queue, firewall বা load balancer-এর conntrackpacket প্রতি সেকেন্ড (pps), নতুন সংযোগ প্রতি সেকেন্ডSYN flood (পর্ব ২৯), connection-table ভরানোSYN cookie, অবস্থাহীন ছাঁকনি, টেবিলের সীমা
Application-layerCPU, ডেটাবেস, worker, মেমরিঅনুরোধ প্রতি সেকেন্ড (rps)HTTP flood, ব্যয়বহুল search বারবার, Slowloris (পর্ব ৪৫)rate limit, cache/CDN, timeout, WAF

সূক্ষ্ম কথা: stateful firewall নিজেই state exhaustion-এর শিকার হতে পারে — টেবিল ভরলে নতুন বৈধ সংযোগও ফেলে দেয়। তাই অনেক নেটওয়ার্ক সামনে অবস্থাহীন (stateless) ছাঁকনি রাখে (পর্ব ৪৯, Firewall আর VPN).

Botnet আর Mirai — যখন ক্যামেরাই অস্ত্র

“Distributed” অংশটি আসে botnet থেকে — ক্ষতিকর সফটওয়্যারে আক্রান্ত হাজার থেকে লাখো যন্ত্র, যাদের দূর থেকে একসাথে নির্দেশ দেওয়া যায়। ২০১৬ সালের Mirai এর সবচেয়ে পরিচিত উদাহরণ: প্রকাশিত বিশ্লেষণ অনুযায়ী এটি ক্যামেরা, ভিডিও রেকর্ডার আর বাসার router-এর কারখানার ডিফল্ট পাসওয়ার্ডের সুযোগে ছড়িয়েছিল, আর একটি বড় DNS সেবাদাতার ওপর আক্রমণে বহু জনপ্রিয় ওয়েবসাইট কয়েক ঘণ্টা নাগালের বাইরে ছিল (বিস্তারিত ভাবনার প্রশ্ন ১-এ)। শিক্ষা: IoT যন্ত্রের ডিফল্ট পাসওয়ার্ড পুরো ইন্টারনেটের সমস্যা; প্রতিটি যন্ত্রের ট্রাফিক সামান্য বলে উৎসে চেনা কঠিন; আর DNS-এর মতো কেন্দ্রীয় নির্ভরতা পড়লে সবাই পড়ে। প্রকাশিত রিপোর্টে সাম্প্রতিক সবচেয়ে বড় আক্রমণগুলো “Tbps মাত্রার” — বেশিরভাগ প্রতিষ্ঠানের পুরো link-এর চেয়ে শত-হাজার গুণ বড়।

ধারণক্ষমতার অঙ্ক — কেন নিজের ঘরে বসে ঠেকানো যায় না

ধরুন একটি প্রতিষ্ঠানের ইন্টারনেট link ১০ Gbps, স্বাভাবিক ট্রাফিক ২ Gbps. একটি botnet-এ ১ লাখ আক্রান্ত যন্ত্র, প্রতিটি মাত্র ২ Mbps upload করতে পারে (একটি সাধারণ বাসার সংযোগের জন্য কম)।

আক্রমণ = ১,০০,০০০ × ২ Mbps = ২,০০,০০০ Mbps = ২০০ Gbps
link-এ মোট চাপ ২০০ + ২ = ২০২ Gbps, link নিতে পারে ১০ → প্রতি ২০২টি packet-এর মাত্র ১০টি যায়; বৈধ ট্রাফিকের মোটামুটি ১০ ÷ ২০২ ≈ ৫% পৌঁছায়

এখানে মূল কথাটি হলো কোথায় packet ফেলা হয়। ISP-র router থেকে আপনার link-এ ঢোকার মুখে queue উপচে পড়ে, আর সেখানে আসল-ভুয়া কোনো বাছবিচার হয় না (পর্ব ৫-এর queue আর loss মনে করুন)। আপনার firewall বসে আছে link-এর পরে — সে যে ১০ Gbps পায়, তার ৯৫%-ই আক্রমণ, আর সেগুলো নিখুঁতভাবে ফেলে দিলেও হারানো বৈধ ট্রাফিক আর ফেরে না। অফিসের সামনের গলিতে শত শত রিকশা দাঁড়ালে রিসেপশন যত দক্ষই হোক, অতিথি দরজা পর্যন্তই পৌঁছান না — জট খুলতে হয় মোড়ে, বড় রাস্তায়।

নিচের simulator এই সরল মডেলটি তিনভাবে চালায়: সরাসরি botnet, reflection-এ amplification বাড়ালে, আর আক্রমণকারীর উৎস-নেটওয়ার্কগুলোর কত অংশ BCP 38 মানলে কী হয়। মডেলটি ইচ্ছা করে সরল — ভরা link এলোমেলোভাবে packet ফেলে, সংখ্যাগুলো উদাহরণ।

// Simplified DDoS capacity model - illustrative numbers, not real measurements.
const LINK = 10, LEGIT = 2;                  // victim uplink 10 Gbps, normal traffic 2 Gbps
function report(label, attack) {
  const offered = attack + LEGIT;
  const ok = Math.min(1, LINK / offered);    // a full link drops packets at random
  console.log(label.padEnd(20) + "attack " + attack.toFixed(1).padStart(5) + " Gbps | link load " +
    (offered / LINK * 100).toFixed(0).padStart(4) + "% | legit delivered " + (ok * 100).toFixed(1) + "%");
}
console.log("A) Direct flood from a botnet, 2 Mbps upload per bot");
for (const bots of [1000, 10000, 100000]) report("  " + bots + " bots", bots * 2 / 1000);
console.log("B) Reflection: attacker sends 1 Gbps of spoofed requests");
for (const amp of [1, 10, 50]) report("  amplification x" + amp, 1 * amp);
console.log("C) Same x50 reflection; fraction f of attacker networks apply BCP 38");
for (const f of [0, 0.5, 0.9, 0.99]) report("  f = " + f, 1 * (1 - f) * 50);
console.log("   (model assumes spoofed traffic is spread evenly over networks)");

আউটপুট:

A) Direct flood from a botnet, 2 Mbps upload per bot
  1000 bots         attack   2.0 Gbps | link load   40% | legit delivered 100.0%
  10000 bots        attack  20.0 Gbps | link load  220% | legit delivered 45.5%
  100000 bots       attack 200.0 Gbps | link load 2020% | legit delivered 5.0%
B) Reflection: attacker sends 1 Gbps of spoofed requests
  amplification x1  attack   1.0 Gbps | link load   30% | legit delivered 100.0%
  amplification x10 attack  10.0 Gbps | link load  120% | legit delivered 83.3%
  amplification x50 attack  50.0 Gbps | link load  520% | legit delivered 19.2%
C) Same x50 reflection; fraction f of attacker networks apply BCP 38
  f = 0             attack  50.0 Gbps | link load  520% | legit delivered 19.2%
  f = 0.5           attack  25.0 Gbps | link load  270% | legit delivered 37.0%
  f = 0.9           attack   5.0 Gbps | link load   70% | legit delivered 100.0%
  f = 0.99          attack   0.5 Gbps | link load   25% | legit delivered 100.0%
   (model assumes spoofed traffic is spread evenly over networks)

(A) ১,০০০ যন্ত্রে link ৪০% — সেবা চলে; ১০ হাজারে ২২০%, বৈধ ট্রাফিকের ৪৫.৫% পৌঁছায় (১০ ÷ ২২); ১ লাখে মাত্র ৫.০% — হাতে-কষা হিসাবের সাথে মিল। (B) আক্রমণকারী একই ১ Gbps পাঠায়, শুধু amplification বদলায়: ×১০-এ বৈধের ৮৩.৩% পৌঁছায়, ×৫০-এ ১৯.২% — খরচ না বাড়িয়ে ক্ষতি বহুগুণ। (C) অর্ধেক নেটওয়ার্ক BCP 38 মানলে আক্রমণ ২৫ Gbps, ৯০% মানলে ৫ Gbps — link সামলে নেয়। কিন্তু শেষ লাইনের সতর্কতা জরুরি: বাস্তবে আক্রমণকারী ঠিক সেই নেটওয়ার্কগুলোই বেছে নেয় যারা filtering করে না, তাই ৯৯% মানলেও বাকি ১% থেকে পুরো আক্রমণ আসতে পারে। নিজে চেষ্টা করুন: LINK = 10 বদলে 100 করুন।

৪ · DDoS-এর প্রতিরক্ষা — নিজের ঘর থেকে ইন্টারনেটের উজান পর্যন্ত

ধারণক্ষমতার অঙ্ক থেকেই প্রতিরক্ষার নকশা আসে: আক্রমণ যত বড়, তাকে তত উজানে, তত বড় আর ছড়ানো নেটওয়ার্কে থামাতে হয়। কাছ থেকে দূরে স্তরগুলো:

নিজের ঘরে

Overprovisioning (দরকারের চেয়ে বড় link ও সার্ভার), rate limiting, SYN cookie (পর্ব ২৯), timeout আর সংযোগের সীমা (পর্ব ৪৩, ৪৫)। State আর application আক্রমণে কার্যকর, বড় volumetric-এ নয়।

ছোট ও মাঝারি আক্রমণ

ছড়িয়ে দেওয়া: anycast আর CDN

Anycast-এ একই ঠিকানা বহু শহর থেকে ঘোষণা হয় (পর্ব ২৫), তাই আক্রমণ প্রতিটি botnet-যন্ত্রের কাছের কেন্দ্রে ভাগ হয়ে যায়। CDN (পর্ব ৩৮) cache থেকে উত্তর দেয়, HTTP flood মূল সার্ভারে কম পৌঁছায়।

ভার ভাগ করা

Scrubbing

Scrubbing center: আক্রমণের সময় সেবাদাতা BGP দিয়ে শিকারের prefix নিজের দিকে টানে, আক্রমণের ধাঁচ (কেউ চায়নি এমন DNS উত্তর) ফেলে, আর পরিষ্কার ট্রাফিক tunnel-এ শিকারের কাছে পাঠায়।

বড় volumetric আক্রমণ

ISP-র সহযোগিতা

RTBH (remotely triggered black hole): শিকার BGP-র একটি বিশেষ community দিয়ে ISP-কে আক্রান্ত IP-র সব ট্রাফিক ISP-র সীমানাতেই ফেলে দিতে বলে। Flowspec: BGP দিয়েই আরও সূক্ষ্ম নিয়ম পাঠানো — যেমন এই গন্তব্যে UDP উৎস-port 123-এর ট্রাফিক বাদ।

শেষ অস্ত্র

RTBH কঠিন আপস: আক্রান্ত IP-টি পুরো অচল — এক অর্থে আক্রমণকারীর কাজই সম্পূর্ণ — কিন্তু একই link-এর বাকি সবাই বাঁচে। Flowspec সূক্ষ্মতর, তবে ভুল নিয়ম ছড়ালে বিপুল বৈধ ট্রাফিকও আটকায়। (BLACKHOLE community RFC 7999-এ, Flowspec-এর বর্তমান মান RFC 8955-এ; কোন ISP কী সমর্থন করে তা চুক্তি ভেদে আলাদা।)

মূলে আঘাত: BCP 38 আর BCP 84 — আর কেন spoofing টিকে আছে

Reflection আক্রমণ সম্ভব শুধু একটি কারণে: কোনো নেটওয়ার্ক তার গ্রাহকদের অন্যের উৎস-ঠিকানা বসিয়ে packet পাঠাতে দেয়। Ingress filtering — BCP 38 (RFC 2827, ২০০০) — বলে ISP যেন গ্রাহকের দিক থেকে আসা packet-এর উৎস-ঠিকানা সেই গ্রাহকের নিজের ঠিকানা-ব্লকের কি না যাচাই করে। BCP 84 (RFC 3704, পরে RFC 8704-এ হালনাগাদ) একাধিক ISP-তে যুক্ত (multihomed) নেটওয়ার্কের জন্য এর বাস্তব পদ্ধতিগুলো বর্ণনা করে, যার পরিচিত রূপ uRPF: “এই উৎস-ঠিকানায় ফেরার পথ কি এই interface দিয়েই?” — না হলে packet ফেলা (strict mode), বা অন্তত routing table-এ ঠিকানাটির কোনো পথ আছে কি না দেখা (loose mode).

তবু spoofing টিকে আছে, কারণ এটি প্রণোদনার সমস্যা: filtering-এর খরচ ISP-র, লাভ বাকি পৃথিবীর, আর একটি অবহেলিত নেটওয়ার্কই আক্রমণকারীর জন্য যথেষ্ট (পর্ব ২৮-এর ভাবনার প্রশ্নে বিস্তারিত)। তাই MANRS-এর মতো স্বেচ্ছা উদ্যোগ, প্রতিফলক কমানো আর নকশায় সতর্কতাও লাগে।

এবার পুরো ছবিটি ধাপে ধাপে দেখি: একটি reflection-amplification আক্রমণ পথে কোথায় কোথায় থামানো যায়। সংখ্যাগুলো উদাহরণ — simulator-এর মডেলের সাথে মেলানো।

  1. Botnetsrc = শিকারজাল উৎস
  2. উৎস ISPBCP 38অর্ধেক নেটওয়ার্কে
  3. প্রতিফলক×50খোলা resolver
  4. RRLসীমিত উত্তরসচেতন অপারেটর
  5. শিকারের link10 Gbpsভরা?
  6. Scrubbinganycastউজানে ছাঁকা
ট্রাফিকের হিসাব (উদাহরণ)
জাল অনুরোধ
শিকারের দিকে উত্তর
শিকারের link
কোথায় থামল
  1. Botnet জাল উৎস দিয়ে অনুরোধ পাঠায়। উৎস-ঠিকানায় শিকারের IP বসিয়ে ছোট DNS-এর মতো প্রশ্ন, মোট ১ Gbps. শিকারের link তখনো ২০% — শুধু ২ Gbps বৈধ ট্রাফিক।
  2. প্রথম ছাঁকনি: BCP 38. Ingress filtering করা নেটওয়ার্কে “অন্যের ঠিকানার” packet সীমানাতেই বাদ। ধরি অর্ধেক ট্রাফিক এমন নেটওয়ার্ক থেকে — ০.৫ Gbps বেরোল; বাকি অর্ধেক নেটওয়ার্ক যাচাই করে না।
  3. প্রতিফলক উত্তর বড় করে পাঠায়। খোলা resolver-গুলো প্রতিটি প্রশ্নের ৫০ গুণ বড় উত্তর পাঠায় শিকারের দিকে: ০.৫ × ৫০ = ২৫ Gbps. শিকার দেখে ট্রাফিক আসছে হাজারো বৈধ সার্ভার থেকে।
  4. দ্বিতীয় ছাঁকনি: সচেতন অপারেটর। ভালোভাবে চালানো সার্ভারগুলো recursive সেবা শুধু নিজের গ্রাহকদের দেয় আর RRL চালায় — একই ঠিকানায় বারবার একই বড় উত্তর পাঠানো সীমিত। ধরি এতে উত্তর ৬০% কমল: ২৫ × ০.৪ = ১০ Gbps.
  5. শিকারের link ভরে যায়। ১০ Gbps আক্রমণ আর ২ Gbps বৈধ মিলে ১২ Gbps, link নেয় ১০ — চাপ ১২০%, বৈধ ট্রাফিকের মোটামুটি ১০ ÷ ১২ ≈ ৮৩% পৌঁছায় (simulator-এর ×১০ সারি)। পেছনের firewall যত ভালোই হোক, জট তার আগেই।
  6. তৃতীয় ছাঁকনি: উজানে scrubbing. শিকারের scrubbing সেবাদাতা BGP দিয়ে prefix নিজের anycast কেন্দ্রগুলোতে টানে। আক্রমণ বহু কেন্দ্রে ভাগ হয়ে যায়, সেখানে “কেউ চায়নি এমন উৎস-port 53-এর বড় উত্তর” ফেলা হয়, আর পরিষ্কার ২ Gbps শিকারের কাছে যায় — link আবার ২০%.

৫ · Spoofing — সাধারণ ছবি: কী জাল হয়, কে ধরে

Spoofing মানে নিজেকে অন্য কেউ বলে দেখানো। নেটওয়ার্কে প্রায় প্রতিটি পরিচয়-চিহ্ন প্রেরক নিজেই লেখে — খামের ওপর প্রেরকের ঠিকানার মতো। তাই প্রশ্ন একই: “প্রাপক কীসের ভিত্তিতে বিশ্বাস করছে, আর তা যাচাইয়ের উপায় কী?”

ধরনকী জাল করা হয়কী সম্ভব হয়প্রতিরক্ষা
IP spoofingIP header-এর উৎস-ঠিকানাreflection, SYN flood-এর উৎস লুকানো, ঠিকানা-ভিত্তিক বিশ্বাস ভাঙাBCP 38/84, uRPF; IP ঠিকানাকে কখনো পরিচয়ের প্রমাণ না ধরা
MAC spoofingEthernet frame-এর উৎস MACMAC-ভিত্তিক অনুমতি এড়ানো, switch-এর table বিভ্রান্ত করাport security, 802.1X (পর্ব ১২, ১৪)
ARP spoofingIP থেকে MAC-এর জোড়াLAN-এ MITM, gateway সেজে বসাDAI + DHCP snooping (পর্ব ১৮), এনক্রিপশন
DNS spoofingনামের উত্তরভুয়া ওয়েবসাইটে পাঠানোএলোমেলো port ও ID, DNSSEC, এনক্রিপ্টেড DNS (পর্ব ৩৫)
Email spoofingFrom: ডোমেইনphishing, ভুয়া নির্দেশSPF, DKIM, DMARC (পর্ব ৩৯)
BGP-তে origin“এই prefix আমার”ইন্টারনেট-মাত্রার ট্রাফিক ঘুরিয়ে দেওয়াRPKI, prefix filter (পর্ব ২৫)
কল বা SMS-এর প্রেরকদেখানো নম্বর বা নামব্যাংক বা মোবাইল ব্যাংকিংয়ের নামে প্রতারণাOTP বা PIN কাউকে না বলা, অফিসিয়াল নম্বরে নিজে ফোন করে যাচাই

TCP কেন অন্ধ spoofing কঠিন করে

UDP-তে জাল উৎস দিয়ে একটি packet পাঠালেই কাজ শেষ — তাই reflection. কিন্তু TCP-তে জাল ঠিকানায় পূর্ণ সংযোগ গড়া প্রায় অসম্ভব (পর্ব ২৯): সার্ভারের SYN-ACK যায় আসল ঠিকানার মালিকের কাছে, আক্রমণকারী তা দেখেই না (“অন্ধ”)। তাকে সার্ভারের ISN অনুমান করে ঠিক ACK পাঠাতে হবে; আধুনিক OS ISN এলোমেলো ৩২ bit-এর সংখ্যা হিসেবে বেছে নেয় (RFC 6528-এর পরামর্শ), তাই এক চেষ্টায় সম্ভাবনা প্রায় ২৩২-এ ১। উপরন্তু আসল মালিক অপ্রত্যাশিত SYN-ACK পেলে RST পাঠিয়ে সংযোগ ভেঙে দেয়।

১৯৮০-র দশকে অনেক সিস্টেমের ISN অনুমানযোগ্য ছিল, আর ১৯৯০-এর দশকের মাঝামাঝি একটি বহুল আলোচিত অনুপ্রবেশে সেই দুর্বলতা আর “এই IP থেকে এলে বিশ্বাস” ধরনের পুরোনো সেবা একসাথে কাজে লাগানো হয়েছিল। শিক্ষা: উৎস IP ঠিকানা কখনো পরিচয়ের প্রমাণ নয় — প্রমাণ আসে cryptography থেকে (পর্ব ৪৭)। SYN flood-এ জাল উৎস কাজ করে, কারণ সেখানে সংযোগ সম্পূর্ণ করার দরকারই নেই — শুধু অর্ধেক-খোলা অবস্থায় টেবিল ভরানো, যার উত্তর SYN cookie.

৬ · MITM — পথের মাঝে বসা, আর কেন TLS তবু রক্ষা করে

Man-in-the-middle আক্রমণে আক্রমণকারী দুই পক্ষের মাঝে বসে — দুজনেই ভাবেন তাঁরা সরাসরি কথা বলছেন। মাঝখানে বসার পথ অনেক, প্রতিটি আগের কোনো পর্বের আক্রমণ:

মাঝে বসার পথপরিসরপ্রতিরক্ষা
ARP spoofing — gateway সেজে বসাএকই LANDAI, DHCP snooping (পর্ব ১৮)
Rogue AP বা evil twin — পরিচিত Wi-Fi-র নামে নকল নেটওয়ার্ককাছাকাছি বেতারWPA3, 802.1X-এ সার্ভার certificate যাচাই, অচেনা খোলা Wi-Fi-তে সতর্কতা (পর্ব ১৪)
Rogue DHCP বা বিষাক্ত DNS — ভুল resolver বা ভুল উত্তরLAN থেকে ISPDHCP snooping, DNSSEC, এনক্রিপ্টেড DNS (পর্ব ১৮, ৩৫)
BGP hijack — অন্যের prefix ঘোষণাপুরো ইন্টারনেটRPKI (পর্ব ২৫)
আপস করা router বা proxyযেকোনো জায়গায়হালনাগাদ firmware, ডিফল্ট পাসওয়ার্ড বদল, end-to-end TLS

সবচেয়ে গুরুত্বপূর্ণ উপলব্ধি: মাঝে বসতে পারা আর বিষয়বস্তু পড়তে পারা এক নয়। সংযোগ TLS-এ হলে আর ব্রাউজার certificate ঠিকভাবে যাচাই করলে (পর্ব ৪৮, TLS আর HTTPS), আক্রমণকারী শুধু metadata দেখে আর চাইলে সংযোগ আটকায় — পড়তে বা বদলাতে পারে না। তাই তার লক্ষ্য TLS এড়ানো: ব্যবহারকারীকে TLS-এ যেতেই না দেওয়া (SSL stripping), বা ভুয়া certificate দেখিয়ে আশা করা যে সতর্কবার্তা উপেক্ষিত হবে।

SSL stripping আর HSTS

বেশিরভাগ মানুষ address bar-এ শুধু bank.example লেখেন। পুরোনো দিনে ব্রাউজার তখন প্রথম অনুরোধ সরল http://-তে পাঠাত, আর সার্ভার বলত “https-এ যান”। এই প্রথম, এনক্রিপশনহীন মুহূর্তটিই SSL stripping-এর সুযোগ। ২০০৯ সালে কৌশলটি জনসমক্ষে দেখানোর পর প্রতিরক্ষা হিসেবে আসে HSTS (RFC 6797, ২০১২): সার্ভার একটি header পাঠায় — Strict-Transport-Security: max-age=31536000; includeSubDomains — আর ব্রাউজার মনে রাখে যে নির্দিষ্ট সময় এই ডোমেইনে শুধু https চলবে।

  1. ব্যবহারকারীbank.exampleক্যাফের Wi-Fi
  2. Evil twinFree_WiFiমাঝে বসা
  3. ব্যাংকhttpsআসল সার্ভার
  4. ফল?দুই জগৎ
একই চেষ্টা, দুই ব্রাউজার
HSTS নেই
HSTS আছে
  1. ব্যবহারকারী অচেনা Wi-Fi-তে। ক্যাফেতে “Free_WiFi” নামের একটি নেটওয়ার্কে যুক্ত হয়েছেন — আসলে এটি আক্রমণকারীর বানানো evil twin, তাই সব ট্রাফিক তার যন্ত্রের মধ্য দিয়ে যায়। Address bar-এ লিখলেন শুধু bank.example.
  2. প্রথম অনুরোধ। HSTS না থাকলে ব্রাউজার প্রথম অনুরোধ এনক্রিপশন ছাড়া পাঠায় — আক্রমণকারী সেটি পড়তে ও বদলাতে পারে। HSTS থাকলে ব্রাউজার নেটওয়ার্কে কিছু পাঠানোর আগেই ঠিকানা https করে নেয় (ব্রাউজারের ভেতরের redirect).
  3. Redirect বা handshake. HSTS ছাড়া: আক্রমণকারী ব্যাংকের “https-এ যান” লুকিয়ে নিজে ব্যাংকের সাথে https-এ কথা বলে, ব্যবহারকারীকে http-তে পাতা দেখায়। HSTS-সহ: সরাসরি TLS handshake — আক্রমণকারীকে প্রমাণ করতে হবে সে-ই bank.example.
  4. চূড়ান্ত পরীক্ষা। HSTS ছাড়া ব্যবহারকারী login ফর্মে পাসওয়ার্ড দিলেন, তা সরল লেখায় আক্রমণকারীর কাছে গেল। HSTS-সহ আক্রমণকারীর কাছে বিশ্বস্ত CA-র বৈধ certificate নেই, তাই ত্রুটি — আর HSTS ডোমেইনে “তবু এগিয়ে যান” পথ রাখা হয় না।
  5. ফল। প্রথম জগতে আক্রমণ নীরবে সফল — শুধু তালার চিহ্নটি নেই। দ্বিতীয় জগতে পাতা খোলেনি, কিন্তু এটি নিরাপদ ব্যর্থতা: ব্যবহারকারী বুঝলেন কিছু একটা ঠিক নেই, আর কোনো গোপন তথ্য বেরোয়নি।

HSTS-এর দুর্বল জায়গা একেবারে প্রথম ভিজিট, header পাওয়ার আগে (“trust on first use”). সমাধান HSTS preload তালিকা — ব্রাউজারের ভেতরেই লেখা ডোমেইন, যেখানে প্রথম ভিজিট থেকেই শুধু https.

Certificate সতর্কবার্তা — কেন “তবু এগিয়ে যান” চাপবেন না

HSTS না থাকলে certificate সতর্কবার্তাই MITM-এর প্রায় একমাত্র দৃশ্যমান সংকেত। গবেষণায় বারবার দেখা গেছে, অভ্যাসবশে অনেকে এটি পেরিয়ে যান — বিশেষ করে ভুল কনফিগারেশনের কোনো সাইটে প্রতিদিন দেখলে। নিয়ম সহজ: ব্যাংক, ইমেইল বা অফিসের সেবায় সতর্কবার্তা এলে থামুন, অন্য নেটওয়ার্ক (নিজের মোবাইল ডেটা) থেকে চেষ্টা করুন। আর সার্ভার চালালে নিজের certificate কখনো মেয়াদোত্তীর্ণ বা ভুল নামের রাখবেন না, যাতে ব্যবহারকারীরা সতর্কবার্তায় অভ্যস্ত না হন।

দুই দিকের যাচাই — mutual authentication

সাধারণ HTTPS-এ শুধু সার্ভার নিজেকে প্রমাণ করে। Mutual TLS (mTLS)-এ ক্লায়েন্টও নিজের certificate দেখায় — যন্ত্রে-যন্ত্রে যোগাযোগে, ব্যাংকের API-তে, VPN আর 802.1X-এ প্রচলিত (পর্ব ১৪, ৪৯)। তখন private key চুরি না হলে মাঝের আক্রমণকারী কোনো পক্ষকেই ঠকাতে পারে না।

৭ · খোঁজখবর, scanning আর password আক্রমণ — রক্ষকের চোখে

আইন ও নৈতিকতা: যে নেটওয়ার্ক বা যন্ত্র আপনার নিজের নয়, বা যেটি পরীক্ষার লিখিত অনুমতি আপনার নেই, সেখানে scan চালানো অনৈতিক, আর বাংলাদেশসহ বহু দেশের সাইবার আইনে অনুমতিহীন প্রবেশ বা তার চেষ্টা দণ্ডনীয় হতে পারে — ISP, প্রতিবেশীর Wi-Fi, বিশ্ববিদ্যালয় বা অফিসের সার্ভার, কোনোটিই নয়। এই অংশ শুধু বোঝার জন্য: scan দেখতে কেমন, আর নিজের যন্ত্র কীভাবে কম উন্মুক্ত রাখবেন।

আক্রমণের প্রথম ধাপ প্রায় সবসময় reconnaissance. একটি port scan অনেক port-এ সংযোগের চেষ্টা করে দেখে কে সাড়া দেয় — খোলা TCP port SYN-ACK দেয়, বন্ধ port RST দেয় (পর্ব ২৯), firewall-এ আটকানো port চুপ থাকে। এই আচরণের কারণেই scan রক্ষকের log-এ স্পষ্ট দাগ রাখে। নিচে একটি Linux firewall log-এর উদাহরণ (বানানো, ঠিকানা ডকুমেন্টেশন ব্লকের):

# উদাহরণ — firewall drop log (সংক্ষিপ্ত করা)
02:14:07 DROP IN=eth0 SRC=203.0.113.66 DST=198.51.100.10 PROTO=TCP SPT=41822 DPT=23   SYN
02:14:07 DROP IN=eth0 SRC=203.0.113.66 DST=198.51.100.10 PROTO=TCP SPT=41822 DPT=3389 SYN
02:14:07 DROP IN=eth0 SRC=203.0.113.66 DST=198.51.100.10 PROTO=TCP SPT=41822 DPT=445  SYN
02:14:08 DROP IN=eth0 SRC=203.0.113.66 DST=198.51.100.10 PROTO=TCP SPT=41822 DPT=6379 SYN
... (একই উৎস থেকে এক মিনিটে প্রায় ৯০০টি ভিন্ন DPT)

চিহ্নগুলো: এক উৎস, অনেক গন্তব্য-port, অল্প সময়; প্রায় সব SYN, handshake প্রায় সম্পূর্ণ হয় না; port-গুলো প্রায়ই পরিচিত সেবার। উল্টো ধরনও আছে: এক port, অনেক গন্তব্য-ঠিকানা। আর মনে রাখুন, ইন্টারনেটের যেকোনো public ঠিকানা প্রতিদিনই অসংখ্য স্বয়ংক্রিয় scan পায় — প্রশ্ন হলো খোলা অবস্থায় তারা কী পাবে।

নিজের যন্ত্রে কী খোলা আছে — attack surface কমানো

রক্ষকের প্রথম কাজ নিজের attack surface জানা। শুরু নিজের যন্ত্রেই: Linux-এ ss -tuln (পর্ব ০৬) দেখায় কোন TCP আর UDP socket কোন ঠিকানায় শুনছে। একটি সার্ভারের উদাহরণ আউটপুট:

$ ss -tuln        # উদাহরণ আউটপুট, একটি সাধারণ Linux সার্ভার
Netid State  Recv-Q Send-Q Local Address:Port  Peer Address:Port
udp   UNCONN 0      0          127.0.0.53%lo:53         0.0.0.0:*
tcp   LISTEN 0      4096         127.0.0.1:5432        0.0.0.0:*
tcp   LISTEN 0      128            0.0.0.0:22          0.0.0.0:*
tcp   LISTEN 0      511            0.0.0.0:443         0.0.0.0:*
tcp   LISTEN 0      511            0.0.0.0:6379        0.0.0.0:*

127.0.0.1 মানে শুধু এই যন্ত্রের ভেতর থেকে পৌঁছানো যায় — ডেটাবেস (5432) ঠিক জায়গায়। 0.0.0.0 মানে সব interface, বাইরে থেকেও। 443 (ওয়েবসাইট) খোলা থাকাই উদ্দেশ্য; 22 (SSH)-এ শুধু key-ভিত্তিক login আর নির্দিষ্ট উৎসের সীমা ভালো। কিন্তু 6379 (একটি in-memory ডেটাবেস, সাধারণত শুধু ভেতরের ব্যবহারের) সব interface-এ শুনছে — 127.0.0.1-এ bind করা বা firewall-এ আটকানো দরকার। নীতিগুলো:

  • যা দরকার নেই, বন্ধ করুন; যা দরকার, শুধু দরকারি interface আর উৎসে সীমিত করুন (পর্ব ৪৯), প্রশাসনিক সেবা VPN-এর পেছনে।
  • Banner ছোট রাখুন: অনেক সেবা শুরুতে বা header-এ নিজের নাম আর সংস্করণ জানায় (service banner). কমালে স্বয়ংক্রিয় খোঁজে কম তথ্য যায় — তবে এটি গৌণ; আসল প্রতিরক্ষা patch.
  • বাইরের চোখে যাচাই হয় নিরাপত্তা দলের অনুমোদিত পরীক্ষা বা লিখিত চুক্তির penetration test-এ — ব্যক্তিগত কৌতূহলে নয়।

Password আক্রমণ — brute force থেকে credential stuffing

খোলা login সেবা পেলে সবচেয়ে সহজ পথ পাসওয়ার্ড অনুমান: brute force — একটি অ্যাকাউন্টে বহু পাসওয়ার্ড; password spraying — বহু অ্যাকাউন্টে অল্প কয়েকটি প্রচলিত পাসওয়ার্ড; আর credential stuffing — অন্য সাইট থেকে ফাঁস হওয়া username-password জোড়া এখানে চেষ্টা।

প্রতিরক্ষাসীমা ও আপস
প্রতি-IP rate limitNAT বা CGNAT-এর পেছনের বহু বৈধ ব্যবহারকারী ভুলে আটকায়; হাজারো IP-র ধীর botnet ধরা পড়ে না
প্রতি-অ্যাকাউন্ট সীমা ও ক্রমবর্ধমান দেরিspraying ধরতে সব অ্যাকাউন্ট মিলিয়ে দেখতে হয়
Account lockoutআক্রমণকারী ইচ্ছা করে অন্যের অ্যাকাউন্ট বন্ধ করাতে পারে — নিজেই এক ধরনের DoS; তাই সাময়িক lockout বেশি প্রচলিত
MFAসবচেয়ে কার্যকর; SMS-এর কোড SIM বদল আর phishing-এর ঝুঁকিতে, hardware key সবচেয়ে শক্ত
fail2ban-ধাঁচের স্বয়ংক্রিয় blocklog পড়ে বারবার ব্যর্থ IP-কে সাময়িক আটকায়; প্রতি-IP সীমার সব দুর্বলতা আছে
SSH-এ শুধু key, ফাঁস হওয়া পাসওয়ার্ড বাতিলঅনুমান করার মতো কিছু থাকে না; key-র সুরক্ষা নিজের দায়িত্ব

এখন একটি token bucket (পর্ব ২৬) দিয়ে login-এর প্রতি-IP সীমা simulate করি: প্রতিটি IP-র বালতিতে সর্বোচ্চ ৫টি token, প্রতি ১০ সেকেন্ডে একটি জমে, প্রতিটি চেষ্টায় একটি খরচ। ৬০ সেকেন্ডে চার ধরনের ক্লায়েন্ট: ৮ জন সাধারণ ব্যবহারকারী (প্রত্যেকে ২ বার), NAT-এর পেছনে ১২ জন কর্মীর একটি অফিস (এক IP), ৩টি IP থেকে সেকেন্ডে ৩টি করে credential stuffing, আর ৫০টি IP-র একটি ধীর botnet, প্রতিটি মাত্র ২ বার।

// Per-IP token bucket for login attempts: 5 burst, refill 1 token every 10 s.
const CAP = 5, RATE = 0.1;                   // tokens per second
const events = [];                           // [time s, source IP, kind]
for (let u = 1; u <= 8; u++) events.push([u * 7, "10.1.0." + u, "user"], [u * 7 + 3, "10.1.0." + u, "user"]);
for (let i = 0; i < 12; i++) events.push([2 + 2 * i, "203.0.113.50", "office NAT"]);    // 12 staff, 1 IP
for (const ip of ["198.51.100.7", "198.51.100.8", "198.51.100.9"])
  for (let t = 0; t < 60; t += 1 / 3) events.push([t, ip, "stuffing"]);                // 3 tries/s each
for (let b = 1; b <= 50; b++) events.push([b, "192.0.2." + b, "slow bots"], [b + 5, "192.0.2." + b, "slow bots"]);
events.sort((a, b) => a[0] - b[0]);
const bucket = {}, stat = {};
for (const [t, ip, kind] of events) {
  const s = bucket[ip] || (bucket[ip] = { tokens: CAP, last: t });
  s.tokens = Math.min(CAP, s.tokens + (t - s.last) * RATE); s.last = t;     // refill
  const k = stat[kind] || (stat[kind] = { ips: new Set(), ok: 0, blocked: 0 });
  k.ips.add(ip);
  if (s.tokens >= 1) { s.tokens -= 1; k.ok++; } else k.blocked++;
}
console.log("kind          IPs  allowed  blocked");
for (const [kind, k] of Object.entries(stat))
  console.log(kind.padEnd(13), String(k.ips.size).padStart(3), String(k.ok).padStart(8), String(k.blocked).padStart(8));
console.log("false blocks (legit users refused):", stat["user"].blocked + stat["office NAT"].blocked);
console.log("abusive attempts that got through:", stat["stuffing"].ok + stat["slow bots"].ok);

আউটপুট:

kind          IPs  allowed  blocked
stuffing        3       30      510
slow bots      50      100        0
office NAT      1        7        5
user            8       16        0
false blocks (legit users refused): 5
abusive attempts that got through: 130

প্রতিটি stuffing IP ১৮০ বার চেষ্টা করে পেরেছে ১০ বার (শুরুর ৫টি token আর ৬০ সেকেন্ডে জমা নতুন token) — ৫৪০-এর ৫১০টি আটকাল, আর সাধারণ ব্যবহারকারীরা কোনো বাধা পাননি। কিন্তু দুটি সমস্যা: অফিসের NAT-এ ১২ জনের ৫ জন আটকালেন (২২ সেকেন্ডে ৫ + ২.২ ≈ ৭টি token) — এগুলো false block; বাংলাদেশসহ অনেক দেশে মোবাইল ডেটায় CGNAT-এর কারণে বহু গ্রাহক এক public IP ভাগ করেন, তাই সমস্যাটি বাস্তব। আর ধীর botnet-এর ১০০টি চেষ্টাই পার পেল। শিক্ষা: প্রতি-IP সীমা দরকারি কিন্তু যথেষ্ট নয় — সাথে প্রতি-অ্যাকাউন্ট নজরদারি আর MFA. অনুশীলন ৩-এ CAP বদলে দেখুন।

৮ · IDS আর IPS — আক্রমণ চেনার যন্ত্র, আর তার গাণিতিক সীমা

Firewall নিয়ম মেনে দরজা খোলে বা বন্ধ রাখে; খোলা দরজা দিয়ে যা ঢোকে তা ভালো না খারাপ — দেখে IDS (intrusion detection system), আর সন্দেহজনক কিছু পেলে সতর্ক করে। IPS একই বিশ্লেষণ করে ট্রাফিকের পথে (inline) বসে, সন্দেহজনক packet সরাসরি ফেলে দেয়।

ধরনকীভাবে কাজ করেশক্তিদুর্বলতা
NIDS (network)switch-এর mirror port বা TAP থেকে ট্রাফিকের কপিপুরো নেটওয়ার্ক এক জায়গা থেকেএনক্রিপ্টেড ট্রাফিকের ভেতরে অন্ধ
HIDS (host)যন্ত্রের log, ফাইলের বদল, প্রক্রিয়াএনক্রিপশনের পরের অবস্থা দেখেপ্রতিটি যন্ত্রে বসাতে হয়
Signature-basedচেনা আক্রমণের ধাঁচ মেলানোকম ভুয়া alertনতুন (zero-day) বা বদলানো আক্রমণ মিস
Anomaly-basedস্বাভাবিকের baseline থেকে বিচ্যুতি খোঁজাঅচেনা আক্রমণও ধরেবেশি ভুয়া alert
Inline IPSপ্রতিটি packet তার মধ্য দিয়ে যায়সাথে সাথে থামায়ভুয়া alert-এ বৈধ ট্রাফিক বন্ধ; যন্ত্র বিকল হলে fail-open না fail-closed — কঠিন সিদ্ধান্ত

প্রচলিত তিনটি open-source নাম: Snort (১৯৯৮ সালে প্রথম প্রকাশ, signature-ভিত্তিক NIDS/IPS-এর পথিকৃৎ), Suricata (বহু-thread-এ চলে, Snort-ধাঁচের নিয়মের বড় অংশ বোঝে), আর Zeek (আগের নাম Bro; মূলত সংযোগ, DNS, HTTP, TLS-এর বিস্তারিত log বানানো আর script দিয়ে বিশ্লেষণের জন্য পরিচিত)। একটি নিরীহ, নীতিমালা-ধাঁচের নিয়মের উদাহরণ:

# উদাহরণ — Snort/Suricata ধাঁচের নিয়ম (সঠিক syntax সংস্করণ ভেদে আলাদা হতে পারে)
# নীতি: ভেতরের কোনো যন্ত্র যেন এনক্রিপশনহীন telnet ব্যবহার না করে
alert tcp $HOME_NET any -> any 23 (msg:"POLICY outbound telnet (unencrypted)"; flags:S; sid:1000001; rev:1;)

বাঁ থেকে ডানে: alert — মিললে কী হবে (IPS-এ হতে পারত drop); tcp; নিজের নেটওয়ার্কের যেকোনো port থেকে যেকোনো গন্তব্যের port 23; বন্ধনীতে বার্তা, শর্ত (flags:S — শুধু প্রথম SYN) আর নিয়মের পরিচয় নম্বর।

এনক্রিপশনের যুগে IDS — বিষয়বস্তু নয়, metadata

আজ ওয়েব ট্রাফিকের বেশিরভাগ TLS বা QUIC-এ এনক্রিপ্টেড, তাই NIDS ভেতরের লেখা পড়তে পারে না। রক্ষকেরা সরে এসেছেন যন্ত্রের ভেতরে (HIDS আর endpoint নজরদারি), কোথাও প্রতিষ্ঠানের নিজের proxy-তে নিয়ন্ত্রিত TLS interception-এ (বড় আপসসহ, পর্ব ৪৮), আর flow বিশ্লেষণে। NetFlow বা তার মানসম্মত উত্তরসূরি IPFIX (RFC 7011) প্রতিটি কথোপকথনের সারসংক্ষেপ দেয় — কে, কার সাথে, কোন port-এ, কখন, কত বাইট — বিষয়বস্তু ছাড়াই। এতেই ধরা যায় scan (এক উৎস, অনেক port), DDoS (হঠাৎ বিপুল pps), নিয়মিত ছন্দে বাইরের এক ঠিকানায় ছোট সংযোগ, বা রাত তিনটায় বাইরে কয়েক GB upload.

নিচের খেলনা anomaly IDS এমন flow-সারসংক্ষেপ নিয়ে কাজ করে: প্রতিটি উৎসের গত ১০ মিনিটের প্রতি-মিনিট নতুন সংযোগ থেকে গড় আর standard deviation, তারপর এই মিনিটের z-score. দুটি নিয়ম: (১) z > ৩ আর অন্তত ৫০টি সংযোগ হলে “volume spike”; (২) অন্তত ১০০টি SYN-এর ২০%-এর কম handshake সম্পূর্ণ হলে “SYN ratio”.

// Toy anomaly IDS on synthetic flow logs: new TCP connections per source per minute.
const flows = {   // last 10 minutes (history), this minute: SYNs sent, handshakes completed
  "10.0.0.21":    { hist: [30, 32, 28, 31, 29, 30, 33, 27, 31, 29], syn: 34,  done: 34 },
  "10.0.0.35":    { hist: [5, 6, 4, 5, 5, 6, 5, 4, 5, 5],           syn: 220, done: 220 },
  "10.0.0.48":    { hist: [40, 80, 20, 60, 90, 30, 70, 50, 85, 45], syn: 95,  done: 93 },
  "203.0.113.66": { hist: [0, 0, 0, 0, 0, 0, 0, 0, 1, 0],           syn: 900, done: 12 },
};
const Z_LIMIT = 3, MIN_COUNT = 50;           // rule 1: unusual volume for THIS source
const RATIO_LIMIT = 0.2, MIN_SYN = 100;      // rule 2: most handshakes never complete
console.log("source         mean   std  now      z  done/syn");
for (const [ip, f] of Object.entries(flows)) {
  const n = f.hist.length, mean = f.hist.reduce((a, b) => a + b) / n;
  const sd = Math.sqrt(f.hist.reduce((a, b) => a + (b - mean) ** 2, 0) / n);
  const z = (f.syn - mean) / Math.max(sd, 1);  // floor sd at 1 so silent hosts don't divide by ~0
  const ratio = f.done / f.syn;
  console.log(ip.padEnd(13), mean.toFixed(1).padStart(6), sd.toFixed(1).padStart(5),
    String(f.syn).padStart(4), z.toFixed(1).padStart(6), ratio.toFixed(2).padStart(9));
  f.alerts = [];
  if (z > Z_LIMIT && f.syn >= MIN_COUNT) f.alerts.push("volume spike (z=" + z.toFixed(1) + ")");
  if (f.syn >= MIN_SYN && ratio < RATIO_LIMIT) f.alerts.push("SYN ratio " + ratio.toFixed(2) + " - scan or flood?");
}
for (const [ip, f] of Object.entries(flows))
  if (f.alerts.length) console.log("ALERT", ip + ":", f.alerts.join("; "));

আউটপুট:

source         mean   std  now      z  done/syn
10.0.0.21       30.0   1.7   34    2.3      1.00
10.0.0.35        5.0   0.6  220  215.0      1.00
10.0.0.48       57.0  22.7   95    1.7      0.98
203.0.113.66     0.1   0.3  900  899.9      0.01
ALERT 10.0.0.35: volume spike (z=215.0)
ALERT 203.0.113.66: volume spike (z=899.9); SYN ratio 0.01 - scan or flood?

10.0.0.21-এর z = ২.৩, সীমার নিচে — স্বাভাবিক ওঠানামা। 10.0.0.48-এর ৯৫টি সংযোগ সংখ্যায় বড়, কিন্তু তার ইতিহাসই অস্থির (std ২২.৭), তাই z মাত্র ১.৭ — প্রতি-উৎস baseline-এর সুবিধা। 203.0.113.66 দুটি নিয়মেই ধরা: আগে প্রায় চুপ, এখন ৯০০ SYN, সম্পূর্ণ মাত্র ১২টি (০.০১) — ওপরের log-এর scan. আর 10.0.0.35 প্রতিরাতে দুটোয় শুরু হওয়া ব্যাকআপের সার্ভার: ২২০টি সংযোগ, সবগুলো সম্পূর্ণ — অস্বাভাবিক, কিন্তু ক্ষতিকর নয়। এটি একটি false positive. কোডের Math.max(sd, 1) প্রায় চুপ থাকা উৎসের std শূন্যে ভাগ হওয়া ঠেকায়।

Base-rate fallacy — “৯৯% নির্ভুল” IDS কেন বেশিরভাগ সময় ভুল বলে

Detector-এর দুই ধরনের ভুল: false positive আর false negative (আক্রমণ মিস)। Detector বর্ণনা হয় দুটি হারে: detection rate বা TPR = P(alert | আক্রমণ), আর FPR = P(alert | নিরীহ)। কিন্তু নিরাপত্তা দলের প্রশ্ন উল্টো: alert এলে সেটি আক্রমণ হওয়ার সম্ভাবনা কত? — এর নাম precision. Bayes-এর উপপাদ্য থেকে, p = base rate (সব ঘটনার মধ্যে আক্রমণের অনুপাত) ধরে:

Precision = P(আক্রমণ | alert) = TPR·p ÷ (TPR·p + FPR·(১ − p))

হাতে কষা উদাহরণ: দিনে ১০,০০,০০০টি flow, আসল আক্রমণ ১০টি (p = ০.০০০০১); TPR ৯৯%, FPR ০.১%. সত্যি alert = ১০ × ০.৯৯ = ৯.৯; ভুয়া alert = ৯,৯৯,৯৯০ × ০.০০১ ≈ ১,০০০; precision = ৯.৯ ÷ ১,০১০ ≈ ১%. অর্থাৎ প্রতি ১০০ alert-এর মোটামুটি ৯৯টিই ভুয়া — ভুলের হার ছোট হলেও নিরীহ ঘটনার সংখ্যা বিশাল। এটিই base-rate fallacy; বিরল রোগের পরীক্ষায় প্রথম পজিটিভের পর দ্বিতীয় পরীক্ষা করার কারণও এটাই।

// Base-rate fallacy: how many IDS alerts are real? (Bayes' theorem)
function ids(events, prevalence, tpr, fpr) {
  const bad = events * prevalence, good = events - bad;
  const tp = bad * tpr, fp = good * fpr;      // true alerts, false alarms
  const precision = tp / (tp + fp);           // P(attack | alert)
  console.log(String(fpr).padEnd(8), (tp + fp).toFixed(0).padStart(7), tp.toFixed(1).padStart(6),
    fp.toFixed(1).padStart(8), (precision * 100).toFixed(1).padStart(7) + "%",
    String(Math.round(1 / precision)).padStart(6));
}
const EVENTS = 1e6, PREV = 1e-5, TPR = 0.99;  // 1 million flows/day, 10 of them malicious
console.log("1,000,000 events/day, 10 malicious, detection rate 99%");
console.log("FPR       alerts     TP       FP  precision  1-in-N");
for (const fpr of [1e-2, 1e-3, 1e-4, 1e-5, 1e-6]) ids(EVENTS, PREV, TPR, fpr);
console.log("Same FPR 1e-3 but prevalence 1e-2 (a targeted alert stream):");
ids(EVENTS, 1e-2, TPR, 1e-3);

আউটপুট:

1,000,000 events/day, 10 malicious, detection rate 99%
FPR       alerts     TP       FP  precision  1-in-N
0.01       10010    9.9   9999.9     0.1%   1011
0.001       1010    9.9   1000.0     1.0%    102
0.0001       110    9.9    100.0     9.0%     11
0.00001       20    9.9     10.0    49.7%      2
0.000001      11    9.9      1.0    90.8%      1
Same FPR 1e-3 but prevalence 1e-2 (a targeted alert stream):
0.001      10890 9900.0    990.0    90.9%      1

দ্বিতীয় সারি হাতে-কষা উদাহরণ: ১,০১০টি alert, precision ১.০%, প্রতি ~১০২টিতে একটি সত্যি। FPR ১% হলে দিনে ১০ হাজারের বেশি alert — আসল ১০টি হারিয়ে যায়। Precision ৫০%-এ পৌঁছাতে FPR লাগে ০.০০১%. শেষ সারিটি আরেক পথ দেখায়: একই detector এমন স্রোতে চালালে যেখানে আক্রমণের অনুপাত ১% — যেমন আগের ছাঁকনি পেরোনো সন্দেহজনক ঘটনা বা honeypot-এর ট্রাফিক — precision ৯০.৯%. এজন্যই বাস্তবের ব্যবস্থা স্তরে স্তরে ছাঁকে আর কয়েকটি সংকেত মিলিয়ে সিদ্ধান্ত নেয়।

৯ · Log, SIEM, honeypot আর একটি alert-এর যাচাই

IDS একা কিছু প্রমাণ করে না — সিদ্ধান্ত আসে অনেক উৎসের log মিলিয়ে: firewall, router, সার্ভার, অ্যাপ, DNS, VPN, login. ভালো log-ব্যবস্থার তিন নিয়ম: এক জায়গায় জমা (syslog বা agent দিয়ে কেন্দ্রীয় সার্ভারে, যাতে আক্রমণকারী একটি সার্ভারের log মুছলেও কপি থাকে); ঠিক সময় (সব ঘড়ি NTP-তে মেলানো, নইলে ঘটনার ক্রম বলা যায় না); আর যথেষ্ট দিন রাখা, কারণ অনুপ্রবেশ প্রায়ই অনেক পরে ধরা পড়ে — তবে log-এ ব্যক্তিগত তথ্য থাকে, তাই কে কতদিন দেখবে তাও নীতির অংশ।

SIEM এই সব log এক জায়গায় এনে খোঁজা, মেলানো আর alert দেওয়ার ব্যবস্থা। শক্তি correlation-এ: “IP X থেকে scan” একা সামান্য, “একই X থেকে ১০ মিনিট পরে সফল VPN login” একসাথে গুরুতর। কিন্তু base rate এখানেও তাড়া করে: নিয়ম বেশি হলে দিনে হাজারো alert, আর বিশ্লেষকেরা ক্লান্ত হয়ে সবকিছু দ্রুত বন্ধ করতে থাকেন — alert fatigue. প্রকাশিত বিভিন্ন বড় অনুপ্রবেশের তদন্তে দেখা গেছে, প্রাসঙ্গিক alert বেজেছিল, কিন্তু ভিড়ে গুরুত্ব পায়নি। প্রতিকার: নিয়মিত tuning, সম্পদের গুরুত্ব ধরে অগ্রাধিকার, আর প্রতিটি নিয়মের precision মাপা।

Honeypot একটি ফাঁদ-যন্ত্র বা সেবা, যার কোনো বৈধ ব্যবহারকারী নেই — তাই এতে যে-ই সংযোগ করে, তা প্রায় নিশ্চিতভাবে ভুল কনফিগারেশন বা কারও খোঁজাখুঁজি। Base-rate-এর ভাষায় এখানে আক্রমণের অনুপাত প্রায় ১, তাই alert-এর precision খুব বেশি। ছোট রূপ honeytoken — যেমন একটি ভুয়া পাসওয়ার্ড, যা ব্যবহার হলেই alert. Honeypot বাকি নেটওয়ার্ক থেকে আলাদা রাখতে হয়, আর উদ্দেশ্য শুধু শনাক্ত করা — পাল্টা আক্রমণ নয়।

একটি alert-এর triage — ধাপে ধাপে

অংশ ৮-এর IDS দুটি alert দিয়েছিল। একজন বিশ্লেষক এগুলো কীভাবে সামলান, দেখি। মূলনীতি: alert একটি প্রশ্ন, উত্তর নয়।

  1. Alert২টিSIEM-এ
  2. প্রেক্ষাপটকে, কী, কখনlog মেলানো
  3. রায়TP / FPপ্রমাণসহ
  4. প্রতিক্রিয়াআনুপাতিকবা tuning
  5. শিক্ষানথিনিয়ম হালনাগাদ
দুটি alert-এর অবস্থা
A1 · 10.0.0.35
A2 · 203.0.113.66
  1. Alert আসে। A1 — ভেতরের একটি ঠিকানার volume spike; A2 — বাইরের একটি ঠিকানার volume spike আর খুব কম SYN সম্পূর্ণতা। এখনো কিছুই প্রমাণিত নয়।
  2. প্রেক্ষাপট। ঠিকানাটি কোন যন্ত্রের (সম্পদ-তালিকা), কখন, কার সাথে, অন্য log কী বলে। A1 ব্যাকআপ সার্ভার, রাত দুটোর নির্ধারিত কাজ। A2 বাইরের ঠিকানা, প্রায় ৯০০ port; সম্পূর্ণ হওয়া সংযোগ শুধু জেনেশুনে খোলা port-এ।
  3. রায়, প্রমাণসহ। A1 false positive — অস্বাভাবিক কিন্তু পরিকল্পিত ও নিরীহ (অনেক দল একে “benign positive” বলে)। A2 true positive — সত্যিই scan; কিন্তু scan মানে অনুপ্রবেশ নয়, পরে কোনো সফল login নেই।
  4. আনুপাতিক প্রতিক্রিয়া। A1-এ কিছু বন্ধ নয়, নিয়মে নথিভুক্ত ব্যতিক্রম। A2-তে সীমান্তে সাময়িক block, খোলা port-এর তালিকা যাচাই আর পরের কার্যকলাপে নজর। কোনো পাল্টা scan নয় — তা অবৈধ আর বিপজ্জনক।
  5. শিক্ষা। ঘটনা নথিভুক্ত, নিয়ম হালনাগাদ (ব্যাকআপের baseline ঘণ্টা ধরে), নিয়মের precision-এর হিসাবে ফল যোগ। ক্ষতির চিহ্ন পেলে ঘটনা যেত incident response-এ — বিচ্ছিন্ন করা, প্রমাণ সংরক্ষণ, ব্যবস্থাপনাকে জানানো।

সমস্যা খোঁজার পদ্ধতিগত দিক — packet capture পড়া, অনুমান যাচাই — পর্ব ৫৫-এ (সমস্যা খোঁজা); নিরাপত্তার triage সেই একই বৈজ্ঞানিক মানসিকতার রূপ।

দায়িত্বশীল প্রকাশ, bug bounty আর বাংলাদেশ

কারও সিস্টেমে দুর্বলতা চোখে পড়লে সঠিক পথ responsible disclosure: আর এগোবেন না, অন্যের ডেটা খুলবেন না, প্রতিষ্ঠানকে গোপনে জানান (অনেক সাইট /.well-known/security.txt-এ যোগাযোগের ঠিকানা দেয়, RFC 9116), ঠিক করার সময় দিন। অনেক প্রতিষ্ঠান bug bounty চালায় — নির্দিষ্ট পরিসর আর নিয়মের মধ্যে জানালে পুরস্কার; পরিসরের বাইরে পরীক্ষা তখনো অনুমতিহীন কাজ। বাংলাদেশে সরকারি পর্যায়ে সাইবার ঘটনার সমন্বয়ে একটি জাতীয় CIRT আছে, আর আর্থিক খাতের জন্য নিয়ন্ত্রকের নিজস্ব নিরাপত্তা নির্দেশনা আছে — হালনাগাদ তথ্য অফিসিয়াল সূত্রে দেখুন। ২০১৬ সালের বাংলাদেশ ব্যাংকের রিজার্ভ চুরির ঘটনা segmentation আর নজরদারির গুরুত্বের বহুল আলোচিত উদাহরণ — পর্ব ১৩-এর (VLAN) ভাবনার প্রশ্নে আলোচনা আছে।

আরও গভীরে: Linux-এ SYN cookie নিয়ন্ত্রিত হয় net.ipv4.tcp_syncookies sysctl দিয়ে (ডিফল্টে সাধারণত শুধু queue উপচে পড়লে চালু), আর conntrack টেবিলের সীমা nf_conntrack_max — state exhaustion-এর সময় kernel log-এ “table full, dropping packet” ধরনের বার্তা এর চিহ্ন। বড় DDoS-প্রতিরক্ষা ব্যবস্থা অনেক সময় XDP/eBPF দিয়ে driver-এর স্তরেই, মূল network stack-এর আগে, আক্রমণের packet ফেলে দেয়। Anomaly detection-এর একটি পরিচিত সমস্যা baseline poisoning: আক্রমণকারী ধীরে ধীরে আচরণ বাড়িয়ে “স্বাভাবিক”-এর সংজ্ঞাই সরিয়ে দিতে পারে।

পরীক্ষা ও ইন্টারভিউতে এই বিষয়ে প্রায়ই যা জিজ্ঞেস করা হয়:

  • DDoS-এর তিন ধরন? — volumetric (bandwidth), protocol/state exhaustion (সংযোগ-টেবিল), application-layer (CPU, ডেটাবেস)।
  • IDS আর IPS-এর পার্থক্য? — IDS কপি দেখে alert দেয়; IPS পথে বসে packet ফেলে, তাই ভুয়া alert-এ বৈধ ট্রাফিক বন্ধ হয়।
  • Signature বনাম anomaly detection? — প্রথমটি চেনা ধাঁচ মেলায় (কম ভুয়া alert, zero-day মিস); দ্বিতীয়টি বিচ্যুতি খোঁজে (নতুন আক্রমণ ধরে, বেশি ভুয়া alert).
  • HSTS কী থেকে রক্ষা করে? — SSL stripping; ব্রাউজার শুধু https ব্যবহার করে, certificate ত্রুটিতে এগোতে দেয় না; প্রথম ভিজিটের ফাঁক preload তালিকা মেটায়।
  • ৯৯% detection-এর IDS-এর alert কেন বেশিরভাগ ভুয়া হতে পারে? — base-rate fallacy: precision = TPR·p ÷ (TPR·p + FPR·(১−p)), আক্রমণ বিরল হলে ছোট FPR-ও বিপুল ভুয়া alert দেয়।

১০ · AI-এর যুগে নেটওয়ার্ক নিরাপত্তা — পরামর্শ যাচাই করে নিন

AI সহকারী log ব্যাখ্যা, firewall নিয়মের খসড়া বা alert-এর সম্ভাব্য কারণ ভাবতে সাহায্য করতে পারে। কিন্তু এখানে ভুলের দাম বেশি — একটি ভুল নিয়ম পুরো নেটওয়ার্ক খুলে বা বন্ধ করে দিতে পারে। পরিচিত ভুলগুলো:

AI-এর ভুলকেন বিপজ্জনককীভাবে ধরবেন
“কাজ করছে না? firewall বন্ধ করুন” বা “সব port খুলে দিন”attack surface এক ধাক্কায় বিশালশুধু দরকারি port, নির্দিষ্ট উৎস; পরে ss -tuln মিলিয়ে দেখুন
“সব ICMP আটকান”Path MTU discovery ভাঙে (পর্ব ২০)দরকারি ধরন খোলা রেখে rate limit
“৯৯% নির্ভুল IDS মানে ৯৯% alert সত্যি”base rate উপেক্ষাprecision নিজে হিসাব করুন (অংশ ৮)
“৩ বার ভুল হলেই স্থায়ী lockout”অন্যের অ্যাকাউন্ট বন্ধ করানো যায় — নিজেই DoSসাময়িক দেরি, প্রতি-অ্যাকাউন্ট নজরদারি, MFA
বানানো CVE বা RFC নম্বর, পুরোনো কমান্ড, vendor-নির্দিষ্ট কনফিগারেশনকে সার্বজনীন বলাভুল patch, ভুল নিয়মrfc-editor.org আর অফিসিয়াল ডকুমেন্টেশনে মেলান (BCP 38 = RFC 2827, HSTS = RFC 6797, IPFIX = RFC 7011); ল্যাবে আগে পরীক্ষা

একটি সন্দেহজনক log বিশ্লেষণে AI-কে এভাবে কাজে লাগাতে পারেন (গোপন তথ্য আগে মুছে নিন):

আমি একটি ছোট প্রতিষ্ঠানের নেটওয়ার্ক দেখি। নিচে আমার নিজের firewall-এর log-এর একটি অংশ দিলাম (public IP আর ব্যবহারকারীর নাম বদলে দিয়েছি)। ১. এখানে কোনো scan, brute force বা অস্বাভাবিক ধাঁচ দেখছ কি? প্রতিটি দাবির পক্ষে log-এর কোন লাইন প্রমাণ, তা উল্লেখ করো। ২. প্রতিটি সন্দেহের একটি নিরীহ ব্যাখ্যাও দাও (ব্যাকআপ, monitoring, ভুল কনফিগারেশন), আর কোন অতিরিক্ত log দেখলে দুটিকে আলাদা করা যাবে বলো। ৩. শুধু প্রতিরক্ষামূলক পদক্ষেপ প্রস্তাব করো — নিজের যন্ত্রে কী যাচাই করব আর firewall-এ কী সীমিত করব; কোনো পাল্টা scan বা আক্রমণ নয়। ৪. কোনো RFC, CVE বা ডিফল্ট মানের কথা বললে উৎস দাও; নিশ্চিত না হলে স্পষ্ট বলো।

AI-এর নিরাপত্তা-পরামর্শ ব্যবহারের আগে — চেকলিস্ট

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন — তারপর “→ উত্তর” চাপুন।

প্র ০১২০১৬ সালের Mirai botnet দেখিয়েছিল যে সস্তা ক্যামেরা আর router-ও ইন্টারনেটের বড় অংশ অচল করতে পারে। এর দায় কার — ব্যবহারকারী, নির্মাতা, ISP, না নিয়ন্ত্রক? আর এর পরে কী বদলেছে?

Mirai কোনো জটিল দুর্বলতা ব্যবহার করেনি। প্রকাশিত বিশ্লেষণ অনুযায়ী এটি ইন্টারনেটে খোলা telnet-এর মতো সেবা খুঁজে কারখানার ডিফল্ট username-password-এর ছোট একটি তালিকা চেষ্টা করত, আর অসংখ্য যন্ত্রে সেটাই যথেষ্ট ছিল — অনেক মডেলে পাসওয়ার্ড বদলানোর সহজ উপায়ই ছিল না। ২০১৬ সালের শরতে এই botnet দিয়ে কয়েকটি বড় আক্রমণ হয়; একটি বড় DNS সেবাদাতার ওপর আক্রমণে যুক্তরাষ্ট্র ও ইউরোপের অনেক ব্যবহারকারী কয়েক ঘণ্টা বহু জনপ্রিয় সাইটে ঢুকতে পারেননি। পরে যুক্তরাষ্ট্রে কয়েকজন তরুণ এর সাথে জড়িত থাকার দায় স্বীকার করেন বলে জানা যায়।

দায়ের প্রশ্নটি অর্থনীতির “externality”-র রূপ। ক্যামেরার মালিক কোনো ক্ষতি টের পান না — ক্যামেরা ঠিকই ভিডিও দেখায়। নির্মাতার কাছে নিরাপত্তা খরচ, আর দামের প্রতিযোগিতায় সেটি বাদ দেওয়াই সহজ। ক্ষতি হয় তৃতীয় পক্ষের। তাই শুধু ব্যবহারকারীকে “সচেতন হোন” বলা যথেষ্ট নয়।

পরে কয়েক দিকে পরিবর্তন এসেছে। কিছু দেশে আইন করে ভোক্তা-যন্ত্রে সবার জন্য একই ডিফল্ট পাসওয়ার্ড নিষিদ্ধ করা হয়েছে আর নির্মাতাকে হালনাগাদের সময়সীমা জানাতে বলা হয়েছে (যেমন যুক্তরাজ্যে; বিস্তারিত দেশভেদে আলাদা)। অনেক নির্মাতা এখন প্রতিটি যন্ত্রে আলাদা পাসওয়ার্ড দেন। আর প্রতিষ্ঠানগুলো শিখেছে যে একটিমাত্র DNS সেবাদাতার ওপর নির্ভর করা নিজেই একটি ঝুঁকি। ব্যবহারকারীর দিক থেকেও করণীয় সহজ: নতুন router বা ক্যামেরা বসানোর দিনই ডিফল্ট পাসওয়ার্ড বদলানো, firmware হালনাগাদ রাখা, আর দূর থেকে প্রবেশের সেবা দরকার না হলে বন্ধ রাখা।

মূল উপলব্ধি: নিরাপত্তার দুর্বলতম কড়াই প্রায়ই সবচেয়ে সস্তা যন্ত্র, আর তার ক্ষতি পড়ে অন্যের ওপর। এর সমাধান লাগে নিরাপদ ডিফল্ট, নির্মাতার দায় আর নির্ভরতার বৈচিত্র্য দিয়ে।

প্র ০২১৯৮০-এর দশকেই intrusion detection-এর ধারণা এসেছে, অথচ আজও নিরাপত্তা দলগুলো ভুয়া alert-এ ডুবে থাকে। গবেষকেরা এর পেছনের গণিত কীভাবে ব্যাখ্যা করেছেন, আর বাস্তবে এর জবাব কী?

১৯৮৭ সালে Dorothy Denning-এর “An Intrusion-Detection Model” প্রবন্ধটিকে প্রায়ই এই ক্ষেত্রের ভিত্তি ধরা হয়। প্রস্তাব ছিল প্রতিটি ব্যবহারকারী ও প্রোগ্রামের স্বাভাবিক আচরণের পরিসংখ্যানিক profile রাখা, আর বড় বিচ্যুতিকে সম্ভাব্য অনুপ্রবেশ ধরা — আজকের anomaly detection.

১৯৯৯ সালে Stefan Axelsson একটি প্রবন্ধে দেখান কেন এই ব্যবস্থাগুলো প্রত্যাশামতো কাজ করে না: base-rate fallacy. বাস্তব log-এ আক্রমণ অত্যন্ত বিরল, তাই alert-এর বেশিরভাগ সত্যি হতে হলে false positive rate-কে অবিশ্বাস্য রকম নিচে নামাতে হয় — detection rate বাড়ানোর চেয়ে সেটিই বেশি জরুরি। এই পর্বের হিসাবেও দেখেছেন: ৯৯% detection আর ০.১% FPR-এ precision মোটে ১%.

বাস্তবের জবাব কয়েক স্তরে। এক, প্রেক্ষাপট দিয়ে ছাঁকা — SIEM-এর correlation-এ কয়েকটি স্বাধীন সংকেত মিললে তবেই উচ্চ-অগ্রাধিকারের alert, যা কার্যত base rate বাড়ায়। দুই, যেখানে base rate স্বভাবতই বেশি সেখানে নজর — honeypot, honeytoken, “এই সার্ভারে কখনো বাইরের সংযোগ হওয়ার কথা নয়” ধরনের কঠোর নিয়ম। তিন, সম্পদের গুরুত্ব ধরে অগ্রাধিকার আর প্রতিটি নিয়মের precision মেপে নিয়মিত tuning. মেশিন লার্নিং সাহায্য করে, কিন্তু base rate-এর গণিত বদলায় না — নতুন মডেলের দাবি দেখলে প্রথম প্রশ্ন: “কোন base rate-এ এই সংখ্যা মাপা?”

মূল উপলব্ধি: বিরল ঘটনা খোঁজায় detector-এর “নির্ভুলতা” একা অর্থহীন; আসল মাপ precision. ভালো নকশা প্রেক্ষাপট, স্তর আর ফাঁদ দিয়ে base rate বাড়ানোর উপায় খোঁজে।

প্র ০৩SSL stripping ২০০৯ সালে জনসমক্ষে দেখানো হয়, HSTS মান হয় ২০১২-তে, আর এখন ব্রাউজারগুলো নিজেই https-কে ডিফল্ট করছে। এই বিবর্তন নিরাপত্তা নকশার কোন নীতি শেখায়?

২০০৯ সালের একটি নিরাপত্তা সম্মেলনে গবেষক Moxie Marlinspike দেখান যে TLS-এর cryptography না ভেঙেই বেশিরভাগ ব্যবহারকারীকে এনক্রিপশন থেকে দূরে রাখা যায়। দুর্বলতা ছিল ব্যবহারের ধরনে: মানুষ “https” লেখেন না, প্রথম অনুরোধ যায় http-তে, আর তালার চিহ্ন না থাকলে অধিকাংশ মানুষ খেয়ালই করেন না। শিক্ষা: যে নিরাপত্তা ব্যবহারকারীর সক্রিয় মনোযোগের ওপর নির্ভর করে, তা ব্যর্থ হবেই।

HSTS (RFC 6797) সিদ্ধান্তটি মানুষের হাত থেকে ব্রাউজারের হাতে দেয়: সার্ভার একবার বলে “শুধু https”, ব্রাউজার তা মনে রাখে, আর certificate ত্রুটিতে এগোনোর পথ বন্ধ করে — কারণ বোতাম থাকলে অনেকে চাপবেনই। প্রথম ভিজিটের ফাঁক মেটায় preload তালিকা; কিছু top-level domain পুরোটাই এতে যুক্ত। তারপর ডিফল্ট উল্টে গেল: Let’s Encrypt-এর মতো বিনামূল্যের স্বয়ংক্রিয় certificate কর্তৃপক্ষ (২০১৫-১৬ সালের দিকে চালু) https-এর খরচ প্রায় শূন্যে নামায়, ব্রাউজার http পাতাকে “Not secure” দেখাতে শুরু করে, আর এখন অনেক ব্রাউজার scheme ছাড়া ঠিকানায় আগে https চেষ্টা করে (আচরণ ব্রাউজার ভেদে আলাদা)। লক্ষ করুন, কোনো ধাপেই “সাবধান হোন” শেখানো মূল সমাধান ছিল না।

মূল উপলব্ধি: মানুষের অভ্যাসের ফাঁক দিয়ে আসা আক্রমণের সেরা প্রতিরক্ষা নিরাপদ ডিফল্ট। আর সতর্কবার্তা থাকলে সেটিকে বিরল ও অর্থবহ রাখতে হয়, নইলে মানুষ তা উপেক্ষা করতে শেখে।

প্র ০৪গবেষকেরা দেখিয়েছেন যে পুরো IPv4 ঠিকানা-স্থান এখন খুব অল্প সময়ে জরিপ করা যায়। তাহলে “আমার সার্ভারের ঠিকানা কেউ জানে না” ধরনের নিরাপত্তা কেন অর্থহীন, আর রক্ষকের কৌশল কী হওয়া উচিত?

IPv4-এ মোট ঠিকানা প্রায় ৪৩০ কোটি। ২০১৩ সালের দিকে বিশ্ববিদ্যালয়ের গবেষকেরা দেখান যে দ্রুত সংযোগ আর দক্ষ সফটওয়্যারে একটি নির্দিষ্ট port-এর জন্য পুরো IPv4 স্থান এক ঘণ্টারও কম সময়ে জরিপ করা সম্ভব। এখন গবেষণা প্রকল্প আর বাণিজ্যিক সার্চ সেবাগুলো নিয়মিত পুরো ইন্টারনেট জরিপ করে খোলা সেবার তালিকা বানায় — রক্ষক আর আক্রমণকারী দুই পক্ষই তা দেখে।

ফলে নতুন public সার্ভার চালুর অল্প পরেই স্বয়ংক্রিয় scan-এর মুখে পড়ে। “কেউ জানে না” ভাবনাকে বলা হয় security through obscurity — এটি বাড়তি একটি স্তর হতে পারে (banner ছোট রাখা), মূল প্রতিরক্ষা নয়। IPv6-এর বিশাল ঠিকানা-স্থানে অন্ধ scan অবাস্তব হলেও DNS, certificate-এর প্রকাশ্য লগ আর অনুমানযোগ্য ঠিকানা থেকে লক্ষ্য খুঁজে নেওয়া যায়।

রক্ষকের কৌশল তাই: ধরে নিন সবাই সব দেখতে পায়, তারপর দেখার মতো কম কিছু রাখুন। নিজের উন্মুক্ত সম্পদের হালনাগাদ তালিকা (অনেক অনুপ্রবেশ শুরু হয় ভুলে যাওয়া সার্ভার থেকে), ন্যূনতম উন্মুক্ততা, দ্রুত patch, আর scan-কে আতঙ্ক নয়, তথ্য হিসেবে দেখা — গুরুত্বপূর্ণ হলো তার পরে কী ঘটে। বাইরের চেহারা যাচাই হবে অনুমোদিত পথে, কখনো অন্যের নেটওয়ার্কে কৌতূহলবশে নয়।

মূল উপলব্ধি: ইন্টারনেটে লুকিয়ে থাকা যায় না; নিরাপত্তা আসে কম উন্মুক্ত হওয়া, হালনাগাদ থাকা আর নিজের সম্পদ নিজে জানা থেকে।

প্র ০৫এনক্রিপশন গোপনীয়তা রক্ষা করে, কিন্তু নেটওয়ার্কের IDS-কে অন্ধ করে দেয়। প্রতিষ্ঠানগুলোর TLS interception কি এর ভালো সমাধান? এই টানাপোড়েন কীভাবে মেটানো হচ্ছে?

আজ প্রায় সব ওয়েব ট্রাফিক TLS বা QUIC-এ, আর TLS 1.3 handshake-এর বেশিরভাগ, সার্ভারের certificate-সহ, এনক্রিপ্ট করে; Encrypted Client Hello-র মতো প্রস্তাব সাইটের নামও (SNI) লুকাতে চায়। ব্যবহারকারীর জন্য বড় জয়, কিন্তু প্রতিষ্ঠানের নিরাপত্তা দলও আর দেখতে পায় না কোনো যন্ত্র থেকে ক্ষতিকর প্রোগ্রাম নিয়ন্ত্রকের সাথে কথা বলছে কি না।

প্রচলিত একটি উত্তর TLS interception: প্রতিষ্ঠানের proxy কর্মীদের যন্ত্রে নিজস্ব root certificate বসিয়ে প্রতিটি সংযোগ খোলে, পরীক্ষা করে, আবার এনক্রিপ্ট করে। কিন্তু ২০১৭ সালের একটি পরিচিত গবেষণায় দেখা যায়, বহু interception পণ্য মূল ব্রাউজারের চেয়ে দুর্বল TLS ব্যবহার করে, কিছু certificate ঠিকমতো যাচাইও করে না — নিরাপত্তার নামে নিরাপত্তা কমায়। Proxy নিজেও সবার গোপন তথ্যের ভান্ডার, আর ব্যক্তিগত ট্রাফিক খোলার আইনি ও নৈতিক প্রশ্ন থাকে।

তাই প্রবণতা অন্য দিকে: নজরদারি endpoint-এ (HIDS বা endpoint detection, যা এনক্রিপশনের আগে-পরে দেখে); metadata আর flow বিশ্লেষণ (IPFIX, সংযোগের ছন্দ, আকার); প্রতিষ্ঠানের নিজস্ব DNS resolver ও নীতি; আর zero trust নকশা, যেখানে প্রতিটি সেবা নিজেই mTLS বা MFA দিয়ে যাচাই করে। কোথায় interception যুক্তিসংগত, সে সিদ্ধান্ত স্পষ্ট নীতি আর অবহিতিসহ, প্রতিষ্ঠান ভেদে আলাদা। বাংলাদেশসহ যেকোনো দেশের প্রতিষ্ঠানেই এমন সিদ্ধান্তের আগে কর্মীদের জানানো আর আইনি পরামর্শ নেওয়া জরুরি, কারণ ব্যক্তিগত তথ্য সুরক্ষার নিয়ম দেশভেদে আলাদা।

মূল উপলব্ধি: এনক্রিপশন উল্টে দেওয়ার চেষ্টা প্রায়ই নতুন দুর্বলতা আনে। টেকসই পথ হলো দৃশ্যমানতা অন্য জায়গা থেকে নেওয়া — endpoint, metadata আর প্রতিটি সেবার নিজস্ব যাচাই।

অনুশীলন

খাতা-কলম নিন — ধারণক্ষমতা, সম্ভাবনা আর log ধরে ধরে হিসাব করুন।

  1. হিসাব (ধারণক্ষমতা আর amplification): একটি প্রতিষ্ঠানের ইন্টারনেট link ১ Gbps, স্বাভাবিক ট্রাফিক ৩০০ Mbps. আক্রমণকারী জাল উৎস দিয়ে মোট ২০০ Mbps অনুরোধ পাঠায় এমন একটি সেবায়, যার amplification factor ৩০। (ক) শিকারের দিকে কত ট্রাফিক আসবে? (খ) link-এ চাপ কত শতাংশ, আর এলোমেলো drop ধরে বৈধ ট্রাফিকের কত অংশ পৌঁছাবে? (গ) শুধু link ভরাতে আক্রমণকারীকে ন্যূনতম কত Mbps অনুরোধ পাঠাতে হতো? (ঘ) প্রতিষ্ঠানের firewall link-এর পেছনে বসে কেন এটি ঠেকাতে পারবে না?

    (ক) ২০০ Mbps × ৩০ = ৬,০০০ Mbps = ৬ Gbps. (খ) মোট চাপ ৬,০০০ + ৩০০ = ৬,৩০০ Mbps, link ১,০০০ — ৬৩০%. পৌঁছানো অংশ ১,০০০ ÷ ৬,৩০০ ≈ ১৫.৯%; বৈধ ৩০০ Mbps-এর মাত্র প্রায় ৪৮ Mbps পৌঁছায়।

    (গ) বাকি জায়গা ১,০০০ − ৩০০ = ৭০০ Mbps; ৭০০ ÷ ৩০ ≈ ২৩.৩ Mbps অনুরোধই যথেষ্ট — একটি সাধারণ বাসার সংযোগের সমান। (ঘ) Packet ফেলা হচ্ছে link-এ ঢোকার মুখের queue-তে, বাছাই ছাড়াই; হারানো বৈধ packet firewall আর ফেরাতে পারে না। প্রতিরক্ষা লাগবে উজানে — ISP, scrubbing, anycast/CDN, চরমে RTBH.

  2. হিসাব (base-rate fallacy): একটি ব্যাংকের SIEM দিনে ৫,০০,০০০টি login-ঘটনা দেখে, যার ০.১% আসলে আক্রমণ। একটি নতুন detector-এর detection rate ৯০%, false positive rate ০.২%. (ক) দিনে কয়টি সত্যি আর কয়টি ভুয়া alert আসবে? (খ) একটি alert এলে সেটি আসল আক্রমণ হওয়ার সম্ভাবনা কত? (গ) দলটি দিনে মাত্র ২০০টি alert যাচাই করতে পারলে কী সমস্যা হবে, আর দুটি সমাধান বলুন।

    (ক) আক্রমণ = ৫,০০,০০০ × ০.০০১ = ৫০০; সত্যি alert (TP) = ৫০০ × ০.৯ = ৪৫০। নিরীহ ঘটনা ৪,৯৯,৫০০; ভুয়া alert (FP) = ৪,৯৯,৫০০ × ০.০০২ = ৯৯৯। মোট ১,৪৪৯।

    (খ) Precision = ৪৫০ ÷ ১,৪৪৯ ≈ ০.৩১১, অর্থাৎ প্রায় ৩১% — প্রতি তিনটি alert-এ মোটামুটি একটি সত্যি। (৫০টি আক্রমণ মিসও হচ্ছে — false negative.) (গ) এলোমেলোভাবে ২০০টি দেখলে গড়ে প্রায় ৩৮৮টি সত্যি alert অদেখা থাকবে (৪৫০ × ১,২৪৯ ÷ ১,৪৪৯), আর alert fatigue বাড়বে। সমাধান: প্রেক্ষাপট দিয়ে অগ্রাধিকার বা দ্বিতীয় স্বাধীন সংকেত মিললে তবেই alert (correlation), tuning করে FPR কমানো, আর MFA দিয়ে আক্রমণের সফলতাই কমানো।

  3. আউটপুট অনুমান করুন: অংশ ৭-এর token bucket simulator-এ শুধু const CAP = 5 বদলে const CAP = 12 করা হলো (refill একই, প্রতি ১০ সেকেন্ডে একটি)। অফিসের NAT, stuffing আর slow bots-এর সারিতে allowed ও blocked কত হবে? এই পরিবর্তনের লাভ ও ক্ষতি কী?
    kind          IPs  allowed  blocked
    stuffing        3       51      489
    slow bots      50      100        0
    office NAT      1       12        0
    user            8       16        0
    false blocks (legit users refused): 0
    abusive attempts that got through: 151

    বালতি ১২ হওয়ায় অফিসের ১২ জনই ঢুকলেন — false block শূন্য। কিন্তু প্রতিটি stuffing IP এখন শুরুতেই ১২টি, তারপর আরও ৫টি — মোট ১৭টি করে, তিনটিতে ৫১ (আগে ৩০)। slow bots আগের মতোই সব পার। শিক্ষা: burst-এর আকার বৈধ ব্যবহারকারীর সুবিধা আর আক্রমণকারীর সুযোগের আপস; একটি সংখ্যা দিয়ে সব মেটে না — লাগে প্রতি-অ্যাকাউন্ট সীমা আর MFA.

  4. কমান্ড লিখুন ও ব্যাখ্যা করুন: আপনি একটি Linux সার্ভারের দায়িত্বে। (ক) এই সার্ভারে কোন TCP আর UDP সেবা শুনছে, সংখ্যায় port দেখিয়ে, কোন কমান্ডে দেখবেন? (খ) আউটপুটে 0.0.0.0:3306 আর 127.0.0.1:6379 দেখলে কোনটি নিয়ে চিন্তা করবেন, কেন, আর কী করবেন? (গ) কোন প্রক্রিয়া কোন port-এ শুনছে তাও দেখতে কী যোগ করবেন?
    ss -tuln          # t = TCP, u = UDP, l = listening, n = numeric ports
    sudo ss -tulnp    # p = owning process (needs root to see other users' processes)

    (খ) 0.0.0.0:3306 মানে একটি ডেটাবেস (3306 সাধারণত MySQL/MariaDB) সব interface-এ শুনছে — বাইরের নেটওয়ার্ক থেকেও পৌঁছানো যেতে পারে; এটিই চিন্তার বিষয়। একই যন্ত্রের অ্যাপ ব্যবহার করলে সেবার কনফিগারেশনে 127.0.0.1-এ bind করুন; অন্য সার্ভার ব্যবহার করলে firewall-এ শুধু সেই সার্ভারের ঠিকানা থেকে অনুমতি দিন (পর্ব ৪৯)। 127.0.0.1:6379 শুধু স্থানীয় — ঠিক আছে। (গ) -p যোগ করলে প্রতিটি সারিতে প্রক্রিয়ার নাম ও PID দেখায়; অচেনা কোনো প্রক্রিয়া কোনো port-এ শুনলে সেটি তদন্তের বিষয়। এই যাচাই শুধু নিজের দায়িত্বের যন্ত্রে — এটি বাইরের কাউকে স্ক্যান করা নয়।

নিজেকে যাচাই করুন

ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।

ক্রমরক্ষকের চোখে একটি লক্ষ্যভিত্তিক অনুপ্রবেশের সাধারণ ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)

  1. Reconnaissance — খোলা সেবা, সংস্করণ আর কর্মীদের তথ্য খোঁজা
  2. Initial access — phishing, দুর্বল সেবা বা চুরি করা পাসওয়ার্ড দিয়ে প্রথম প্রবেশ
  3. ঘাঁটি গাড়া — নিজের প্রোগ্রাম চালানো আর রিবুটের পরেও টিকে থাকা
  4. Lateral movement — ভেতরের নেটওয়ার্কে পাশের সার্ভারে ছড়ানো
  5. Exfiltration বা ক্ষতি — ডেটা বাইরে পাঠানো বা সেবা অচল করা

একটি নেটওয়ার্কে দিনে ১০,০০,০০০টি ঘটনা ঘটে, তার ১০০টি আসল আক্রমণ। একটি IDS সব আক্রমণ ধরে (detection rate ১০০%) আর নিরীহ ঘটনার ০.১%-এ ভুয়া alert দেয়। একটি alert আসল আক্রমণ হওয়ার সম্ভাবনা মোটামুটি কত?

  • ৯৯.৯%
  • প্রায় ৯১%
  • প্রায় ৯%
  • ০.১%

একজন ব্যবহারকারী আগে কয়েকবার bank.example ভিজিট করেছেন, আর সাইটটি HSTS header পাঠায়। এখন তিনি একটি নকল Wi-Fi-তে address bar-এ শুধু bank.example লিখলেন। মাঝের আক্রমণকারীর SSL stripping চেষ্টার কী হবে?

  • সফল হবে, কারণ প্রথম অনুরোধ http-তে যায়
  • ব্যর্থ হবে — ব্রাউজার আগেই https ব্যবহার করবে, আর ভুয়া certificate-এ এগোতে দেবে না
  • সফল হবে, যদি আক্রমণকারী DNS উত্তরও বদলায়
  • শুধু Wi-Fi-তে WPA3 থাকলে ব্যর্থ হবে

একটি প্রতিষ্ঠানের link ১০ Gbps. তার ওপর ১০০ Gbps-এর একটি volumetric DDoS এলে প্রতিষ্ঠানের নিজের অত্যাধুনিক firewall কেন যথেষ্ট নয়?

  • Firewall-এর CPU যথেষ্ট দ্রুত নয়
  • Firewall জাল উৎস-ঠিকানা চিনতে পারে না
  • Firewall-এ নিয়ম কম থাকে
  • জট হয় link-এ, firewall-এর আগেই; বৈধ ট্রাফিক সেখানেই হারায়

Signature-based আর anomaly-based intrusion detection-এর তুলনায় কোন বক্তব্যটি সঠিক?

  • Signature-based সাধারণত কম ভুয়া alert দেয় কিন্তু zero-day মিস করে; anomaly-based অচেনা আক্রমণ ধরতে পারে কিন্তু ভুয়া alert বেশি
  • Signature-based zero-day আক্রমণ ভালো ধরে
  • Anomaly-based শুধু host-এ চলে, network-এ নয়
  • Anomaly-based এনক্রিপ্টেড ট্রাফিকের বিষয়বস্তু পড়তে পারে

একটি TCP সার্ভার এলোমেলো ৩২ bit-এর ISN ব্যবহার করে। একজন আক্রমণকারী অন্যের IP ঠিকানা উৎস বানিয়ে (blind spoofing) সার্ভারের সাথে পূর্ণ TCP সংযোগ গড়তে চায়। প্রধান বাধা কী?

  • TCP checksum জাল ঠিকানা ধরে ফেলে
  • সার্ভারের SYN-ACK আক্রমণকারী দেখতে পায় না, তাই ISN অনুমান করে ACK দিতে হয়
  • TCP handshake এনক্রিপ্টেড থাকে
  • জাল উৎস দিয়ে SYN পাঠানোই অসম্ভব

BCP 38 (ingress filtering) ২০০০ সাল থেকে প্রকাশিত, তবু জাল উৎস-ঠিকানার reflection আক্রমণ টিকে আছে। এর প্রধান কারণ কোনটি?

  • আধুনিক router-এ ingress filtering করা প্রযুক্তিগতভাবে অসম্ভব
  • BCP 38 শুধু IPv6-এ কাজ করে
  • যে নেটওয়ার্কগুলো filtering করে না, আক্রমণকারী সেখান থেকেই পাঠায় — আর filtering-এর লাভ মূলত অন্যদের, তাই সবাই করে না
  • BCP 38 শুধু শিকারের নিজের নেটওয়ার্কে প্রয়োগ করা যায়

শব্দকোষ

লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন — অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:

মনে রাখুন

  1. মানচিত্র: প্রতিটি আক্রমণকে দেখুন লক্ষ্য (CIA), স্তর আর ধরন (passive/active) দিয়ে; প্রতিরক্ষা সেই স্তরেই — switch, RPKI, TLS, কোড। কোনো একক যন্ত্র সব থামায় না।
  2. DDoS ধারণক্ষমতার অঙ্ক: volumetric (Gbps), state exhaustion (টেবিল), application (rps). Link-এর চেয়ে বড় আক্রমণ থামে শুধু উজানে — anycast, CDN, scrubbing, RTBH, Flowspec; মূলে BCP 38/84, যা প্রণোদনার অভাবে অসম্পূর্ণ।
  3. Spoofing আর MITM: দেখানো পরিচয় প্রমাণ নয়; প্রমাণ আসে cryptography থেকে। TCP-র এলোমেলো ISN অন্ধ spoofing কঠিন করে; ঠিকভাবে যাচাই করা TLS মাঝের আক্রমণকারীকে শুধু metadata দেয়; HSTS SSL stripping থামায়; certificate সতর্কবার্তা উপেক্ষা নয়।
  4. রক্ষকের চোখে scanning ও password আক্রমণ: log-এ এক উৎস-অনেক port; নিজের যন্ত্রে ss -tuln দিয়ে attack surface জানা ও কমানো; rate limit-এ NAT-এর false block আর ধীর botnet-এর সীমা মনে রাখা; MFA সবচেয়ে কার্যকর। অনুমতি ছাড়া অন্যের নেটওয়ার্কে কিছু নয়।
  5. IDS-এর গণিত: precision = TPR·p ÷ (TPR·p + FPR·(১−p)); আক্রমণ বিরল হলে বেশিরভাগ alert ভুয়া। তাই log কেন্দ্রীকরণ, SIEM-এর correlation, honeypot, tuning আর প্রমাণভিত্তিক triage.

পরের পর্বে: মডিউল ৯ শুরু — মোবাইল নেটওয়ার্ক। আপনার ফোন কীভাবে মোবাইল টাওয়ারের cell-এ যুক্ত হয়, 2G থেকে 5G-তে কী বদলেছে, আর চলন্ত বাসে বসেও কল কেটে না গিয়ে এক টাওয়ার থেকে আরেক টাওয়ারে কীভাবে handover হয়।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

এই পর্বটি শেয়ার করুন:
এই পর্বে ভুল পেয়েছেন? জানান