ভাবুন একটি ফায়ারওয়াল নিয়ম, যা নামকরা VPN প্রোফাইল সংযুক্ত হলেই সার্ভারের পাবলিক ঠিকানার জন্য ICMP echo চালু করে। এটি দেখতে “কেবল টানেল দিয়েই ping”-এর মতো, আর সেই পাঠটি এমনভাবে ভুল যা গুরুত্বপূর্ণ। নিয়মটি কে হোস্টে পৌঁছাতে পারবে তা সীমিত করে না; বরং অন্য কোনো সংযোগ চলমান থাকার সময় পাবলিক ইন্টারফেস কীসের উত্তর দেয় তা বদলে দেয়। এগুলো দুটি আলাদা নীতি, এবং তার একটি নীরবে ঝুঁকি বাড়ায়।

আপনি যে নিয়মটি লিখেছেন বলে ভাবেন

প্রত্যাশিত প্রয়োজন সাধারণত সংকীর্ণ: মনিটরিং সিস্টেম, বা VPN-এ থাকা একমাত্র প্রশাসক, যেন নিশ্চিত করতে পারেন সার্ভারটি জীবিত। বাক্য হিসেবে লিখলে এটি টানেলে প্রবেশ নিয়ন্ত্রণের মতো শোনায়। ফায়ারওয়াল অবজেক্ট হিসেবে লিখলে এটি পাবলিক প্রোফাইলের একটি শর্তে পরিণত হয়, কারণ echo অনুরোধ সেখানেই আসে।

শর্তটি যখন উৎস ঠিকানার বদলে সংযোগের অবস্থা হয়, তখন অনুমোদিত প্রেরকদের সেট আর VPN সহকর্মীদের সেট নয়। যে কেউ পাবলিক ঠিকানায় পৌঁছাতে পারে, সে গেট খোলা থাকলে echo অনুরোধ পাঠাতে পারে। টানেল পথ হয়নি; টানেল সুইচ হয়ে গেছে।

এই ধারণার প্রচারকেরা সাধারণত যে প্রভাব চেয়েছিলেন তা নিয়ে মিথ্যা বলেন না। তাদের এমন একটি পরীক্ষা দরকার ছিল যা কেবল লিঙ্ক সুস্থ থাকলে উত্তর দেয়, আর লিঙ্কের স্বাস্থ্য VPN দিয়েই সবচেয়ে সহজে দেখা যেত। ভুলটি হলো প্রাপ্যতার সংকেতকে প্রবেশের সিদ্ধান্ত ভাবা, আর তারপর তা স্বয়ংক্রিয় করা।

গেট আসলে কী নিয়ন্ত্রণ করে

এই নকশা দুটি স্বাধীন জিনিস মিলিয়ে দেয়, আর সেগুলো আলাদা করাই সমাধানের বড় অংশ। প্রথমটি পরিধি: কোন স্থানীয় ঠিকানা, কোন দূরবর্তী ঠিকানা, কোন প্রোটোকল এবং কোন ICMP ধরন। দ্বিতীয়টি শর্ত: এই মুহূর্তে নিয়মের অবজেক্টটি সক্রিয় কি না। পরিধি হলো যা ফায়ারওয়াল প্রতিটি প্যাকেটে মূল্যায়ন করে; শর্ত হলো যা একটি স্ক্রিপ্ট নীতি ভান্ডারে লেখে, এবং দুটির মিলন সম্পূর্ণ ভিন্ন ঘড়িতে হয়।

প্রয়োজনটি যদি সত্যিই কেবল VPN সহকর্মী হয়, তবে পরিধিই সংযোগ-অবস্থার কোনো যুক্তি ছাড়া তার উত্তর দেয়: নিয়মটি টানেল ইন্টারফেসে বা টানেল ঠিকানা-পরিসরে বাঁধুন, দূরবর্তী ঠিকানাগুলো ক্লায়েন্ট পুলে সীমিত করুন, এবং “ICMP”-এর বদলে echo ধরন উল্লেখ করুন। কোনো VPN চালু না থাকলেও সেই নিয়ম সঠিক থাকে এবং অসম্পর্কিত কোনো প্রোফাইল তা খুলে দিতে পারে না।

প্রয়োজনটি যদি সত্যিই পাবলিক গেট হয়, তবে নীতির লেখায় তা বলুন, কারণ গ্রহণযোগ্যতার মানদণ্ড বদলে যায়। পাবলিক গেটকে সঠিক প্রোফাইলের নাম বলতে হবে, “সংযুক্ত” বলতে কী বোঝায় তা নির্ধারণ করতে হবে, এবং ঘোষণা করতে হবে যে পাবলিক প্রেরকেরা নকশা অনুযায়ী পরিধিতে আছেন। বেশিরভাগ বিভ্রান্তি মুছে যায় সেই মুহূর্তে, যখন কাউকে ওই বাক্যটি লিখতে বাধ্য করা হয়।

