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

Containment, eradication আর recovery — ক্ষতি থামিয়ে ফেরা

Containment, Eradication & Recovery — Stopping the Damage and Coming Back

Taught in Bangla, this lesson explains short- and long-term containment, the contain-now-or-observe decision, what each containment tool stops, finding full scope, removing persistence, rebuild versus clean, dependency-ordered credential rotation including krbtgt and cloud keys, staged recovery from known-good sources, closure criteria, working with management and post-incident review, with hands-on worked examples.

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

  • স্বল্পমেয়াদি আর দীর্ঘমেয়াদি containment, আর “এখন থামাব, না দেখব” সিদ্ধান্তের যুক্তি
  • Host আলাদা করা থেকে token বাতিল: কোন হাতিয়ার কী থামায়, কী থামায় না
  • Scope খোঁজা, persistence সরানোর চেকলিস্ট, আর rebuild বনাম clean
  • Credential বদলের নির্ভরতা-ভিত্তিক ক্রম, service account, krbtgt আর cloud key
  • ধাপে ধাপে ফেরা, “ঘটনা শেষ” ঘোষণার শর্ত, ব্যবস্থাপনার সাথে কাজ আর post-incident review

১ · আগুন, ছাই আর ফিরে আসা — তিনটি আলাদা কাজ

পুরান ঢাকার একটি গুদামে আগুন লেগেছে ধরুন। প্রথম কাজ পাশের ঘরে আগুন ছড়ানো থামানো: দরজা বন্ধ, বিদ্যুৎ বন্ধ। দ্বিতীয় কাজ আগুনের উৎস নেভানো, আর ছাইয়ের নিচে জ্বলন্ত কয়লা খুঁজে বের করা। তৃতীয় কাজ দেয়াল পরীক্ষা করে, তার বদলে, ধীরে ধীরে মালামাল ফেরানো। তাড়াহুড়োয় কয়লা না দেখেই মাল তুললে আগুন আবার জ্বলবে।

পর্ব ৬০-এ SOC একটি alert-কে নিশ্চিত ঘটনা বলে চিহ্নিত করেছে। পর্ব ৬১ “Incident response — NIST-এর ধাপ, দল আর পরিকল্পনা” পুরো কাঠামো দেয়। এই পর্ব সেই কাঠামোর মাঝের অংশ, যেখানে হাত সত্যিই কাজ করে:

  • Containment: ক্ষতি আর বিস্তার থামানো। হামলাকারী এখনো সিস্টেমে থাকতে পারে, কিন্তু তার নড়াচড়ার জায়গা কমে গেছে।
  • Eradication: হামলাকারীর উপস্থিতি মুছে ফেলা: malware, তার persistence, চুরি হওয়া credential, আর ঢোকার পথ।
  • Recovery: সিস্টেমকে স্বাভাবিক কাজে ফেরানো, আর ফেরার পর বাড়তি নজর রাখা।

তিনটি কাজ, আর পেছনে ফেরার পথ

Each stage has its own exit test; new evidence sends you back to scoping

Containment থেকে review পর্যন্ত ধাপ, আর নতুন প্রমাণে scope-এ ফেরার পথ নিশ্চিত ঘটনা triage শেষ, সত্যিই হামলা Containment স্বল্পমেয়াদি থেকে দীর্ঘমেয়াদি পরীক্ষা: ক্ষতি থেমেছে? Scope খোঁজা কোন host, কোন account, কোন key? Eradication persistence, credential, entry পরীক্ষা: সব পথ বন্ধ? Recovery known-good, ধাপে ধাপে, নজরদারি পরীক্ষা: নিরাপদে চলছে? Review: কাজ, মালিক, তারিখ নতুন প্রমাণ মিললে ফিরুন
ছবি ৬২.১ — ধাপগুলো সরলরেখা নয়। নতুন প্রমাণ মিললে আবার scope-এ ফিরতে হয়।

NIST SP 800-61-এর পুরোনো সংস্করণে (Rev. 2, ২০১২) এই তিনটি কাজ একটি ধাপেই ছিল। ২০২৫ সালের Rev. 3 সাজানো হয়েছে CSF 2.0-এর function ধরে, তবে কাজের সারকথা একই। Recovery-র জন্য আলাদা করে আছে NIST SP 800-184 (২০১৬)।

স্বল্পমেয়াদি আর দীর্ঘমেয়াদি containment

স্বল্পমেয়াদি

Short-term containment কয়েক মিনিটের কাজ। লক্ষ্য রক্তপাত থামানো। Host আলাদা করা, account বন্ধ, একটি address block. কিছু কাজ ভাঙতেও পারে।

গুদামের দরজা বন্ধ করা

দীর্ঘমেয়াদি

Long-term containment কয়েক দিন বা সপ্তাহের ব্যবস্থা, যাতে পরিষ্কারের সময় ব্যবসা চলে। আলাদা network zone, পরিষ্কার বিকল্প server, কড়া নিয়ম, অস্থায়ী patch.

অস্থায়ী দেয়াল তুলে দোকান চালু রাখা

২ · এখনই থামাবেন, না আগে দেখবেন?

এই পর্বের সবচেয়ে কঠিন সিদ্ধান্ত এটি। সহজ বুদ্ধি বলে, চোর দেখলেই তাড়িয়ে দিন। কিন্তু ঘরের লোক জানে না চোর কয়জন, কোন জানালা খোলা। একজনকে তাড়ালে বাকিরা সতর্ক হবে, চিহ্ন মুছবে, নতুন পথ বানাবে, অথবা তাড়াহুড়োয় বেশি ক্ষতি করবে।

প্রশ্নএখনই থামান, যদিআগে দেখুন, যদি
ক্ষতির ধরনঅপরিবর্তনীয়: encryption, মুছে ফেলা, টাকা সরানো, মানুষের নিরাপত্তাধীর, আর সহনসীমার ভেতরে
দেখার ক্ষমতাlog বা EDR নেই, চোখ বন্ধসব নড়াচড়া ধরা পড়ছে
Scopeজানা, অথবা জানার চেয়ে থামানো জরুরিঅজানা, আর হামলাকারী সক্রিয়
লোকবলনজর রাখার মানুষ নেইপালা করে ২৪ ঘণ্টা দেখার দল আছে
দায়আইন বা চুক্তি দ্রুত ব্যবস্থা চায়আইনি পরামর্শক আর ব্যবস্থাপনা লিখিতভাবে রাজি

একটি সরকারি উৎস এই ভাবনাকে সমর্থন করে। CISA-র যৌথ advisory AA20-245A (২০২০) ঘটনা সামলানোর সাধারণ ভুলের তালিকায় রেখেছে: তথ্য সংগ্রহের আগেই সিস্টেম ঠিক করে ফেলা, হামলাকারীর infrastructure-এ হাত দেওয়া, আগেভাগে block করা, আগেভাগে credential বদলানো, log না রাখা, আর আক্রান্ত network দিয়েই নিজেদের আলাপ করা। আবার NIST Rev. 2 সতর্ক করে, দেরিতে containment বিপজ্জনক, কারণ হামলাকারী এই সময়ে আরও ক্ষতি করতে পারে।

হামলাকারীকে সতর্ক না করা মানে তদন্ত গোপন রাখা। আক্রান্ত mail-এ আলাপ নয়, আক্রান্ত chat-এ ticket নয়, হামলাকারীর address-এ ping নয়। আলাপ চলুক out-of-band পথে, যেমন আলাদা ফোন গ্রুপ বা আলাদা account. আর “নজরে রাখা” মানে দেখা, পাল্টা হামলা নয়। অন্যের system-এ ঢোকা নিজেই অপরাধ হতে পারে; সীমার কথা আছে পর্ব ৬-এ।

কাজের হিসাব

নজরে রাখার সময় অসীম হতে পারে না। ধরুন প্রতি ঘণ্টায় ০.৫ GB ডেটা বের হচ্ছে, আর ব্যবস্থাপনা সর্বোচ্চ ৩ GB সহ্য করতে রাজি। তাহলে সময়সীমা = 3 ÷ 0.5 = ৬ ঘণ্টা। সাথে একটি tripwire: হার বাড়লে, নতুন host দেখা গেলে বা backup-এ হাত পড়লে সঙ্গে সঙ্গে থামানো। দরকার হলে ডেটা বের হওয়ার পথ সীমিত করা যায়, তবে সেটি হামলাকারী টের পেতে পারে।

নিচের খেলনা helper একই যুক্তিতে পাঁচটি কাল্পনিক ঘটনা বিচার করে। এটি আসল কোনো সিস্টেম ছোঁয় না, আর সিদ্ধান্ত নেন একজন মানুষ।

// Toy containment helper. Facts are made up; a human lead makes the real call.
const incidents = [
  { id: 'INC-1', what: 'files being encrypted', destructive: true,
    gbPerHour: 0, toleranceGb: 0, canWatch: true, scopeKnown: false },
  { id: 'INC-2', what: 'stolen mailbox, one user', destructive: false,
    gbPerHour: 0.2, toleranceGb: 1, canWatch: true, scopeKnown: true },
  { id: 'INC-3', what: 'quiet web shell', destructive: false,
    gbPerHour: 0.5, toleranceGb: 3, canWatch: true, scopeKnown: false },
  { id: 'INC-4', what: 'database copy leaving', destructive: false,
    gbPerHour: 40, toleranceGb: 10, canWatch: true, scopeKnown: false },
  { id: 'INC-5', what: 'old server, no logs', destructive: false,
    gbPerHour: 0.1, toleranceGb: 5, canWatch: false, scopeKnown: false },
];
const MAX_WATCH_HOURS = 24;              // a watch must always have an end

