کلونسازی تصویر سرور VPN بدون کلونسازی هویت آن
تصمیم بگیرید که نسخه، یک دروازه را بازیابی میکند یا دروازه دومی را اضافه میکند. پیکربندی قابل استفاده مجدد، اختیار امضا و وضعیت شبکه هر یک به شکلی متفاوت منتقل میشوند.
تصویر بالا میآید، سرویس شروع میشود و کارخواهان متصل میشوند. همان لحظه است که باید بایستید و بپرسید کدامیک از دو عملیات کاملاً متفاوت همین حالا رخ داده است. یا نسخه یک دروازه منطقی را که قبلاً وجود داشت بازیابی میکند، یا دروازه دومی به ناوگان اضافه میکند. هر دو مشروعاند و پیامدهای متفاوتی برای هویت و دسترسی دارند. ماشینی که پاک بالا میآید هیچیک را اثبات نمیکند.
سه شرط پاسخ را تعیین میکند و آنها سه سطل موادی هستند که یک تصویر میتواند حمل کند. پیش از ساخت تصویر آنها را مرتب کنید، نه پس از دو بار استقرار.
نخست تعیین کنید کدامیک از دو عملیات را انجام میدهید
بازیابی یک هویت سرویس را نگه میدارد. نمونه قدیمی رفته است، نام و گواهی میمانند و کارخواهان همچنان به همان نقطه پایانی اعتماد میکنند. افزودن هویت دومی میسازد که کارخواهان، گزارشها و ابطال همه باید آن را تشخیص دهند.
این تمایز ظاهری نیست. اگر دو میزبان زنده گواهی دروازه یکسانی ارائه کنند، کارخواه نمیتواند آنها را از هم تشخیص دهد، رد حسابرسی هم نمیتواند، و ابطال آن گواهی هر دو را همزمان حذف میکند. شاید دقیقاً همان چیزی باشد که یک طراحی آگاهانه با دسترسپذیری بالا میخواهد، و بهندرت چیزی است که یک نسخه عجولانه تصویر در نظر دارد.
پس نخستین تصمیم یک جمله است که پیش از خروج تصویر از میزبان ساخت نوشته میشود: این نسخه دروازه A را بازیابی میکند، یا این نسخه دروازه B میشود. هر چیزی پس از آن حسابداری در برابر همان جمله است. اگر هیچکس نتواند آن را بنویسد، نسخه آماده ساخت نیست.
ورودیهای قابل استفاده مجدد، هویت و اختیار، وضعیت استقرار
سطل قابل استفاده مجدد سادهترین است: بستهها، پیکربندی بازبینیشده بدون راز، قالبهای سرویس، تنظیمات سختسازی. این همان چیزی است که تصویر واقعاً در آن خوب است و میتوان آن را بیحد تکرار کرد.
سطل هویت و اختیار جایی است که نسخهها اشتباه میشوند. کلید خصوصی و گواهی دروازه، آن دروازه را نزد هر کارخواه شناسایی میکند. کلید امضای مرجع گواهی شیء دیگری با توانایی دیگر است: هویتها را صادر میکند. اعتماد به یک صادرکننده به معنای آن نیست که هر دروازه جدید به توانایی صدور نیاز دارد، و فرستادن کلید امضا درون یک تصویر آن توانایی را به هر چیزی میدهد که میتواند تصویر را بخواند.
سطل وضعیت استقرار همانی است که مردم فراموش میکنند چون شبیه پیکربندی است. نشانیهای شنود، استخرهای نشانی، مسیرهای هلدادهشده، تنظیمات مفسر و یکپارچهسازی محلی همه فرضهایی درباره میزبان نخست رمزگذاری میکنند. گره دومی که آنها را کپی میکند میتواند از استخری تخصیص دهد که دروازه دیگری مالک آن است، یا کارخواهان را به منبعی بفرستد که فقط در کنار اصل وجود دارد.
گره جدید چه چیزی باید بگیرد و از چه کسی
گرهای که مستقل مدیریت میشود باید اعتبارنامههای خودش را از طریق فرایند ثبتنام تأییدشده دریافت کند، و عملیات امضا در جایی انجام شود که کلید امضا هست، نه روی میزبان جدید. ثبت کنید کدام هویت را میتوان بدون آشفتن گرههای دیگر پس گرفت؛ اگر پاسخ «همه» است، طراحی یک هویت دارد که خود را دو تا جا میزند.
ارزشهای شبکه سزاوار همان رفتارند. استخر، نشانی شنود و مجموعهای از مسیرهای هلدادهشده را انتخاب کنید که با دروازه موجود برخورد نکنند، و آنها را در ورودیهای تأمین بنویسید نه در تصویر. ورودی قابل بازبینی است؛ تصویر نیست.
یک حالت میانی مشروع وجود دارد. طراحی پشتیبانیشده بازیابی یا تکرار میتواند آگاهانه یک هویت منطقی سرویس را میان میزبانها نگه دارد، با دسترسی کنترلشده به نسخه قدیمی و برنامه چرخش. این تصمیمی با مالک است، نه پیشفرضی که رخ میدهد چون تصویر راحت بود.
openssl x509 -in /etc/openvpn/server/server.crt -noout -subject -issuer -dates
find /etc/openvpn -name '*.key' -o -name '*.pem' | head -20
فرمان نخست میگوید گره در واقع کدام هویت را ارائه میکند و چه کسی آن را امضا کرده است. دومی فهرست آغازین است، نه اثبات: مواد خصوصی میتواند بیرون از آن پوشه، درون پایگاه داده یک برنامه، یا در لایهای از عکس فوری باشد که سامانه فایل در حال اجرا دیگر نشانش نمیدهد.
نسخهای از تصویر چه چیزی را بیصدا با خود میبرد
حذف یک پرونده از جدیدترین بازبینی یک تصویر آن را از بازبینیهای قدیمیتر، حافظههای لایه یا عکسهای فوری گرفتهشده در زمان وجودش برنمیدارد. به همین دلیل تصاویر حامل اعتبارنامه باید در تمام عمرشان اشیای حساس تلقی شوند، نه فقط در لحظه ساخت.
محتوای تصویر و ورودیهای تأمین را دو پرسش جداگانه بدانید. تصویر به «درون این ساخته چه هست» پاسخ میدهد، و ورودیها به «این نمونه در نخستین راهاندازی چه میشود». تصویر پاک با اسکریپت راهاندازی که کلید مشترکی میآورد به پرسش نخست خوب و به دومی بد پاسخ میدهد.
تصاویر بازیابی که بهطور مشروع راز دارند را محدود به کسانی نگه دارید که به آنها نیاز دارند، و ثبت کنید کجا نگهداری میشوند. جایگزین، تصویری که چون بدون هیچ تأمینی کار میکند راحت است، همان تصویری است که هویت دروازه را به هر کس آن را پیدا کند میدهد. تنها یکی از این دو وظیفه در گزارش ساخت دیده میشود.
بررسیهای پذیرش پیش از تولید
پیش از آنکه گره ترافیک بگیرد، چهار چیز را تأیید کنید: هویتی که ارائه میکند، کارخواهانی که میپذیرد، منابعی که اجازه رسیدن به آنها را دارد، و مسیر بازگشت برای نشانیهایی که توزیع میکند.
systemctl status openvpn-server@lab --no-pager
ss -lunp 'sport = :1194'
ip -4 route show table all | grep -F '10.90.'
سپس حالت منفی را بررسی کنید، همان که تصادفها را میگیرد: آیا گره جدید دسترسی مدیر یا کارخواهی دارد که برای اصل در نظر گرفته شده بود؟ پیکربندی کپیشده میتواند یک ورودی کارخواه اضافه، یک مسیر مدیریت بهارثرسیده، یا یک دستور هلدادن حمل کند که روی میزبان نخست معنا داشت.
اگر تصویری با رازهای زنده پیشتر از مرز تأییدشدهاش بیرون رفته است، اعتبارنامهها را جایگزین کنید و نسخهها را مهار کنید. برداشتن پرونده از آخرین ساخت همان بازنشستهکردن اعتبارنامهای نیست که نسخههای قدیمی هنوز نگه میدارند، و شکاف میان این دو واقعیت دقیقاً همان پنجرهای است که مهاجم لازم دارد.