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

অ্যাকাউন্ট থেকে নয়, কাজ থেকে শুরু করুন

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

লিখতে গিয়ে প্রমাণীকরণ ও অনুমোদন আলাদা রাখুন। প্রমাণীকরণ উত্তর দেয় কে সংযুক্ত হচ্ছে; অনুমোদন উত্তর দেয় সেশনটি পরে কী পর্যন্ত পৌঁছাতে পারে। RADIUS দ্বিতীয় অংশটি Filter-Id, Framed-IP-Address, Session-Timeout ও Class-এর মতো অ্যাট্রিবিউট হিসেবে বহন করে, এবং লগইন সফল হলে গেটওয়ে সেগুলো যুক্ত করে। যে ডিজাইন লগইন বদলে দেয় কিন্তু অনুমোদন অপরিবর্তিত রাখে, সেটি কিছুই সীমাবদ্ধ করেনি।

শেয়ার্ড মানব লগইন: পাসওয়ার্ডই সীমা হয়ে ওঠে

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

MFA-তেই সাধারণত এই ডিজাইন ভেঙে পড়ে। একটি স্ক্রিপ্ট পুশ প্রম্পটের উত্তর দিতে পারে না, তাই অ্যাকাউন্টটি পলিসি থেকে বাদ পড়ে, আর সেটিই ঠিক সেই অ্যাকাউন্ট যা একজন আক্রমণকারী বাছাই করবে। বর্জন, বিশ্বস্ত-অবস্থানের বাইপাস ও অ্যাকাউন্টভিত্তিক ছাড় বাড়তে থাকে, এবং টেন্যান্ট সেটিংস পড়া পরবর্তী ব্যক্তির কাছে এর কোনোটিই দৃশ্যমান নয়।

অ্যাট্রিবিউশন হলো অন্য খরচ। গেটওয়ে লগের প্রতিটি সেশন একই ব্যবহারকারীর নাম বহন করে, তাই রাতের সিঙ্ক্রোনাইজেশনকে যে ব্যক্তি এটি লিখেছে তার কাজ থেকে আলাদা করা যায় না, এবং কাজটি প্রত্যাহার করা মানে সেই ব্যক্তিকে প্রত্যাহার করা।

মেশিন সার্টিফিকেট: হোস্টে বাঁধা পরিচয়

সার্টিফিকেট প্রশ্নটি বদলে দেয় — অ্যাকাউন্ট কী জানে তা থেকে হোস্ট কী, সেটিতে। EAP-TLS-এ ক্লায়েন্ট একটি সার্টিফিকেট উপস্থাপন করে এবং সংশ্লিষ্ট প্রাইভেট কী-র দখল প্রমাণ করে; পলিসি সার্ভার সাবজেক্ট বা কম্পিউটার অ্যাকাউন্টকে একটি গ্রুপে ম্যাপ করে এবং সেই গ্রুপের পলিসি প্রয়োগ করে। কোনো প্রম্পট নেই, টেক্সট ফাইলে বসে থাকা কোনো শেয়ার্ড সিক্রেট নেই।

এটি যে সীমা তৈরি করে তা মানুষের প্রত্যাশার চেয়ে সরু। সার্টিফিকেট হোস্টকে প্রমাণীকরণ করে, কাজকে নয়, আর root বা স্থানীয় অ্যাডমিন অধিকার থাকা যে কেউ সেই হোস্টে ওই কী ব্যবহার করতে পারে। কী-টি সেখানে রাখুন যেখানে প্ল্যাটফর্ম তা সুরক্ষা দেয়: Windows সার্টিফিকেট স্টোরে নন-এক্সপোর্টেবল, প্রোফাইল অনুমতি দিলে TPM-সমর্থিত, অথবা Linux-এ root-মালিকানাধীন 0600 ফাইল। হোস্ট আপস হলে ক্রেডেনশিয়াল আপস হয়।

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

openssl x509 -in client.pem -noout -subject -issuer -dates
ipsec listcerts

প্রত্যাহারের জন্য গেটওয়ে যে পথ যাচাই করে তা দরকার। OpenVPN crl-verify অপশনের মাধ্যমে একটি CRL পড়ে, আর strongSwan সংযোগ প্রোফাইল কীভাবে তৈরি তার ওপর নির্ভর করে CRL বা OCSP-র ওপর নির্ভর করে। দুটির কোনোটিই যুক্ত না থাকলে হোস্ট সরানো মানে সার্টিফিকেটের মেয়াদ শেষ হওয়ার অপেক্ষা করা।