function decide(f) {
  if (f.destructive) return ['CONTAIN NOW', 'damage is irreversible'];
  if (!f.canWatch) return ['CONTAIN NOW', 'we cannot see, so watching is blind'];
  if (f.scopeKnown) return ['EVICT TOGETHER', 'scope known, act in one window'];
  const limit = Math.min(f.toleranceGb / f.gbPerHour, MAX_WATCH_HOURS);
  if (limit < 1) return ['CONTAIN NOW', `tolerance gone in ${limit * 60} min`];
  return [`WATCH ${limit} h`, 'scope first, with a tripwire and an end time'];
}

for (const f of incidents) {
  const [action, why] = decide(f);
  console.log(`${f.id} ${f.what.padEnd(25)} ${action.padEnd(15)} ${why}`);
}

আউটপুট:

INC-1 files being encrypted     CONTAIN NOW     damage is irreversible
INC-2 stolen mailbox, one user  EVICT TOGETHER  scope known, act in one window
INC-3 quiet web shell           WATCH 6 h       scope first, with a tripwire and an end time
INC-4 database copy leaving     CONTAIN NOW     tolerance gone in 15 min
INC-5 old server, no logs       CONTAIN NOW     we cannot see, so watching is blind

INC-1-এ হিসাবের দরকারই পড়ে না, কারণ ক্ষতি ফেরানো যায় না। INC-4-এ 10 ÷ 40 = 0.25 ঘণ্টা, অর্থাৎ ১৫ মিনিট, তাই দেখার সুযোগ নেই। INC-5-এ log নেই, তাই “দেখা” কথাটিই ফাঁকা। শুধু INC-3-এ ৬ ঘণ্টা দেখা যায়। “EVICT TOGETHER” মানে সব পথ একসাথে বন্ধ করা, যাকে বলে coordinated eviction.

৩ · Containment-এর হাতিয়ার — কোনটি কী থামায়

প্রতিটি হাতিয়ার একটি নির্দিষ্ট পথ বন্ধ করে। কোনটিই সব পথ বন্ধ করে না। তাই “account বন্ধ করেছি, শেষ” বলা বিপজ্জনক।

কাজযা থামায়যা থামায় নাদাম
Host isolation (EDR দিয়ে আলাদা করা)ওই machine থেকে ছড়ানো, C2 যোগাযোগআগেই চুরি হওয়া credential, অন্য hostওই machine-এর কাজ বন্ধ
Network-এ block (firewall, DNS sinkhole)জানা address-এর যোগাযোগনতুন address, বৈধ cloud service দিয়ে যাওয়া পথকম, কিন্তু হামলাকারী টের পেতে পারে
Account বন্ধ করানতুন loginচলমান session, আগে দেওয়া token, API keyব্যবহারকারীর কাজ থামে
Session revocation আর token বাতিলচলমান login, refresh tokenস্বল্পায়ু access token মেয়াদ শেষ হওয়া পর্যন্ত চলতে পারেআবার login করতে হয়
Secret বদল (secret rotation)পুরোনো password, key-এর ব্যবহারনতুন secret যদি আক্রান্ত জায়গাতেই রাখা হয়নির্ভরশীল service ভাঙতে পারে
Service offline করাওই পথের সব ব্যবহারভেতরে থাকা হামলাকারীর অন্য নড়াচড়াব্যবসার সরাসরি ক্ষতি

কিছু বদলানোর আগে প্রমাণ

Containment সিস্টেম বদলে দেয়, আর বদলানো প্রমাণ ফেরে না। RAM-এর তথ্য machine বন্ধ হলেই হারায়। তাই সাধারণ নিয়ম: যা দ্রুত মুছে যায়, তা আগে সংগ্রহ। একে বলে order of volatility (RFC 3227, ২০০২)। ক্ষতি চলতে থাকলে পুরো সংগ্রহের জন্য বসে থাকবেন না; যা পারেন নিন, কী বাদ গেল লিখে রাখুন।

  • Machine বন্ধ না করে network থেকে আলাদা করা, যাতে RAM টিকে থাকে।
  • VM বা cloud disk-এর snapshot, আর audit log-এর কপি অন্য নিরাপদ জায়গায়। Log-এর আয়ু ছোট হলে আগে সেটি বাড়ানো।
  • প্রতিটি কাজের সময়, কর্তা আর কারণ লেখা। আইনি কাজে লাগলে chain of custody দরকার, বিস্তারিত পর্ব ৬৩-তে।

আরেকটি সূক্ষ্ম কথা NIST-এর Rev. 2-তেই আছে: কিছু malware নিজের সংযোগ কেটে গেলে ক্ষতি করার মতো করে বানানো হতে পারে। তাই network থেকে আলাদা করলেই ক্ষতি থেমেছে, এমন ধরে নেবেন না। Isolation-এর পরও host-টি দেখুন।

নিচে একটি কাল্পনিক অনলাইন বাজারের হিসাব বিভাগের account ধরে পুরো পথটি দেখুন। প্রতিটি ধাপে টেবিলের মান খেয়াল করুন, বিশেষ করে account বন্ধ হওয়ার পরও session কত থাকে।

  1. Alertঅচেনা login
  2. প্রমাণআগে কপি
  3. থামানোaccount, session
  4. যাচাইসত্যিই থেমেছে?
কাল্পনিক ঘটনা: mitu@example.com
সময়
Account
চলমান session + token
Mail forward rule
প্রমাণের কপি
অবস্থা
  1. ০২:১৪ — Alert. ঢাকার কর্মীর account-এ রাত ২টায় 198.51.100.23 থেকে login. MFA পার হয়েছে। এখনো কিছুই নিশ্চিত নয়।
  2. ০২:২১ — Triage নিশ্চিত করল। কর্মী ফোনে জানালেন তিনি ঘুমাচ্ছিলেন। Log-এ ৩টি চলমান session ও token, আর একটি নতুন mail forward rule. Business email compromise-এর সংকেত।
  3. ০২:৩০ — আগে প্রমাণ। Sign-in log, mailbox audit log আর forward rule-এর বিবরণ নিরাপদ জায়গায় কপি হলো। Rule মুছে ফেলার আগেই এটি জরুরি, কারণ পরে সেটিই দেখাবে কোন mail কোথায় গেছে।
  4. ০২:৩৪ — সিদ্ধান্ত। একজন ব্যবহারকারী, scope আপাতত ছোট, আর forward চলতে থাকলে চালানের mail বাইরে যাবে। Incident lead সিদ্ধান্ত দিলেন: এখনই থামানো। সিদ্ধান্ত লগে লেখা হলো।
  5. ০২:৩৬ — Account বন্ধ। নতুন login আর হবে না। কিন্তু টেবিলে দেখুন, session + token এখনো 3. বন্ধ দরজার ভেতরে যে আছে, সে এখনো ভেতরেই।
  6. ০২:৩৮ — Session আর token বাতিল। মান 0 হলো। এই ধাপ বাদ পড়াই বাস্তবে সবচেয়ে সাধারণ ভুল। কতটা তাৎক্ষণিক কাজ করে, তা platform-ভেদে আলাদা।
  7. ০২:৪১ — হামলাকারীর রেখে যাওয়া জিনিস। Forward rule সরানো হলো, আর যাচাই হলো নতুন OAuth app অনুমতি বা নতুন MFA device আছে কি না। এখানে কিছু মিলল না, মিললে সেগুলোও সরাতে হতো।
  8. ০২:৫৫ — যাচাই। ০২:৪১-এর পর ১৪ মিনিট ধরে ওই address থেকে আর কোনো সফল সংযোগ নেই। Alert থেকে Contained পর্যন্ত ৪১ মিনিট। Contained মানে শেষ নয়: এখন প্রশ্ন, আর কোন account আক্রান্ত?

৪ · Scope — ইঁদুর এক গর্তে নয়

বাড়িতে ইঁদুর ঢুকলে একটি গর্ত বুজিয়ে লাভ হয় না। সে আরেক গর্ত দিয়ে আসে, আপনি আবার বুজান। ইংরেজিতে একে বলে whack-a-mole. Scoping-এর লক্ষ্য এই খেলা থেকে বের হওয়া: সব গর্তের তালিকা বানিয়ে একসাথে বন্ধ করা।

Scope মানে শুধু “কোন machine” নয়। পাঁচটি তালিকা লাগে:

  1. Host: কোন machine, VM, container-এ চিহ্ন আছে।
  2. Account: কোন মানুষ, admin আর service account আক্রান্ত host-এ ব্যবহার হয়েছে।
  3. Secret: কোন password, API key, certificate আক্রান্ত জায়গায় ছিল।
  4. ডেটা: কী পড়া বা বাইরে নেওয়া হয়েছে। আইনি জানানোর দায় এখান থেকে আসে।
  5. সময়: প্রথম খারাপ চিহ্ন কবে। Backup-এর কোন তারিখ পরিষ্কার, তা এতেই ঠিক হয়।

পদ্ধতিটি একটি চক্র। একটি IOC দিয়ে শুরু করুন, SIEM আর EDR-এ সবখানে খুঁজুন, নতুন host বা account পেলে তার থেকে নতুন IOC বের করুন, আবার খুঁজুন। নতুন কিছু না মেলা পর্যন্ত চলবে। এটি পর্ব ৫৮-এর hunting, শুধু এখানে শুরুর সূত্র জানা। হামলাকারীর পথ বোঝার জন্য lateral movement-এর ধারণা কাজে লাগে।

