APT-SECURE(8) APT APT-SECURE(8)

apt-secure - پشتیبانی از اعتبارسنجی و امضای امن بستهها در APT

از نسخه ۰.۶ به بعد، APT شامل کدی است که بررسی امضای فایل Release را برای همه مخازن انجام می‌دهد. این امر تضمین می‌کند داده‌هایی مانند بسته‌های موجود در آرشیو توسط افرادی که به کلید امضای فایل Release دسترسی ندارند، قابل تغییر نباشند. از نسخه ۱.۱ به بعد، APT مخازن را ملزم می‌کند تا اطلاعات اعتبارسنجی جدیدی را برای استفاده بدون مانع از مخزن ارائه دهند. از نسخه ۱.۵، تغییرات در اطلاعات موجود در فایل Release درباره مخزن باید پیش از ادامه اعمال به‌روزرسانی‌ها از این مخزن توسط APT تأیید شوند.

نکته: تمامی رابط‌های مدیریت بسته مبتنی بر APT مانند apt-get(8)، aptitude(8) و synaptic(8) از این ویژگی اعتبارسنجی پشتیبانی می‌کنند، بنابراین این صفحه راهنما صرفاً برای سادگی از APT برای اشاره به همه آن‌ها استفاده می‌کند.

کلیدها معمولاً باید در فایل مربوطه .sources با تعبیه کلید آرمورشده اسکی (ASCII-armored) در گزینه Signed-By گنجانده شوند. برای انجام این کار، خط خالی را با یک نقطه جایگزین کرده و سپس همه خطوط را دو فاصله تورفتگی دهید. برای اطلاعات بیشتر به sources.list(5) مراجعه کنید.

به‌عنوان جایگزین، کلیدها می‌توانند در /etc/apt/keyrings برای کلیدهای محلی، یا /usr/share/keyrings برای کلیدهای مدیریت‌شده توسط بسته‌ها قرار گیرند و سپس توسط گزینه Signed-By: /etc/apt/keyrings/example-archive-keyring.asc در یک فایل .sources یا با استفاده از deb [signed-by=/etc/apt/keyrings/example-archive-keyring.asc] ... در قالب سنتی .list مورد ارجاع قرار گیرند. این روش می‌تواند برای نسخه‌های APT قبل از ۲.۴ که از کلیدهای تعبیه‌شده پشتیبانی نمی‌کنند مفید باشد. کلیدهای آرمورشده اسکی باید از پسوند .asc و کلیدهای بدون آرمور از پسوند .gpg استفاده کنند.

برای تولید کلیدهای مناسب جهت استفاده در APT با استفاده از GnuPG، باید از دستور gpg --export-options export-minimal [--armor] --export استفاده کنید. راه‌حل‌های قدیمی‌تر شامل --keyring file --import با نسخه‌های اخیر GnuPG دیگر کار نمی‌کنند، زیرا آن‌ها از یک قالب داخلی جدید («پایگاه‌داده keybox جی‌پی‌جی») استفاده می‌کنند.

توجه داشته باشید که یک نصب پیش‌فرض در حال حاضر شامل تمام کلیدها برای دریافت امن بسته‌ها از مخازن پیش‌فرض است، بنابراین مدیریت کلیدها تنها در صورتی نیاز است که مخازن شخص ثالث اضافه شوند. بسته extrepo می‌تواند برای مدیریت آسان چندین مخزن خارجی استفاده شود.

اگر یک آرشیو دارای فایل Release بدون امضا باشد یا اصلاً فایل Release نداشته باشد، نسخه‌های فعلی APT به‌طور پیش‌فرض از بارگیری داده‌ها از آن‌ها در عملیات‌های update خودداری می‌کنند و حتی در صورت اجبار به دانلود، رابط‌هایی مانند apt-get(8) در صورتی که درخواست نصب شامل بسته‌ای از چنین آرشیو تأییدنشده‌ای باشد، نیازمند تأیید صریح خواهند بود.

می‌توانید با تنظیم گزینه پیکربندی Acquire::AllowInsecureRepositories روی true تمام کلاینت‌های APT را مجبور کنید که فقط هشدار صادر کنند. مخازن منفرد نیز می‌توانند از طریق گزینه sources.list(5) به‌صورت allow-insecure=yes به‌عنوان ناامن مجاز شوند. توجه داشته باشید که مخازن ناامن شدیداً نکوهش می‌شوند و همه گزینه‌ها برای وادار کردن APT به ادامه پشتیبانی از آن‌ها در نهایت حذف خواهند شد. کاربران همچنین گزینه Trusted را برای غیرفعال کردن حتی هشدارها در دسترس دارند، اما حتماً پیامدهای آن را همان‌طور که در sources.list(5) شرح داده شده است درک کنید.

