دو طرح تقریباً هر راه‌اندازی VPN بدون‌نظارت را پوشش می‌دهند: ورود انسانی مشترک که در یک اسکریپت نگه داشته می‌شود، یا گواهی ماشین که به میزبان متصل است. آن‌ها در جاهای مختلفی شکست می‌خورند و این مهم‌تر از سرعت راه‌اندازی است. گذرواژه ذخیره‌شده وقتی مالکش آن را تغییر دهد یا برود می‌شکند؛ گواهی وقتی منقضی شود یا میزبان بدون کلید بازسازی شود می‌شکند. سه شرط تعیین می‌کند کدام هزینه را می‌توانید تحمل کنید، و هیچ‌کدام از دو طرح تا زمانی که سیاست مجوزدهی این کار را نکند چیزی را محدود نمی‌کند.

از کار شروع کنید، نه از حساب

کار مرز را تعریف می‌کند: کدام مقاصد، کدام سرویس‌ها، کدام ساعت‌ها، یک نشست چقدر می‌تواند ادامه یابد. مسیر تونل فقط نیمی از این مرز است. دروازه تصمیم می‌گیرد که آیا نشست مجاز است؛ منبع پشت آن تصمیم می‌گیرد نشست چه کاری می‌تواند بکند. ابتدا فهرست را بنویسید، با مالکی نام‌دار، چون هر دو طرح هویت باید آن را برآورده کنند.

هنگام نوشتن، احراز هویت و مجوزدهی را جدا نگه دارید. احراز هویت پاسخ می‌دهد چه کسی متصل می‌شود؛ مجوزدهی پاسخ می‌دهد نشست پس از آن به چه چیزی می‌رسد. RADIUS بخش دوم را به‌صورت ویژگی‌هایی مانند Filter-Id، Framed-IP-Address، Session-Timeout و Class حمل می‌کند و دروازه آن‌ها را پس از موفقیت ورود پیوست می‌کند. طرحی که ورود را عوض کند و مجوزدهی را دست‌نخورده بگذارد، چیزی را محدود نکرده است.

ورود انسانی مشترک: گذرواژه مرز می‌شود

استفاده دوباره از حساب انسانی سریع‌ترین راه و بدترین راه از نظر فرسودگی است. اعتبارنامه یک گذرواژه است، پس در اسکریپت، فایل محیطی و پیکربندی زمان‌بند می‌ماند و هر نسخه نیاز به چرخش دارد. وقتی مالک آن را روز جمعه تغییر دهد، کار در اجرای بعدی شکست می‌خورد و کسی نگاه نمی‌کند.

MFA جایی است که این طرح معمولاً فرو می‌ریزد. اسکریپت نمی‌تواند به درخواست push پاسخ دهد، پس حساب از سیاست مستثنا می‌شود، و این دقیقاً همان حسابی است که مهاجم انتخاب می‌کند. استثناها، دور زدن مکان‌های مورد اعتماد و معافیت‌های هر حساب زیاد می‌شوند و هیچ‌یک برای نفر بعدی که تنظیمات مستأجر را می‌خواند قابل مشاهده نیست.

انتساب هزینه دیگر است. هر نشست در گزارش دروازه همان نام کاربری را دارد، پس همگام‌سازی شبانه از کار کسی که آن را نوشته قابل تشخیص نیست، و لغو کار یعنی لغو آن شخص.

گواهی ماشین: هویتی متصل به میزبان

گواهی پرسش را از آنچه حساب می‌داند به آنچه میزبان هست تغییر می‌دهد. با EAP-TLS کلاینت گواهی ارائه می‌دهد و مالکیت کلید خصوصی متناظر را اثبات می‌کند؛ سرور سیاست موضوع یا حساب کامپیوتر را به گروهی نگاشت می‌کند و سیاست آن گروه را اعمال می‌کند. نه درخواستی، نه راز مشترکی که در فایل متنی نشسته باشد.

مرزی که می‌سازد از آنچه مردم انتظار دارند باریک‌تر است. گواهی میزبان را احراز هویت می‌کند، نه کار را، و هر کس دسترسی root یا مدیر محلی داشته باشد می‌تواند آن کلید را روی آن میزبان به کار ببرد. کلید را جایی نگه دارید که پلتفرم از آن محافظت می‌کند: غیرقابل صدور در مخزن گواهی ویندوز، با پشتیبانی TPM جایی که نمایه اجازه می‌دهد، یا فایل 0600 متعلق به root در لینوکس. به‌خطرافتادن میزبان به‌خطرافتادن اعتبارنامه است.

انقضا خطای تکرارشونده است. گواهی‌ای که یکشنبه منقضی شود کار را یکشنبه متوقف می‌کند و دروازه معمولاً خطای احراز هویت عمومی گزارش می‌دهد نه اینکه تاریخ را نام ببرد. تاریخ‌ها را از میزبان کار به‌عنوان بخشی از runbook بررسی کنید:

openssl x509 -in client.pem -noout -subject -issuer -dates
ipsec listcerts

لغو به مسیری نیاز دارد که دروازه آن را بررسی کند. OpenVPN CRL را از طریق گزینه crl-verify می‌خواند و strongSwan بسته به اینکه نمایه اتصال چگونه ساخته شده به CRL یا OCSP وابسته است. اگر هیچ‌یک متصل نشده باشد، حذف یک میزبان یعنی انتظار برای انقضای گواهی.