নিচের খেলনা tracker একটি জানা-খারাপ host থেকে login-এর খাতা ধরে সময়ের ক্রমে এগোয়। সময় কেন জরুরি? আক্রান্ত হওয়ার আগে যে account ওই host-এ ঢুকেছিল, সে শুধু ওই লগইনের কারণে সন্দেহভাজন নয়।

// Toy scope tracker: follow logins forward in time from one known-bad host.
// Log entries are made up: [hour, account, host].
const log = [
  [1, 'tania', 'web-01'], [3, 'rumi', 'app-02'], [6, 'deploy', 'web-01'],
  [7, 'deploy', 'app-02'], [8, 'svc-report', 'app-02'], [9, 'svc-report', 'db-01'],
  [10, 'rumi', 'hr-03'], [11, 'tania', 'db-01'], [12, 'tania', 'hr-03'],
  [13, 'sohel', 'pay-04'],
];
const FIRST_BAD = { node: 'web-01', hour: 5 };      // first evidence of intruder

const suspect = new Map([[FIRST_BAD.node, FIRST_BAD.hour]]);
for (const [hour, account, host] of log) {          // the log is in time order
  const acctBad = suspect.has(account) && suspect.get(account) <= hour;
  const hostBad = suspect.has(host) && suspect.get(host) <= hour;
  if (acctBad && !hostBad) {
    suspect.set(host, hour);
    console.log(`h${hour}: host ${host} reached by bad account ${account}`);
  } else if (hostBad && !acctBad) {
    suspect.set(account, hour);
    console.log(`h${hour}: account ${account} exposed on bad host ${host}`);
  }
}

const accounts = new Set(log.map(e => e[1]));
const all = new Set(log.flatMap(e => [e[1], e[2]]));
const bad = [...suspect.keys()];
console.log('hosts   :', bad.filter(n => !accounts.has(n)).join(', '));
console.log('accounts:', bad.filter(n => accounts.has(n)).join(', '));
console.log('not linked so far:', [...all].filter(n => !suspect.has(n)).join(', '));
console.log(`fixing only web-01 would leave ${bad.length - 1} of ${bad.length} open`);

আউটপুট:

h6: account deploy exposed on bad host web-01
h7: host app-02 reached by bad account deploy
h8: account svc-report exposed on bad host app-02
h9: host db-01 reached by bad account svc-report
h11: account tania exposed on bad host db-01
h12: host hr-03 reached by bad account tania
hosts   : web-01, app-02, db-01, hr-03
accounts: deploy, svc-report, tania
not linked so far: rumi, sohel, pay-04
fixing only web-01 would leave 6 of 7 open

এক host থেকে শুরু করে শেষে ৪টি host আর ৩টি account. tania h1-এ web-01-এ ছিলেন, কিন্তু তখন সেটি সন্দেহভাজন হয়নি, তিনি ধরা পড়েছেন h11-এ db-01-এর কারণে। rumi h3-এ app-02-তে আর h10-এ hr-03-তে ছিলেন, দুবারই সেগুলো খারাপ হওয়ার আগে। “not linked” মানে পরিষ্কার প্রমাণিত নয়, শুধু এই log-এ সংযোগ নেই। আর খেয়াল করুন, এই খেলনায় শুধু login আছে; আসল জীবনে চুরি হওয়া key কোনো login চিহ্ন ছাড়াও ব্যবহার হতে পারে।

৫ · Eradication — হামলাকারীর সব পথ তুলে ফেলা

Malware মুছলেই eradication হয় না। হামলাকারী ফিরে আসার ব্যবস্থা রেখে যায়, একে বলে persistence. আপনার কাজ এই জায়গাগুলো রক্ষকের চেকলিস্ট ধরে দেখা। এটি হামলার নির্দেশিকা নয়, বরং ঘর পরিষ্কারের তালিকা।

স্তরযা দেখবেন
Operating systemনতুন service, scheduled task, cron, startup-এর জায়গা, registry-র autorun, অচেনা driver
Local accountনতুন admin, group-এ নতুন সদস্য, authorized_keys-এ অচেনা key
ApplicationWeb shell, বদলে যাওয়া ফাইল, নতুন plugin. File integrity monitoring এখানে সাহায্য করে
Identityনতুন MFA device, OAuth app অনুমতি, app password, mailbox rule, নতুন federation বিশ্বাস
Cloudনতুন user, role, access key, role-এর trust বদল, নতুন function, বাইরে share করা snapshot
NetworkVPN-এ নতুন user, firewall-এ নতুন নিয়ম, port forward, DNS রেকর্ড বদল
Build ও deployCI/CD secret, pipeline বদল, image, দেখুন পর্ব ৪৮
FirmwareBIOS/UEFI, network device-এর firmware. এখানে OS rebuild সাহায্য করে না

নিজের Linux server বা lab VM-এ চোখ বোলানোর জন্য কিছু পড়ার কমান্ড। এগুলো কিছু বদলায় না, শুধু দেখায়। অন্যের system-এ চালাবেন না।

systemctl list-unit-files --state=enabled
systemctl list-timers --all
crontab -l
ls -la /etc/cron.d /etc/cron.daily
sudo find /root /home -name authorized_keys -type f -exec ls -l {} +
sudo last -a -n 20

Rebuild, না clean?

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

Rebuild (reimaging)Clean (জায়গায় পরিষ্কার)
কখনadmin ক্ষমতা গেছে, malware অজানা, server গুরুত্বপূর্ণসাধারণ, পরিচিত malware, সীমিত ক্ষমতা, EDR-এ পুরো গতিপথ দেখা গেছে
নিশ্চয়তাবেশি, যদি golden image পরিষ্কার হয়কম, একটি জিনিস বাদ পড়তে পারে
খরচসময়, পুনঃ configurationকম সময়, কিন্তু পরে ফিরে আসার ঝুঁকি
সীমাFirmware, আর ডেটার ভেতরের চিহ্ন থেকে যেতে পারেRootkit থাকলে OS-কে আর বিশ্বাস করা যায় না

এরপর ঢোকার পথ বন্ধ। Scope থেকে root cause জানুন: patch না হওয়া VPN, ফাঁস হওয়া key, ফিশিং? পর্ব ৩২-এর মতো patch দিন, বা তা সম্ভব না হলে সেবা বন্ধ রাখুন। আসল ঢোকার পথ খোলা রেখে সব মুছলে হামলাকারী একই রাস্তায় ফেরে। এবার দেখুন, একটি account বাদ পড়লে কী হয়। ঘটনাটি কাল্পনিক, তবে ধরনটি বাস্তব।

কাল্পনিক ঘটনা: web-01 থেকে শুরু
দিন
জানা host
বদলানো credential
খোলা পথ
ঘোষণা
  1. দিন ১ — আবিষ্কার। web-01-এ web shell ধরা পড়ল। সেখানে deploy account ব্যবহার হয়েছে। দল ধরে নিল, ঘটনা এটুকুই।
  2. দিন ১ — দ্রুত পরিষ্কার। web-01 rebuild, patch আর deploy বদল। কিন্তু login-এর খাতা অন্য host পর্যন্ত টানা হয়নি। সেখানে svc-report আক্রান্ত, যা কেউ জানে না।
  3. দিন ৩ — “শেষ”। দুদিন শান্ত। ঘটনা বন্ধ ঘোষণা হলো। শান্ত থাকা মানে পরিষ্কার, এই ধারণাই এখানে ভুল। হামলাকারী হয়তো চুপচাপ অপেক্ষা করছিল।
  4. দিন ৯ — ফিরে আসা। রাতের বেলা 203.0.113.50 থেকে svc-report ঢুকল db-01-এ। এই account সাধারণত শুধু দিনে report বানায়, তাই detection rule ধরল।
  5. দিন ৯ — নতুন scope. Log পিছিয়ে দেখা গেল, দিন ১-এর আগেই হামলাকারী app-02-তে গিয়েছিল। সেখানে একটি config ফাইলে svc-report-এর password ছিল। “বদলালে রিপোর্ট ভাঙবে” ভেবে কেউ service account বদলাতে চাননি।
  6. দিন ১০ — আসল eradication. পুরো scope-এর সব credential বদল, app-02 rebuild, password config ফাইল থেকে secret vault-এ। Review-এর কাজ: service account-এর তালিকা ও মালিক ঠিক করা। ঘটনা এবার বন্ধ হবে নজরদারি শেষে, আগে নয়।

এটি কল্পনার গল্প শুধু নয়। Cloudflare-এর নিজের প্রকাশিত প্রতিবেদন (ফেব্রুয়ারি ২০২৪) অনুযায়ী, ২০২৩-এর Okta ঘটনার পর তারা হাজার হাজার credential বদলালেও একটি service token আর তিনটি service account বাদ পড়েছিল। ২০২৩ সালের নভেম্বরে সেই পথেই একজন হামলাকারী তাদের ভেতরের কিছু সিস্টেমে ঢোকে। তারা তখন ৫,০০০-এর বেশি production credential বদলায়, ৪,৮৯৩টি system-এ forensic triage করে, আর পুরো global network-এর machine reimage ও reboot করে।

৬ · Credential বদলের ক্রম — আগে কোনটি

সব password একসাথে বদলালেই কি হলো? না। ক্রম ভুল হলে নতুন password-ও হামলাকারী দেখে ফেলে। যে তালায় চাবি বানানো হয়, সেই কারখানায় যদি চোর বসে থাকে, তবে নতুন চাবিও তার হাতে যাবে। তাই আগে কারখানা, পরে চাবি।

