VPN ডিভাইস অবস্থা যাচাই ব্লক করছে না? আগে রিপোর্টটি দেখুন
আপনার এন্ডপয়েন্ট এজেন্ট সুস্থ বলে রিপোর্ট করে, তবু ভেতরের অ্যাপটি খোলে। সংগ্রাহক, সিদ্ধান্ত ও ব্লক ধরে ধরে দেখুন, তারপর একটি অনুরোধ দিয়ে অস্বীকৃতি প্রমাণ করুন।
যদি এমন ল্যাপটপ, যার অ্যান্টিভাইরাস স্বাক্ষর সপ্তাহ আগে হালনাগাদ হওয়া বন্ধ করেছে, এখনও আপনার ভেতরের অ্যাপ খুলতে পারে, তবে প্রায়ই নীতিনথিটিই ভুল জিনিস নয়। প্রবেশাধিকার প্রত্যাখ্যানের আগে তিনটি আলাদা সিস্টেমকে একমত হতে হয়: একটি এন্ডপয়েন্ট মাপে, একটি সেই মাপকে অনুমোদন বা অস্বীকৃতির রায়ে বদলায়, আর একটি প্রকৃতপক্ষে ট্রাফিক ফেলে দেয়। যখন কোনো অননুগত ডিভাইস তবুও ঢুকে পড়ে, তখন ঠিক একটি কড়ি অনুপস্থিত থাকে বা এমন প্রমাণে ভরসা করে যা করা উচিত নয়। নিচের যাচাইগুলো সেই ক্রমেই চলে, আর প্রতিটির একটি থামার বিন্দু আছে।
ব্লক হলো শেষ ধাপ, প্রথম নয়
প্রমাণীকরণ ও ডিভাইস অবস্থা আলাদা প্রশ্নের উত্তর দেয়। সফল লগইন প্রমাণ করে একটি পরিচয়পত্র দেওয়া হয়েছে; এটি সেই মেশিনে চলা সফটওয়্যার সম্পর্কে কিছুই বলে না, যে মেশিন সেটি দিয়েছে। এই ফাঁকই ব্যাখ্যা করে কেন একটি নকল ক্লায়েন্ট প্রোফাইল সুস্থ দেখতে একটি সেশনকে অসুস্থ হোস্টে নিয়ে যেতে পারে।
এন্ডপয়েন্ট অনুপালন কাজের এই শৃঙ্খলের জন্য শব্দভাণ্ডার আগেই আছে। RFC 5209-এ NEA রেফারেন্স মডেল কাজটিকে সংগ্রাহক, মূল্যায়ন ধাপ ও প্রয়োগ বিন্দুতে ভাগ করে এবং স্পষ্ট বলে, যে ক্লায়েন্ট নিজের অবস্থা নিয়ে মিথ্যা বলে সে মডেলের বাইরে। এই শর্তটি চিত্রটির চেয়েও গুরুত্বপূর্ণ: একটি বিশ্বস্ত প্ল্যাটফর্ম মডিউল নিজে জানানো মাপকে সত্যে বদলায় না।
সংগ্রাহককে পরিধি নিয়ে সৎ রাখুন। আপনার নীতি যে বৈশিষ্ট্যগুলোর নাম দেয়, সেগুলোই তাকে সেই ডিভাইসে রিপোর্ট করতে হবে যা প্রবেশাধিকার চায়, আর খুব কম অন্য কিছু। প্রতিটি ইনস্টল করা প্যাকেজ তালিকাভুক্ত করা ইনভেন্টরি এজেন্ট ডিভাইস-অবস্থার সংগ্রাহক থেকে আলাদা যন্ত্র, আর পার্থক্যটি একইসঙ্গে ধারণ ও নির্ভুলতার সমস্যা। যদি রিপোর্টটি একটি ডিভাইস পরিচয়ের সঙ্গে বাঁধা না যায়, তবে মূল্যায়নকারী আন্দাজ করছে সে কোন মেশিনটিকে সবেমাত্র ছাড়পত্র দিল।
লাল অবস্থা দেখানো একটি ড্যাশবোর্ড নিয়ন্ত্রণ নয়। জিজ্ঞাসা করুন, প্রত্যাখ্যাত ব্যবহারকারী এখনও কী কী পৌঁছাতে পারে: উইকি, ফাইল শেয়ার, ডেটাবেস পোর্ট? প্রতিকারের জন্য একটি সংকীর্ণ পৃষ্ঠতল দরকার, আর বাকি সব ব্লকের পেছনে থাকা উচিত।
নিয়ম পড়ার আগে রিপোর্টটি পড়ুন
ক্লায়েন্টের সবুজ টিক নয়, উৎস থেকে শুরু করুন। Windows-এ স্থানীয় মাপ আসে Defender থেকে বা যে পণ্য নিজেকে Security Center-এ নিবন্ধন করেছে তা থেকে, আর দুটোই ভেন্ডর কনসোল ছাড়া পড়া যায়:
Get-MpComputerStatus | Select-Object AMServiceEnabled, RealTimeProtectionEnabled, AntivirusSignatureLastUpdated
Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiVirusProduct | Select-Object displayName, productState
দ্বিতীয় কমান্ডটি productState নামের একটি পূর্ণসংখ্যা ফেরত দেয়। এর বিটগুলো হালকাভাবে নথিভুক্ত এবং ভেন্ডররা সক্রিয়করণ ও হালনাগাদ ফ্ল্যাগ ভিন্নভাবে সাজায়, তাই এটি বিশ্লেষণের বদলে যাচাই করুন। তৃতীয় পক্ষের স্যুটগুলো আনইনস্টলের পরেও Security Center এন্ট্রি রেখে যায়, যা এমন সফটওয়্যার সম্পর্কে রিপোর্ট করে যা আর ডিস্কে নেই।
বয়স হলো সেই ক্ষেত্র যা মানুষ এড়িয়ে যায়। স্বাক্ষরের সময়ছাপ কেবল মূল্যায়নকারী মেশিনের ঘড়ির সাপেক্ষে অর্থ বহন করে, তাই চোখে আন্দাজ না করে এটিকে একটি ব্যবধানে বদলান:
$sig = (Get-MpComputerStatus).AntivirusSignatureLastUpdated
[int](New-TimeSpan -Start $sig -End (Get-Date)).TotalHours
এখন নীতির পড়ার জন্য একটি সংখ্যা আছে। যদি আপনার নিয়ম 72 ঘণ্টা বলে, এটাই সেই সংখ্যা যা এটি ব্যবহার করে, আর এক সপ্তাহ ঘুমানো ল্যাপটপ কেউ লেবেল ব্যাখ্যা না করেই ব্যর্থ হয়। কমান্ডের পাশে থ্রেশহোল্ডটি লিখে রাখুন, কারণ এন্ডপয়েন্ট যন্ত্র বদলালে দুটোই সরে যায়।
প্রতিটি ডিভাইস অবস্থাকে লিখিত রায়ে বদলান
ডিভাইস অবস্থা নিয়ে বেশিরভাগ বিতর্ক আসলে অজানা সারি নিয়ে বিতর্ক। প্রথম ঘটনার আগেই এটি ঠিক করুন, এমন একটি সারণিতে যা প্রমাণ, রায় ও মালিকের নাম দেয়, যাতে কেউ গেটওয়ে কনসোলে তাৎক্ষণিক সিদ্ধান্ত না নেয়।
| Evidence the assessor has | Verdict | What it protects against |
|---|---|---|
| Timestamp inside the policy window, protective service running | Admit to normal applications | Nothing yet; the other checks still apply |
| Timestamp older than the window | Deny, admit remediation page only | Signature rollback and dormant laptops |
| Service disabled or reporting off | Deny, escalate to the endpoint owner | An agent reporting stale success |
| No report at all for this session | Treat as deny, never as healthy | Agents that fail open under load |
নিচের সারিতেই পণ্যগুলো আলাদা হয়। কিছু গেটওয়ে সংযোগ প্রত্যাখ্যান করে কারণ বলে; অন্যরা টানেল উঠতে দিয়ে সীমিত নীতি প্রয়োগ করে; অল্প কিছু শেষের পরিচিত ভালো রিপোর্টে ফিরে যায়। কেবল প্রথম দুটি যুক্তিসংগত, আর আপনারটি কোনটি করে তা পরীক্ষা করা উচিত।
পরিচয় ও অনুমতিকে আলাদা লেনেও রাখুন। যে ল্যাপটপ প্রতিটি অবস্থা পরীক্ষায় পাশ করে, তারও অ্যাপের জন্য সঠিক মানব অনুমোদন দরকার, আর ডিভাইস সার্টিফিকেট একটি চাবির দখল প্রমাণ করে, ফাইলসিস্টেমের অবস্থা নয়। তিনটিকে একটি বুলিয়ানে মিলিয়ে ফেলা মানে হেল্পডেস্ক অ্যাকাউন্টের প্রোডাকশনে স্থায়ী প্রবেশাধিকার পাওয়া।
প্রয়োগের পথ ড্যাশবোর্ড নয়, একটি অনুরোধ দিয়ে যাচাই করুন
প্রয়োগ হলো অনুরোধের একটি বৈশিষ্ট্য, তাই একটি অনুরোধ দিয়েই তা মাপুন। একটি অননুগত মেশিন টানেলে বসান এবং সত্যিকারের ব্যবহারকারী যা করতেন তা করুন:
curl -sS -o /dev/null -w '%{http_code}
' --max-time 5 https://app.internal.example/health
যে ডিভাইস ব্লক হওয়া উচিত তার কাছ থেকে 200 আসা মানে সিদ্ধান্তটি কখনও ডেটা-পথে পৌঁছায়নি। দুটি সাধারণ কারণ: নীতিটি এমন একটি গ্রুপে সংযুক্ত যা পরীক্ষামূলক অ্যাকাউন্ট কখনও জয়েন করেনি, অথবা অ্যাপটি এমন রুটে পৌঁছানো যায় যা VPN-এর মালিকানাধীন নয়।
আগে রাউটিং অনুমানটি যাচাই করুন। যদি ভেতরের নাম এমন ঠিকানায় সমাধান হয় যা ক্লায়েন্ট স্থানীয় LAN-এ আগেই পৌঁছায়, তবে টানেল অপ্রাসঙ্গিক এবং কোনো নীতি প্রয়োগ হবে না। সেই ঠিকানাটিকে গেটওয়ে যে রুট ঠেলে তার সঙ্গে মেলান। OpenVPN-এ প্রতিটি ক্লায়েন্টের নীতি কমন নেম দিয়ে চাবিকৃত ফাইলে থাকে, তাই পরীক্ষা করা সহজ:
ls /etc/openvpn/ccd/
cat /etc/openvpn/ccd/laptop-17
disable থাকা ফাইল সেই ক্লায়েন্টকে সম্পূর্ণ বিচ্ছিন্ন করে, আর push "route ..." লাইনটি সংকুচিত করে সে কী পৌঁছাতে পারে। দুটোই প্রয়োগ, আর দুটোই রিপোর্ট ডিবাগ করা যে কারও কাছে দৃশ্যমান।
একটি পরীক্ষামূলক অ্যাকাউন্টে চারটি কেস যাচাই করুন
শেষ যাচাই একটি ছোট ম্যাট্রিক্স, সুখী পথ নয়। একটি পরীক্ষামূলক অ্যাকাউন্টকে চারটি অবস্থার মধ্য দিয়ে চালান: চলতি, মেয়াদোত্তীর্ণ স্বাক্ষর, সুরক্ষা নিষ্ক্রিয়, এজেন্ট ইনস্টল করা নেই। প্রতিটির জন্য মূল্যায়ন লগে রায়টি, অ্যাপ যে HTTP স্ট্যাটাস ফেরত দেয় এবং প্রতিকার পৃষ্ঠাটি লোড হয়েছিল কি না তা লিখুন।
foreach ($case in 'current', 'stale', 'disabled', 'absent') {
Get-MpComputerStatus | Select-Object AMServiceEnabled, AntivirusSignatureLastUpdated
curl.exe -sS -o NUL -w "%{http_code}
" --max-time 5 https://app.internal.example/health
}
দুটি বিষয় সহজেই বাদ পড়ে। প্রথমে পুনঃপ্রচার: মেশিন সুস্থ থাকার সময় নেওয়া রিপোর্ট একই ডিভাইসে পরের সেশনের জন্য গ্রহণ করা যাবে না, তাই চলতি সংযোগে বাঁধা সময়ছাপ খুঁজুন। তারপর অপসারণ: এজেন্ট আনইনস্টল করলে পুরোনো রিপোর্টের মতোই অস্বীকৃতি আসা উচিত, পরিষ্কার পাশ নয়, আর এই কেসটিই সবচেয়ে বেশি কখনও পরীক্ষা করা হয় না।
ম্যাট্রিক্স সারণির সঙ্গে মিললে গেটওয়ে পরে যিনি চালাবেন তাঁকে তিনটি জিনিস দিন: কমান্ডগুলো, থ্রেশহোল্ড এবং চারটি প্রত্যাশিত ফলাফল। এই হস্তান্তরই আসল ডেলিভারেবল, কারণ কেবল নীতিনথিতে বাস করা অবস্থা-নকশা এন্ডপয়েন্ট যন্ত্র তার রিপোর্টিং ক্ষেত্র বদলালেই প্রথমবার সরে যায়।