তিনটি শর্ত যা এদের মধ্যে সিদ্ধান্ত দেয়

তুলনাটি আপনার কাছে থাকা প্ল্যাটফর্মের বিরুদ্ধে করুন, কোনো রেফারেন্স ডিজাইনের বিরুদ্ধে নয়।

প্রথম শর্ত: গেটওয়ে কি একটি মেশিন পরিচয় অনুমোদন করতে পারে? যদি এটি কেবল একটি RADIUS ব্যবহারকারীর নামকে একটি ডিরেক্টরি ব্যবহারকারীতে ম্যাপ করে, তবে সার্টিফিকেট হোস্টকে প্রমাণীকরণ করে এবং তারপর অনুমোদনে আটকে যায়। দ্বিতীয় শর্ত: কাজটির কি এমন রিসোর্স অ্যাক্সেস দরকার যা কেবল একটি ব্যবহারকারী অ্যাকাউন্ট বহন করে, যেমন ম্যাপ করা শেয়ার বা প্রতি-আসনের লাইসেন্স? তাহলে মেশিন পরিচয় বিকল্প হতে পারে না, এবং সৎ উত্তর হলো সীমিত পলিসিসহ একটি নিবেদিত ব্যবহারকারী অ্যাকাউন্ট। তৃতীয় শর্ত: চক্রে কোনো মানুষ ছাড়া কে ক্রেডেনশিয়াল ঘোরাতে পারে? স্বয়ংক্রিয় এনরোলমেন্ট সার্টিফিকেট রাখা সস্তা করে; একজন মানুষের জানা পাসওয়ার্ড তা করে না।

ConstraintMachine certificateDedicated user account with stored secret
Unattended loginPrivate key proof, no promptOnly if the account is exempted from MFA
Resource expects a user identityWorks only when the resource accepts computer accountsMatches the access a person would have
RotationRe-enrollment, often automatedSecret change plus redeploy of every copy
Revocation speedTied to CRL or OCSP refreshDisable the account, immediate

টেবিলটিকে র‍্যাঙ্কিং নয়, খরচের তালিকা হিসেবে পড়ুন। সংরক্ষিত-সিক্রেট কলামটি প্রত্যাহারের গতিতে এবং কেবল ব্যবহারকারী অ্যাকাউন্ট বোঝে এমন রিসোর্সের সঙ্গে সামঞ্জস্যে জেতে; সার্টিফিকেট কলামটি ঘূর্ণনে এবং স্ক্রিপ্ট চালানোর জন্য MFA দুর্বল না করার বিষয়ে জেতে।

সীমাটি পলিসিতে রাখুন, প্রমাণীকরণের পরে

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

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

প্রত্যাখ্যান যাচাই করুন, তারপর অপসারণের পরিকল্পনা করুন

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

তারপর একই সেশন দুই জায়গায় নিশ্চিত করুন। গেটওয়ে লগ দেখায় কোন পরিচয় প্রমাণীকৃত হয়েছে; পলিসি সার্ভার লগ দেখায় কোন পলিসি মিলেছে এবং কোন অ্যাট্রিবিউট ফিরিয়েছে। OpenVPN-এ সার্ভার সার্টিফিকেটের কমন নেম রেকর্ড করে, আর strongSwan-এ ipsec statusall ব্যবহৃত পরিচয়সহ প্রতিষ্ঠিত টানেল প্রিন্ট করে। যদি দুটি লগ পরিচয় নিয়ে একমত না হয়, তবে পলিসি আপনি যা ধরে নিচ্ছেন তার চেয়ে অন্য কিছুর সঙ্গে মিলছে।

অপসারণ ডিজাইনের অংশ, পরিচ্ছন্নতার স্প্রিন্ট নয়। মুছতে হবে এমন সবকিছু লিখুন (সার্টিফিকেট বা অ্যাকাউন্ট, গ্রুপ সদস্যপদ, নেটওয়ার্ক পলিসি, পুল এন্ট্রি, লক্ষ্যে ফায়ারওয়াল নিয়ম) এবং কাজটি পুনর্নির্মাণ সহজ থাকতে একবার এটি চালান।

আজ শুরু করলে এই ক্রমে কাজ করুন: রিসোর্স তালিকা লিখুন, তিনটি শর্ত দিয়ে পরিচয় বাছুন, পলিসিতে সীমা রাখুন, এবং কাজটি চালু হওয়ার আগে একটি প্রত্যাখ্যান অনুশীলন করুন।

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