মূল নিয়ম: যে জিনিস অন্যকে নিয়ন্ত্রণ করে, তা আগে। সাধারণ ক্রম এমন:

  1. ঢোকার পথ বন্ধ আর হামলাকারীর চলমান প্রবেশ কাটা, নইলে নতুন secret-ও দেখা যাবে।
  2. জরুরি admin (break-glass) আর cloud root: নিয়ন্ত্রণ আগে নিজের হাতে আনুন।
  3. পর্ব ২০-এর privileged account, আর identity-র মূল: domain, IdP.
  4. Secret vault আর KMS-এর admin access.
  5. Service account, database password, API key, application secret.
  6. সাধারণ ব্যবহারকারীর password, তাদের session বাতিল সহ।

Service account — যাকে সবাই ভুলে যায়

Service account মানুষের নয়, কোনো program-এর। তার password প্রায়ই বহু বছর একই থাকে, অনেক ফাইলে ছড়ানো থাকে, আর ক্ষমতা বেশি হয়। তার ওপর “ভাঙলে কী হবে” ভয়ে কেউ ছোঁয় না। সমাধান হলো আগে থেকে তালিকা রাখা: কোন account, কোন মালিক, কোন service ব্যবহার করে। ঘটনার রাতে এই তালিকা বানানো যায় না।

Active Directory আর krbtgt

পর্ব ৩১-এ দেখেছেন, Kerberos-এর ticket সিল করা হয় krbtgt account-এর key দিয়ে। পরিষদের সিলমোহর চুরি হলে যেমন জাল সনদ বানানো যায়, domain পুরো দখল হলে তেমনি হামলাকারী নিজেই ticket বানাতে পারে। তখন সাধারণ password বদলে লাভ হয় না।

তাই ধারণাটি হলো: krbtgt দুবার বদল, মাঝে ticket-এর সর্বোচ্চ আয়ু অপেক্ষা (ডিফল্টে ১০ ঘণ্টা)। কারণ পুরোনো একটি password ইতিহাসে থেকে যায়। সরাসরি পরপর দুবার বদলালে বৈধ ticket-ও ভাঙে, সেবা থমকে যায়। আর domain controller-এর replication সুস্থ কি না আগে দেখতে হয়। ঘটনার মাঝে এটি করার সিদ্ধান্ত নেন অভিজ্ঞ দল, Microsoft-এর সর্বশেষ নির্দেশিকা মিলিয়ে। Domain পুরো অবিশ্বস্ত হলে forest recovery-এর কথা ভাবতে হয়।

Cloud-এর key

Cloud-এ চুরি হওয়া key একটি পাসপোর্টের মতো। ঘরের দরজা বন্ধ করলেও পাসপোর্ট দিয়ে অন্য দেশে ঢোকা যায়। কাজগুলো এই ক্রমে ভাবুন:

  • নিষ্ক্রিয়, মুছবেন না: সন্দেহভাজন key আগে disable করুন। মুছে ফেললে কে কী করেছে তা খোঁজা কঠিন হতে পারে, আর ভুল key হলে ফেরানো যায় না।
  • স্বল্পায়ু credential ভুলবেন না: long-term key বন্ধ করলেই আগে নেওয়া temporary credential বন্ধ হয় না, সেগুলো মেয়াদ পর্যন্ত টিকতে পারে। উদাহরণ হিসেবে AWS-এর নথি বলে, এমন session বন্ধ করতে role-এ একটি deny policy বসাতে হয়, যা নির্দিষ্ট সময়ের আগে দেওয়া credential-কে অকেজো করে। অন্য provider-এর নিজস্ব উপায় আছে।
  • Audit log পড়ুন: ওই key দিয়ে নতুন user, key বা role বানানো হয়েছে কি না দেখুন। এখানেই পরের persistence লুকিয়ে থাকে। বিস্তারিত Cloud & DevOps-এর secret ও KMS পর্বে।

এই নির্ভরতা একটি গ্রাফ, আর ক্রম বের করার গাণিতিক উপায় topological sort. নিচের খেলনা planner একই ঢেউয়ের কাজ একসাথে করে, তার আগের ঢেউ শেষ হলেই।

// Toy rotation planner: topological sort (Kahn) into waves. No real secrets.
// needs = what must be finished first. waitH = waiting time after this item.
function plan(items) {
  const left = new Map(Object.entries(items).map(([k, v]) => [k, new Set(v.needs)]));
  let clock = 0, wave = 0;
  while (left.size) {
    const ready = [...left].filter(([, n]) => n.size === 0).map(([k]) => k).sort();
    if (!ready.length) {
      console.log('CYCLE, cannot order:', [...left.keys()].join(', '));
      return;
    }
    console.log(`wave ${++wave} (t+${clock} h): ${ready.join(', ')}`);
    ready.forEach(k => left.delete(k));
    for (const n of left.values()) ready.forEach(k => n.delete(k));
    clock += Math.max(1, ...ready.map(k => items[k].waitH || 0));
  }
  console.log(`done by about t+${clock} h`);
}

plan({
  'entry-point-closed': { needs: [] },
  'admin-accounts':     { needs: ['entry-point-closed'] },
  'cloud-root-keys':    { needs: ['entry-point-closed'] },
  'vault-admin':        { needs: ['admin-accounts'] },
  'krbtgt-round-1':     { needs: ['admin-accounts'], waitH: 10 },
  'krbtgt-round-2':     { needs: ['krbtgt-round-1'] },
  'svc-backup':         { needs: ['vault-admin'] },
  'svc-report':         { needs: ['vault-admin'] },
  'db-password':        { needs: ['vault-admin'] },
  'app-secrets':        { needs: ['db-password'] },
  'user-passwords':     { needs: ['krbtgt-round-2'] },
});
console.log('---');
plan({ 'app-key': { needs: ['db-pass'] }, 'db-pass': { needs: ['app-key'] } });

আউটপুট:

wave 1 (t+0 h): entry-point-closed
wave 2 (t+1 h): admin-accounts, cloud-root-keys
wave 3 (t+2 h): krbtgt-round-1, vault-admin
wave 4 (t+12 h): db-password, krbtgt-round-2, svc-backup, svc-report
wave 5 (t+13 h): app-secrets, user-passwords
done by about t+14 h
---
CYCLE, cannot order: app-key, db-pass

ঢেউ ৩-এ krbtgt-এর ১০ ঘণ্টার অপেক্ষা, তাই পরের ঢেউ t+2 থেকে সরে t+12. খেলনায় সব কাজ ঢেউ ধরে অপেক্ষা করে; বাস্তবে vault-নির্ভর কাজ krbtgt-এর অপেক্ষায় আটকে রাখার দরকার নেই, তাই আপনার পরিকল্পনা আরও ছোট হবে। শেষ লাইনটি জরুরি: app আর database একে অন্যের ওপর নির্ভর করলে কোনো সরল ক্রম নেই। তখন দুটিই একটি ঘোষিত সময়ে একসাথে বদলাতে হয়, বা নকশা বদলে দুটি secret একসাথে বৈধ রাখার সুবিধা আনতে হয়।

৭ · Recovery — পরিষ্কারভাবে, ধাপে ধাপে ফেরা

Backup থেকে কীভাবে ফিরবেন, তার হিসাব আর ransomware-এর বিশেষ ক্রম আছে পর্ব ৩৪-এ। এখানে যেকোনো ঘটনার জন্য সাধারণ নীতি।

  • Known-good উৎস: আক্রান্ত হওয়ার আগের পরিষ্কার সময়টি scope থেকে নিন। শুধু “সর্বশেষ backup” নিলে হামলাকারীর চিহ্নও ফিরে আসতে পারে। তারপর পুরোনো ডেটার ফাঁক পূরণ হবে অন্য উৎস থেকে।
  • আলাদা জায়গায় আগে: Isolated recovery environment-এ restore করে পরীক্ষা, তারপর মূল network-এ। Immutable backup এখানে কাজে আসে।
  • Rebuild: Server বানান golden image আর code থেকে, পুরোনো machine থেকে নয়। নতুন patch আর নতুন secret নিয়ে।
  • Integrity যাচাই: ফাইলের hash মেলানো যথেষ্ট নয়, ব্যবসার হিসাবও মেলাতে হয়। যেমন অর্ডারের মোট টাকা মেলে কি না পেমেন্ট প্রদানকারীর রেকর্ডের সাথে।
  • বাড়তি নজর: Heightened monitoring মানে ফেরার পর নতুন detection rule, বেশি log, IOC-এর ওপর সরাসরি alert আর পালা করে দেখা। প্রায়ই অন্তত কয়েক সপ্তাহ।
  • ধাপে ধাপে: Staged rollout-এর মতো অল্প traffic থেকে শুরু, প্রতিটি ধাপের মাঝে soak time. সমস্যা হলে rollback ধাপে ধাপে।
কাল্পনিক অনলাইন বাজার, সীমা: errors < 1%
ধাপ
Traffic
Error rate
IOC-এর সংকেত
সিদ্ধান্ত
  1. Rebuild. Image থেকে নতুন server, নতুন secret, ১২ তারিখের backup, কারণ এই ঘটনায় প্রথম খারাপ চিহ্ন ১৩ তারিখের। বাইরের কেউ এখনো ঢুকতে পারে না।
  2. Integrity যাচাই। Backup-এর hash মিলল, আর অর্ডারের মোট পেমেন্ট প্রদানকারীর রেকর্ডের সাথে মিলল। ১২ তারিখের পরের অর্ডার আলাদা তালিকায় মিলিয়ে তোলা হবে।
  3. ৫% traffic. Error 0.3%, সীমার নিচে, IOC 0. Soak time শেষে পরের ধাপ।
  4. ২৫% traffic. Error 1.4%, সীমার ওপরে। হামলার চিহ্ন নয়, restore-এর পর একটি database index ছিল না। তবুও থামা ঠিক, কারণ সমস্যার উৎস না জেনে এগোনো যায় না।
  5. আবার ২৫%. Index ঠিক করার পর error 0.4%. IOC এখনো 0. Soak নতুন করে শুরু হয়ে শেষ হলো।
  6. ১০০%. পুরো সেবা ফিরল, error 0.5%. কিন্তু ঘটনা শেষ নয়। Heightened monitoring চলবে, আর পরের অংশের শর্ত পূরণের পরেই “শেষ” বলা যাবে।