অবজেক্টটি একবার বানান, তারপর টগল করুন

একটি স্থিতিশীল পরিচয়যুক্ত নিয়ম আগেই তৈরি করুন, নিষ্ক্রিয় অবস্থায়, এবং নিয়ন্ত্রককে কেবল তার সক্রিয় অবস্থা বদলাতে দিন। প্রতিটি চালনায় প্রদর্শন-নাম দিয়ে নিয়ম তৈরি করাই নীতি ভান্ডারকে পাঁচটি প্রায় একই অবজেক্ট আর সেগুলো সরানোর নির্ভরযোগ্য উপায়হীন করে তোলে।

New-NetFirewallRule -Name "VpnGateEchoV4" -DisplayName "Public echo gated on VPN state" -Direction Inbound -Action Allow -Protocol ICMPv4 -IcmpType 8 -LocalAddress 203.0.113.10 -RemoteAddress Any -Enabled False
Set-NetFirewallRule -Name "VpnGateEchoV4" -Enabled True

নাম হলো স্থায়ী শনাক্তকারী; প্রদর্শন-নাম হলো এমন নথি যা মানুষ সম্পাদনা করতে পারে। -Name অনুযায়ী মিলিয়ে নিন, স্ক্রিপ্ট আর নকল তৈরি করবে না। একই কমান্ড-আকৃতি IPv6 ক্ষেত্রটিও -Protocol ICMPv6 -IcmpType 128 দিয়ে ঢেকে দেয়, তবে সেটি আলাদা নিয়ম, কারণ দুই পরিবারের মধ্যে echo ধরনের সংখ্যা ভিন্ন।

ঠিকানা-পরিবার ও ICMP ধরন স্পষ্ট রাখার দ্বিতীয় কারণ আছে: -Protocol ICMPv4 ধরন ছাড়া প্রোফাইল যে কোনো ICMPv4 বার্তা অনুমোদন করে, এমনকি যেগুলো আপনি কখনো গ্রহণ করতে চাননি সেগুলোও। ধরন 8 নাম দেওয়া নিয়মটিকে echo অনুরোধে সংকুচিত করে, আর পৌঁছানোর পরীক্ষা কেবল সেটিই পাঠায়।

যেখানে স্বয়ংক্রিয়তা অভিপ্রায়ের বিপরীত

কয়েক মিনিট পরপর ক্লায়েন্ট প্রোফাইল জরিপ করা তাৎক্ষণিক সীমা তৈরি করতে পারে না। সংযোগ বন্ধ হওয়া থেকে পরবর্তী জরিপ পর্যন্ত নিয়মটি পাবলিক ঠিকানায় উত্তর দিতে থাকে; সংযোগ চালু হওয়া থেকে পরবর্তী জরিপ পর্যন্ত উত্তর দেয় না। ওই বিলম্ব স্বীকার করা সৎ, আর নকশাটি কঠোর অপরিবর্তনশীলতা প্রয়োগ করে দাবি করা সৎ নয়।

অবস্থা-পরীক্ষার মধ্যেই একটি পরিধি-ফাঁদ আছে। Get-VpnConnection মেশিনে কনফিগার করা ক্লায়েন্ট প্রোফাইল দেখায়, ডিফল্টে বর্তমান ব্যবহারকারীর জন্য এবং -AllUserConnection দিয়ে সব ব্যবহারকারীর জন্য। এটি RRAS সার্ভারে এই মুহূর্তে ডায়াল-ইন করা দূরবর্তী ব্যবহারকারীদের দেখায় না; সেটি ভিন্ন কমান্ডলেটের ভিন্ন পর্যবেক্ষণ। ভুলটির উপর নির্মিত গেট কোনো কিছুর সাথে সংযুক্ত নয়।

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

শেষে, পাবলিক অনুরোধটি দুইবার পরীক্ষা করুন, একবার নির্বাচিত সংযোগ চালু থাকলে ও একবার বন্ধ থাকলে, VPN-এ নেই এমন হোস্ট থেকে। টানেলের ভেতর থেকে সফল ping এই নীতির বিষয়ে কিছুই প্রমাণ করে না, আর অধিকাংশ স্থাপন ঠিক এই পরিমাপটিই বাদ দেয়।

সম্পর্কিত নিবন্ধ