سه شرطی که بین آن‌ها تصمیم می‌گیرد

مقایسه را با پلتفرمی که دارید انجام دهید، نه با یک طرح مرجع.

شرط اول: آیا دروازه می‌تواند هویت ماشین را مجوز دهد؟ اگر فقط نام کاربری RADIUS را به کاربر دایرکتوری نگاشت می‌کند، گواهی میزبان را احراز هویت می‌کند و سپس در مجوزدهی متوقف می‌شود. شرط دوم: آیا کار به دسترسی به منبعی نیاز دارد که فقط یک حساب کاربری حمل می‌کند، مانند اشتراک نگاشت‌شده یا مجوز به‌ازای هر صندلی؟ آن‌گاه هویت ماشین نمی‌تواند جایگزین شود و پاسخ صادقانه یک حساب کاربری اختصاصی با سیاست محدود است. شرط سوم: چه کسی می‌تواند اعتبارنامه را بدون حضور انسان در چرخه بچرخاند؟ ثبت‌نام خودکار نگه‌داشتن گواهی‌ها را ارزان می‌کند؛ گذرواژه‌ای که یک نفر می‌داند نه.

ConstraintMachine certificateDedicated user account with stored secret
Unattended loginPrivate key proof, no promptOnly if the account is exempted from MFA
Resource expects a user identityWorks only when the resource accepts computer accountsMatches the access a person would have
RotationRe-enrollment, often automatedSecret change plus redeploy of every copy
Revocation speedTied to CRL or OCSP refreshDisable the account, immediate

جدول را به‌عنوان فهرست هزینه بخوانید، نه رتبه‌بندی. ستون راز ذخیره‌شده در سرعت لغو و در سازگاری با منابعی که فقط حساب‌های کاربری را می‌فهمند برنده است؛ ستون گواهی در چرخش و در تضعیف نکردن MFA برای کار کردن یک اسکریپت برنده است.

محدودیت را در سیاست بگذارید، پس از احراز هویت

هر هویتی که انتخاب کنید، محدودیت مجوز به سیاستی تعلق دارد که پس از احراز هویت اجرا می‌شود. در NPS سیاست‌های شبکه به ترتیب ارزیابی می‌شوند و اولین سیاستی که با همه شرط‌ها مطابقت دارد تنظیماتش را اعمال می‌کند، پس یک سیاست گسترده که بالای یک سیاست باریک قرار گیرد نتیجه را تعیین می‌کند، هر چه کلاینت ارائه دهد. مایکروسافت مدل شرط و تنظیمات را در سند خود توضیح می‌دهد: مرور سیاست‌های NPS.

به کار گروه یا شرط سیاست خودش را بدهید، بر پایه چیزی که هویت ماشین حمل می‌کند: یک قالب گواهی، شناسه ایستگاه تماس‌گیرنده، یا نشانی از یک استخر اختصاصی. سپس نشست را با ویژگی‌ها محدود کنید: یک Filter-Id برای نقشی که دروازه‌تان آن را به آن نگاشت می‌کند، یک Session-Timeout کوتاه تا کار متوقف‌شده دوباره احراز هویت کند به‌جای نگه‌داشتن نشست برای روزها، و یک Framed-IP-Address از استخری که در طرف مقابل روی آن فایروال اعمال می‌کنید. مجوزدهی برنامه جدا می‌ماند: تونل به یک سرور پایگاه داده اجازه خواندن جدولی درون آن نیست.

ردها را بررسی کنید، سپس حذف را برنامه‌ریزی کنید

دسترسی‌ای که کار می‌کند هیچ چیزی درباره کمترین امتیاز اثبات نمی‌کند. به‌جای آن ردها را آزمایش کنید: با هویت کار متصل شوید و به مقصدی بیرون از فهرست برسید، اگر دروازه باید فقط یکی را مجاز کند نشست دوم هم‌زمان باز کنید، و پس از لغو اعتبارنامه ورود را تکرار کنید.

سپس همان نشست را در دو جا تأیید کنید. گزارش دروازه هویتی را نشان می‌دهد که احراز هویت شده؛ گزارش سرور سیاست نشان می‌دهد کدام سیاست مطابقت داشته و چه ویژگی‌هایی برگردانده است. در OpenVPN سرور نام متعارف گواهی را ثبت می‌کند و ipsec statusall در strongSwan تونل برقرارشده را با هویت در حال استفاده چاپ می‌کند. اگر دو گزارش درباره هویت اختلاف داشته باشند، سیاست با چیزی غیر از آنچه فرض می‌کنید مطابقت دارد.

حذف بخشی از طرح است، نه یک اسپرینت پاکسازی. هر چیزی که باید حذف شود را بنویسید (گواهی یا حساب، عضویت گروه، سیاست شبکه، ورودی استخر، قاعده فایروال روی هدف) و آن را یک بار اجرا کنید وقتی کار به‌راحتی بازسازی می‌شود.

اگر امروز شروع می‌کنید، به این ترتیب کار کنید: فهرست منابع را بنویسید، هویت را با سه شرط انتخاب کنید، محدودیت را در سیاست بگذارید، و پیش از عملیاتی شدن کار یک رد را تمرین کنید.

مقالات مرتبط