مخزنی که پیش‌تر معتبر بوده اما این وضعیت را در یک عملیات update از دست می‌دهد، در تمامی کلاینت‌های APT بدون توجه به گزینه مجاز بودن یا نبودن استفاده از مخازن ناامن، خطا صادر می‌کند. این خطا را می‌توان با تنظیم اضافی Acquire::AllowDowngradeToInsecureRepositories روی true یا برای مخازن منفرد با گزینه sources.list(5) به‌صورت allow-downgrade-to-insecure=yes برطرف کرد.

زنجیره اعتماد از یک آرشیو APT تا کاربر نهایی از چندین مرحله تشکیل شده است. apt-secure آخرین مرحله در این زنجیره است؛ اعتماد به یک آرشیو به این معنی نیست که مطمئن باشید بسته‌های آن فاقد کد مخرب هستند، بلکه به این معنی است که شما به نگه‌دارنده آرشیو اعتماد دارید. این مسئولیت نگه‌دارنده آرشیو است که اطمینان حاصل کند یکپارچگی آرشیو حفظ می‌شود.

دستور apt-secure امضاها را در سطح بسته بررسی نمی‌کند. اگر به ابزارهایی برای انجام این کار نیاز دارید، باید به debsig-verify و debsign (به ترتیب ارائه‌شده در بسته‌های debsig-verify و devscripts) نگاهی بیندازید.

زنجیره اعتماد در دبیان (برای مثال) زمانی آغاز می‌شود که یک نگه‌دارنده، یک بسته جدید یا نسخه جدیدی از یک بسته را در آرشیو دبیان بارگذاری می‌کند. برای مؤثر واقع شدن، این بارگذاری باید با یک کلید موجود در یکی از دسته‌کلیدهای نگه‌دارندگان بسته دبیان (موجود در بسته debian-keyring) امضا شده باشد. کلیدهای نگه‌دارندگان توسط سایر نگه‌دارندگان بر اساس رویه‌های از پیش تعیین‌شده برای اطمینان از هویت دارنده کلید امضا می‌شوند. رویه‌های مشابهی در تمامی توزیع‌های مبتنی بر دبیان وجود دارد.

پس از تأیید بسته بارگذاری‌شده و گنجاندن آن در آرشیو، امضای نگه‌دارنده جدا می‌شود، و چکسام‌های بسته محاسبه شده و در فایل Packages قرار می‌گیرند. سپس چکسام‌های تمام فایل‌های Packages محاسبه شده و در فایل Release قرار می‌گیرند. سپس فایل Release توسط کلید آرشیو برای این انتشار دبیان امضا می‌شود و همراه با بسته‌ها و فایل‌های Packages در آینه‌های دبیان توزیع می‌گردد. این کلیدها در دسته‌کلید آرشیو دبیان قرار دارند که در بسته debian-archive-keyring موجود است.

کاربران نهایی می‌توانند امضای فایل Release را بررسی کنند، یک چکسام از بسته را از آن استخراج کرده و با چکسام بسته‌ای که دانلود کرده‌اند به‌صورت دستی مقایسه کنند - یا به انجام خودکار این کار توسط APT اعتماد کنند.

توجه داشته باشید که این با بررسی امضاها بر اساس هر بسته متفاوت است. این طراحی شده است تا از دو حمله احتمالی جلوگیری کند:

•حملات شبکه «مرد میانی» (man in the middle). بدون بررسی امضا، عوامل مخرب می‌توانند خود را وارد فرآیند دانلود بسته کرده و با کنترل یک عنصر شبکه (روتر، سوییچ و غیره) یا با هدایت ترافیک به یک سرور سرکش (از طریق حملات جعل ARP یا DNS) نرم‌افزارهای مخرب ارائه دهند.
•به‌خطر افتادن شبکه آینه‌ها (Mirror network compromise). بدون بررسی امضا، یک عامل مخرب می‌تواند یک میزبان آینه را به خطر بیندازد و فایل‌های موجود در آن را برای انتشار نرم‌افزار مخرب بین تمام کاربرانی که بسته‌ها را از آن میزبان دانلود می‌کنند تغییر دهد.