নিচের খেলনা simulator সময় ধরে একই নিয়ম চালায়, আর ইচ্ছা করে একটি IOC বসানো আছে। Clock আসল নয়, সবই সিমুলেশন, আর seed-এর কারণে ফল সবসময় একই।

// Toy staged recovery on a simulated clock (minutes). Seeded, so always the same.
function mulberry32(a) {
  return () => { a |= 0; a = a + 0x6D2B79F5 | 0;
    let t = Math.imul(a ^ a >>> 15, 1 | a);
    t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t;
    return ((t ^ t >>> 14) >>> 0) / 4294967296; };
}
const rand = mulberry32(62);
const STAGES = [{ pct: 5, soak: 30 }, { pct: 25, soak: 30 },
                { pct: 50, soak: 60 }, { pct: 100, soak: 120 }];
const MAX_ERR = 1.0, CHECK_EVERY = 10, REPAIR_MIN = 40;
const iocAt = new Map([[90, 'app-07 calls known-bad address']]);  // one toy event

let now = 0, i = 0, soaked = 0, worst = 0;
console.log(`t=0 start stage ${STAGES[0].pct}%`);
while (i < STAGES.length) {
  now += CHECK_EVERY; soaked += CHECK_EVERY;
  const err = 0.2 + rand() * 0.4 + STAGES[i].pct / 500;    // percent of requests
  worst = Math.max(worst, err);
  const ioc = iocAt.get(now);
  if (ioc || err > MAX_ERR) {
    console.log(`t=${now} HOLD at ${STAGES[i].pct}%: ${ioc || 'errors ' + err.toFixed(2)}`);
    now += REPAIR_MIN; i = Math.max(0, i - 1); soaked = 0; worst = 0;
    console.log(`t=${now} back to ${STAGES[i].pct}% after repair, soak restarts`);
    continue;
  }
  if (soaked >= STAGES[i].soak) {
    console.log(`t=${now} stage ${STAGES[i].pct}% passed, worst errors ${worst.toFixed(2)}%`);
    i++; soaked = 0; worst = 0;
    if (i < STAGES.length) console.log(`t=${now} start stage ${STAGES[i].pct}%`);
  }
}
console.log(`full service watched by t=${now} min (${(now / 60).toFixed(1)} h)`);

আউটপুট:

t=0 start stage 5%
t=30 stage 5% passed, worst errors 0.51%
t=30 start stage 25%
t=60 stage 25% passed, worst errors 0.42%
t=60 start stage 50%
t=90 HOLD at 50%: app-07 calls known-bad address
t=130 back to 25% after repair, soak restarts
t=160 stage 25% passed, worst errors 0.50%
t=160 start stage 50%
t=220 stage 50% passed, worst errors 0.63%
t=220 start stage 100%
t=340 stage 100% passed, worst errors 0.79%
full service watched by t=340 min (5.7 h)

কোনো সমস্যা ছাড়া মোট সময় হতো 30 + 30 + 60 + 120 = 240 মিনিট। IOC-এর দাম 340 − 240 = 100 মিনিট: মেরামত 40, ২৫%-এর নতুন soak 30, আর ৫০%-এর হারানো 30. এই খরচ আগেই ব্যবস্থাপনাকে বলা উচিত। আর RTO যদি ৪ ঘণ্টা হয়, তবে ২৪০ মিনিটের পরিকল্পনায় কোনো ফাঁকই নেই।

৮ · কখন শেষ, আর ব্যবস্থাপনার সাথে কাজ

“ঘটনা শেষ” বলার শর্ত

শান্ত থাকা প্রমাণ নয়। Exit criteria আগে থেকে লিখে রাখলে চাপের মুখে তর্ক কমে।

ব্যবসার ধারাবাহিকতার সাথে মিল

Business continuity মানে সংকটেও জরুরি সেবা চালু রাখার পরিকল্পনা। Disaster recovery তার প্রযুক্তিগত অংশ, যার গভীরে যেতে দেখুন System Design-এর disaster recovery পর্ব। ঘটনায় দুটি পরিকল্পনা একসাথে কাজ করে, আর এখানে সংঘর্ষও হয়। তাই অগ্রাধিকার আগে থেকে ঠিক করে রাখা ভালো: কোন সেবা আগে ফিরবে, কতক্ষণ হাতে কাজ চলবে, কতটা ডেটা হারানো চলবে (RPO).

একটি সাধারণ ফাঁদ: disaster recovery-র কপিতে ফিরে যাওয়া। ঝড় বা আগুনে এটি ঠিক, কিন্তু হামলায় সেই কপিও আক্রান্ত হতে পারে, কারণ replication খারাপ জিনিসও কপি করে। তাই failover-এর আগে দেখুন, কপিটি পরিষ্কার কি না, আর একই credential সেখানেও চলে কি না।

চাপের মধ্যে ব্যবস্থাপনার সাথে

ব্যবস্থাপনা জানতে চান তিনটি কথা: কী হয়েছে, কত খরচ, কখন শেষ। আপনি তিনটিই পুরো জানেন না। তবুও কথা বলার ভালো উপায় আছে।

  • জানা, অজানা, পরের সময়: “যা জানি, যা জানি না, পরের আপডেট বিকেল ৪টায়”। নিয়মিত সময় বাঁধলে বারবার ফোন কমে।
  • সিদ্ধান্ত হিসেবে সামনে আনুন: “Payment service ২ ঘণ্টা বন্ধ রাখলে ঝুঁকি কমে, খরচ এই। আপনি কোনটি বেছে নেবেন?” Service বন্ধের সিদ্ধান্ত ব্যবসার, ঝুঁকির তথ্য আপনার।
  • অনুমানকে অনুমান বলুন: “ডেটা চুরি হয়নি” না বলে “এখন পর্যন্ত প্রমাণ পাইনি, log ১৪ দিনের”।
  • এক মুখপাত্র: গ্রাহক, কর্মী আর গণমাধ্যমের বার্তা আইনি পরামর্শের সাথে মিলিয়ে একজনের মাধ্যমে।
  • মানুষকে বিশ্রাম: পালা বদল না হলে ক্লান্ত মানুষ ভুল করেন, আর এই ভুল ব্যয়বহুল।

৯ · Post-incident review — ক্ষত থেকে কাজের তালিকা

ঘটনার পর post-incident review না হলে একই ফাঁদে আবার পড়তে হয়। স্মৃতি তাজা থাকতে, সাধারণত কয়েক দিন থেকে দুই সপ্তাহের মধ্যে এটি করুন। সুর হবে blameless: “কে ভুল করল” নয়, “ব্যবস্থা কেন এই ভুল হতে দিল”। সংস্কৃতির দিকটি আছে পর্ব ৫৪-তে।

সময়রেখা আগে: কখন ঢুকল, কখন ধরা পড়ল, কখন থামল, কখন ফিরল। তা থেকে কয়েকটি মাপ আসে, যেমন dwell time, MTTD আর MTTR. তারপর প্রশ্ন: কী কাজ করল, কী করল না, পরের বার কোন detection এটি আগে ধরত?

Review-এর আসল ফল প্রতিবেদন নয়, কাজের তালিকা। একটি ভালো action item-এর চারটি অংশ:

কাজমালিকতারিখশেষ হওয়ার প্রমাণ
সব service account-এর তালিকা ও মালিকPlatform lead৩০ দিনতালিকার বাইরে কোনো login-এ alert
Config ফাইল থেকে password vault-এApp team lead৪৫ দিনSecret scan-এ শূন্য
রাতের service login-এ detection ruleDetection engineer১৪ দিনপরীক্ষার ঘটনায় alert এল
Log আয়ু ১৪ থেকে ৯০ দিনSOC lead৭ দিনConfiguration দেখা গেছে

“সতর্ক থাকতে হবে” কোনো কাজ নয়। মালিক ছাড়া কাজ কেউ করে না, আর ব্যক্তির বদলে “IT বিভাগ” লিখলে দায় হারিয়ে যায়। কাজগুলো ট্র্যাক করে শেষ করতে হয়, আর পরের মহড়ায় (পর্ব ৬৬) যাচাই করতে হয়। বড় ঘটনায় বিস্তারিত অনুসন্ধান, প্রমাণ আর সময়রেখা বানানো আসে পর্ব ৬৩ আর পর্ব ৬৪-তে।

আরও গভীরে: NIST SP 800-184 (২০১৬) recovery-কে দুই ভাগে দেখে: tactical, অর্থাৎ ঘটনার তাৎক্ষণিক ফেরা, আর strategic, অর্থাৎ পরে উন্নতি। ব্যবসার ধারাবাহিকতার আন্তর্জাতিক মান ISO 22301, আর contingency planning-এর জন্য NIST SP 800-34. বড় দলগুলো পরিকল্পিত “eviction day” চালায়: সব reset, block আর rebuild একটি ঘোষিত সময়ে, যাতে হামলাকারী এক পথ বন্ধ দেখে আরেক পথ বানানোর সময় না পায়।

