کلید ثابت یا TLS برای پیوند OpenVPN بین دو همتا؟
حالت کلید ثابت OpenVPN نمیتواند کلیدهای ترافیک خود را بچرخاند. اگر دو همتا به تمدید خودکار نیاز دارند، به حالت TLS بروید و چیدمان نقطهبهنقطه را دستنخورده بگذارید.
دو ماشینی که فقط با یکدیگر صحبت میکنند میتوانند این توپولوژی را حفظ کنند و در عین حال کلیدهای ترافیک مذاکرهشده بگیرند. شکل شبکه و حالت حفاظت انتخابهای مستقلی هستند، و قاطی کردن آنها همان چیزی است که افراد را وادار میکند با تعویض یک فایل در حالی که هر دو دیمن در حال اجرا هستند، راز ثابت را بچرخانند. تعویض فایل کلید در زیر یک جفت در حال اجرا هیچ چیز را نمیچرخاند. حالت کلید ثابت، که OpenVPN 2.6 آن را منسوخ علامت میزند، یک کلید را برای تمام عمر تونل نگه میدارد، بنابراین فایل روی دیسک و کلید در حافظه تنها پس از راهاندازی دوباره هر دو طرف دوباره با هم همخوان میشوند. اگر تمدید خودکار لازم است، حالت حفاظت باید تغییر کند.
آنچه حالت کلید ثابت نمیتواند انجام دهد
در حالت راز، هر دو همتا یک کلید از پیش مشترک را به اشتراک میگذارند که تونل را مستقیماً رمزگذاری و احراز هویت میکند. هیچ دستدادنی وجود ندارد، بنابراین هیچ سازوکاری برای هیچ طرفی نیست تا مواد کلید جدید پیشنهاد کند، هویتی را اثبات کند یا بدون دخالت اپراتور از ناهمخوانی بازیابی شود. هر دو ویژگی از نبود کانال کنترل ناشی میشوند نه از یک گزینه غایب، و هیچ پرچم پیکربندیای یکی به این حالت اضافه نمیکند.
راهنمای OpenVPN 2.6 صریحاً میگوید کلید تا زمانی که کلید جدیدی تولید شود باقی میماند. این برای یک پیوند آزمایشگاهی یا یک جفت ثابت از دستگاهها با رویه چرخش مستند پذیرفتنی است و هر جا که یک راز دیرپا خطر واقعی باشد پذیرفتنی نیست. تعویض فایل برای یک جفت در حال اجرا کلید جدیدی نمیسازد؛ دو همتای ناسازگار میسازد. بنابراین جایگزینی فایل یک قطعی اضافه میکند بدون آنکه چرخشی اضافه کند.
همچنین هیچ تصوری از هویت همتا فراتر از مالکیت فایل وجود ندارد. هر کس کلید را داشته باشد همتاست، و چیزی در تونل ثبت نمیکند کدام طرف کدام است، بنابراین ابطال یا همه است یا هیچ.
گذار به TLS بدون بازطراحی پیوند
حالت TLS یک کانال کنترل اضافه میکند و با آن توانایی مذاکره بر سر کلیدهای کانال داده. در استقرار نقطهبهنقطه، یک طرف نقش سرور و طرف دیگر نقش کارخواه را میگیرد، اما توپولوژی یک پیوند بین دو همتا میماند: هر طرف نقطه پایانی طرف دیگر را میداند و هیچ استخر یا سرویس چندکاربره ظاهر نمیشود. نقشها جزئیاتی از دستدادن هستند، نه معماری جدید.
به هر ماشین هویت خودش را بدهید. هر طرف به یک گواهی و کلید خصوصی، لنگر اعتمادی که طرف دیگر را اعتبارسنجی میکند، و قاعدهای برای بررسی همتا که مشخص میکند چه کسی انتظار میرود نیاز دارد. برای صرفهجویی در وقت کلید خصوصی یک همتا را روی دیگری استفاده نکنید؛ این دو هویت را به یکی تبدیل میکند و توانایی ابطال هر طرف را بهطور جداگانه از بین میبرد. ثبتنام جایی است که این کار را درست انجام میدهید، چون اصلاح بعدی یعنی صدور دوباره گواهیها.
قرارداد شبکه را در حالی که حفاظت تغییر میکند بدون تغییر نگه دارید. همان نشانیها، مسیرها و سرویسهای مجاز تونل باید پیش و پس اعمال شوند، تا خرابی هنگام مهاجرت یک مشکل حفاظتی باشد نه یک غافلگیری مسیریابی مبدل. نشانیها و مسیرها را پیش از تغییر بنویسید؛ مقایسه آنها بعداً از بازسازی از حافظه سریعتر است.
برخی استقرارها کانال کنترل را نیز با کلید ثابت خودش محافظت میکنند که با کانال داده نمیچرخد. آن کلید از دستدادن محافظت میکند نه بار داده، بنابراین افشای آن مذاکره را آشکار میکند نه ترافیک را. آن را جدا از مواد کانال داده نگه دارید و تاریخ جایگزینی بدهید که شخصی مشخص مسئول آن باشد. چرخاندن آن یعنی راهاندازی دوباره هر دو همتا در یک بازه هماهنگ، به همین دلیل شایسته یک یادآور تقویمی است نه یک خاطره.
چه کسی چه چیزی را تمدید میکند، و چه زمانی
در حالت TLS، تمدید با محدودیتهای پیکربندیشده هدایت میشود: یک بازه زمانی، شمار بایتها یا شمار بستهها. کنترل زمانی مستند همان چیزی است که بیشتر استقرارها بر آن تکیه میکنند، و مقدار مؤثر کمتر در دو همتا میتواند جایگزینی را آغاز کند، بنابراین بالا بردن آن فقط در یک طرف رخداد را متوقف نمیکند. محدودیتهای حجمی وجود دارند چون یک پیوند شلوغ میتواند کلید را بسیار پیشتر از آنکه ساعت انجام دهد تمام کند. هیچیک از این محدودیتها بررسی سلامت نیست و هیچیک به شما نمیگوید تمدید موفق شده است.
به همین دلیل تشخیص یک مذاکره دوباره تکرارشونده از روی یک فایل پیکربندی گمراهکننده است. تنظیمات هر دو همتا را بخوانید و سپس به جای فرض خرابی به گذار در گزارش نگاه کنید. تمدیدی که پاک کامل میشود مانند یک انفجار کوتاه ترافیک کانال کنترل به نظر میرسد، نه مانند قطع اتصال.
اشیاء را در ذهن خود جدا نگه دارید. گواهی هویت بلندمدت را اثبات میکند و بر اساس برنامهای که شما کنترل میکنید جایگزین میشود. کلید کانال داده بهطور خودکار تازه میشود، و یک تبادل احراز هویت جداگانه، اگر استقرار به آن نیاز داشته باشد، از سیاست حساب پیروی میکند و ممکن است برای تبادلهای بعدی ترتیبات خودش را بخواهد.
غیرفعال کردن کامل تمدید، با تنظیم بازه روی صفر، راهحلی برای یک گزارش پر سر و صدا نیست. این یک رخداد سالم چرخه عمر را به کلید دائمی تبدیل میکند، که شما را به همان ویژگیای برمیگرداند که میخواستید پشت سر بگذارید.
پذیرش تغییر
پیکربندی جدید را از نمونه پشتیبانیشده نسخه نصبشده بسازید، نه از یک قطعه حداقلی قدیمی که الگوریتمها و مسیرهای فایلش از جای دیگری به ارث رسیدهاند. تغییر را هماهنگ کنید تا هر دو همتا با هم عوض شوند، و یک مسیر بازیابی تأییدشده نگه دارید در صورتی که یک طرف بالا نیاید. پیوند را عمداً پایین بیاورید به جای آنکه برای آزمودن بازگشت منتظر یک قطعی بمانید. بازگشتی که تمرین کردهاید ارزش بیشتری از بازگشتی دارد که توصیف کردهاید.
سه چیز را بیازمایید: احراز هویت اولیه موفق میشود، جریان برنامه مورد نظر کار میکند، و یک تمدید کنترلشده بدون از دست دادن ترافیک رخ میدهد. سپس گذار در گزارش را برای آنچه واقعاً اثبات میکند بخوانید: یک شناسه کلید جدید یعنی همتاها جایگزینی را کامل کردهاند، نه اینکه تونل دوباره متصل شده است. آن را شاهدی برای یک گام بدانید و پیش از آنکه مهاجرت را تمامشده بنامید شمارندههای ترافیک را بررسی کنید.
آنچه یک وعده بدون قطعی پنهان میکند خرابیای است که هنوز ندیدهاید. یک تمدید ناموفق، یک گواهی منقضیشونده یا یک نقص مسیر هنوز میتوانند پیوند را مختل کنند، و هیچیک از آنها با یک اجرای آزمون پاک رد نمیشوند. ویژگیای که ارزش طراحی دارد باریکتر و سودمندتر است: جایگزینی معمول کلیدها دیگر یک تعویض دستی فایل نیست.