শুধু Windows ফায়ারওয়াল কি VPN কিল সুইচ হিসেবে কাজ করে?
ইন্টারফেস-ধরনের নিয়মগুলো ফিজিক্যাল অ্যাডাপ্টার আটকাতে পারে, কিন্তু থার্ড-পার্টি টানেল প্রায়ই তারযুক্ত দেখায়। ক্লাসিফিকেশন, এন্ডপয়েন্ট রুট, তারপর DNS যাচাই করুন।
Windows ফায়ারওয়াল নিজে থেকেই কিল সুইচের কাজ করতে পারে কি না জিজ্ঞেস করুন, আর আপনি দুটি দৃঢ় ও পরস্পরবিরোধী উত্তর পাবেন। একটি বলে ইন্টারফেস-ধরনের নিয়মই পুরো কাজটা করে; অন্যটি বলে স্ক্রিপ্ট ছাড়া এটা কাজ করে না। দুটোই একই প্রক্রিয়ার অর্ধেক বর্ণনা করছে। ফায়ারওয়াল ব্লকটা প্রকাশ করতে পারে, আর ফলটা সত্যিই নিরাপদে বন্ধ হয় কি না তা তিনটি বিষয়ের উপর নির্ভর করে: Windows টানেল অ্যাডাপ্টারকে কীভাবে শ্রেণিবদ্ধ করে, এন্ডপয়েন্ট ব্যতিক্রম টিকে থাকে কি না, এবং নেম রেজোলিউশন ও IPv6 আচ্ছাদিত কি না। এগুলোর যেকোনো একটি ভুল হলে মেশিন হয় লিক করবে, নয়তো সব সংযোগ হারাবে।
তিনটি শর্ত, এই ক্রমে
প্রথম শর্তটি ক্লাসিফিকেশন, আর এটাই ঠিক করে আপনি যে নিয়ম চান তা আদৌ প্রকাশ করা যায় কি না। Windows ফায়ারওয়ালের নিয়ম ইন্টারফেস-ধরন দিয়ে সীমিত করা যায়: তারযুক্ত, বেতার, বা রিমোট অ্যাক্সেস। যে নীতি ফিজিক্যাল ধরনগুলোতে আউটবাউন্ড ট্রাফিক আটকায় কিন্তু টানেলকে অনুমতি দেয়, তা কেবল তখনই কাজ করে যখন Windows টানেলটিকে রিমোট অ্যাক্সেস হিসেবে স্বীকৃতি দেয়।
দ্বিতীয় শর্তটি এন্ডপয়েন্ট ব্যতিক্রম। কোনো টানেল গড়ার আগে ক্লায়েন্টকে ফিজিক্যাল অ্যাডাপ্টার দিয়ে VPN সার্ভারে পৌঁছাতে হয়, তাই ওই অ্যাডাপ্টারে সার্বিক ব্লক ঠিক সেই সংযোগটাই আটকে দেয় যা ব্লকটাকে অপ্রয়োজনীয় করে তুলত। ব্যতিক্রমে সার্ভার ও তার পোর্টের নাম থাকতে হবে, এবং প্যাকেটটিকে ফিজিক্যাল গেটওয়ে দিয়ে পাঠাতে হবে, এমন টানেলে নয় যা এখনো ওঠেনি।
তৃতীয়টি আচ্ছাদন। যে নিয়ম-সমষ্টি IPv4 আটকায় কিন্তু IPv6 ভুলে যায়, কিংবা এন্ডপয়েন্ট খোঁজার জন্য স্থানীয় রিজলভারকে অনুমতি দিয়ে ফলে অন্য সব খোঁজাকেও অনুমতি দেয়, সে ঠিক সেই জানালাতেই খোলা অবস্থায় ব্যর্থ হয় যেটা ঢাকতে কিল সুইচের অস্তিত্ব। এটি ফায়ারওয়ালের বাগ নয়, ডিজাইনের ফাঁক। এটাই সেই ফাঁক যা ডেস্কে প্রতিটি পরীক্ষায় টিকে যায়।
ক্লাসিফিকেশনই প্রথম দরজা
একটিও নিয়ম লেখার আগে Windows অ্যাডাপ্টারগুলোকে কী ভাবে তা দেখুন। নেটিভ Windows VPN সংযোগ সাধারণত রিমোট অ্যাক্সেস হিসেবে দেখা যায়। নিজের ভার্চুয়াল অ্যাডাপ্টার বানায় এমন থার্ড-পার্টি ক্লায়েন্ট প্রায়ই তারযুক্ত দেখায়, মানে তারযুক্ত অ্যাডাপ্টারের জন্য নির্ধারিত ব্লক টানেলকেও আটকায়।
Get-NetConnectionProfile | Select-Object Name,InterfaceAlias,NetworkCategory
Get-NetAdapter | Select-Object Name,InterfaceDescription,Status,ifIndex
Get-NetFirewallProfile | Select-Object Name,Enabled,DefaultOutboundAction
তৃতীয় কমান্ডটি বলে ডিফল্ট আউটবাউন্ড ব্লক আগে থেকেই কার্যকর কি না, আর এটি ডিজাইনের পুরো চেহারা বদলে দেয়। ডিফল্ট যদি আগেই ব্লক হয়, তাহলে আপনি অনুমতিহীন ভিত্তির ব্যতিক্রম নয়, বরং অনুমোদনের নিয়ম লিখছেন, আর তখন যুক্তি করা অনেক সহজ।
আপনার টানেল অ্যাডাপ্টার যদি তারযুক্ত হিসেবে রিপোর্ট করে, তাহলে শুধু ফায়ারওয়াল ব্যর্থ-বন্ধ ডিজাইনের সঠিক হাতিয়ার নয়, এবং কত নিয়ম টিউন করলেও তা বদলাবে না। এটাই সেই ক্ষেত্র যেখানে প্রতিটি ফোরাম থ্রেডের দ্বিতীয় মতটি সঠিক।
এন্ডপয়েন্ট ব্যতিক্রমের নিয়মের পাশাপাশি রুটও দরকার
ধরুন ক্লাসিফিকেশন কাজ করছে। ব্যতিক্রম দুটি টুকরো, আর তারা আলাদা সাবসিস্টেমে বাস করে। ফায়ারওয়াল নিয়ম ট্রাফিকের অনুমতি দেয়; হোস্ট রুট টানেল বন্ধ থাকলেও সেটাকে সঠিক ইন্টারফেস দিয়ে বেরোতে বাধ্য করে।
New-NetFirewallRule -DisplayName "VPN endpoint allow" -Direction Outbound -Action Allow \
-Protocol TCP -RemoteAddress 203.0.113.9 -RemotePort 443 -InterfaceType Wired,Wireless
New-NetRoute -DestinationPrefix 203.0.113.9/32 -InterfaceIndex 12 -NextHop 192.168.1.1
Get-NetRoute -DestinationPrefix 203.0.113.9/32
রুট ছাড়া এন্ডপয়েন্ট ব্যতিক্রম কেবল তখনই সাহায্য করে যখন ডিফল্ট রুট এখনো ফিজিক্যাল গেটওয়ের দিকে থাকে। ক্লায়েন্ট নিজের ডিফল্ট রুট বসিয়ে তারপর মরে গেলে অনুমোদিত প্যাকেটগুলোর যাওয়ার কোনো অর্থবহ জায়গা থাকে না এবং সংযোগ পুনর্গঠন করা যায় না। ওই ব্যর্থতা ভাঙা ক্লায়েন্টের মতো দেখায়, আসলে সেটা অনুপস্থিত রুট।
ক্লায়েন্ট যতটা অনুমতি দেয় ততটা সংকীর্ণ রাখুন ব্যতিক্রম। একটি ঠিকানা ও একটি পোর্ট পুনরালোচনাযোগ্য; প্রোভাইডারের পুরো নেটওয়ার্ক ঢাকা একটি রেঞ্জ নয়। ওই প্রশস্ত নিয়ম একই প্রোভাইডারে হোস্ট করা অন্য সবকিছুরও অনুমতি দেয়, যা সাধারণত আপনার উদ্দেশ্যের চেয়ে বেশি।
DNS ও IPv6-ই যেখানে খোলা অবস্থায় ব্যর্থ হয়
নেম রেজোলিউশনই ক্লাসিক লিক। এন্ডপয়েন্ট যদি হোস্টনেম হয়, টানেল গড়ার আগে ক্লায়েন্টকে তা রিজলভ করতে হয়, মানে ফিজিক্যাল অ্যাডাপ্টারকে একটি রিজলভারে পৌঁছানোর অনুমতি দিতে হয়। সেই একই অনুমতি টানেল বন্ধ থাকলে অন্য প্রতিটি খোঁজাও বেরিয়ে যেতে দেয়, আর একটি খোঁজই আপনার দেখতে যাওয়ার কথা ফাঁস করতে যথেষ্ট।
IPv6 দ্বিতীয়টি। IPv4-এর জন্য লেখা নিয়ম অন্য পরিবারটিকে ঢাকে না, আর অনেক ক্লায়েন্ট কেবল IPv4 রুট বসায়। তাই নেটিভ IPv6 সংযোগ থাকা মেশিন IPv4 দিকটা দৃঢ়ভাবে আটকে থাকলেও ইন্টারনেটের সাথে কথা চালিয়ে যেতে পারে, আর কিল সুইচ সারাক্ষণ সফলতার কথা জানায়।
| Gap | What leaks | Control |
|---|---|---|
| Resolver permitted for endpoint lookup | Every name queried while down | Pin the endpoint as an address, or block non-tunnel DNS |
| Rules only for IPv4 | Full IPv6 connectivity | Add the same rules for the other family |
| Application bound to physical interface | Its own traffic | Firewall cannot fix this; change the binding |
তৃতীয় সারিটি এড়িয়ে যাওয়ার বদলে বোঝা উচিত। ফায়ারওয়াল প্যাকেট নিয়ে সিদ্ধান্ত নেয়, অ্যাপ্লিকেশন কোন ইন্টারফেস ব্যবহার করতে চেয়েছে তা নিয়ে নয়, আর স্পষ্টভাবে বাইন্ড করা প্রোগ্রাম নিয়ন্ত্রণ করা কঠিন হতে পারে। এটি অ্যাপ্লিকেশনের নিচে কাজ করা ক্লায়েন্ট-সাইড কিল সুইচের পক্ষে যুক্তি, আরও নিয়মের পক্ষে নয়।
কেবল টেনে নয়, ক্লায়েন্ট বন্ধ করে পরীক্ষা করুন
একমাত্র অর্থবহ পরীক্ষা হলো যেটি আপনার প্রতিরোধক ব্যর্থতার অনুকরণ করে। সার্ভিস থামান, প্রসেসটি মেরে ফেলুন, বা ক্লায়েন্টের বানানো অ্যাডাপ্টার নিষ্ক্রিয় করুন, তারপর ইন্টারনেট ও একটি নামে পৌঁছানোর চেষ্টা করুন:
Stop-Service -Name "YourVpnService" -Force
Test-NetConnection -ComputerName 1.1.1.1 -Port 443
Resolve-DnsName example.com
Test-NetConnection -ComputerName 2606:4700:4700::1111 -Port 443
তিনটিই ব্যর্থ হওয়া উচিত। প্রথমটি সফল হলে ব্লক কার্যকর নয়; প্রথমটি যেখানে ব্যর্থ হয়েছিল সেখানে দ্বিতীয়টি সফল হলে আপনার DNS লিক আছে; তৃতীয়টি সফল হলে IPv6 আচ্ছাদিত নয়। প্রতিটি ফল ওপরের ফাঁকগুলোর ঠিক একটির দিকে ইশারা করে।
ঘুম ও জাগরণের পরে পরীক্ষাটি আবার করুন, কারণ Windows যখন কোনো নেটওয়ার্ককে পাবলিক বা প্রাইভেট বলে ঠিক করে তখন ফায়ারওয়াল প্রোফাইল বদলাতে পারে, আর প্রোফাইলে সীমিত নিয়ম তা অনুসরণ করে। যে ডিজাইন ডেস্কে থাকে আর ট্রেনে ব্যর্থ হয়, সেটি একবার পরীক্ষা করা ডিজাইন।
ক্লাসিফিকেশনের দরজা বা DNS-এর দাবি যদি শুধু-ফায়ারওয়াল পদ্ধতিকে অচল করে, তাহলে সৎ উত্তর হলো ক্লায়েন্ট-সাইড কিল সুইচ। আর যদি টানেল বরং রাউটারে শেষ হয়, তাহলে নীতি রাউটারের হাতেই থাকা উচিত, কারণ সেখানে একটি নিয়ম এর পেছনের প্রতিটি ডিভাইস ঢাকে এবং Windows অ্যাডাপ্টারকে কী নাম দেয় তার উপর নির্ভর করে না।