পরীক্ষা ও ইন্টারভিউতে:

  • Containment আর eradication-এর পার্থক্য? প্রথমটি ক্ষতি থামায়, দ্বিতীয়টি হামলাকারীর উপস্থিতি সরায়।
  • Account বন্ধ করা কি যথেষ্ট? না। Session, token আর API key আলাদা করে বাতিল করতে হয়।
  • krbtgt দুবার কেন? পুরোনো একটি password ইতিহাসে থাকে। মাঝে ticket-এর সর্বোচ্চ আয়ু অপেক্ষা করা হয়।
  • Rebuild কখন? Admin ক্ষমতা গেলে বা পরিবর্তনের পুরো তালিকা অজানা হলে।
  • ভালো action item? নির্দিষ্ট কাজ, একজন মালিক, তারিখ, আর শেষ হওয়ার প্রমাণ।

১০ · AI-এর যুগে containment আর recovery

AI ঘটনার সময় দ্রুত log সারাংশ, সময়রেখা আর প্রতিবেদনের খসড়া দিতে পারে। কিন্তু এখানে ভুলের দাম খুব বেশি, কারণ এটি চলমান ব্যবসা আর আইনি প্রমাণ ছোঁয়।

AI-এর সাধারণ ভুলকীভাবে ধরবেন
নেই এমন CVE নম্বর বা standard উল্লেখNVD বা মূল নথিতে নিজে মিলিয়ে দেখা
“সব password একসাথে বদলান” ধরনের ঢালাও পরামর্শ, ক্রম ছাড়ানির্ভরতার তালিকা ধরে যাচাই, service account আছে কি না দেখা
Error সারাতে verify=False, chmod 777 বা ঢালাও অনুমতিdiff পড়া, নিয়ম ঢিলা না করে কারণ খোঁজা
Log দেখে অতিরিক্ত আত্মবিশ্বাসী রায়: “কোনো ডেটা চুরি হয়নি”Log কত দিনের, কী নেই, নিজে দেখা
পুরোনো পদ্ধতি বা অন্য platform-এর commandবর্তমান vendor নির্দেশিকায় মিলিয়ে নিজের lab-এ চালানো

নিচের prompt-এ AI-কে পরিকল্পনা সমালোচনা করতে বলা হচ্ছে, সিদ্ধান্ত দিতে নয়। আসল address, নাম, secret বা গ্রাহকের ডেটা দেবেন না; placeholder ব্যবহার করুন।

তুমি একজন অভিজ্ঞ incident responder. নিচে একটি কাল্পনিক ঘটনার containment ও recovery পরিকল্পনা আছে, সব নাম ও address বদলানো। [এখানে পরিকল্পনা লিখুন, কোনো secret বা ব্যক্তিগত তথ্য ছাড়া] ১. প্রমাণ নষ্ট হতে পারে এমন ধাপ কোনগুলো? ২. কোন ধাপে হামলাকারী সতর্ক হয়ে যেতে পারে? ৩. Credential বদলের ক্রমে কী ভুল, service account বা token বাদ গেছে কি? ৪. Recovery-র কোন ধাপে যাচাইয়ের শর্ত নেই? ৫. প্রতিটি পরামর্শে নির্দিষ্ট উৎস বলো, নিশ্চিত না হলে "নিশ্চিত নই" লেখো। কোনো CVE বা standard বানিয়ে লিখবে না।

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

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

প্র ০১হামলাকারী ধরা পড়লে তখনই তাড়িয়ে দেওয়া কি সবসময় সঠিক? CISA কেন “আগেভাগে block” করাকে ভুল বলল?

অভিজ্ঞ রক্ষকদের একটি পরিচিত দুঃখ আছে: তারা দ্রুত কাজ করে একটি পথ বন্ধ করলেন, আর সেই শব্দে হামলাকারী বুঝে গেল সে ধরা পড়েছে। CISA ও সহযোগী সংস্থাগুলোর ২০২০ সালের advisory AA20-245A ঠিক এই কারণে “আগেভাগে block করা” আর “আগেভাগে credential বদলানো”-কে ঘটনা সামলানোর সাধারণ ভুলের তালিকায় রেখেছে। পরামর্শের ক্রম হলো: আগে artifact, log আর ডেটা সংগ্রহ, তারপর এমন ব্যবস্থা, যা হামলাকারীকে সতর্ক করে না।

যুক্তিটি সরল। হামলাকারীর যদি পাঁচটি পথ থাকে আর আপনি একটি জানেন, তবে সেটি বন্ধ করলে সে বাকি চারটিতে সরে যায়, কিংবা নতুন বানায়। আপনি হারালেন একমাত্র দেখার জানালা। তার ওপর সে চিহ্ন মুছতে পারে, বা ransomware আগেভাগে চালিয়ে দিতে পারে।

কিন্তু উল্টো ঝুঁকিও সত্য। NIST SP 800-61 Rev. 2 স্পষ্ট বলে, দেরিতে containment বিপজ্জনক, কারণ হামলাকারী এই সময়ে আরও ক্ষতি করতে পারে। ফাইল encrypt হতে থাকলে, টাকা সরতে থাকলে, বা মানুষের নিরাপত্তা জড়িত থাকলে দেখা চালিয়ে যাওয়া দায়িত্বজ্ঞানহীন। ব্যাংকের লকার ভাঙতে দেখলে কেউ বলবে না, “আগে চোরের পুরো দলটি চিনে নিই।”

তাই উত্তরটি নিয়ম নয়, হিসাব: ক্ষতি ফেরানো যায় কি না, প্রতি ঘণ্টায় কতটা বাড়ছে, আমরা সত্যিই দেখতে পাচ্ছি কি না, আর এই ঝুঁকি বহনের অনুমতি কার। শেষ কথাটি জরুরি। ঝুঁকি নেওয়ার সিদ্ধান্ত একজন analyst-এর একার নয়; ব্যবসার দায়িত্বশীল ব্যক্তি আর আইনি পরামর্শক জানবেন, আর সময়সীমা ও tripwire লেখা থাকবে।

মূল উপলব্ধি: দ্রুততা ভালো, তবে উদ্দেশ্যহীন দ্রুততা নয়। সঠিক প্রশ্ন “কত দ্রুত থামাব” নয়, “কী জেনে, কোন ক্রমে, কোন সীমার মধ্যে থামাব”।

প্র ০২হাজার হাজার credential বদলানোর পরও চারটি বাদ পড়লে কী হয়? Cloudflare-এর ২০২৩ সালের ঘটনা কী শেখায়?

Cloudflare-এর ফেব্রুয়ারি ২০২৪-এর প্রকাশিত প্রতিবেদন এই বিষয়ের একটি বিরল খোলামেলা দলিল। প্রতিবেদন অনুযায়ী, ২০২৩ সালের অক্টোবরে Okta-র ঘটনায় কিছু credential ফাঁস হয়। প্রতিষ্ঠানটি হাজার হাজার credential বদলায়, তবে একটি service token আর তিনটি service account বাদ পড়ে। নভেম্বরের মাঝামাঝি একজন হামলাকারী সেই পথে তাদের Atlassian সিস্টেমে ঢোকে, ২২ নভেম্বর persistent access বসায়, আর ২৪ নভেম্বর তাকে বের করা হয়।

লক্ষ করুন, এটি অবহেলার গল্প নয়। প্রতিষ্ঠানটি বেশিরভাগ কাজ ঠিকমতো করেছিল। তবুও নিরাপত্তায় অঙ্কটি অসম: রক্ষকের দরকার প্রায় শতভাগ, হামলাকারীর দরকার একটি। হাজারের মধ্যে চারটি মিস হলে “৯৯% সফল” বলার মানে থাকে না।

দ্বিতীয় শিক্ষা, প্রতিবেদনের ভাষ্যে এগুলো বদলানো হয়নি কারণ ভুল করে ধরে নেওয়া হয়েছিল যে এগুলো অব্যবহৃত। “এটি তো কেউ ব্যবহার করে না” ভাবলে বরং প্রশ্ন ওঠা উচিত, তাহলে এটি আছে কেন? অব্যবহৃত credential সরিয়ে দেওয়াই সবচেয়ে সস্তা eradication.

তৃতীয় শিক্ষা, প্রতিক্রিয়ার মাপ। প্রমাণ ছোট হলেও Cloudflare “Code Red” চালায়: ৫,০০০-এর বেশি production credential বদল, ৪,৮৯৩টি system-এ forensic triage, test ও staging সিস্টেম আলাদা করা, আর পুরো global network-এর machine reimage ও reboot. ছোট প্রতিষ্ঠানের পক্ষে এত বড় আকারে সম্ভব নয়, কিন্তু নীতিটি কাজে লাগে: ফাঁক একবার ধরা পড়লে পরিধি ছোট করে ভাবা নয়, পুরো তালিকা ধরে যাচাই।

চতুর্থ শিক্ষা, প্রস্তুতি। Credential-এর তালিকা, মালিক আর মেয়াদ আগে থেকে থাকলে ঘটনার রাতে শুধু সেই তালিকা ধরে এগোতে হয়।

মূল উপলব্ধি: Eradication-এর সাফল্য কত বেশি বদলালেন তা দিয়ে মাপা হয় না। মাপা হয়, কোনটি বাদ পড়েনি, তা আপনি প্রমাণ করতে পারেন কি না।

প্র ০৩যে tool দিয়ে সিস্টেম চালান, সেই tool-ই আক্রান্ত হলে “পরিষ্কার” কাকে বলবেন? SolarWinds ঘটনা কী দেখাল?

