এই পর্বে যা শিখবেন
- Packet filter, stateful, application-layer আর next-generation firewall-এর পার্থক্য আর সীমা
- First match, implicit deny, shadowed ও redundant rule হাতে আর কোডে খুঁজে বের করা
- Inbound আর outbound filtering, আর egress control কেন প্রায়ই অবহেলিত
- Internet, DMZ, internal, management আর data zone; VLAN-এর সীমা আর microsegmentation
- Lateral movement, jump host, management network আর blast radius-এর হিসাব
- নিজের Linux মেশিনে
nftablesবাufw, denied log, change management আর একটি পূর্ণ office নকশা
১ · গেটের দারোয়ান যথেষ্ট নয় — firewall আর segmentation কেন
একটি বড় অফিস ভবন ভাবুন। গেটে দারোয়ান পরিচয়পত্র দেখেন। কিন্তু ভেতরে ঢোকার পর কেউ হিসাব বিভাগ, সার্ভার ঘর, গুদাম সবখানে অবাধে যেতে পারলে কী হবে? গেট পার হওয়া একজন ভুল মানুষই পুরো ভবনে পৌঁছে যাবেন। এই কারণে ব্যাংকে ভল্টের দরজা আলাদা, হাসপাতালে অপারেশন থিয়েটারের দরজা আলাদা।
নেটওয়ার্কে গেটের দারোয়ান হলো firewall: এটি নিয়মের তালিকা (ruleset) মিলিয়ে traffic যেতে দেয় বা আটকায়। আর ভবনের ভেতরের আলাদা দরজা হলো segmentation: নেটওয়ার্ককে ছোট ছোট ভাগে ভেঙে, ভাগের মাঝে নিয়ন্ত্রণ বসানো। সব যন্ত্র একই খোলা নেটওয়ার্কে থাকলে তাকে বলে flat network.
Segmentation মূলত যে ঝুঁকি কমায়, তার নাম lateral movement: একটি যন্ত্র দখলের পর আক্রমণকারীর পাশের যন্ত্রে ছড়িয়ে পড়া (পর্ব ৫-এ দেখেছেন)। ভেতরের যন্ত্রের মধ্যে চলা traffic-কে বলে east-west traffic, আর ভেতর-বাইরের traffic হলো north-south traffic. পুরোনো নকশা শুধু দ্বিতীয়টি পাহারা দিত। নেটওয়ার্কের ঝুঁকির সাধারণ মানচিত্র পর্ব ২১-এ আছে।
Firewall একটি পথের নিয়ন্ত্রণ। এটি বলে “এই উৎস থেকে এই গন্তব্যে এই সেবায় যাওয়া যাবে কি না।” এটি বলে না যে অনুমোদিত সেবাটি নিরাপদ। Port 443 খোলা থাকলে সেই web app-এর SQL injection firewall একা ধরবে না। তাই firewall হলো পর্ব ৩-এর defense in depth-এর একটি স্তর, পুরো নিরাপত্তা নয়।
| Firewall যা ভালো পারে | যা পারে না | ফাঁক ভরে কে |
|---|---|---|
| অপ্রয়োজনীয় port আর পথ বন্ধ করা | খোলা সেবার ভেতরের bug আটকানো | Patch, secure coding |
| Zone-এর মাঝে সীমা টানা | একই zone-এর ভেতরের চলাচল থামানো | Microsegmentation, host firewall |
| অনুমতি নেই এমন যোগাযোগ log করা | চুরি হওয়া বৈধ credential চেনা | MFA, পর্ব ২০-এর privileged access |
| বাইরে যাওয়ার পথ সীমিত করা | এনক্রিপ্ট করা traffic-এর ভেতরটা দেখা (inspection ছাড়া) | Proxy, endpoint নজরদারি |
১৯৯০ সালের দিকে Bill Cheswick একটি গেটওয়ে নকশা নিয়ে লিখতে গিয়ে তখনকার নেটওয়ার্ককে শক্ত খোসা আর নরম ভেতরের সাথে তুলনা করেছিলেন। প্রায় ২৪ বছর পরও একই সমস্যা দেখা যায়। মার্কিন সিনেট কমিটির ২০১৪ সালের staff report-এ Target-এর ২০১৩ সালের breach বিশ্লেষণ বলছে, ঢোকার শুরু হয়েছিল বাইরের এক ঠিকাদারের credential দিয়ে, আর তারপর কম সংবেদনশীল অংশ থেকে payment-এর অংশে পৌঁছানো গিয়েছিল। রিপোর্টটিই বলেছে পুরো চিত্র তখনও অসম্পূর্ণ। শিক্ষাটি স্পষ্ট: বাইরের একজনের কাজের পথ আর কার্ডের ডেটার পথ আলাদা থাকা উচিত।
২ · Firewall-এর চার ধরন — খাম, রেজিস্টার, চিঠি পড়া আর পরিচয় চেনা
পোস্ট অফিসের একজন কর্মীর কথা ভাবুন। কেউ শুধু খামের ঠিকানা দেখেন। কেউ রেজিস্টার খাতায় লিখে রাখেন কোন চিঠির উত্তর আসার কথা। কেউ খাম খুলে ভেতরটাও পড়েন। Firewall-এর ধরনগুলো ঠিক এভাবেই বাড়তি বিষয় দেখে। প্রতিটি ধাপে দেখা বাড়ে, খরচ আর জটিলতাও বাড়ে।
| ধরন | কী দেখে | ভালো দিক | সীমা |
|---|---|---|---|
| Packet filter (stateless) | প্রতিটি packet আলাদাভাবে: 5-tuple, অর্থাৎ উৎস ও গন্তব্য IP, port, protocol | খুব দ্রুত, মনে রাখার খরচ নেই | উত্তরের packet চেনে না, তাই ফেরার পথ হাতে খুলতে হয় |
| Stateful firewall | 5-tuple আর connection tracking-এর টেবিল | শুধু চলমান সংযোগের উত্তর ঢুকতে দেয় | টেবিলের মেমরি সীমিত; application-এর ভেতর দেখে না |
| Application-layer firewall বা proxy | HTTP, DNS-এর মতো protocol-এর ভেতরের অর্থ; দুই দিকের সংযোগ আলাদা করে ধরে | URL বা domain ধরে নিয়ম, protocol যাচাই | ধীর; প্রতিটি protocol বুঝতে হয়; TLS-এ সীমিত |
| Next-generation firewall (NGFW) | Stateful-এর সাথে application চেনা, user পরিচয়, IPS-এর ধরনের নিয়ম | এক জায়গায় অনেক নিয়ন্ত্রণ, “কে” ধরে নিয়ম | দামি, জটিল; ভুল বিশ্বাস তৈরি করে; নিজেও patch করতে হয় |
এগুলো একে অপরকে পুরোপুরি বাতিল করে না। বড় নেটওয়ার্কের ধারে দ্রুত stateless filter, তার পরে stateful firewall, আর web সেবার সামনে WAF থাকতে পারে (CDN, WAF আর edge দেখুন; web-এর দিকটি পর্ব ৪৪-এ)। NGFW শব্দটি বাজারের নাম, কোনো মান (standard) নয়। ২০০৯ সালের দিকে Gartner-এর একটি লেখায় এটি জনপ্রিয় হয়। তাই “NGFW আছে” শুনে জিজ্ঞেস করুন: ঠিক কোন feature চালু আছে?
Stateful firewall আসলে কী মনে রাখে
আপনার office-এর একটি PC (192.0.2.15) একটি web server-এ (203.0.113.10) যাচ্ছে। Firewall-এ বাইরে থেকে ভেতরে আসার কোনো allow নিয়ম নেই। তবু উত্তর ঢোকে কীভাবে? নিচের ডায়াগ্রামে দেখুন। শেষ দিকে একটি অচেনা packet-ও আসবে।
| Packet | |
| দেখা হলো | |
| State টেবিল | |
| সিদ্ধান্ত |
- নতুন সংযোগের প্রথম packet. PC থেকে SYN বের হলো। Firewall আগে state টেবিল দেখল। টেবিল খালি, তাই এটি নতুন সংযোগ। এবার ruleset দেখতে হবে।
- নিয়ম মিলল, সারি তৈরি। “staff থেকে internet-এ 443” নিয়মটি মিলল। Firewall টেবিলে 5-tuple-সহ একটি সারি লিখল, অবস্থা NEW. রেজিস্টার খাতায় লেখার মতো: এই চিঠির উত্তর আসতে পারে।
- ফিরতি packet. SYN-ACK এল বাইরে থেকে। এর জন্য inbound allow নেই। তবু এটি টেবিলের সারির ঠিক উল্টো দিক মিলিয়ে দিল: একই দুই IP, একই দুই port. তাই ঢুকতে পারল, অবস্থা হলো ESTABLISHED.
- পরের data. এখন প্রতিটি packet টেবিলেই মিলছে, পুরো ruleset পড়তে হচ্ছে না। এই কারণে “established আগে” নিয়মটি গতিও বাড়ায়।
- অচেনা packet.
198.51.100.7একই PC-র একই port-এ packet পাঠাল। Port মিললেও উৎস মেলে না, তাই 5-tuple মিলল না। কোনো নিয়মও নেই। DROP, আর log-এ একটি লাইন। Stateless filter ফিরতি port খুলে রাখলে এটি ঢুকে যেত। - সংযোগ বন্ধ। FIN দেখে firewall সারিটি সরিয়ে দিল। বাস্তবে সরানো হয় একটি ছোট timeout-এর পরে, আর UDP-তে timeout-ই একমাত্র উপায়, কারণ UDP-তে FIN নেই।
- দেরিতে আসা packet. সারি নেই, তাই আগের সংযোগের packet-ও এখন অচেনা। DROP. মনে রাখার বিষয়: অনুমতি লেগে আছে সংযোগের সাথে, port-এর সাথে নয়।
Cloud-এর security group ঠিক এই আচরণের একটি রূপ, আর network ACL হলো stateless রূপ। সেই পার্থক্য আর provider-ভেদ Security group আর network ACL পর্বে আছে, এখানে আর পুনরাবৃত্তি করছি না। NAT-ও আলাদা বিষয়: NAT ঠিকানা বদলায়, নিরাপত্তা নীতি লেখে না। ভেতরের যন্ত্রে সরাসরি পৌঁছানো কঠিন হওয়া একটি পার্শ্বফল মাত্র।
৩ · নিয়মের খাতা — first match আর implicit deny
দারোয়ানের খাতায় ওপর থেকে নিচে নিয়ম লেখা। প্রথম যে নিয়মের সাথে মানুষটি মেলে, দারোয়ান সেটিই মানেন, পরেরগুলো আর পড়েন না। একে বলে first match. কিছুই না মিললে ফেরত পাঠান, যেটি implicit deny. এটি পর্ব ৩-এর default deny নীতির নেটওয়ার্ক রূপ।
নিচের খেলনা firewall চারটি নিয়মে পাঁচটি packet যাচাই করে। এটি শুধু memory-র ডেটা নিয়ে চলে, কোনো আসল traffic নেই। দ্বিতীয় অংশে একই নিয়ম, শুধু ক্রম বদলানো হয়েছে।
// Toy first-match firewall: in-memory rules and packets, no real traffic.
const rules = [
{ id: 'R1', action: 'allow', src: 'guest', dst: 'internet', port: 443 },
{ id: 'R2', action: 'deny', src: 'guest', dst: 'any', port: 'any' },
{ id: 'R3', action: 'allow', src: 'staff', dst: 'server', port: 443 },
{ id: 'R4', action: 'allow', src: 'cctv', dst: 'nvr', port: 554 },
];
const packets = [
{ src: 'guest', dst: 'internet', port: 443 },
{ src: 'guest', dst: 'server', port: 443 },
{ src: 'staff', dst: 'server', port: 443 },
{ src: 'staff', dst: 'server', port: 22 },
{ src: 'cctv', dst: 'internet', port: 443 },
];
const hit = (want, got) => want === 'any' || want === got;
function decide(list, p) {
for (let i = 0; i < list.length; i++) {
const r = list[i];
if (hit(r.src, p.src) && hit(r.dst, p.dst) && hit(r.port, p.port)) {
return { verdict: r.action, why: `${r.id} (checked ${i + 1})` };
}
}
return { verdict: 'deny', why: `implicit deny (checked ${list.length})` };
}
function show(title, list) {
console.log(`--- ${title}`);
for (const p of packets) {
const d = decide(list, p);
const name = `${p.src} -> ${p.dst}:${p.port}`;
console.log(`${name.padEnd(24)} ${d.verdict.toUpperCase().padEnd(6)} ${d.why}`);
}
}
show('rules in the planned order', rules);
show('same rules, R2 moved to the top', [rules[1], rules[0], rules[2], rules[3]]);প্রথম অংশে guest -> internet:443 ALLOW R1 (checked 1), আর guest -> server:443 DENY R2 (checked 2). staff -> server:22 কোনো নিয়মে মেলেনি, তাই DENY implicit deny (checked 4). দ্বিতীয় অংশে R2 ওপরে যেতেই guest -> internet:443 DENY R2 (checked 1): নিয়ম একটিও বদলায়নি, শুধু ক্রম বদলেছে, তবু guest-দের internet বন্ধ। লক্ষ করুন checked-এর সংখ্যাও। প্রথম মেলা নিয়ম যত ওপরে, যাচাই তত কম। তাই ব্যস্ত নিয়ম ওপরে রাখা যায়, তবে শুধু ফল না বদলালে।
সব firewall একই নিয়মে চলে না। “Implicit deny” নিজে থেকে থাকবে, এটি ধরে নেবেন না। আপনার পণ্যের নথি দেখে নিন।
| উদাহরণ | কীভাবে সিদ্ধান্ত | কোনো নিয়ম না মিললে |
|---|---|---|
| Router-এর সাধারণ ACL | First match | শেষে অদৃশ্য deny (নিয়ম থাকলে) |
ufw | First match | Default policy: নতুন install-এ incoming deny, outgoing allow |
nftables | Chain-এ ওপর থেকে নিচে; accept বা drop-এ থামে | Chain-এর policy. না লিখলে accept |
OpenBSD pf | শেষ মেলা নিয়ম জেতে, তবে quick থাকলে সাথে সাথে থামে | Default pass, তাই শুরুতে block নিয়ম লেখা হয় |
| Windows Defender Firewall | ক্রমে নয়; সাধারণভাবে block নিয়ম allow-এর চেয়ে শক্তিশালী | Profile-এর default আচরণ |
Deny মানে drop নাকি reject
Drop চুপচাপ packet ফেলে দেয়, উৎস অপেক্ষা করে timeout খায়। Reject উত্তর পাঠায় (TCP RST বা ICMP), তাই ভুল সংযোগ সাথে সাথে থামে। মতভেদ আছে। সাধারণ চর্চা হলো internet-এর দিকে drop, যাতে অপ্রয়োজনীয় উত্তর না যায়, আর ভেতরের zone-এ reject, যাতে সমস্যা ধরা সহজ হয়। নিরাপত্তায় এদের পার্থক্য সাধারণত ছোট।
৪ · যে নিয়ম কখনো চলে না — shadowed আর redundant rule
পুরোনো রেজিস্টার খাতার পাতায় পাতায় কাটাকুটি থাকে। Firewall-ও বছরে বছরে তেমন হয়। দুই রকম সমস্যা সবচেয়ে সাধারণ:
Shadowed rule
আগের একটি নিয়ম পরের নিয়মের পুরো পরিসর ঢেকে রাখে, আর দুটির সিদ্ধান্ত ভিন্ন। Shadowed rule কখনো চলে না। লেখকের ইচ্ছা পূরণ হচ্ছে না, অথচ খাতায় নিয়মটি ঠিকই দেখা যায়।
ঝুঁকি: ভুল নিরাপত্তাবোধRedundant rule
আগের নিয়ম পুরোটা ঢেকেছে, আর সিদ্ধান্তও একই। Redundant rule সরালে ফল বদলায় না। তবু এটি খাতা ভারী করে আর পর্যালোচনা কঠিন করে।
ঝুঁকি: জটিলতাএকটি কাল্পনিক office-এর ৭টি নিয়ম পর্যালোচনা করা যাক। পাশের hits হলো firewall-এর গত ৯০ দিনের কাউন্টার। নিচের ডায়াগ্রামে একজন reviewer-এর সাথে এগোন।
1R1 allow staff server 443 hits 91202R2 deny cctv any any hits 3103R3 allow cctv nvr 554 hits 04R4 allow office server 443 hits 44105R5 allow accounts server 443 hits 06R6 allow any any 8080 hits 577R7 deny guest server 8080 hits 0
| যাচাই | |
| ফল |
- আগে কাউন্টার দেখা। তিনটি নিয়মের
hits0. শূন্য মানেই ভুল নয়, হয়তো নিয়মটি দরকার বছরে একবার, বা কাউন্টার সম্প্রতি মুছে গেছে। তবু এখান থেকে শুরু করা সহজ। - R3-কে আগের নিয়মের সাথে মেলানো। R3 (
cctv → nvr 554)-এর উৎস R2-এর উৎসের সমান। R2-এর গন্তব্যany, portany, তাই R3-এর পুরো পরিসর ঢাকা। সিদ্ধান্ত উল্টো। তাই R3 shadowed. - প্রভাব বোঝা। R3 কখনো চলেনি, মানে camera NVR-এ পৌঁছাতে পারছে না। হয়তো কেউ অস্থায়ী কোনো পথ বানিয়ে রেখেছে, অথবা recording-ই বন্ধ। এখানে সমাধান সহজ: নির্দিষ্ট allow-কে সাধারণ deny-এর ওপরে তোলা।
- R5.
officeদলেstaffআরaccountsদুটোই আছে। তাই R4 পুরোটা ঢেকেছে R5-কে, সিদ্ধান্তও একই। R5 redundant. মালিক জানিয়ে দিলে সরানো নিরাপদ, ফল বদলাবে না। - সবচেয়ে বিপজ্জনক: R7. কেউ লিখেছিলেন guest যেন server-এর 8080-তে না যায়। কিন্তু R6 সবাইকে সব গন্তব্যের 8080 খুলে দিয়েছে। তাই R7-এর deny কখনো চলে না। খাতা দেখে মনে হয় বন্ধ, বাস্তবে খোলা। R6-এর hits 57, আর তার মালিক কেউ জানে না।
- সিদ্ধান্ত। R3 ওপরে উঠল, R5 আর R6 সরল, মোট ৭ থেকে ৫টি। R6 সরানোর আগে দেখা হলো ওই ৫৭টি hit কার। R7 রাখা হলো, কারণ এর log বিশেষ alert দেয়। খেয়াল করুন, এখন R1 পরের R4-এর ভেতরে পড়ে; দুটি মিলিয়ে এক করা যায়।
একই যুক্তি কোডে। প্রতিটি নিয়মের জন্য টুলটি খোঁজে: আগের কোনো একটি নিয়ম কি এর পুরো পরিসর ঢেকেছে? ঢেকে থাকলে সিদ্ধান্ত মিলিয়ে নাম দেয়।
// Toy rule-review tool: finds rules that an earlier single rule fully covers.
const groups = { office: ['staff', 'accounts'] }; // a group is a set of zones
const expand = z => groups[z] || [z];
const rules = [
{ id: 'R1', action: 'allow', src: 'staff', dst: 'server', port: 443 },
{ id: 'R2', action: 'deny', src: 'cctv', dst: 'any', port: 'any' },
{ id: 'R3', action: 'allow', src: 'cctv', dst: 'nvr', port: 554 },
{ id: 'R4', action: 'allow', src: 'office', dst: 'server', port: 443 },
{ id: 'R5', action: 'allow', src: 'accounts', dst: 'server', port: 443 },
{ id: 'R6', action: 'allow', src: 'any', dst: 'any', port: 8080 },
{ id: 'R7', action: 'deny', src: 'guest', dst: 'server', port: 8080 },
];
// Does field `a` of an earlier rule include everything field `b` includes?
function fieldCovers(a, b) {
if (a === 'any') return true;
if (b === 'any') return false;
const wide = expand(a);
return expand(b).every(z => wide.includes(z));
}
const covers = (e, l) => ['src', 'dst', 'port'].every(f => fieldCovers(e[f], l[f]));
let findings = 0;
rules.forEach((later, i) => {
const earlier = rules.slice(0, i).find(e => covers(e, later));
if (!earlier) return console.log(`${later.id} ok`);
findings++;
const same = earlier.action === later.action;
const kind = same ? 'REDUNDANT' : 'SHADOWED ';
const risk = later.action === 'deny' ? 'a deny that never runs' : 'an allow that never runs';
console.log(`${later.id} ${kind} by ${earlier.id}` + (same ? ' (safe to remove after review)' : `: ${risk}`));
});
console.log(`findings: ${findings} of ${rules.length} rules`);ফল: R3 SHADOWED by R2: an allow that never runs, R5 REDUNDANT by R4 (safe to remove after review), R7 SHADOWED by R6: a deny that never runs, আর শেষে findings: 3 of 7 rules. টুলটি শুধু ক্রমের দোষ ধরে। R6 নিজে R6 ok দেখাচ্ছে, যদিও মানুষের চোখে সেটিই সবচেয়ে খারাপ নিয়ম। অর্থাৎ যন্ত্র যুক্তির অসংগতি ধরে, আর “এই নিয়ম কি থাকা উচিত” সেই প্রশ্নের উত্তর দেন মালিক। এই খেলনাটির আরেকটি সীমা: দুটি আগের নিয়ম মিলে একটি নিয়ম ঢাকলে এটি ধরে না।
আরও গভীরে: Ehab Al-Shaer আর Hazem Hamed ২০০৩–২০০৪ সালের দিকে firewall নিয়মের অসংগতিকে shadowing, correlation, generalization আর redundancy নামে ভাগ করেন। Avishai Wool-এর ২০০৪ সালের সমীক্ষায় বাস্তব firewall-এর কনফিগারেশনে ভুল ব্যাপকভাবে পাওয়া যায়, আর নিয়ম যত জটিল, ভুল তত বেশি। আধুনিক কিছু টুল নিয়মকে যুক্তির সূত্রে রূপ দিয়ে solver দিয়ে যাচাই করে, তাই একাধিক নিয়মের মিলিত ঢাকাও ধরতে পারে। মৌলিক নির্দেশনার জন্য NIST SP 800-41 Rev. 1 (২০০৯) দেখুন।
৫ · ভেতর থেকে বাইরে — egress control কেন জরুরি
অনেক office-এর নিয়ম এমন: বাইরে থেকে ভেতরে সব বন্ধ, ভেতর থেকে বাইরে সব খোলা। প্রথমটি ingress filtering, আর দ্বিতীয়টির নিয়ন্ত্রণ হলো egress filtering. বাড়ির দরজায় তালা আছে, কিন্তু চোর ভেতরে ঢুকলে মালপত্র নিয়ে পেছনের খোলা দরজা দিয়ে হেঁটে বেরিয়ে যেতে পারে। Egress control সেই পেছনের দরজা।
আক্রমণের অনেকগুলো ধাপ ভেতর থেকে শুরু হওয়া সংযোগের ওপর নির্ভর করে:
- Command and control (C2): দখল হওয়া যন্ত্র নিজেই বাইরের server-এ যোগাযোগ করে। Inbound বন্ধ থাকলেও এটি কাজ করে, কারণ stateful firewall ভেতর থেকে শুরু হওয়া সংযোগ চেনে।
- Exfiltration: ডেটা বাইরে পাঠানো। Egress সীমিত থাকলে পথ ছোট হয়, আর অস্বাভাবিক গন্তব্য log-এ ধরা পড়ে।
- বাড়তি code নামানো: Server-এর internet-এ যাওয়ার দরকার না থাকলে এই পথটিও বন্ধ।
বাস্তব উদাহরণ: প্রকাশিত রিপোর্ট অনুযায়ী SolarWinds ২০২০-এর backdoor বাইরের command server-এ outbound যোগাযোগের ওপর নির্ভর করত, আর Log4Shell (২০২১)-এর সাধারণ ঘটনাপ্রবাহেও সার্ভারকে বাইরে সংযোগ করতে হতো। দুটি ক্ষেত্রেই সার্ভারের কড়া egress নিয়ম ক্ষতি কমাতে পারত, যদিও পুরো ঠেকানোর নিশ্চয়তা দিত না। Equifax (২০১৭)-এর শিক্ষা আরেকটু আলাদা: মার্কিন House কমিটির ২০১৮ সালের রিপোর্ট বলছে, মেয়াদোত্তীর্ণ certificate-এর কারণে traffic দেখার যন্ত্রটি ১৯ মাস অকার্যকর ছিল, আর certificate নবায়নের পরই সন্দেহজনক traffic চোখে পড়ে। GAO-র ২০১৮ সালের রিপোর্টে সময়টি ভিন্নভাবে বলা হয়েছে, তাই সংখ্যাটি উৎস ধরে পড়ুন (পর্ব ৬৫)। নজরদারি নিজেই একটি নিয়ন্ত্রণ, আর তা চালু আছে কি না যাচাই করতে হয়।
কীভাবে শুরু করবেন
- Server zone আগে: এখানে গন্তব্য অল্প ও জানা। Default deny, তারপর update, backup আর দরকারি API.
- DNS এক পথে: শুধু আপনার resolver বাইরে যাবে, বাকিরা resolver-কে জিজ্ঞেস করবে। DNS-এর নিরাপত্তা পর্ব ২৬-এ।
- Web-এর জন্য forward proxy: Forward proxy domain ধরে allowlist করতে পারে। শুধু IP ধরে নিয়ম লিখলে CDN-এ একই IP অনেক সাইট ভাগ করে, তাই নিয়ম ভাঙে।
- প্রথমে শুধু log: কয়েক সপ্তাহ traffic দেখে তালিকা বানান, তারপর block চালু করুন।
নিচের খেলনা checker একটি server zone-এর নমুনা গন্তব্য যাচাই করে। এটি কোনো সংযোগ করে না, শুধু তালিকা মেলায়। শেষের দুই লাইন একটি সাধারণ ভুল দেখায়: domain-এর মিল substring দিয়ে করা।
# Toy egress allow-list checker for a server zone. Reads a fixed sample, sends nothing.
import ipaddress
ALLOWED_DOMAINS = {"updates.example.com", "backup.example.net"}
ALLOWED_NETS = {ipaddress.ip_network("192.0.2.53/32"): {53}} # internal DNS only
def naive_match(host): # the common mistake: substring test
return any(d in host for d in ALLOWED_DOMAINS)
def domain_match(host): # label-aware: exact name or a real subdomain
return any(host == d or host.endswith("." + d) for d in ALLOWED_DOMAINS)
def check(dest, port):
try:
ip = ipaddress.ip_address(dest)
except ValueError:
return port == 443 and domain_match(dest)
return any(ip in net and port in ports for net, ports in ALLOWED_NETS.items())
sample = [
("updates.example.com", 443),
("eu.updates.example.com", 443),
("backup.example.net", 22),
("updates.example.com.example.org", 443),
("192.0.2.53", 53),
("203.0.113.9", 53),
("198.51.100.7", 443),
]
blocked = 0
for dest, port in sample:
ok = check(dest, port)
blocked += not ok
print(f"{'ALLOW' if ok else 'BLOCK'} {dest}:{port}")
print(f"blocked {blocked} of {len(sample)}")
print("naive test on look-alike name:", naive_match("updates.example.com.example.org"))
print("label test on look-alike name:", domain_match("updates.example.com.example.org"))ALLOW eu.updates.example.com:443 ঠিক আছে, কারণ এটি সত্যিকারের subdomain. BLOCK backup.example.net:22: domain ঠিক, port ভুল। BLOCK 203.0.113.9:53: সরাসরি বাইরের DNS-এ যাওয়া আটকানো হলো। শেষে blocked 4 of 7. তারপর naive test on look-alike name: True আর label test on look-alike name: False. updates.example.com.example.org-এর আসল মালিক example.org, অথচ substring পরীক্ষা একে অনুমোদিত ভেবেছে। তাই domain সবসময় লেবেলের সীমা মেনে মেলাতে হয়। Block হওয়া প্রতিটি লাইনই একটি log, যা পর্ব ৫৬-এর SIEM নিয়মে কাজে লাগে।
Egress control সব পথ বন্ধ করে না। অনুমোদিত সাইট বা অনুমোদিত DNS দিয়েও ডেটা বেরোতে পারে। Domain-ভিত্তিক নিয়ম TLS-এ সাধারণত SNI-এর ওপর নির্ভর করে, আর ECH সেই দৃশ্যমানতা কমাতে পারে। পূর্ণ দৃশ্যমানতার জন্য TLS inspection লাগে, যার ঝুঁকি আর গোপনীয়তার প্রশ্ন পর্ব ১২-এ আছে। তাই egress-এর লক্ষ্য হলো পথ ছোট করা আর ব্যতিক্রম দৃশ্যমান করা।
৬ · Zone, VLAN আর microsegmentation
Segmentation-এর প্রথম ধাপ হলো যন্ত্র গোনা নয়, বিশ্বাসের স্তর ভাগ করা। একই ঝুঁকি, একই মালিক আর একই ধরনের ডেটার যন্ত্র নিয়ে হয় একটি network zone. দুই zone-এর সীমাই পর্ব ৪-এর trust boundary, আর সেখানেই নিয়ম বসে।
সাধারণ পাঁচটি zone
Internet, DMZ, internal, data and management zones around a firewall
| Zone | কী থাকে | নিয়মের ভাবনা |
|---|---|---|
| Internet | আপনার নিয়ন্ত্রণের বাইরের সবকিছু | কিছুই বিশ্বাস নয় |
| DMZ | বাইরে থেকে পৌঁছানো দরকার এমন সেবা | দখল হবে ধরে নিয়ে নকশা; ভেতরে যাওয়ার পথ খুব কম |
| Internal | কর্মীদের যন্ত্র | Phishing-এর প্রথম লক্ষ্য, তাই “বিশ্বস্ত” নয় |
| Data | Database, ফাইল, backup | শুধু নির্দিষ্ট app থেকে নির্দিষ্ট port; সরাসরি internet নয় |
| Management | Admin interface, jump host | সবচেয়ে কড়া; এখান থেকে সবখানে পৌঁছানো যায়, তাই ঢোকা কঠিন |
Zone বাড়লে হিসাবও বাড়ে। nটি zone-এ সিদ্ধান্ত নিতে হয় n(n−1)টি দিকের জন্য, কারণ A থেকে B আর B থেকে A আলাদা। ৫টি zone-এ ৫ × ৪ = ২০টি দিক, ৭টিতে ৭ × ৬ = ৪২টি। তাই default deny জরুরি: ৪২টি দিকের বেশিরভাগে নিয়মই লাগে না, শুধু অল্প কয়েকটি allow লিখলেই চলে।
VLAN করে কী হয়, কী হয় না
VLAN একই switch-কে কয়েকটি যুক্তিগত switch-এ ভাগ করে (VLAN পর্ব দেখুন)। ভিন্ন VLAN-এর যন্ত্র সরাসরি frame পাঠাতে পারে না, তাই ARP-ভিত্তিক ঝুঁকিও (DHCP আর ARP) নিজের VLAN-এর ভেতরে থাকে। কিন্তু সীমাগুলো মনে রাখুন:
- VLAN firewall নয়: Router বা Layer 3 switch সাধারণত VLAN-এর মাঝে সব routing করে দেয়। ACL বা firewall না বসালে “আলাদা” VLAN পুরো খোলা।
- একই VLAN-এর ভেতরে কিছু নেই: Zone-এর ভেতরের যন্ত্র একে অপরকে অবাধে পায়।
- Switch-এর কনফিগারেশনে নির্ভরশীল: Trunk port ভুলভাবে খোলা থাকলে বা native VLAN অসাবধানে ব্যবহার হলে VLAN-এর সীমা দুর্বল হয়। সব access port-এ trunk আলোচনা বন্ধ রাখুন, অব্যবহৃত port বন্ধ রাখুন, আর native VLAN-এ কোনো যন্ত্র রাখবেন না।
- সংখ্যার সীমা: IEEE 802.1Q-র VLAN ID ১২ bit, তাই ব্যবহারযোগ্য প্রায় ৪,০৯৪টি। Data center-এ VXLAN (RFC 7348)-এর ২৪ bit প্রায় ১.৭ কোটি।
Microsegmentation — প্রতিটি কাজের চারপাশে দেয়াল
Microsegmentation সীমাকে zone থেকে নামিয়ে আনে একক workload বা host পর্যন্ত। নিয়ম লেখা হয় IP-র বদলে পরিচয় বা label দিয়ে: “app=billing শুধু db=billing-এর 5432-তে যাবে।” Enforcement থাকে host firewall, hypervisor, বা service mesh-এ। Kubernetes-এর network policy-ও একই ভাবনা, যার কথা পর্ব ৭৩-এ আসবে।
লাভ
একই zone-এর ভেতরেও পথ বন্ধ, নিয়ম workload-এর সাথে চলে, IP বদলালেও ভাঙে না। Zero trust-এর দিকে স্বাভাবিক পদক্ষেপ।
পরিধি অনেক ছোটদাম
কে কার সাথে কথা বলে তার পূর্ণ মানচিত্র লাগে। না জেনে চালু করলে সেবা ভাঙে। তাই আগে observe mode-এ দেখে তারপর enforce করা হয়।
ধীরে ধীরে চালু করুন৭ · Lateral movement আর blast radius — মেপে দেখা
“Segmentation ভালো” বলাটি সহজ। প্রশ্ন হলো, কতটা? Blast radius মেপে দেখা যায়: একটি যন্ত্র দখল হলে সর্বোচ্চ কতগুলো যন্ত্রে পৌঁছানো সম্ভব? নিচের simulator একটি ৪০ host-এর খেলনা office-এ তিনটি নকশা তুলনা করে: flat, শুধু zone (zone-এর ভেতরে খোলা), আর micro (zone-এর ভেতরেও বন্ধ)। direct মানে সরাসরি যত host, chain মানে ধরে নেওয়া হলো পৌঁছানো প্রতিটি যন্ত্রই দখল হয়, এমন সবচেয়ে খারাপ অবস্থায় মোট যত host.
// Toy blast-radius simulator on an in-memory office network of 40 hosts.
const sizes = { guest: 10, staff: 12, accounts: 5, cctv: 8, nvr: 1, server: 2, jump: 1, admin: 1 };
const hosts = [];
for (const [zone, n] of Object.entries(sizes)) {
for (let i = 1; i <= n; i++) hosts.push({ name: `${zone}-${i}`, zone });
}
const flows = { staff: ['server'], accounts: ['server'], cctv: ['nvr'],
admin: ['jump'], jump: ['server', 'nvr'] };
const zoneOk = (a, b) => (flows[a.zone] || []).includes(b.zone);
const designs = {
flat: (a, b) => true,
zones: (a, b) => a.zone === b.zone || zoneOk(a, b),
micro: (a, b) => zoneOk(a, b), // same zone no longer means allowed
};
const direct = (h, can) => hosts.filter(o => o !== h && can(h, o));
function chain(start, can) { // worst case: every reached host falls
const seen = new Set([start]), queue = [start];
while (queue.length) {
for (const o of direct(queue.shift(), can)) {
if (!seen.has(o)) { seen.add(o); queue.push(o); }
}
}
return seen.size - 1;
}
console.log('start flat zones micro (direct/chain)');
for (const name of ['guest-1', 'cctv-1', 'staff-1', 'accounts-1', 'admin-1']) {
const h = hosts.find(x => x.name === name);
const cell = can => `${direct(h, can).length}/${chain(h, can)}`.padEnd(9);
console.log(name.padEnd(12) + cell(designs.flat) + cell(designs.zones) + cell(designs.micro));
}
for (const [label, can] of Object.entries(designs)) {
const paths = hosts.reduce((sum, h) => sum + direct(h, can).length, 0);
console.log(`${label.padEnd(6)} allowed host-to-host paths: ${paths}`);
}Flat নকশায় সবার 39/39, আর মোট flat allowed host-to-host paths: 1560, যা 40 × 39. Zone বসালে cctv-1 হয় 8/8: নিজের ৭টি camera আর NVR. Micro-তে 1/1, শুধু NVR. মোট পথ নেমে আসে 346 আর তারপর 46-এ, অর্থাৎ ১,৫৬০-এর প্রায় ৩%. হাতে যাচাই: staff ১২ × ২ + accounts ৫ × ২ + cctv ৮ × ১ + admin ১ + jump ৩ = ৪৬. খেয়াল করুন admin-1 39/39 1/4 1/4: সরাসরি পথ ১টি, কিন্তু শিকলে ৪টি, কারণ সেই একটি পথ jump host-এ যায়। এই চিত্রটিই বলে কেন jump host-কে বিশেষ পাহারা দিতে হয়।
এই সংখ্যা অনুমান-নির্ভর। এটি মাপে পথ, সম্ভাবনা নয়। অনুমোদিত পথেও ক্ষতি হতে পারে: staff-1-এর চোখে দুটি server-ই আছে, আর সেখানেই আসল ডেটা। তাই “৯৭% পথ কমেছে” মানে ৯৭% ঝুঁকি কমেছে, এমন দাবি করবেন না। আর পর্ব ১৯-এর authorization ছাড়া পথ কমানো অসম্পূর্ণ।
একটি ঘটনা — দখল হওয়া camera কীভাবে আটকে যায়
কাল্পনিক office-এ একটি পুরোনো firmware-এর CCTV camera (cctv-1) ধরে নিন দখল হয়েছে। কীভাবে হলো সেটি এখানে আলোচ্য নয়, IoT-র সুরক্ষা পর্ব ৩৫-এ আছে। দেখুন zone আর নিয়ম কী করে। এখানে micro নকশা চালু: camera-র কাছে অন্য কোনো camera-র পথও নেই।
| সময় | |
| চেষ্টা | |
| ফল | |
| Firewall deny log | |
| পৌঁছানো যায় |
- প্রথম ধাপ। ০২:১০.
cctv-1দখল হয়েছে, কেউ জানে না। flat নকশায় এখনই ৩৯টি host নাগালে থাকত। এখানে অনুমোদিত পথ মাত্র ১টি। - হিসাব বিভাগের দিকে চেষ্টা। Camera থেকে accounts-এর দিকে কোনো নিয়ম নেই। Implicit deny. Log-এ প্রথম লাইন। এই denied লাইনটিই পরে দাম দেবে, কারণ camera-র এই পথে কখনো যাওয়ার কথা নয়।
- পাশের camera. এই চেষ্টা firewall পর্যন্ত পৌঁছায় না। একই VLAN, তাই switch-এর port isolation আটকায়। সতর্ক থাকুন: এখানে firewall-এ log নেই, তাই কাউন্টার ১-ই থাকল। Zone-এর ভেতরের দৃশ্যমানতা আলাদা করে ভাবতে হয়।
- বাইরে যাওয়ার চেষ্টা। Camera বাইরের server-এ যেতে চাইল। Egress নিয়মে CCTV zone-এর জন্য internet নেই। DENY. Log-এ দ্বিতীয় লাইন। Egress control না থাকলে এই সংযোগ stateful firewall খুশি মনে যেতে দিত।
- একমাত্র খোলা পথ।
nvr-1-এর 554 খোলা, এটিই নকশা। অবশিষ্ট ঝুঁকিটি এখানে, তাই NVR-কেও patch, শক্ত password আর আলাদা নজরদারি দিতে হবে। Segmentation ঝুঁকি শূন্য করে না, ছোট জায়গায় আনে। - Alert. ০২:১৭. SIEM-এর একটি সরল নিয়ম: “CCTV zone থেকে NVR ছাড়া অন্য গন্তব্যে deny” দেখা গেলে alert. ৫ মিনিটে ২টি লাইন, উভয়ই অস্বাভাবিক। False positive-এর সম্ভাবনা কম, কারণ এই zone-এর আচরণ খুব অনুমানযোগ্য।
- Containment. ০২:৪০. On-call প্রকৌশলী switch-এর port বন্ধ করলেন, পৌঁছানোর পরিধি ০। এরপর প্রমাণ রাখা, firmware বদল, আর একই মডেলের বাকি camera যাচাই। পর্ব ৬২-এ এই ধাপের বিস্তার আছে।
Jump host আর management network
ওপরের হিসাব বলছে admin-এর পথই সবচেয়ে চওড়া। তাই admin কাজ সাধারণ পথে হয় না। Jump host (bastion) একটি ছোট, শক্ত করে সাজানো মেশিন। Admin আগে এখানে login করেন, তারপর এখান থেকে অন্য সিস্টেমে যান। ব্যাংকের ভল্টে ঢোকার আগে আলাদা একটি কক্ষে সই করার মতো।
- একটি দরজা, এক জায়গায় নজর: Server-এর SSH বা RDP শুধু jump host থেকে খোলা। সব session-এর log একই জায়গায়।
- Phishing-প্রতিরোধী MFA: পর্ব ১৬ অনুযায়ী, সাথে পর্ব ২০-এর session recording ও just-in-time access.
- এখানে দৈনন্দিন কাজ নয়: Browser, email বা ফাইল ডাউনলোড নেই। SSH-এর নিরাপদ ব্যবহার SSH remote পর্বে আছে।
- Agent forwarding এড়িয়ে চলুন: Jump host দখল হলে forwarded agent-ও ঝুঁকিতে পড়ে। SSH-এর
ProxyJumpএখানে ভালো বিকল্প।
Management network হলো switch, router, firewall, hypervisor আর remote console-এর admin interface-এর আলাদা zone. এই interface কখনো internet বা সাধারণ staff zone-এ খোলা রাখবেন না। প্রকাশিত নানা ঘটনায় internet-এ খোলা management interface-ই ছিল বড় দুর্বলতা।
৮ · Host firewall আর denied traffic-এর log
নেটওয়ার্কের firewall zone-এর মাঝে পাহারা দেয়। Host firewall বসে প্রতিটি মেশিনের ভেতরে, তাই একই zone-এর পাশের যন্ত্রকেও থামাতে পারে। এটি সবচেয়ে সস্তা microsegmentation. CIS Controls v8-এ server ও end-user device, দুই জায়গাতেই firewall চালানোর আলাদা safeguard আছে (৪.৪ আর ৪.৫)।
নিচের উদাহরণ শুধু আপনার নিজের Linux মেশিনের জন্য। দুটির একটি বেছে নিন, একসাথে দুটি চালাবেন না। পূর্ণ line-by-line ব্যাখ্যা Firewall আর VPN পর্বে আছে।
উদাহরণ: SSH শুধু নিজের management subnet থেকে, web সবার জন্য।
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from 198.51.100.0/24 to any port 22 proto tcp
sudo ufw allow 443/tcp
sudo ufw logging low
sudo ufw enable
sudo ufw status numberedউদাহরণ: একই নীতি, IPv4 আর IPv6 একসাথে (inet), denied log-সহ।
flush ruleset
table inet host_fw {
chain input {
type filter hook input priority filter; policy drop;
ct state established,related accept
ct state invalid drop
iifname "lo" accept
meta l4proto icmp accept
meta l4proto ipv6-icmp accept
ip saddr 198.51.100.0/24 tcp dport 22 accept
tcp dport 443 accept
limit rate 10/minute log prefix "nft-input-drop: "
}
chain forward {
type filter hook forward priority filter; policy drop;
}
chain output {
type filter hook output priority filter; policy accept;
}
}ফাইল বসানোর আগে যাচাই: sudo nft -c -f /etc/nftables.conf. -c কিছু বসায় না, শুধু ভুল ধরে। বসানো: sudo nft -f /etc/nftables.conf. দেখা: sudo nft list ruleset.
নিজেকে তালাবন্ধ করবেন না। দূরের server-এ SSH-এর নিয়ম না মিলিয়ে enable করলে সংযোগ কেটে যাবে। একটি session খোলা রাখুন, আর console-এর পথ হাতে রাখুন। flush ruleset অন্য টুলের নিয়মও মুছে দেয়। Docker চালানো মেশিনে সতর্ক থাকুন: Docker-এর publish করা port অনেক সময় ufw-এর নিয়মের আগেই নিজের নিয়মে চলে, তাই Docker-এর নিজের নথি দেখে নিন। IPv4-এর নিয়ম লিখে IPv6 খোলা রাখাও খুব সাধারণ ভুল।
Windows-এ বর্তমান অবস্থা দেখতে পারেন netsh advfirewall show allprofiles দিয়ে। Linux-এ নিজের মেশিনে কোন port-এ কে শুনছে, দেখুন sudo ss -tlnp দিয়ে। আপনার নিজের যন্ত্রের নিয়ম যাচাই করতে অন্য মেশিন থেকে পরীক্ষা শুধু নিজের নেটওয়ার্কে বা লিখিত অনুমতিতে করবেন। অনুমতি ছাড়া অন্যের সিস্টেমে যাচাই বেআইনি হতে পারে, দেখুন পর্ব ৬.
Denied traffic পড়া
Allow log ভলিউমে অনেক বড়, আর deny log ছোট কিন্তু তথ্যবহুল। ufw-তে denied লাইন থাকে /var/log/ufw.log-এ (Ubuntu-তে সাধারণত) বা kernel log-এ:
নমুনা আউটপুট — version-ভেদে আলাদা হতে পারে
[UFW BLOCK] IN=eth0 OUT= SRC=192.0.2.21 DST=192.0.2.10 PROTO=TCP SPT=49822 DPT=445 SYN
| যা দেখছেন | মানে হতে পারে | গুরুত্ব |
|---|---|---|
| Internet থেকে নানা port-এ deny | স্বাভাবিক পটভূমির শব্দ | কম; গুনে রাখুন, প্রতিটিতে alert নয় |
| ভেতরের একটি host থেকে বহু host-এ deny | ভুল config, বা lateral movement | বেশি; সাথে সাথে দেখুন |
| Server থেকে বাইরে নতুন গন্তব্যে deny | নতুন update পথ, বা C2-র চেষ্টা | বেশি |
| CCTV বা printer থেকে অস্বাভাবিক গন্তব্য | ওপরের উদাহরণের মতো (SRC=192.0.2.21 → accounts) | খুব বেশি |
Log শুধু লিখে রাখলে হবে না। Host-এ দখল নিলে log মুছে দেওয়া যায়, তাই তা কেন্দ্রীয় জায়গায় পাঠান (Centralized logging দেখুন)। Packet ধরে গভীরে দেখার পদ্ধতি পর্ব ২৪-এ, আর log রাখার নীতি পর্ব ৫৫-এ। Log-এর হারও সীমিত রাখুন, ওপরের limit rate সেই কাজই করে, নইলে বন্যায় disk ভরে যেতে পারে।
৯ · একটি পূর্ণ নকশা — কাল্পনিক office আর নিয়মের রক্ষণাবেক্ষণ
একটি কাল্পনিক ৪০ যন্ত্রের office: কর্মীদের PC, হিসাব বিভাগ, ৮টি CCTV camera, অতিথির Wi-Fi আর একটি file ও হিসাবের server. এখন সবাই একই router-এ, একই 192.0.2.0/24-তে। নকশার ধাপগুলো পর্ব ৪-এর threat model থেকে আসে:
- সম্পদ চিহ্নিত: হিসাবের ডেটা, ব্যাংকিং login, backup.
- ঝুঁকি ভাগ: অতিথির ফোন অজানা, camera-র firmware পুরোনো, কর্মীর PC phishing-এর লক্ষ্য।
- Zone বানানো: আলাদা ঝুঁকি মানে আলাদা zone, নিচে ছবি।
- Default deny, তারপর পথ: ছোট allow তালিকা, প্রতিটি কারণসহ।
কাল্পনিক office-এর segmentation
Six VLAN zones behind one firewall, each with its allowed paths
| উৎস | গন্তব্য | সেবা | কেন | মালিক |
|---|---|---|---|---|
| Guest | Internet | 80, 443, DNS | অতিথির web | IT |
| Staff | Server | 443 | File portal | IT |
| Staff | Internet | 80, 443 (proxy) | দৈনন্দিন কাজ | IT |
| Accounts | Server | 443 | হিসাবের app | হিসাব প্রধান |
| Accounts | ব্যাংক allowlist | 443 | Online banking | হিসাব প্রধান |
| CCTV | NVR | 554 | Recording | প্রশাসন |
| Server | Update, backup | 443 | Patch, offsite backup | IT |
| Mgmt (jump) | Server, NVR, switch | 22, 443 | Admin | IT |
| সব zone | সব zone | বাকি সব | Deny, log | IT |
- Guest Wi-Fi: আলাদা SSID, আলাদা VLAN আর client isolation. এই নকশা Wi-Fi আর পর্ব ২৭-এর সাথে মিলিয়ে নিন।
- CCTV দেখা: ম্যানেজার live video দেখতে চাইলে Staff থেকে NVR-এর ওয়েব port-এ একটি নির্দিষ্ট host-এর জন্য allow, কারণসহ। Camera-কে internet দেওয়া হবে না।
- Printer: এটি প্রায় সবখানে ভুলে যাওয়া ব্যতিক্রম। Accounts আর Staff দুই দিক থেকেই লাগে, তাই আলাদা ছোট zone ভালো।
- Public web site: Office থেকে host না করে আলাদা hosting-এ রাখুন। করলে তা আলাদা DMZ-তে।
- ছোট বাজেট: VLAN-সমর্থিত managed switch আর VLAN বুঝতে পারে এমন একটি ছোট firewall-ই ভিত্তি। পণ্য নির্বাচন প্রয়োজন আর সহায়তার ওপর নির্ভর করবে, এখানে কোনো ব্র্যান্ডের সুপারিশ নেই।
Firewall-এর নিয়মের রক্ষণাবেক্ষণ
নকশা ভালো হলেও এক বছরে নিয়ম ফুলে ওঠে। “জরুরি, এখনই খুলে দিন” বলে খোলা port আর বন্ধ হয় না। সমাধান হলো firewall change management: প্রতিটি পরিবর্তন খাতায়, অফিসের রেজিস্টারের মতো।
| ধাপ | যা হয় | কী প্রশ্ন |
|---|---|---|
| অনুরোধ | উৎস, গন্তব্য, port, কারণ, টিকিট, মেয়াদ | এতটা চওড়া কেন দরকার? |
| পর্যালোচনা | দ্বিতীয় জনের অনুমোদন (maker-checker), shadow যাচাই | নতুন নিয়ম কোনো deny-কে ঢাকছে? |
| প্রয়োগ | পরিবর্তনের সময়, rollback পরিকল্পনা, config-এর কপি | ভুল হলে কত দ্রুত ফেরা যাবে? |
| যাচাই | কাজ হচ্ছে, অন্যকিছু খোলেনি; log দেখা | Deny কি ঠিক জায়গায় হচ্ছে? |
| নিয়মিত review | Rule owner-কে জিজ্ঞেস, hits দেখা | এটি কি এখনও দরকার? |
| Cleanup | প্রথমে log-only বা disable, তারপর সরানো | সরালে কে ফোন করবে? |
PCI DSS v4.0.1-এর requirement 1.2.7 বলে, firewall-এর মতো network security control-এর কনফিগারেশন অন্তত প্রতি ছয় মাসে পর্যালোচনা করতে হবে। আপনার ক্ষেত্রে PCI প্রযোজ্য না হলেও এই ছন্দটি ভালো শুরু। NIST SP 800-53 Rev. 5-এর SC-7 boundary protection, আর তার SC-7(5) নিয়ন্ত্রণ deny by default, allow by exception-এর কথা বলে। মেয়াদ দিয়ে নিয়ম লিখলে পরিষ্কার করা সহজ: পর্ব ২০-এর just-in-time ভাবনা এখানেও চলে।
পরীক্ষা ও ইন্টারভিউতে:
- Stateless আর stateful-এর পার্থক্য? Stateless প্রতিটি packet আলাদা দেখে; stateful সংযোগের টেবিল রাখে আর ফিরতি traffic চেনে।
- Implicit deny কী? কোনো নিয়ম না মিললে traffic আটকানো; তবে এটি সব পণ্যে নিজে থেকে থাকে না।
- Shadowed rule কীভাবে ধরবেন? আগের নিয়ম পরের পরিসর পুরো ঢাকছে কি না মেলান, আর hit counter দেখুন।
- DMZ কেন? বাইরে খোলা সেবা দখল হলেও ভেতরের নেটওয়ার্কে সরাসরি পথ যেন না থাকে।
- VLAN মানেই কি নিরাপত্তা? না। VLAN-এর মাঝে firewall বা ACL না থাকলে routing খোলা থাকে।
আরও গভীরে: MITRE ATT&CK-এ Lateral Movement (TA0008), Command and Control (TA0011) আর Exfiltration (TA0010) আলাদা tactic, আর Network Segmentation (M1030) ও Filter Network Traffic (M1037) সংশ্লিষ্ট mitigation. শিল্প-নিয়ন্ত্রণ ব্যবস্থায় IEC 62443-এর zones and conduits ধারণাটি একই নকশার আনুষ্ঠানিক রূপ। RFC 2827 (BCP 38, ২০০০) ingress filtering দিয়ে জাল উৎস-ঠিকানা কমানোর পরামর্শ দেয়, যা network-এর সীমান্তে firewall-এর ভিন্ন একটি ব্যবহার।
১০ · AI-এর যুগে firewall-এর নিয়ম
AI কয়েক সেকেন্ডে একটি ruleset লিখে দিতে পারে, আর দেখতে সেটি বেশ গোছানো লাগে। কিন্তু AI আপনার নেটওয়ার্ক দেখতে পায় না। Firewall-এর ভুল সবসময় চোখে পড়ে না, কারণ সেবা ঠিকই চলে, শুধু পথটি বেশি খোলা থাকে।
| AI-এর ভুল | ঝুঁকি | যাচাই |
|---|---|---|
সমস্যা মেটাতে “firewall বন্ধ করুন” বা any any allow | লক্ষণ সরে, সুরক্ষাও সরে | নির্দিষ্ট উৎস, গন্তব্য, port চান; log দেখুন |
| নিয়মের ক্রম ভুল | Shadowed deny | হাতে কয়েকটি packet মিলিয়ে দেখুন |
| শুধু IPv4 ভাবা | IPv6 দিয়ে খোলা | inet table বা দুটো ruleset |
| Outbound পুরো ভুলে যাওয়া | C2 ও exfiltration খোলা | প্রতিটি zone-এর egress লিখতে বলুন |
| Standard বা CVE নম্বর বানানো | মিথ্যা নিশ্চয়তা | মূল নথি নিজে খুলে পড়ুন |
| Log-এর triage-এ অতিরিক্ত আত্মবিশ্বাস | ভুল অগ্রাধিকার | আসল log আর মানুষের সিদ্ধান্ত |
AI-কে reviewer হিসেবে ব্যবহার করুন। আসল IP, hostname আর কোনো secret পেস্ট করবেন না, নকল নাম দিন।
AI-এর লেখা firewall নিয়ম চালানোর আগে — চেকলিস্ট
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন, তারপর “→ উত্তর” চাপুন।
প্র ০১Firewall থাকা সত্ত্বেও বড় প্রতিষ্ঠানে breach হয় কেন?
কারণ firewall একটি নির্দিষ্ট প্রশ্নের উত্তর দেয়: এই পথ খোলা কি না। আর বেশিরভাগ বড় ঘটনা অনুমোদিত পথ ধরেই এগোয়।
- Equifax (২০১৭): ঢোকার পথ ছিল একটি খোলা web application-এর patch না করা দুর্বলতা। ওই সেবা internet-এ খোলা থাকার কথাই ছিল, তাই firewall আটকানোর কিছু ছিল না। মার্কিন GAO আর House কমিটির রিপোর্ট অনুযায়ী, segmentation-এর দুর্বলতায় আরও database-এ পৌঁছানো গেছে, আর মেয়াদোত্তীর্ণ certificate-এর কারণে নজরদারি যন্ত্র চোখ বন্ধ করে ছিল।
- Target (২০১৩): সিনেট কমিটির staff report অনুযায়ী শুরু হয়েছিল বাইরের ঠিকাদারের credential দিয়ে। অর্থাৎ পরিচয় বৈধ, পথও বৈধ। সমস্যা ছিল সেই পথ থেকে সংবেদনশীল অংশে পৌঁছাতে পারা।
- Colonial Pipeline (২০২১): প্রধান নির্বাহীর সাক্ষ্য অনুযায়ী ঢোকার পথ ছিল MFA-হীন পুরোনো VPN account. Firewall-এর দৃষ্টিতে এটি বৈধ।
এই তিনটির মিল লক্ষ করুন। কোনোটিতে “firewall ছিল না” সমস্যা নয়। সমস্যা ছিল patch, credential, segmentation আর নজরদারির। Firewall থাকা আর firewall-এর নিয়ম ভালো থাকা এক কথা নয়, আর ভালো নিয়মও শুধু পথ ছোট করে। তাই একটি ভালো প্রশ্ন হলো “firewall আছে কি?” নয়, বরং “একটি যন্ত্র দখল হলে সে কতদূর যাবে, আর আমরা কত দ্রুত জানব?” এই প্রশ্নের উত্তর দিতে blast radius-এর হিসাব, egress-এর নিয়ম আর denied log লাগে।
আরেকটি বিষয় হলো বিপণনের ভাষা। “সম্পূর্ণ সুরক্ষা” কোনো একটি যন্ত্র দিতে পারে না। Firewall কেনার পর ঝুঁকি কমে গেছে ভেবে বাকি কাজ থেমে গেলে, firewall উল্টো ক্ষতি করে।
মূল উপলব্ধি: Firewall পথ ছোট করে, আস্থা তৈরি করে না। প্রতিটি অনুমোদিত পথকে ভবিষ্যতের আক্রমণের সম্ভাব্য পথ ধরে নকশা করুন।
প্র ০২Stateful firewall যদি এত ভালো, তাহলে state টেবিল নিজেই কি একটি দুর্বলতা হতে পারে?
হ্যাঁ। মনে রাখার ক্ষমতার দাম আছে। ইতিহাসটি দেখা যাক। ১৯৮০-এর দশকের শেষে Digital Equipment Corporation-এর কাজ থেকে packet filter ধারণা আসে। ১৯৯০-এর দশকের শুরুতে stateful inspection বাণিজ্যিক পণ্যে আসে, আর ১৯৯৪ সালে Cheswick আর Bellovin-এর Firewalls and Internet Security বইটি এই ক্ষেত্রের ভাষা গড়ে দেয়। Stateful firewall একটি বড় সমস্যা মেটায়: stateless ফিল্টারে ফিরতি traffic-এর জন্য বড় ephemeral port পরিসর খুলে রাখতে হতো (Linux-এ সাধারণত 32768–60999).
কিন্তু প্রতিটি সংযোগ একটি সারি নেয়, আর সারি নেয় মেমরি। তাই টেবিল সীমিত সম্পদ। অনেক অসম্পূর্ণ সংযোগ এলে টেবিল ভরে যেতে পারে, আর তখন firewall-ই availability-র সমস্যা হয়। এই ধরনের DDoS নিয়ে পর্ব ২৮-এ কথা হবে। প্রতিরক্ষা হিসেবে থাকে টেবিলের আকার মাপা, timeout ঠিক করা, প্রতি উৎসে সীমা বসানো, আর SYN cookie-র মতো কৌশল। খুব বড় traffic-এর সেবার সামনে অনেক নকশা ইচ্ছা করেই stateless filter রাখে, কারণ সেখানে অসংখ্য অল্প সময়ের সংযোগ টেবিলের জন্য ভারী।
দ্বিতীয় বিষয় failure mode. Firewall রিস্টার্ট বা failover হলে টেবিল হারালে সব চলমান সংযোগ কাটতে পারে, তাই ভালো পণ্যে দুই firewall-এর মধ্যে state সিঙ্ক থাকে। তৃতীয় বিষয় হলো asymmetric routing: যাওয়ার পথ এক firewall দিয়ে, ফেরার পথ অন্যটি দিয়ে হলে ফেরার পথের firewall সংযোগ চেনে না, আর packet ফেলে দেয়।
আর timeout-ও একটি বিনিময়। ছোট timeout-এ মেমরি বাঁচে, কিন্তু দীর্ঘ শান্ত SSH বা database সংযোগ কেটে যায়। বড় timeout-এ উল্টোটা। Linux-এ এই মান kernel-এর conntrack সেটিং দিয়ে ঠিক হয়, আর version-ভেদে আলাদা।
মূল উপলব্ধি: প্রতিটি নিরাপত্তা নিয়ন্ত্রণ নিজেও একটি সিস্টেম, যার নিজের সীমা আর ব্যর্থতা আছে। Firewall-এর সক্ষমতাও মাপতে আর পাহারা দিতে হয়।
প্র ০৩Egress filtering এত গুরুত্বপূর্ণ হলে বেশিরভাগ প্রতিষ্ঠান কেন এটি ঠিকমতো করে না?
প্রধান কারণটি প্রযুক্তিগত নয়, মানবিক। Inbound বন্ধ করলে কেউ অভিযোগ করে না, কারণ ভেতরের মানুষের কাজ এতে থামে না। Outbound বন্ধ করলে কাল সকালেই কারও update, payment gateway, বা SaaS টুল থেমে যেতে পারে। ব্যবসার চাপ সবসময় “খোলা রাখুন”-এর দিকে।
দ্বিতীয় কারণ দৃশ্যমানতার অভাব। বেশিরভাগ প্রতিষ্ঠান জানেই না তাদের server কোথায় কথা বলে। CDN আর cloud-এর যুগে একটি সেবার IP বদলায়, আর একই IP-তে অনেক domain থাকে। তাই IP-ভিত্তিক allowlist ভঙ্গুর, আর domain-ভিত্তিক allowlist-এর জন্য proxy লাগে, যা নতুন একটি পরিকাঠামো। NIST SP 800-41 Rev. 1 (২০০৯) outbound filtering-এর কথা আগেই বলেছিল, তবু বাস্তবে এটি পিছিয়ে থাকে।
তৃতীয়ত, ফল অদৃশ্য। Egress একটি ঘটনার দ্বিতীয় বা তৃতীয় ধাপে কাজ করে, প্রথম ধাপে নয়। তাই এর মূল্য চোখে পড়ে ঘটনার পরে। SolarWinds (২০২০) আর Log4Shell (২০২১) সেই আলোচনা আবার সামনে আনে। Log4Shell-এর প্রচলিত ঘটনাপ্রবাহে সার্ভারকে বাইরে সংযোগ করতে হতো, তাই যেসব সার্ভারের egress সীমিত ছিল, তাদের ঝুঁকি সাধারণত কম ছিল। তবে সব পথ এতে বন্ধ হতো, এমন দাবি ঠিক নয়।
শুরু করার ব্যবহারিক পথ হলো অগ্রাধিকার। সব zone একসাথে নয়। আগে server আর data zone, কারণ গন্তব্য কম আর ক্ষতি বড়। প্রথমে log-only, কয়েক সপ্তাহ পর্যবেক্ষণ, তারপর block. ব্যতিক্রমের অনুরোধের একটি সহজ পথ রাখুন, নইলে মানুষ নিজেই ফাঁক বানাবে। এখানেও ব্যবহারযোগ্যতা নিরাপত্তারই অংশ, যাকে পর্ব ৩-এ psychological acceptability বলা হয়েছে।
মূল উপলব্ধি: যে নিয়ন্ত্রণের খরচ আজ আর লাভ অদৃশ্য ভবিষ্যতে, সেটি পিছিয়ে যায়। সবচেয়ে মূল্যবান সম্পদ দিয়ে ছোট করে শুরু করলে এই বাধা ভাঙে।
প্র ০৪Zero trust-এর যুগে VLAN আর zone কি পুরোনো হয়ে গেছে?
না, তবে তাদের ভূমিকা বদলেছে। ২০১০ সালের দিকে Forrester-এর John Kindervag “zero trust” শব্দটি জনপ্রিয় করেন, আর NIST SP 800-207 (২০২০) একে আনুষ্ঠানিক রূপ দেয়। মূল কথা: নেটওয়ার্কে অবস্থান দেখে বিশ্বাস দেওয়া যাবে না, প্রতিটি অনুরোধ পরিচয়, যন্ত্রের অবস্থা আর নীতি দেখে যাচাই হবে। পুরো আলোচনা পর্ব ৭৪-এ।
অনেকে একে ভুল বোঝেন: “তাহলে আর segmentation লাগবে না।” NIST-এর দলিল বরং microsegmentation-কে একটি বাস্তবায়নের পথ হিসেবেই আলোচনা করে। পার্থক্য হলো, zone আর একমাত্র ভরসা নয়।
একটি ছোট office-এর কথা ভাবুন। Camera, printer আর পুরোনো যন্ত্রে identity agent বসানো যায় না। সেগুলোর জন্য VLAN আর সাধারণ firewall-ই সবচেয়ে ব্যবহারিক সুরক্ষা। এদিকে web app আর cloud সেবার জন্য identity-aware access (পর্ব ২৫-এর ZTNA) বেশি শক্তিশালী। তাই বাস্তব নকশা মিশ্র: যেখানে পরিচয় বোঝা যায়, সেখানে পরিচয়; যেখানে যায় না, সেখানে নেটওয়ার্ক।
NotPetya (২০১৭)-এর প্রকাশিত বিশ্লেষণ দেখায়, ভেতরের নেটওয়ার্কে একবার ছড়াতে শুরু করলে flat নকশায় ক্ষতি কত দ্রুত হয়। সেখানে “যাকে চিনি তাকে বিশ্বাস” যথেষ্ট ছিল না, আবার পথ কম থাকলে গতি কমত। অর্থাৎ পরিচয় যাচাই আর পথ সীমিত করা একে অপরের পরিপূরক।
আরেকটি হিসাব খরচের। Microsegmentation-এর জন্য traffic-এর পূর্ণ মানচিত্র আর দক্ষ দল লাগে। ছোট প্রতিষ্ঠানের জন্য ৫টি পরিষ্কার zone আর ভালো log, ৫০০টি অর্ধেক-বোঝা micro নিয়মের চেয়ে অনেক বেশি কার্যকর। জটিলতা নিজেই ঝুঁকি, economy of mechanism নীতি তাই বলে।
মূল উপলব্ধি: Zero trust হলো একটি বিশ্বাসের মডেল, কোনো পণ্য নয়। Segmentation হলো সেই মডেলের একটি যন্ত্র, আর আপনার সামর্থ্য অনুযায়ী তার স্তর বেছে নিতে হবে।
প্র ০৫IT আর কারখানা বা বিদ্যুতের OT নেটওয়ার্কে কি “air gap” রাখাই সবচেয়ে নিরাপদ?
Air gap মানে নেটওয়ার্কের সাথে শারীরিকভাবে কোনো সংযোগ না রাখা। কাগজে এটি সবচেয়ে শক্ত segmentation. তবু ইতিহাস দেখায়, এটি সম্পূর্ণ সমাধান নয়।
২০১০ সালে প্রকাশ্যে আসা Stuxnet-এর প্রকাশিত বিশ্লেষণ অনুযায়ী এটি বিচ্ছিন্ন শিল্প-নিয়ন্ত্রণ পরিবেশে পৌঁছাতে removable media-র মতো পথের ওপর নির্ভর করেছিল বলে ধারণা করা হয়। অর্থাৎ নেটওয়ার্ক কাটা থাকলেও USB, ঠিকাদারের ল্যাপটপ আর আপডেট ফাইল একটি অদৃশ্য সেতু বানায়। Air gap-এর একটি বড় বিপদ হলো মিথ্যা নিশ্চিন্ততা: “এটি তো বিচ্ছিন্ন”, তাই patch বা নজরদারিও ঢিলা।
বাস্তবে অনেক OT সিস্টেমে পুরো air gap টেকে না। ব্যবসা উৎপাদনের তথ্য চায়, vendor দূর থেকে সহায়তা দেয়, হিসাব বিভাগ বিলিংয়ের ডেটা চায়। তাই শিল্পজগতে স্তরভিত্তিক নকশা চলে: Purdue model-এর স্তর, IEC 62443-এর zones and conduits, আর IT ও OT-র মাঝে একটি industrial DMZ. কোথাও এক দিকেই তথ্য যাওয়া নিশ্চিত করতে hardware-ভিত্তিক data diode ব্যবহার হয়।
Colonial Pipeline (২০২১) একটি অন্য শিক্ষা দেয়। প্রকাশিত তথ্য অনুযায়ী ঘটনাটি IT-তে ঘটেছিল, তবু প্রতিষ্ঠান সতর্কতা হিসেবে pipeline-এর কাজ বন্ধ করে। প্রযুক্তিগতভাবে segmentation থাকলেও ব্যবসার নির্ভরতা থাকলে OT-তেও প্রভাব পড়ে, যেমন IT ছাড়া বিল করতে না পারা। অর্থাৎ blast radius শুধু নেটওয়ার্কের ছবি নয়, ব্যবসায়িক নির্ভরতারও।
তাই air gap একটি দামি, শক্তিশালী নিয়ন্ত্রণ, কিন্তু একে পাহারা দিতে হয়: USB নীতি, ঠিকাদারের যন্ত্র যাচাই, আলাদা update প্রক্রিয়া আর মহড়া।
মূল উপলব্ধি: বিচ্ছিন্নতা একটি দাবি, প্রমাণ নয়। মাঝে মাঝে যাচাই করুন, আর সেতুগুলোর তালিকা রাখুন, সে যত ছোটই হোক।
অনুশীলন
সব কাজ নিজের মেশিনে বা কাগজে করুন। অন্যের সিস্টেমে কিছু যাচাই করবেন না।
-
পথের হিসাব: ৩০ host-এর একটি নেটওয়ার্কে তিনটি zone: A (১০), B (১৫), C (৫)। A আর B থেকে C-তে যাওয়া যায়, বাকি সব বন্ধ। Directed path গুনুন: (ক) flat (খ) zone-এর ভেতরে খোলা (গ) zone-এর ভেতরে বন্ধ। Flat-এর কত শতাংশ?
(ক) ৩০ × ২৯ = ৮৭০.
(খ) Zone-এর ভেতরে: ১০ × ৯ + ১৫ × ১৪ + ৫ × ৪ = ৯০ + ২১০ + ২০ = ৩২০. Zone-এর মাঝে: ১০ × ৫ + ১৫ × ৫ = ৫০ + ৭৫ = ১২৫. মোট ৪৪৫, যা ৮৭০-এর ৫১.১%.
(গ) শুধু ১২৫, যা ১৪.৪%. লক্ষ করুন, zone বসিয়েও ভেতরের পথই সবচেয়ে বড় ভাগ। তাই host firewall বা microsegmentation এত লাভজনক। আর C zone-এ পৌঁছানো পথই আসল ঝুঁকি, সংখ্যা কমলেও ওটি থাকে।
-
নিয়মের ক্রম অনুমান (ফল আগে বলুন): নিজের Linux মেশিনে ধরুন
ufw-তে কোনো নিয়ম নেই, default incoming deny. আপনি পরপর চালালেন:sudo ufw allow 22/tcp, তারপরsudo ufw deny from 192.0.2.50.192.0.2.50কি SSH-এ পৌঁছাতে পারবে?ufw status numbered-এ ক্রম কী হবে? ঠিক করবেন কীভাবে?পারবে। নতুন নিয়ম শেষে যুক্ত হয়, তাই [1] হলো allow 22/tcp, [2] হলো deny from 192.0.2.50.
ufw-তে first match, তাই port 22-র packet প্রথম নিয়মেই ALLOW. Deny নিয়মটি port 22-র জন্য shadowed, যদিও অন্য port-এ কাজ করে।সমাধান: deny-কে ওপরে বসান,
sudo ufw insert 1 deny from 192.0.2.50, তারপর আবারsudo ufw status numberedদেখুন। আরও ভালো নীতি হলো শুরু থেকেই SSH শুধু নির্দিষ্ট subnet-এ খোলা রাখা। -
নিজের মেশিনের অডিট: নিজের Linux মেশিনে
sudo ss -tlnচালান, আরsudo ufw status verboseবাsudo nft list rulesetদেখুন। Windows-এnetsh advfirewall show allprofiles. প্রতিটি খোলা port-এর জন্য লিখুন: কোন সেবা, কে ব্যবহার করে, internet থেকে খোলা দরকার কি না।দুটি তালিকা মেলান: কে শুনছে (
ss) আর কী অনুমোদিত (firewall). যে সেবা127.0.0.1-এ শুনছে, সে শুধু নিজের মেশিনের জন্য।0.0.0.0বা[::]-এ শুনলে সব interface থেকে পৌঁছানো যেতে পারে, যদি firewall না আটকায়। দরকার না থাকলে সেবাটি বন্ধ করাই firewall নিয়মের চেয়ে ভালো সমাধান, কারণ না-চলা সেবার কোনো দুর্বলতা কাজ করে না। পরে যেকোনো পরিবর্তন লিখে রাখুন। ফলের সাথে কোনো IP বা সংবেদনশীল তথ্য অনলাইনে শেয়ার করবেন না। -
নকশা সমালোচনা: একটি কাল্পনিক ফার্মেসি চেইনের IT বলছে: “আমরা সব শাখায় তিনটি VLAN করেছি, তাই নিরাপদ।” বাস্তবে: VLAN-এর মাঝে routing খোলা, POS আর CCTV এক VLAN-এ, router-এর admin page guest Wi-Fi থেকে খোলা, firewall-এ একটি “temp any any allow” নিয়ম দুই বছর আগের, কোনো log নেই। অগ্রাধিকার দিয়ে সমালোচনা করুন।
- Temp any any allow সরান: এটি থাকলে বাকি সব নিয়ম মূল্যহীন, কারণ তার পরের deny shadowed. মালিক খুঁজে, hits দেখে তারপর ধাপে ধাপে সরান।
- VLAN-এর মাঝে default deny: নইলে VLAN শুধু ঠিকানার সাজসজ্জা।
- Admin page management-এ: Guest থেকে সরান। পাসওয়ার্ডও বদলান, MFA চালু করুন।
- POS আলাদা zone: পেমেন্ট ডেটা আর CCTV-র ঝুঁকি একেবারে আলাদা। শুধু payment gateway-তে egress.
- Log চালু, কেন্দ্রীয় সংগ্রহ: ছাড়া যাচাই অসম্ভব।
- প্রক্রিয়া: প্রতিটি নিয়মে মালিক ও মেয়াদ, ছয় মাসে review.
“VLAN করেছি” একটি কাজের নাম। প্রশ্ন হলো “POS-এ কে পৌঁছাতে পারে?”, আর তার উত্তর নিয়ম আর log থেকে আসে।
নিজেকে যাচাই করুন
ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।
ক্রমএকটি নতুন firewall নিয়মের জীবনচক্র সঠিক ক্রমে সাজান (▲▼ চেপে সরান)
- মালিক, কারণ আর মেয়াদসহ অনুরোধ
- দ্বিতীয় জনের পর্যালোচনা আর shadow যাচাই
- Rollback পরিকল্পনাসহ প্রয়োগ
- Log দেখে যাচাই যে শুধু দরকারি পথটিই খুলেছে
- নিয়মিত review, দরকার না থাকলে সরানো
একটি stateful firewall-এ inbound কোনো allow নিয়ম নেই। তবু ভেতরের PC-র HTTPS সংযোগের উত্তর ঢুকছে। কেন?
- সব বড় port সবসময় খোলা থাকে
- প্যাকেটটি connection tracking টেবিলের চলমান সংযোগের সাথে মিলেছে
- NAT নিজে থেকেই সব traffic allow করে
- HTTPS traffic firewall পরীক্ষা করতে পারে না, তাই ছেড়ে দেয়
First-match firewall-এ নিয়ম: R1 allow any → any port 8080; R2 deny guest → server port 8080. Guest থেকে server-এর 8080-তে packet এলে কী হবে?
- R2 অনুযায়ী deny হবে
- Implicit deny হবে
- R1 অনুযায়ী allow হবে, আর R2 একটি shadowed rule
- সবচেয়ে নির্দিষ্ট নিয়ম হিসেবে R2 জিতবে
৭টি zone-এর নেটওয়ার্কে দিকসহ কতটি zone-জোড়ার নীতি ভাবতে হয়, যেখানে A → B আর B → A আলাদা?
- ১৪
- ২১
- ৪৯
- ৪২
একটি server-এর সব inbound বন্ধ, কিন্তু outbound পুরো খোলা। Server-টি দখল হলে এই নকশার প্রধান দুর্বলতা কী?
- দখল হওয়া server বাইরে C2 আর ডেটা পাচারের সংযোগ করতে পারে
- বাইরে থেকে যেকেউ সরাসরি সব port-এ ঢুকতে পারে
- Server DNS ব্যবহার করতে পারবে না
- Inbound নিয়মগুলো shadowed হয়ে যাবে
একটি office-এ Staff আর CCTV আলাদা VLAN-এ, তবে Layer 3 switch-এ VLAN-এর মাঝে কোনো ACL বা firewall নেই। ফল কী?
- দুই VLAN সম্পূর্ণ বিচ্ছিন্ন, তাই নিরাপদ
- দুই VLAN-এর broadcast একসাথে মিশে যায়
- Routing-এর মাধ্যমে দুই VLAN-এর যন্ত্র একে অপরকে পেতে পারে
- VLAN ID শেষ হয়ে যাবে
Jump host ব্যবহারের প্রধান নিরাপত্তা লাভ কোনটি?
- Admin কাজের গতি অনেক বাড়ে
- Admin প্রবেশ একটি পাহারা দেওয়া পথে আসে, বাকি পথ বন্ধ থাকে
- Jump host দখল হওয়া অসম্ভব
- এটি থাকলে MFA আর লাগে না
শব্দকোষ
লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন, অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:
মনে রাখুন
- Firewall পথ নিয়ন্ত্রণ করে; অনুমোদিত পথের ভেতরের ঝুঁকি থামায় না।
- ক্রমই ফল: first match, আর implicit deny আছে কি না নিজের পণ্যে যাচাই করুন।
- Shadowed rule খাতায় আছে, কাজে নেই; hit counter আর review দিয়ে ধরুন।
- Egress সীমিত করুন, zone বানান, VLAN-এর মাঝে নিয়ম বসান, আর দরকারে microsegmentation.
- প্রতিটি নিয়মের মালিক, কারণ, মেয়াদ; denied log পড়ুন; blast radius মেপে নকশা যাচাই করুন।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পর্ব ২৩ · IDS আর IPS — signature, anomaly আর false positiveপরবর্তী পর্বঅনুমোদিত traffic-এর ভেতরে অস্বাভাবিকতা ধরা।
- সাইবার নিরাপত্তা · কোর্স হোম৮০টি পর্বপুরো কোর্সের রোডম্যাপ।
- Security group আর network ACLCloudCloud-এ একই ধারণার রূপ, provider-ভেদসহ।
- Firewall আর VPNগভীরে যানNetfilter hook আর পূর্ণ
nftablesruleset. - VLANভিত্তি802.1Q tag, trunk আর inter-VLAN routing.