با این حال، این از سرور اصلی در برابر به خطر افتادن محافظت نمی‌کند (که بسته‌ها را امضا می‌کند) یا در برابر به خطر افتادن کلید مورد استفاده برای امضای فایل‌های Release محافظت نمی‌کند. در هر صورت، این سازوکار می‌تواند مکمل امضای مبتنی بر هر بسته باشد.

یک فایل Release علاوه بر چکسام‌های مربوط به فایل‌های موجود در مخزن، حاوی اطلاعات عمومی درباره مخزن مانند مبدأ، نام رمز یا شماره نسخه انتشار نیز می‌باشد.

این اطلاعات در جاهای مختلفی نمایش داده می‌شوند، بنابراین مالک مخزن باید همیشه از صحت آن‌ها اطمینان حاصل کند. علاوه بر این، پیکربندی کاربر مانند apt_preferences(5) می‌تواند به این اطلاعات وابسته بوده و از آن‌ها استفاده کند. بنابراین از نسخه ۱.۵، کاربر باید صریحاً تغییرات را تأیید کند تا نشان دهد کاربر به‌اندازه کافی آماده است، به عنوان مثال برای انتشار نسخه اصلی جدید توزیع که در مخزن ارائه شده است (همان‌طور که مثلاً با نام رمز مشخص شده است).

اگر می‌خواهید امضاهای آرشیو را در آرشیوی تحت نگه‌داری خود ارائه دهید، باید:

•یک فایل Release در بالاترین سطح ایجاد کنید، در صورتی که از قبل وجود نداشته باشد. می‌توانید این کار را با اجرای apt-ftparchive release (ارائه‌شده در apt-utils) انجام دهید.
•آن را امضا کنید. می‌توانید این کار را با اجرای gpg --clearsign -o InRelease Release و gpg -abs -o Release.gpg Release انجام دهید.
•اثر انگشت کلید را منتشر کنید، تا کاربران شما بدانند برای اعتبارسنجی فایل‌های موجود در آرشیو باید چه کلیدی را وارد کنند. بهتر است کلید خود را در بسته دسته‌کلید مخصوص به خود منتشر کنید، همان‌طور که دبیان با debian-archive-keyring انجام می‌دهد تا بتواند بعداً به‌روزرسانی‌ها و انتقال‌های کلید را به‌طور خودکار توزیع کند.
•دستورالعمل‌هایی در مورد نحوه افزودن آرشیو و کلید خود ارائه دهید. اگر کاربران شما نتوانند کلید شما را به‌طور امن دریافت کنند، زنجیره اعتماد شرح‌داده‌شده در بالا شکسته می‌شود. نحوه کمک به کاربران برای افزودن کلید شما به آرشیو و مخاطبان هدف شما بستگی دارد؛ از گنجاندن بسته دسته‌کلید شما در آرشیو دیگری که کاربران قبلاً پیکربندی کرده‌اند (مانند مخازن پیش‌فرض توزیع آن‌ها) گرفته تا بهره‌گیری از شبکه اعتماد (web of trust).

هر زمان که محتویات آرشیو تغییر کند (بسته‌های جدید اضافه یا حذف شوند)، نگه‌دارنده آرشیو باید دو مرحله اول ذکرشده در بالا را دنبال کند.

apt.conf(5), apt-get(8), sources.list(5), apt-ftparchive(1), debsign(1), debsig-verify(1), gpg(1)

برای اطلاعات بیشتر ممکن است مایل باشید فصل زیرساخت امنیتی دبیان (Debian Security Infrastructure)[1] از راهنمای ایمن‌سازی دبیان (همچنین در بسته harden-doc موجود است) و راهنمای جامع توزیع قدرتمند (Strong Distribution HOWTO)[2] اثر V. Alex Brennen را مطالعه فرمایید.

صفحه اشکالات APT[3]. اگر مایل به گزارش یک اشکال در APT هستید، لطفاً /usr/share/doc/debian/bug-reporting.txt یا دستور reportbug(1) را بررسی کنید.

برنامه APT توسط تیم APT <apt@packages.debian.org> نوشته شده است.

این صفحه راهنما بر اساس کار خاویر فرناندز-سانگوئینو پنیا (Javier Fernández-Sanguino Peña)، آیزاک جونز (Isaac Jones)، کالین والترز (Colin Walters)، فلوریان وایمر (Florian Weimer) و مایکل فوگت (Michael Vogt) تهیه شده است.

Jason Gunthorpe

تیم APT

1.
Debian Security Infrastructure
2.
Strong Distribution HOWTO
3.
صفحه اشکالات APT
23 November 2024 APT 3.3.3