Rebuild আর clean-এর আলোচনা সাধারণত একটি জিনিস ধরে নেয়: কোথাও একটি বিশ্বাসযোগ্য উৎস আছে। ২০২০ সালের SolarWinds Orion ঘটনা এই ধারণাকেই নাড়া দেয়। প্রকাশিত প্রতিবেদন অনুযায়ী, একটি network পরিচালনার software-এর বৈধ update-এর ভেতরেই ক্ষতিকর অংশ ঢুকেছিল। অর্থাৎ যে জিনিস সিস্টেমকে দেখে, সেটিই ছিল সমস্যা। CISA তখন Emergency Directive 21-01 দিয়ে মার্কিন ফেডারেল সংস্থাগুলোকে আক্রান্ত সংস্করণ বিচ্ছিন্ন বা বন্ধ করতে বলে। এটি containment-এর একটি বড় উদাহরণ: জানা tool বন্ধ করে দেওয়াও কখনো ঠিক।

এখান থেকে “clean” শব্দটির কয়েকটি প্রশ্ন ওঠে। এক, image কোথা থেকে এল? যে build বা pipeline দিয়ে image বানানো হয়, সেটি আক্রান্ত হলে rebuild মানে একই জিনিস নতুন করে বসানো। দুই, identity-র মূল। পরে প্রকাশিত নির্দেশনায় আলোচনা হয়েছে, হামলাকারীরা কিছু ক্ষেত্রে token signing-এর উপকরণ ব্যবহার করে জাল token বানাতে পেরেছিল। তখন শুধু password বদল যথেষ্ট নয়, signing key বা trust-ই বদলাতে হয়। এটি krbtgt-এর ধারণার সাথে মেলে: সিলমোহর চুরি হলে সনদ বদলে লাভ নেই। তিন, অন্ধ জায়গা। আপনার পর্যবেক্ষণের tool আক্রান্ত হলে তার “সব ঠিক” বার্তাও বিশ্বাস করা যায় না।

রক্ষকের ব্যবহারিক উত্তর হলো trust-এর স্তর ধরে নিচে নামা: এমন কোনো ভিত্তি খোঁজা, যা হামলাকারী ছুঁতে পারেনি। সেটি হতে পারে offline ভাবে রাখা image, vendor-এর স্বাক্ষরিত মিডিয়া, আলাদা network-এ রাখা log, বা হাতে যাচাই করা configuration. এজন্যই পর্ব ৪৮-এর signing আর SBOM, আর পর্ব ৫৫-এর আলাদা log সংরক্ষণ শুধু প্রতিরোধ নয়, recovery-রও প্রস্তুতি।

মূল উপলব্ধি: “Known-good” একটি প্রমাণ করার দাবি, ধরে নেওয়ার নয়। প্রশ্নটি সবসময়: এই জিনিসটি পরিষ্কার, তা কীসের ভিত্তিতে বলছি, আর সেই ভিত্তি কি হামলাকারীর নাগালের বাইরে ছিল?

প্র ০৪একটি শেষ পরিষ্কার কপি না থাকলে পুরো প্রতিষ্ঠান কীভাবে ফিরবে? NotPetya আর Maersk-এর গল্প কী বলে?

২০১৭ সালের NotPetya হামলা বিশ্বের অনেক প্রতিষ্ঠানকে অচল করে। শিপিং প্রতিষ্ঠান Maersk-এর ক্ষতির গল্প পরে সাংবাদিক Andy Greenberg-এর ২০১৮ সালের Wired প্রতিবেদনে বিস্তারিত এসেছে। সেই প্রতিবেদন অনুযায়ী, প্রতিষ্ঠানের domain controller-গুলোর প্রায় সব নষ্ট হয়ে যায়, আর দলটি শেষ পর্যন্ত একটি বেঁচে যাওয়া কপি পায় ঘানার একটি অফিসে, যা ঘটনার সময় বিদ্যুৎ বিভ্রাটে অফলাইন ছিল। সংখ্যা আর বিস্তারিত উৎস-ভেদে কিছুটা আলাদা হতে পারে, তাই গল্পের সারকথাটি ধরুন।

সারকথাটি অস্বস্তিকর: একটি বৈশ্বিক প্রতিষ্ঠানের পুনরুদ্ধার নির্ভর করেছিল ভাগ্যের ওপর। এখান থেকে কয়েকটি নকশার শিক্ষা আসে। প্রথমত, replication কোনো backup নয়। সব domain controller একে অন্যের কপি হওয়ায় হামলা সবখানে একসাথে পৌঁছায়। আপনার দরকার এমন কপি, যা network থেকে বিচ্ছিন্ন, অর্থাৎ offline বা immutable.

দ্বিতীয়ত, identity সবকিছুর আগে। Login না চললে অন্য সিস্টেম ফেরানোও আটকে যায়। তাই recovery-র ক্রমে identity একদম প্রথম দিকে, আর সেটি মহড়ায় পরীক্ষা করা চাই। তৃতীয়ত, ব্যবসা হাতেও চলতে পারে কি? প্রকাশিত বিবরণে কর্মীদের কাগজে, ব্যক্তিগত ফোন আর mail দিয়ে কিছু কাজ চালানোর কথা আছে। এই হলো business continuity-র আসল চেহারা: IT ফেরার অপেক্ষায় সব বন্ধ না রেখে জরুরি কাজের একটি হাতে-চালানো পথ।

চতুর্থত, মানুষ আর সরঞ্জাম। হঠাৎ হাজার হাজার machine rebuild করতে যে image, যে লোকবল, যে license key লাগে, তা ঘটনার দিনে জোগাড় করা কঠিন। পাঁচ জনের অফিস বা একটি ছোট ক্লিনিকেও একই প্রশ্ন ছোট আকারে আসে: হিসাবের ফাইল আর login-এর শেষ ভালো কপি কোথায়, আর সেটি কি বিদ্যুৎ বা network বন্ধ থাকলেও পাওয়া যায়?

মূল উপলব্ধি: Recovery ঘটনার দিনে বানানো যায় না, ঘটনার আগে নকশা করতে হয়। যে পরিকল্পনা ভাগ্যের ওপর ছাড়া আছে, তা পরিকল্পনা নয়।

প্র ০৫“কবে চালু হবে?” চাপের মুখে নিরাপত্তা দল কীভাবে ঠিক সিদ্ধান্ত নেবে? Colonial Pipeline কী দেখায়?

২০২১ সালের মে মাসে Colonial Pipeline-এর IT সিস্টেমে ransomware হামলা হয়। প্রকাশিত বিবরণ অনুযায়ী, প্রতিষ্ঠানটি সতর্কতা হিসেবে জ্বালানি পাইপলাইনের কাজও কয়েক দিন বন্ধ রাখে, যদিও আক্রমণের মূল ধাক্কা ছিল IT দিকে। এর ফল পড়ে মার্কিন পূর্ব উপকূলের জ্বালানি সরবরাহে। পরে জানা যায়, প্রতিষ্ঠান মুক্তিপণও দিয়েছিল, তবে সে পথে পাওয়া টুল ধীর ছিল বলে প্রতিবেদনে এসেছে, আর backup-ও ব্যবহার হয়।

এখানে নিরাপত্তা আর ব্যবসার সিদ্ধান্ত একে অন্যের সাথে জড়ানো। পাইপলাইন বন্ধ করা একটি containment সিদ্ধান্ত, আর তার দাম সমাজের ওপরও পড়ে। এমন সিদ্ধান্ত একজন প্রকৌশলী নেন না। আবার ব্যবসার নেতারা প্রযুক্তিগত ঝুঁকি ঠিকমতো না জানলে সিদ্ধান্ত নিতে পারেন না। তাই আপনার কাজ চাপ বহন করা নয়, চাপকে তথ্যে বদলানো।

কয়েকটি অভ্যাস কাজে লাগে। এক, বিকল্প আকারে সামনে আনুন: “এখনই ৫০% চালু করলে ঝুঁকি এই, আরও ৬ ঘণ্টা অপেক্ষা করলে খরচ এই।” দুই, যা জানেন না তা সরাসরি বলুন, আর পরের আপডেটের সময় দিন। তিন, আগে থেকে লেখা exit criteria দেখান, যাতে “ঠিক হয়ে গেছে তো?” প্রশ্নের উত্তর মতামত না হয়ে তালিকা হয়। চার, আগাম ঘোষণায় সাবধান থাকুন। “সব নিয়ন্ত্রণে” বলে পরে ফিরিয়ে নিলে বিশ্বাস নষ্ট হয়, আর আইনি দিকেও ঝুঁকি বাড়ে।

মুক্তিপণের সিদ্ধান্ত, নিয়ন্ত্রক সংস্থাকে জানানো আর গ্রাহকদের বার্তা আইনি পরামর্শ ছাড়া নেওয়া উচিত নয়; পর্ব ৩৪ আর পর্ব ৬ দেখুন। আর মানুষের ক্লান্তি ঠেকাতে পালা ভাগ করুন। রাত ৩টার সিদ্ধান্ত সকাল ৯টার মতো ভালো হয় না।

মূল উপলব্ধি: নিরাপত্তা দল “কবে” প্রশ্নের একা উত্তর দেয় না। সে ঝুঁকি, বিকল্প আর দাম স্পষ্ট করে, আর ব্যবসা তা জেনে সিদ্ধান্ত নেয়।

অনুশীলন

