ব্যবহারকারী OpenVPN GUI-তে ডাবল-ক্লিক করেন, একটি UAC প্রম্পট অনুমোদন করেন এবং পরের পুনঃসংযোগে একই রীতি পুনরাবৃত্তি করেন। প্রম্পটটি প্যাকেজিংয়ের ভুল নয়: ক্লায়েন্ট একটি ভার্চুয়াল অ্যাডাপ্টার তৈরি করে এবং রাউটিং টেবিল সম্পাদনা করে, আর দুটিই বিশেষাধিকারপ্রাপ্ত পরিবর্তন। আসল প্রশ্ন হলো ব্যবহারকারীর সত্যিই কোন অধিকারগুলো দরকার। একটি পরিষেবা এবং সংকীর্ণ প্রতিনিধিত্ব অ্যাডমিনিস্ট্রেটর সদস্যপদ না দিয়েই সংযোগটি কভার করে।

কোন অপারেশনগুলো সত্যিই বিশেষাধিকার বৃদ্ধি দাবি করে

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

অনুদান বেছে নেওয়ার আগে ইনস্টল-সময়কে সংযোগ-সময় থেকে আলাদা করুন। এদের মালিক ও আয়ুষ্কাল আলাদা।

পরিষেবাটিকে বিশেষাধিকারপ্রাপ্ত উপাদান হিসেবে ব্যবহার করুন

সমর্থিত বিন্যাসটি প্রয়োজনীয় অধিকার ধারণকারী একটি Windows পরিষেবা চালায়, আর একটি GUI পরিষেবাটিকে সংযোগ করতে বলে। তখন বিশেষাধিকারপ্রাপ্ত কোড কখনও ব্যবহারকারীর সেশনের ভেতরে চলে না।

sc query OpenVPNService
sc qc OpenVPNService

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

অন্তর্নির্মিত গ্রুপ দিয়ে রুট পরিবর্তনের প্রতিনিধিত্ব করুন

যে ক্লায়েন্টকে ইন্টারঅ্যাক্টিভভাবে চলতে হবে, তার জন্য প্রতিনিধিত্বকৃত অন্তর্নির্মিত গ্রুপ হলো Network Configuration Operators। এটি নেটওয়ার্ক সেটিংস ও রুট পরিবর্তন কভার করে, তবে সফটওয়্যার ইনস্টল এবং সাধারণ প্রশাসনিক কাজ বাদ দেয়।

net localgroup "Network Configuration Operators" alice /add
sc sdshow OpenVPNService

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

ব্যবহারকারীর অ্যাকাউন্ট থেকে যাচাই করুন

অ্যাডমিনিস্ট্রেটর সেশনে করা কনফিগারেশন সেই অ্যাকাউন্ট সম্পর্কে কিছুই প্রমাণ করে না যা এটি ব্যবহার করবে। সেই ব্যবহারকারী হিসেবে সাইন ইন করুন, সংযোগ করুন এবং আগে ও পরে মেশিনের অবস্থা তুলনা করুন।

route print -4
Get-DnsClientServerAddress

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

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

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