دانلود یک کلاینت VPN تصمیمی یک‌باره است؛ افزودن مخزن APT آن چنین نیست. دومی به مدیر بسته می‌گوید نرم‌افزار آینده از کجا می‌تواند بیاید، و این انتقال دائمی اختیار است، نه یک دانلود. وقتی فروشنده مخزن را درست نگه می‌دارد، این می‌تواند ترتیب درستی باشد. با این حال شایستهٔ تصمیمی آگاهانه است و بیشتر راهنماهای نصب از آن می‌گذرند.

امضا یک بایگانی را تأیید می‌کند، نه کد آن را

APT فراداده‌های امضاشدهٔ مخزن را بررسی می‌کند و سپس به چک‌سام‌های درون همان فراداده‌ها برای بسته‌هایی که می‌آورد اعتماد می‌کند. این اثبات می‌کند که بایگانی با آنچه دارندهٔ کلید منتشر کرده هم‌خوان است، و هیچ چیز دربارهٔ کد درونش نمی‌گوید. بسته‌ای که درست امضا شده می‌تواند همچنان اسکریپت‌های ناامن نگه‌دارنده را همراه داشته باشد، و آن اسکریپت‌ها هنگام نصب بسته با دسترسی ریشه اجرا می‌شوند. راهنمای apt-secure دقیقاً همین مرز را میان تأیید بایگانی و بازبینی نرم‌افزار می‌کشد.

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

به همین دلیل هویت کلید به اندازهٔ نشانی مخزن شایستهٔ توجه است. کلیدی که از نشانی در پاسخی کهن در یک انجمن برداشته شده چیزی دربارهٔ ناشر ثابت نمی‌کند، در حالی که HTTPS انتقال تا هر کسی که تلفن را پاسخ داده محافظت می‌کند. امنیت انتقال و هویت ناشر دو پرسش جداگانه‌اند و تنها اولی با گواهی حل می‌شود.

کلید را به منبع محدود کنید، نه به سیستم

APT مدرن ارجاع Signed-By مخصوص منبع را می‌پذیرد. کلیدی که اپراتور مدیریت می‌کند می‌تواند زیر /etc/apt/keyrings/ باشد، و ورودی منبع نام کلیدی را می‌آورد که اجازهٔ تأیید آن بایگانی را دارد. این باریک‌تر از انداختن همان کلید در مجموعهٔ مورد اعتماد جهانی است، جایی که می‌تواند ضامن منابعی باشد که هرگز نمی‌خواستید اجازه دهید. نسخهٔ نصب‌شدهٔ APT و دستورهای کنونی فروشنده را دنبال کنید، نه اینکه تکه‌هایی از نسل‌های مختلف راهنماها را درهم بیامیزید.

curl -fsSL https://repo.example.com/vpn-key.gpg -o /etc/apt/keyrings/vpn.gpg
echo "deb [signed-by=/etc/apt/keyrings/vpn.gpg] https://repo.example.com/debian stable main" > /etc/apt/sources.list.d/vpn.list

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

جزئیات مخزن و هویت کلید را از پروژه یا از یک مدیر مدیریت‌شده بگیرید. کلیدی که از یک نوشتهٔ وبلاگ کپی شده ادعایی دربارهٔ نویسندگی است، نه شاهدی بر آن. وقتی فروشنده کانال چرخش منتشر می‌کند، آن را همراه با کلید ثبت کنید، زیرا همان کانال چرخش بعدی را ممکن می‌کند.

میخ‌کوبی منبع فهرست مجاز بسته‌ها نیست

محدود کردن یک کلید به یک منبع مشخص می‌کند کدام بایگانی را می‌تواند تأیید کند، نه اینکه آن بایگانی کدام بسته‌ها را می‌تواند منتشر کند. مخزن می‌تواند بسیار بیشتر از کلاینت VPN مورد نظر شما بفرستد، و گزینش نامزد و اولویت‌های APT تعیین می‌کنند کدام نسخهٔ واجد شرایط برنده می‌شود. پیش از تأیید، تراکنش پیشنهادی را همراه با فهرست وابستگی‌ها بررسی کنید، زیرا وابستگی‌ها از همان بایگانی می‌آیند. گسترهٔ یک کلید نمی‌تواند ’فقط این بسته’ را بیان کند.

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

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

اختیار و شیوهٔ حذف آن را ثبت کنید

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

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

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

مقالات مرتبط