হিসাব, সমালোচনা আর আউটপুট অনুমান। আগে নিজে করুন, তারপর উত্তর মেলান।

  1. সময়সীমার হিসাব: একটি ঘটনায় ডেটা বের হচ্ছে ঘণ্টায় ১.৫ GB. ব্যবস্থাপনার সহনসীমা ৬ GB. ধরা পড়ার আগেই এটি ১.৫ ঘণ্টা চলেছে। (ক) আর কত ঘণ্টা নজরে রাখা যায়? (খ) ফেরার পরিকল্পনায় soak ২০, ৪০, ৬০ আর ১৮০ মিনিট, RTO ৬ ঘণ্টা। হাতে কত সময়? (গ) ৬০ মিনিটের ধাপের ৩০ মিনিট পরে থামতে হলো। তারপর ৪৫ মিনিট মেরামত, আগের ৪০ মিনিটের ধাপ আবার, তারপর ৬০ মিনিটের ধাপ নতুন করে। সমস্যাহীন পরিকল্পনার চেয়ে কত বাড়বে, RTO কি টিকবে?

    (ক) ইতিমধ্যে গেছে 1.5 × 1.5 = 2.25 GB. বাকি 6 − 2.25 = 3.75 GB. সময় = 3.75 ÷ 1.5 = ২.৫ ঘণ্টা।

    (খ) মোট 20 + 40 + 60 + 180 = 300 মিনিট = ৫ ঘণ্টা। হাতে ৬০ মিনিট।

    (গ) বাড়তি = 45 (মেরামত) + 40 (আগের ধাপের নতুন soak) + 30 (৬০ মিনিটের ধাপের নষ্ট অংশ) = ১১৫ মিনিট। মোট 415 মিনিট, প্রায় ৬.৯ ঘণ্টা। RTO-র ৩৬০ মিনিট ভেঙে গেল ৫৫ মিনিটে। তাই ফেরা শুরুর আগেই ব্যবস্থাপনাকে এই সম্ভাবনা জানানো উচিত।

  2. পরিকল্পনার সমালোচনা: একটি দল লিখল: “সকাল ১০টায় আক্রান্ত mail-এ সবাইকে জানাব। ১১টায় সব server restart করব, যাতে malware চলে যায়। দুপুরে সব মানুষের password বদলাব। সর্বশেষ backup থেকে ফিরব। কোনো alert না এলে বিকেলে ঘটনা শেষ।” অন্তত পাঁচটি ভুল বলুন আর ঠিক করুন।
    • আক্রান্ত mail-এ জানানো হামলাকারীকে সতর্ক করে। আলাপ হবে out-of-band পথে।
    • Restart RAM-এর প্রমাণ নষ্ট করে, আর persistence থাকলে malware ফিরে আসে। আগে প্রমাণ, পরে rebuild.
    • শুধু মানুষের password: service account, API key, token, session বাদ। ক্রমও নেই।
    • “সর্বশেষ” backup আক্রান্ত হতে পারে। প্রথম খারাপ চিহ্নের আগের known-good দরকার, integrity যাচাই সহ।
    • ঢোকার পথ বন্ধের কোনো কথা নেই। Scope-ও নেই।
    • “Alert না এলে শেষ” ভুল শর্ত। Exit criteria, নজরদারির সময় আর ব্যবসার সম্মতি লাগে।
  3. আউটপুট অনুমান: scope_tracker.js-এর log-এর শেষে [14, 'sohel', 'hr-03'] যোগ করলে শেষের চারটি লাইনের আগে কী নতুন লাইন ছাপা হবে, আর শেষের চারটি লাইন কেমন হবে? চালানোর আগে খাতায় লিখুন, তারপর কোড বদলে মেলান। pay-04 কি সন্দেহভাজন হবে?
    h14: account sohel exposed on bad host hr-03
    hosts   : web-01, app-02, db-01, hr-03
    accounts: deploy, svc-report, tania, sohel
    not linked so far: rumi, pay-04
    fixing only web-01 would leave 7 of 8 open

    hr-03 h12-এই খারাপ, তাই h14-এ sohel সন্দেহভাজন। কিন্তু তাঁর pay-04-এর login h13-এর, অর্থাৎ আগে, তাই এই নিয়মে pay-04 যোগ হয় না। তবে বিশ্লেষক হিসেবে আপনি h14-এর পরের সব sohel login দেখবেন, আর আগের login নিয়েও খোঁজ নেবেন, কারণ খেলনার নিয়ম প্রমাণ নয়।

  4. ক্রম নকশা: নিচের নির্ভরতা দিয়ে rotation_order.js-এর ঢেউ হাতে লিখুন: a: কিছু নয়; b: a; c: a; d: b, c; e: d. তারপর ভাবুন, a যদি e-এর ওপর নির্ভর করে তবে কী ছাপা হবে, আর বাস্তবে আপনি কী করবেন।

    ঢেউ: ১) a; ২) b, c; ৩) d; ৪) e. কোনো অপেক্ষা না থাকায় প্রতিটি ঢেউ ১ ঘণ্টা, তাই done by about t+4 h.

    a যদি e-এর ওপর নির্ভর করে, তবে শুরুতেই কোনো কাজ প্রস্তুত নয়, আর CYCLE, cannot order: a, b, c, d, e ছাপা হবে। বাস্তবে এই চক্র ভাঙতে হয়: একই সময়ে পুরোনো ও নতুন secret দুটোই গ্রহণ করার ব্যবস্থা, ঘোষিত সময়ে সব একসাথে বদল, বা নকশা বদল।

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

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

ক্রমএকটি নিশ্চিত ঘটনার পরের কাজগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)

  1. প্রমাণ সংগ্রহ আর স্বল্পমেয়াদি containment
  2. সব host, account আর secret-এর scope বের করা
  3. Persistence সরানো, ঢোকার পথ বন্ধ আর credential বদল
  4. Known-good উৎস থেকে যাচাই করে ধাপে ধাপে ফেরা
  5. বাড়তি নজরদারি শেষে ঘটনা বন্ধ আর review

একটি চুরি হওয়া account বন্ধ করার পরও হামলাকারী কাজ চালিয়ে যাচ্ছে। সবচেয়ে সম্ভাব্য কারণ কী?

  • Password যথেষ্ট লম্বা ছিল না
  • চলমান session বা token বাতিল করা হয়নি
  • Firewall বন্ধ আছে
  • Backup পুরোনো হয়ে গেছে

প্রতি ঘণ্টায় ০.৮ GB ডেটা বের হচ্ছে, সহনসীমা ৪ GB, আর ক্ষতি ফেরানো সম্ভব। দলের নজরদারি ভালো। সর্বোচ্চ কতক্ষণ scope জানার জন্য অপেক্ষা করা যায়?

  • ১ ঘণ্টা
  • ৩.২ ঘণ্টা
  • ৫ ঘণ্টা
  • যতক্ষণ দরকার, কোনো সীমা নেই

একজন server admin ক্ষমতা নিয়ে অজানা কিছু বদলে রেখেছে, তবে EDR শুধু একটি ফাইল ধরেছে। সবচেয়ে নিরাপদ পথ কোনটি?

  • ওই ফাইলটি মুছে server চালু রাখা
  • Server restart করা
  • দু-এক দিন দেখে তারপর ভাবা
  • প্রমাণ রেখে known-good উৎস থেকে rebuild করা

Domain পুরো দখল হয়েছে সন্দেহে krbtgt key দুবার বদলানো হয়, মাঝে অপেক্ষা রেখে। এর প্রধান কারণ কী?

  • পুরোনো password ইতিহাসে থাকে, আর চলমান ticket মেয়াদ পর্যন্ত টেকে
  • Password policy বছরে দুবার বদল চায়
  • দুবার বদলালে key দ্বিগুণ শক্তিশালী হয়
  • Log সংগ্রহের জন্য দুটি ঘটনা দরকার

Credential বদলের ক্রমে সাধারণত কোনটি সবচেয়ে আগে আসা উচিত?

  • সব সাধারণ ব্যবহারকারীর password
  • ঢোকার পথ বন্ধ করে admin আর identity-র মূল credential
  • Application-এর config secret
  • Test পরিবেশের password

Post-incident review-এর কোন কাজের নোটটি সবচেয়ে ভালো?

  • “সবাই ভবিষ্যতে আরও সতর্ক থাকবে”
  • “IT বিভাগ নিরাপত্তা উন্নত করবে”
  • “Detection engineer ১৪ দিনে রাতের service login-এ rule বসাবেন, পরীক্ষার ঘটনায় alert প্রমাণ”
  • “যে কর্মী ভুল করেছেন, তাঁকে সতর্ক করা হবে”

শব্দকোষ

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

মনে রাখুন

  1. থামানো, সরানো, ফেরা তিনটি আলাদা কাজ, প্রতিটির নিজের পরীক্ষা আছে।
  2. “এখন, না পরে” একটি হিসাব: ক্ষতি ফেরে কি না, দেখা যায় কি না, সময়সীমা কত। আগে প্রমাণ, আলাপ out-of-band.
  3. Scope মানে host, account, secret, ডেটা, সময়; একসাথে বের করুন, নইলে whack-a-mole.
  4. Credential-এর ক্রম নিয়ন্ত্রণকারী আগে; session, token, service account, cloud key আর krbtgt ভুলবেন না।
  5. ফেরা known-good থেকে, ধাপে ধাপে; শেষ ঘোষণা হয় exit criteria মেনে, আর review শেষ হয় মালিক ও তারিখসহ কাজে।

পরের পর্বে: প্রমাণ বারবার এসেছে। পর্ব ৬৩-তে দেখব digital forensics: প্রমাণ কীভাবে সংগ্রহ করতে হয়, chain of custody কীভাবে রাখতে হয়, আর এর সীমা কোথায়।

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

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