PAM নীতি দিয়ে OpenVPN লগইন এক গ্রুপে সীমাবদ্ধ করুন
একটি নিবেদিত PAM পরিষেবা সিস্টেম-ব্যাপী লগইন নিয়ম স্পর্শ না করেই কেবল একটি VPN গ্রুপের সদস্যদের অনুমতি দিতে পারে। auth-pam প্লাগইনটি তার দিকে নির্দেশ করুন এবং ফলাফল পরীক্ষা করুন।
প্রতিটি অ্যাকাউন্টকে স্বাভাবিকভাবে লগইন করার সুযোগ দিন, কিন্তু VPN ব্যবহার করতে দিন কেবল একটি গ্রুপকে। PAM দ্বিতীয় পাসওয়ার্ড ভান্ডার ছাড়াই সেই পার্থক্য প্রকাশ করতে পারে, আর OpenVPN প্লাগইনকে এমন একটি পরিষেবার দিকে নির্দেশ করা যায় যাতে কেবল আপনার ইচ্ছাকৃত যাচাইগুলো থাকে। কৌশলটি হলো সিস্টেম-ব্যাপী স্ট্যাক ভুলবশত উত্তরাধিকার না করেই সেই পরিষেবাটি তৈরি করা।
এখানকার আলোচনা প্লাগইনের পরিষেবা নাম থেকে শুরু হয়, একটি নীতি গড়ে তোলে, তারপর তিনটি গুরুত্বপূর্ণ ফলাফল পরীক্ষা করে: একজন সদস্য, বৈধ পাসওয়ার্ডসহ একজন বহিরাগত এবং একটি খারাপ ক্রেডেনশিয়াল।
কেন আলাদা PAM পরিষেবা
auth-pam প্লাগইন তার আর্গুমেন্ট হিসেবে একটি পরিষেবা নাম নেয়। সেই নামটি /etc/pam.d-এর অধীনে একটি ফাইল নির্বাচন করে, এবং সেই ফাইলের স্ট্যাকই VPN লগইনের সময় চলে। যদি আপনি সিস্টেম-ব্যাপী লগইন যে নাম ব্যবহার করে সেটিই দেন, তাহলে সেই স্ট্যাকের প্রতিটি সিদ্ধান্ত উত্তরাধিকার করবেন, এমনকি পরবর্তীতে অসংশ্লিষ্ট কারণে যোগ করা সিদ্ধান্তগুলোও।
পরিবর্তে একটি নিবেদিত পরিষেবা তৈরি করুন। আগে থেকেই উদ্দিষ্ট ব্যাকএন্ডের বিরুদ্ধে প্রমাণীকরণ করে এমন একটি কার্যকর স্ট্যাক দিয়ে শুরু করুন, যেমন স্থানীয় পাসওয়ার্ড ফাইল, SSSD বা একটি ডিরেক্টরি পরিষেবা, তারপর যোগ্যতার নিয়মটি যোগ করুন। খালি ফাইলে দুটি লাইন কপি করা সাধারণ ভুল: পাসওয়ার্ডের মেয়াদ, অ্যাকাউন্ট লক এবং অন্যান্য যাচাই আপনার না-কপি করা স্ট্যাকে থাকতে পারে।
পরিষেবাটি আলাদা করলে ক্ষতির পরিধিও সীমিত হয়। ভাগ করা স্ট্যাকে কেবল-VPN নিয়ম সবার জন্য SSH বা কনসোল প্রবেশ নিষিদ্ধ করতে পারে, যা একটি প্রবেশ পরিবর্তনকে বিভ্রাটে পরিণত করে।
গ্রুপ নিয়ম লেখা
যোগ্যতা যাচাই অ্যাকাউন্ট পর্যায়ের, ক্রেডেনশিয়াল যাচাই হওয়ার পরে। account required pam_succeed_if.so user ingroup vpnusers-এর মতো নিয়ম প্রক্রিয়াকরণ চালিয়ে যেতে দেয় কেবল তখনই, যখন প্রমাণিত ব্যবহারকারী সেই গ্রুপের সদস্য।
সেই লাইনটি একটি খণ্ড, সম্পূর্ণ পরিষেবা নয়। এটিকে সেখানে সংযুক্ত করুন যেখানে প্রতিটি গৃহীত পথ পৌঁছায়, এবং এর আশপাশের নিয়ন্ত্রণ ফ্ল্যাগগুলো যাচাই করুন। স্ট্যাকে আগের একটি sufficient বা জাম্প নিয়ন্ত্রণ আপনার নিয়ম চলার আগেই প্রক্রিয়াকরণ শেষ করতে পারে, যা সীমাবদ্ধতাকে কেবল একটি পরামর্শে পরিণত করে।
অভ্যাসবশত use_uid যোগ করবেন না। এটি ছাড়া মডিউল প্রমাণিত হওয়া ব্যবহারকারীকে মূল্যায়ন করে; এটি দিয়ে মডিউল সেই অ্যাকাউন্টকে মূল্যায়ন করে যার অধীনে OpenVPN প্রক্রিয়া চলে, যা সাধারণত root বা একটি পরিষেবা অ্যাকাউন্ট এবং তাই লগইন করা ব্যক্তি নয়।
গ্রুপ সদস্যপদ আসে সিস্টেমের পরিচয় নির্ধারণ থেকে, আপনার চেনা কোনো নাম থেকে নয়। ডিরেক্টরি ব্যবহারকারীদের জন্য নিশ্চিত করুন যে একই ব্যাকএন্ড সেই ব্যবহারকারীর গ্রুপ প্রশ্নের উত্তর দেয়, কারণ পরিচিত নামের একটি স্থানীয় গ্রুপ একই নামের ডিরেক্টরি গ্রুপ থেকে আলাদা বস্তু।
ক্রম ও পরিচয়ের ফাঁদ
গ্রুপ নিয়মটি প্রমাণীকরণ স্ট্যাকের পরে এবং যা এখনও প্রযোজ্য থাকা উচিত এমন প্রতিটি যাচাইয়ের পরে রাখুন, কিন্তু আপনি যে অ্যাকাউন্ট যাচাইগুলো রাখছেন তার আগে বা পাশে। PAM ফাইলের ক্রমে মডিউল মূল্যায়ন করে, এবং প্রতিটি লাইনের নিয়ন্ত্রণ মান নির্ধারণ করে ব্যর্থতা চূড়ান্ত কি না।
দ্বিগুণ স্ট্যাক সম্পর্কে সতর্ক থাকুন। সাধারণ নমুনা হলো এমন একটি অন্তর্ভুক্তি যাতে ইতিমধ্যে একটি অ্যাকাউন্ট নিয়ম আছে, তারপরে আপনার নিজের গ্রুপ নিয়ম, যা এক প্রত্যাশিত জায়গায় দুটি সিদ্ধান্ত তৈরি করে। শুধু আপনি সম্পাদনা করা ফাইল নয়, অন্তর্ভুক্ত ফাইলটিও পড়ুন। কার্যকর ক্রম দেখার দ্রুত উপায় হলো ফাইলটি উপর থেকে নিচে পড়ে প্রতিটি নিয়ন্ত্রণ মান টুকে রাখা।
অন্য ভর্তি শর্তগুলো অক্ষত রাখুন। সফল পাসওয়ার্ড সার্টিফিকেট যাচাই, দ্বিতীয় ফ্যাক্টর বা সংযোগ-পরবর্তী অনুমোদন প্রতিস্থাপন করে না, এবং এই নীতি তাদের কোনোটিরই বিকল্প নয়। এটি কেবল নির্ধারণ করে অ্যাকাউন্টটি VPN প্রবেশের জন্য বিবেচনার যোগ্য কি না।
সদস্য, বহিরাগত ও ভুল পাসওয়ার্ড পরীক্ষা
নীতিটি সমাপ্ত ভাবার আগে তিনটি ঘটনা পরীক্ষা করুন। একজন সদস্য সফলভাবে সংযোগ করে। গ্রুপের বাইরের একটি বৈধ অ্যাকাউন্ট তার পাসওয়ার্ড প্রমাণীকরণ করে কিন্তু VPN প্রবেশ থেকে বঞ্চিত হয়। যেকোনো অ্যাকাউন্টের ভুল পাসওয়ার্ড প্রমাণীকরণ পর্যায়ে প্রত্যাখ্যাত হয়, গ্রুপ নিয়ম দ্বারা নয়।
ক্লায়েন্ট-দৃশ্যমান ত্রুটি এবং সার্ভার লগ একসাথে দেখুন, কারণ সংযোগকারী ব্যক্তির কাছে দুটি ব্যর্থতাই একই রকম দেখাতে পারে। সমর্থনের জন্য পার্থক্যটি গুরুত্বপূর্ণ: সঠিক পাসওয়ার্ডসহ বহিরাগতের গ্রুপ পরিবর্তন দরকার, আর ভুল পাসওয়ার্ডের ক্রেডেনশিয়াল রিসেট দরকার।
PAM সম্পাদনার সময় একটি দ্বিতীয় সেশন খোলা রাখুন, এবং পরিবর্তনের পরে সাধারণ SSH লগইনও যাচাই করুন। নিবেদিত পরিষেবার উদ্দেশ্য হলো সিস্টেম লগইন অপ্রভাবিত থাকা উচিত, আর তা জানার একমাত্র উপায় পরীক্ষা করা।
কিছু ভেঙে গেলে কপি থেকে পূর্ববর্তী পরিষেবা ফাইলটি পুনরুদ্ধার করুন। যে নিয়মটি আপনি চান তা বলতে সহজ: সদস্যপদ একটি অ্যাকাউন্টকে VPN প্রবেশের যোগ্য করে, এবং অন্য প্রতিটি আবশ্যক যাচাই এখনও প্রযোজ্য।