শেয়ার করা পিসিতে একটি VPN লগইন: রুটটি আর কে পায়?
একটি VPN লগইন একজন ব্যক্তিকে প্রমাণ করে; এটি যে রুট ইনস্টল করে তা ভিন্ন পরিধি। শেয়ার করা মেশিনে হোস্ট-ব্যাপী, প্রতি-ব্যবহারকারী ও প্রতি-অ্যাপ টানেল তুলনা করুন।
একটি ওয়ার্কস্টেশন শেয়ার করা এমন একটি প্রশ্ন তোলে যার উত্তর একক-ব্যবহারকারীর ল্যাপটপকে কখনো দিতে হয় না: একজন ব্যক্তি টানেলটি প্রমাণ করার পর অন্য কে এটি ব্যবহার করতে পারে? লগইন একটি সাবজেক্ট শনাক্ত করে, আর এটি যে রুট ইনস্টল করে তা একটি পরিধি বর্ণনা করে, এবং এই দুটি একই বস্তু নয়। এদের মাঝখানে থাকে অপারেটিং সিস্টেম, ক্লায়েন্টের কনফিগারেশন এবং প্রাইভেট সার্ভিস নিজে যা দাবি করে। অনুমান না করে প্রশ্নটির উত্তর দেওয়ার একমাত্র উপায় হলো প্রয়োগবিন্দুগুলো তুলনা করা।
একটি লগইন, কয়েকটি পরিধি
অথেন্টিকেশন উত্তর দেয় কাকে প্রবেশ করানো হলো। রুট উত্তর দেয় কোন প্যাকেট টানেল দিয়ে বের হতে পারে। অথোরাইজেশন উত্তর দেয় কোন সার্ভিস ফলাফল সংযোগটি গ্রহণ করবে, এবং তিনটির কোনোটিই পরেরটিকে অন্তর্ভুক্ত করে না।
হোস্ট-ব্যাপী টানেল সাধারণ ডিফল্ট এবং এটি ফাঁকটি স্পষ্ট করে। রুটটি কার্নেলের টেবিলে থাকে, তাই সেই টেবিল ব্যবহার করা প্রতিটি প্রসেস প্রাইভেট নেটওয়ার্কে পৌঁছাতে পারে, এমনকি এমন প্রসেসও যা VPN ডায়ালগ কখনো দেখেনি এমন ব্যবহারকারী চালু করেছে। এটি টানেলের ত্রুটি নয়; সিস্টেম-ব্যাপী রুটের অর্থই এটি। প্রাইভেট সার্ভিস তখনও সংযোগ প্রত্যাখ্যান করতে পারে, তাই পৌঁছানোর সামর্থ্য ও অনুমতির আলাদা উত্তর দরকার।
পরীক্ষার আগে চারটি প্রশ্ন লিখে রাখলে পর্যালোচনা তাদের একটিতে গুটিয়ে যাওয়া থেকে রক্ষা পায়।
সীমাটি আসলে কোথায়
চারটি ব্যবস্থা বেশিরভাগ মেশিন কভার করে: হোস্ট-ব্যাপী টানেল, প্রতি-ব্যবহারকারী সংযোগ, প্রতি-অ্যাপ্লিকেশন অনুমোদিত তালিকা এবং আলাদা নেটওয়ার্ক নেমস্পেস বা ভার্চুয়াল মেশিন।
প্রতিটি প্রয়োগবিন্দুকে ভিন্ন জায়গায় রাখে, এবং লেবেলের চেয়ে পার্থক্যগুলো বেশি জরুরি। প্রতি-ব্যবহারকারী সংযোগ প্রোফাইলের অনুমতি দিয়ে প্রয়োগ হয়, ডেস্কটপ লগইন স্ক্রিন দিয়ে নয়। প্রতি-অ্যাপ অনুমোদিত তালিকা ক্লায়েন্টের ভেতরে প্রয়োগ হয়, যা ঠিক করে সে কী বহন করবে। নেমস্পেস বা ভিএম ইন্টারফেস সীমান্তে প্রয়োগ করে, তাই ভেতরের প্রসেস হোস্টের রুট একেবারেই দেখতে পায় না। মেশিনে লগইন স্ক্রিনের সংখ্যা এদের কোনোটির সম্পর্কে কিছুই বলে না।
| Arrangement | Enforced by | Who can use the path |
|---|---|---|
| Host-wide tunnel | The routing table | Any local process using that table |
| Per-user connection | Profile permission list | Only the listed accounts |
| Per-app allowlist | The VPN client itself | Only the selected applications |
| Namespace or VM | The interface boundary | Only processes inside it |
টেবিলটি সারি ধরে পড়লে দেখা যায় আসল প্রশ্নটি বিচ্ছিন্নতা আছে কি না তা নয়, বরং তা কোথায় বাস্তবায়িত।
চারটি প্রয়োগবিন্দু তুলনা করুন
লিনাক্সে রুট টেবিলই প্রথম দেখার জিনিস, কারণ হোস্ট-ব্যাপী টানেল সেখানে দেখা যায় আর নেমস্পেস দেখা যায় না। দ্বিতীয় ব্যবহারকারী হিসেবে লুকআপ চালানোই সেই ধাপ যা মানুষ এড়িয়ে যায়; উত্তরটি তারা নিজে হিসেবে যা পেয়েছিল তার থেকে আলাদা, এবং এটিই রিপোর্টটি ব্যাখ্যা করে।
পরের দুটি পরীক্ষা রাউটিং নয়, নীতি দেখে। UID-এর সাথে মেলা ফায়ারওয়াল নিয়ম স্থানীয়ভাবে উৎপন্ন ট্র্যাফিকের ক্ষেত্রে প্রযোজ্য, তাই এটি একই হোস্টে দুই ব্যবহারকারীকে আলাদা করতে পারে, এমনকি দুজনেই রুট শেয়ার করলেও। স্পষ্ট অনুমতি তালিকাসহ সংযোগ প্রোফাইল সক্রিয়করণের সময় নেটওয়ার্ক ম্যানেজার প্রয়োগ করে। কোনোটিই টানেল বদলানোর প্রয়োজন করে না, তাই কিছু পুনরায় ডিজাইন করার আগে এগুলো করা উচিত।
ip route get 10.40.2.10
sudo -u bob ip route get 10.40.2.10
nmcli connection show vpn-work | grep -i permission
sudo nft list ruleset | grep -n skuid
যদি দ্বিতীয় লুকআপ টানেল রুট দেখায়, তবে সীমাটি ডিজাইন যেখানে ধরে নিয়েছিল সেখানে নয়।
সমকালীন-সেশন নিয়ম আলাদা একটি নিয়ন্ত্রণ
গেটওয়ে প্রায়ই সীমাবদ্ধ করে একটি অ্যাকাউন্ট কতগুলো সেশন রাখতে পারে, এবং সেই সীমা স্থানীয় ব্যবহারকারীদের সাথে কোনো সম্পর্ক রাখে না। এটি অ্যাকাউন্টকে সীমাবদ্ধ করে, তাই একই ক্রেডেনশিয়াল দিয়ে সাইন ইন করা দ্বিতীয় ব্যক্তি প্রথম ব্যক্তির টানেল বন্ধ করতে পারে।
স্থানীয় বিচ্ছিন্নতার সমস্যা ধরে নেওয়ার আগে ব্যর্থতাটি পড়ুন। সেশন সীমা গেটওয়েতে সংযোগ বিচ্ছিন্ন করে, আর পরিধির সমস্যা একটি কার্যকর টানেল দেয় যা কেবল অন্য ব্যবহারকারীর ট্র্যাফিক বহন করে না। এই দুই লক্ষণ সম্পূর্ণ ভিন্ন সমাধানে নিয়ে যায়। ক্লায়েন্টের সঠিক বার্তাটি রাখুন, কারণ এটি সাধারণত নিয়মটির নাম বলে। সীমাটি এড়ানোর বদলে প্রোফাইল মালিকের কাছে অনুমোদিত কর্মপ্রবাহ চান।
ভার্চুয়াল মেশিন কাউকে সেই নিয়ম থেকে মুক্তি দেয় না, এবং এটি নিজস্ব নেটওয়ার্ক ও ক্রেডেনশিয়াল ডিজাইন যোগ করে।
আপনার প্রয়োজনীয় প্রসঙ্গটি পরীক্ষা করুন
উদ্দিষ্ট ব্যবহারকারী ও অ্যাপ্লিকেশন পরীক্ষা করুন, তারপর এমন প্রসঙ্গ পরীক্ষা করুন যা প্রত্যাখ্যাত হওয়া উচিত। যে পর্যালোচনা কেবল মূল পাসওয়ার্ড কাজ করে তা প্রমাণ করে, সে অথেন্টিকেশন পরীক্ষা করেছে আর কিছুই নয়।
sudo -u bob curl -sS -m 5 https://intranet.internal/health
wg show
ss -tnp | grep -E ':443|:51820'
প্রতিটি ফলাফলের পাশে প্রয়োগবিন্দু লিখে রাখুন: রুট টেবিল, একটি UID নিয়ম, একটি প্রোফাইল অনুমতি বা গেটওয়ের সেশন নীতি। সেই রেকর্ড পরবর্তী পরিবর্তনকে পর্যালোচনাযোগ্য করে। এটি প্রতিবার কেউ দ্বিতীয় লগইন স্ক্রিন লক্ষ্য করলে একই প্রশ্ন আবার খোলা থেকেও বিরত রাখে। পৌঁছানোর সামর্থ্য অথোরাইজেশন নয়, এবং কোনোটিই বিচ্ছিন্নতা নয়।