محدود کردن ورودهای OpenVPN به یک گروه با خطمشی PAM
یک سرویس PAM اختصاصی میتواند فقط اعضای یک گروه VPN را بپذیرد، بدون دست زدن به قواعد ورود در سطح سیستم. افزونه auth-pam را به آن اشاره کنید و نتایج را بیازمایید.
هر حساب را قادر نگه دارید که بهطور عادی وارد شود، اما تنها یک گروه را مجاز کنید که از VPN استفاده کند. PAM میتواند این تفاوت را بدون یک مخزن رمز دوم بیان کند، و افزونه OpenVPN را میتوان به سرویسی اشاره داد که تنها بررسیهای موردنظر شما را در خود دارد. ترفند ساختن آن سرویس است بدون آنکه بهطور تصادفی یک پشته سراسری سیستم را به ارث ببرید.
این راهنما از نام سرویس افزونه آغاز میشود، یک خطمشی میسازد و سپس سه پیامد مهم را میآزماید: یک عضو، یک بیرونی با رمز معتبر و یک مدرک بد.
چرا یک سرویس PAM جداگانه
افزونه auth-pam یک نام سرویس را بهعنوان آرگومان خود میگیرد. این نام فایلی زیر /etc/pam.d را برمیگزیند، و پشته در آن فایل همان چیزی است که هنگام ورود VPN اجرا میشود. اگر همان نامی را بدهید که ورود سراسری سیستم استفاده میکند، هر تصمیم در آن پشته را به ارث میبرید، از جمله تصمیمهایی که بعداً به دلایل نامرتبط افزوده شدهاند.
بهجای آن یک سرویس اختصاصی بسازید. از یک پشته کارآمد شروع کنید که پیشتر با backend موردنظر احراز هویت میکند، مانند یک فایل رمز محلی، SSSD یا یک سرویس دایرکتوری، سپس قاعده واجد شرایط بودن را اضافه کنید. کپی کردن دو خط در یک فایل خالی اشتباه رایج است: انقضای رمز، قفل حساب و بررسیهای دیگر میتوانند در پشتهای باشند که کپی نکردهاید.
جدا کردن سرویس دامنه آسیب را نیز محدود میکند. یک قاعده فقط-VPN در یک پشته مشترک میتواند دسترسی SSH یا کنسول را برای همه منع کند، که تغییر دسترسی را به قطعی تبدیل میکند.
نوشتن قاعده گروه
بررسی واجد شرایط بودن به مرحله حساب تعلق دارد، پس از آنکه مدرک تأیید شد. قاعدهای مانند account required pam_succeed_if.so user ingroup vpnusers تنها زمانی به پردازش اجازه ادامه میدهد که کاربر احرازهویتشده عضو آن گروه باشد.
آن خط یک قطعه است، نه یک سرویس کامل. آن را جایی بگنجانید که هر مسیر پذیرفتهشده به آن میرسد، و پرچمهای کنترل پیرامونش را بررسی کنید. یک کنترل sufficient یا پرش در ابتدای پشته میتواند پردازش را پیش از اجرای قاعده شما پایان دهد، که محدودیت را به یک پیشنهاد تبدیل میکند.
use_uid را از روی عادت اضافه نکنید. بدون آن ماژول کاربری را ارزیابی میکند که احراز هویت میشود؛ با آن ماژول حسابی را ارزیابی میکند که فرایند OpenVPN زیر آن اجرا میشود، که معمولاً root یا یک حساب سرویس است و بنابراین همان شخصی نیست که وارد میشود.
عضویت در گروه از تفکیک هویت سیستم میآید، نه از نامی که میشناسید. برای کاربران دایرکتوری تأیید کنید که همان backend به پرسوجوهای گروه آن کاربر پاسخ میدهد، زیرا یک گروه محلی با نام آشنا شیئی متفاوت از گروه دایرکتوری با همان نام است.
تلههای ترتیب و هویت
قاعده گروه را پس از پشته احراز هویت و پس از هر بررسی که باید همچنان اعمال شود قرار دهید، اما پیش از بررسیهای حسابی که نگه میدارید یا در کنار آنها. PAM ماژولها را به ترتیب فایل ارزیابی میکند و مقدار کنترل در هر خط تعیین میکند که آیا شکست نهایی است.
مراقب پشتههای تکراری باشید. الگوی رایج یک include است که از پیش یک قاعده حساب دارد و پس از آن قاعده گروه خودتان میآید، که دو تصمیم تولید میکند جایی که یکی انتظار داشتید. فایل واردشده را بخوانید، نه فقط فایلی که ویرایش کردهاید. راه سریع دیدن ترتیب مؤثر خواندن فایل از بالا به پایین و یادداشت هر مقدار کنترل است.
سایر الزامات پذیرش را دستنخورده نگه دارید. یک رمز موفق جایگزین بررسیهای گواهی، یک عامل دوم یا مجوز پس از اتصال نمیشود، و این خطمشی جایگزین هیچیک از آنها نیست. تنها تعیین میکند که آیا حساب واجد شرایط بودن برای دسترسی VPN را دارد.
آزمایش اعضا، بیرونیها و رمزهای اشتباه
پیش از آنکه خطمشی را تمامشده بدانید سه حالت را بیازمایید. یک عضو با موفقیت متصل میشود. یک حساب معتبر بیرون از گروه رمزش را احراز میکند اما دسترسی VPN رد میشود. رمز اشتباه برای هر یک از دو حساب در مرحله احراز هویت رد میشود، نه با قاعده گروه.
خطای قابلمشاهده برای کلاینت و گزارش سرور را با هم ببینید، زیرا هر دو شکست میتوانند برای شخص متصلشونده مشابه به نظر برسند. این تمایز برای پشتیبانی مهم است: بیرونی با رمز درست به تغییر گروه نیاز دارد، در حالی که رمز اشتباه به بازنشانی مدرک نیاز دارد.
هنگام ویرایش PAM یک نشست دوم باز نگه دارید و پس از تغییر، ورود عادی SSH را نیز بررسی کنید. هدف سرویس اختصاصی این است که ورود سیستم بیاثر بماند، و تنها راه دانستن آن آزمودن آن است.
اگر چیزی خراب شد، فایل سرویس قبلی را از یک نسخه بازگردانید. قاعدهای که میخواهید بیانش ساده است: عضویت یک حساب را برای دسترسی VPN واجد شرایط میکند و هر بررسی الزامی دیگر همچنان اعمال میشود.