আপনার VPN কমান্ড চলে বিশেষ অধিকার ছাড়াই; সেবাটি নয়
পাসওয়ার্ডের অনুরোধ না আসা কে রুট বদলায় তা বলে না। সেবাটি, তার প্রকাশ করা ইন্টারফেস এবং কোন কলকারী কী চাইতে পারবে তা ঠিক করা নীতিটি খুঁজুন।
VPN কমান্ডটি আপনার ব্যবহারকারী হিসেবে চলে, কোনো পাসওয়ার্ড আসে না, আর টানেল উঠে আসে। এই ধারাবাহিকতাটি বিশেষ অধিকারহীন কাজের মতো মনে হয়, এবং সাধারণত তা হয় না। আলাদা একটি সেবা নেটওয়ার্কের পরিবর্তনগুলো করে, আর আসল প্রশ্ন হলো যে সেবাটি যাচাই না করা কোনো কলকারীর জন্য কী করবে। পাসওয়ার্ডের অনুরোধ গুনে সেই সীমারেখা সম্পর্কে কিছুই জানা যায় না।
ইন্টারফেস, কার্যপ্রণালী ও যাচাই
ইন্টারফেসটি অনুরোধ গ্রহণ করে: সংযোগ, বিচ্ছেদ, প্রোফাইল নির্বাচন। কার্যপ্রণালীটি নেটওয়ার্কের কাজগুলোর মালিক: ইন্টারফেস তৈরি, রুট পরিবর্তন, ফিল্টার প্রয়োগ। অনুমোদন যাচাই ঠিক করে এই কলকারী এই কাজটি চাইতে পারবে কি না। এই তিনটি একটি বাইনারি, একটি সহায়ক ও একটি সিস্টেম সেবার মধ্যে ছড়িয়ে থাকতে পারে, আর ব্যবহারকারী কেবল প্রথমটি দেখে।
ভূমিকাগুলো একটি বাইনারিতে, দুটি প্রক্রিয়ায়, বা একটি ক্লায়েন্ট ও একটি সিস্টেম সেবায় থাকতে পারে, আর ব্যবহারকারীর দেখা কমান্ডটি খুব কমই বলে কোনটি। একটি ট্রে আইকন ও একটি সিস্টেম ডেমন একই অ্যাপ্লিকেশনের মতো দেখাতে পারে, অথচ তারা খুব আলাদা ক্ষমতা নিয়ে চলে। ইনস্টলের সময়ের বিশেষাধিকার আর অনুরোধের সময়ের বিশেষাধিকারও আলাদা জিনিস। যে ইনস্টলার root হিসেবে চলেছিল সে পরবর্তী অনুরোধের জন্য শোনা একটি সেবা রেখে যেতে পারে, প্যাকেজ ম্যানেজার শেষ হওয়ার অনেক পরে। সেই সেবাটিই ক্ষমতা ধরে রাখে, আপনি যে কমান্ড টাইপ করেছেন সেটি নয়।
অর্পণই স্বাভাবিক নকশা
বিশেষাধিকারযুক্ত নেটওয়ার্কের কাজ একটি সেবার কাছে অর্পণ করা যুক্তিসঙ্গত স্থাপত্য। এটি সাধারণ অ্যাপ্লিকেশনগুলোকে বিশেষাধিকারহীন রাখে এবং যত্ন প্রয়োজন এমন কাজগুলোকে কেন্দ্রীভূত করে। নকশাটি কেবল তখনই লাভ দেয় যখন সেবাটিও যাচাই করে কে চাইছে এবং কী জন্য। সেই যাচাই ছাড়া এটি কেবল আরও চওড়া একটি দরজা।
NetworkManager হলো লিনাক্সের নির্দিষ্ট উদাহরণটি। এর কনফিগারেশন নির্দেশিকা ব্যাখ্যা করে ডিফল্ট সেটআপে PolicyKit কীভাবে root ছাড়া অনুরোধ অনুমোদন করে। এটি বাস্তব একটি পণ্যে অর্পিত অনুমোদন দেখায়। এটি প্রমাণ করে না যে প্রতিটি বাণিজ্যিক ক্লায়েন্ট NetworkManager ব্যবহার করে, এবং কোনো নির্দিষ্ট বিক্রেতার সকেট পথ বা নীতি বর্ণনা করে না।
নমুনাটি হলো পেছনে নীতি থাকা অর্পণ। উদাহরণটি সেই নমুনার একটি বাস্তবায়ন, সর্বজনীন নয়।
সীমারেখা পড়ুন, অনুরোধ নয়
সেবাটি, তার কনফিগারেশনের মালিক এবং ফ্রন্টএন্ড যে স্থানীয় ইন্টারফেস ব্যবহার করে তা খুঁজুন। তারপর জিজ্ঞাসা করুন কোন ব্যবহারকারী কোন কাজ চাইতে পারে। একটি সংরক্ষিত প্রোফাইল ওঠানো-নামানো আর অপারেটরের কখনো না দেখা কনফিগারেশন লোড করা একই অনুমতি নয়। পার্থক্যটিই পুরো নিরাপত্তা প্রশ্ন।
সেবা ম্যানেজার এবং নিজের অনুমতিগুলো নিয়ে ক্লায়েন্টের নিজস্ব দৃষ্টিভঙ্গি দিয়ে শুরু করুন। নিচের কমান্ডগুলো দেখায় ডেমনটি চলছে কি না, কলকারী তার কাছে কী চাইতে পারে, এবং ডেমনটি তার রানটাইম ডিরেক্টরির নিচে কী প্রকাশ করে।
systemctl status NetworkManager
nmcli general permissions
ls -l /run/NetworkManager
এছাড়াও জিজ্ঞাসা করুন কাজটি কী প্রভাবিত করে। ব্যক্তিগত দেখতে একটি মেনু আইটেম পুরো মেশিনের রুট ও DNS বদলাতে পারে, যার মানে এটি অন্য ব্যবহারকারীদের সেশন ব্যাহত করতে পারে। প্রভাবের ব্যাপ্তি অনুমতির সঙ্গেই একই পর্যালোচনায় থাকে, এবং সাধারণত এটিই ঠিক করে সেবাটির আরও সংকীর্ণ ভূমিকা দরকার কি না।
সমর্থিত উপায়ে অনুমতি ঠিক করুন
একটি সুরক্ষিত নিয়ন্ত্রণ সকেটকে সবার জন্য লেখার যোগ্য করা, বা একটি বিস্তৃত প্রশাসনিক গ্রুপে অ্যাকাউন্ট যোগ করা, একটি অনুমতির ত্রুটি সরায় এবং আরও বড় একটি তৈরি করে। ত্রুটিই ছিল একমাত্র জিনিস যা আপনাকে বলেছিল সীমারেখাটি আছে। প্রামাণ্য সদস্যপদ বা অনুমোদন প্রক্রিয়া ব্যবহার করুন, তার প্রয়োজনীয় সেশন রিফ্রেশসহ। গ্রুপের সদস্যপদ প্রায়ই কেবল নতুন লগইন সেশনে প্রযোজ্য, তাই পরবর্তী সাইন-ইন পর্যন্ত পরিবর্তনটি কিছুই করছে না বলে মনে হতে পারে।
পণ্যটি যদি কাজটির জন্য আরও সংকীর্ণ ভূমিকা দেয়, তাহলে সর্বজনীন অনুমতির বদলে সেটিই বেছে নিন। বেছে নেওয়া ভূমিকা ও তার মালিককে সেবার নামের পাশে লিখে রাখুন।
ভালো বিভাজন কেমন দেখায়
সাধারণ অ্যাপ্লিকেশনগুলো বিশেষাধিকারহীন থাকে, সেবাটি কেবল যে সেটআপের জন্য তৈরি তারই কাজ করে, আর প্রতিটি কলকারীকে কারও মালিকানাধীন নীতি দিয়ে যাচাই করা হয়। এটি একটি রক্ষণীয় নকশা। এটি নিরীক্ষণযোগ্যও, কারণ নীতিটির সঙ্গে একটি নাম যুক্ত। এর চেয়ে বড় যেকোনো কিছু নীরব অনুমতি পরিবর্তনের বদলে লিখিত ব্যতিক্রম দাবি করে।
ব্যর্থতার ধরন হলো এমন সেবা যা ইন্টারফেস সুবিধাজনক বলে যেকোনো স্থানীয় ব্যবহারকারীর যেকোনো অনুরোধ সম্পন্ন করে। ব্যবহারকারীর দিক থেকে এটি একই দেখায়, আর এটি অনেক বড় ক্ষমতা বহন করে। একটি প্রত্যাখ্যাত অনুরোধ পরীক্ষা করুন, কেবল সফলটিই নয়। নীতি থেকে আসা প্রত্যাখ্যানই প্রমাণ যে নীতিটি আছে।