لینوکس رمز VPN شما را کجا باید نگه دارد؟ نه در پروفایل
پرچمهای راز در NetworkManager تعیین میکنند که پروفایل، یک عامل جاکلیدی یا هیچکس رمز را نگه دارد. پاسخ به این بستگی دارد که اتصال چه زمانی آغاز میشود.
رمز VPN باید جایی زندگی کند: در پروفایل اتصال، در جاکلیدی که میزکار آن را باز میکند، یا هیچجا. NetworkManager آن انتخاب را پرچم راز مینامد، و انتخاب پرچم اشتباه دلیل آن است که اتصال پس از ورود کار میکند و بهعنوان سرویس شکست میخورد. پرچم یک خط پیکربندی است و تعیین میکند کدام یک از آن سه نتیجه را میگیرید.
سه پرچم تقریباً همه حالتها را پوشش میدهند و تصمیم درباره این است که اتصال چه زمانی آغاز میشود.
سه پرچم راز، سه رفتار
پرچم 0 یعنی راز همراه اتصال ذخیره میشود، در هر انباری که پروفایل را نگه میدارد. پرچم 1 آن را متعلق به عامل میکند: راز از یک عامل راز مانند جاکلیدی میزکار میآید و NetworkManager هنگام فعالسازی آن را میخواهد. پرچم 2 یعنی ذخیرهنشده، پس راز هرگز نوشته نمیشود و باید هر بار داده شود. پرچم 4 یک راز را غیرلازم علامت میزند، برای اتصالهایی که واقعاً به هیچکدام نیاز ندارند.
| Flag | Where it lives | Works unattended |
|---|---|---|
| 0 saved | Connection profile | Yes, if the store is readable |
| 1 agent-owned | Secret agent or keyring | Only if that agent is available |
| 2 not-saved | Nowhere | No |
پرچمها را برای هر راز تنظیم کنید نه برای هر اتصال. یک اتصال میتواند رمز متعلق به عامل و عبارت عبور کلید خصوصی ذخیرهشده داشته باشد.
بر اساس زمان آغاز اتصال تصمیم بگیرید
اگر کاربر واردشده اتصال را آغاز کند، مالکیت عامل پیشفرض معقول است: جاکلیدی با ورود باز میشود و راز هرگز در فایل نمینشیند. اگر اتصال باید پیش از ورود هر کسی بالا بیاید، مالکیت عامل انتخاب اشتباهی است، چون هیچ جاکلیدی نشستی برای باز کردن وجود ندارد.
این تمام تصمیم است. هر چیز دیگری گونهای از آن است.
برای سرویس پیش از ورود، الگوی پشتیبانیشده یک انبار در سطح سیستم یا یک فایل کلید محافظتشده است و مجوزهای فایل به محافظت تبدیل میشوند. مسئله را با چسباندن رمز در یک اسکریپت پوسته که هنگام بوت اجرا میشود حل نکنید.
جاکلیدی چه میدهد و چه نمیدهد
جاکلیدی راز را بیرون از پروفایل اتصال نگه میدارد و آن را به نشست کاربر گره میزند. اما راز را برای سرویسی بدون نشست در دسترس نمیگذارد و چیزی را روی شبکه رمزنگاری نمیکند. اینها ویژگیهای جدایی هستند که مردم اغلب با هم میآمیزند. آنچه واقعاً میخرد شعاع آسیب کوچکتر است وقتی فایل پروفایل نشت کند.
کلید خصوصی که پروفایل به آن ارجاع میدهد مجوزهای خودش را لازم دارد، مستقل از اینکه رمز کجا زندگی میکند.
عیبیابی بدون ریختن رازها
نام اتصالها، UUIDها و پرچمها معمولاً برای توضیح یک شکست کافیاند. nmcli connection show پروفایل را فهرست میکند، و پرچمهای راز میگویند رمز قرار بود از کجا بیاید.
از این کار بپرهیزید: --show-secrets در تیکتها و چت. وقتی یکبار چسبانده شد، یک اعتبارنامه در یک رونوشت است.
ذخیرهسازی ابطال نیست
حذف یک راز از یک جاکلیدی اعتبارنامهای را که اپراتور راه دور قبلاً پذیرفته باطل نمیکند. ابطال حساب اقدامی در سمت سرور است و ذخیرهسازی محلی مسئلهای جداگانه با مالکی جداگانه است.
هر دو را پیش از حادثه تصمیم بگیرید، نه در حین آن. یک اتصال تعاملی کاربر و یک سرویس پیش از ورود پاسخهای متفاوتی میخواهند و اسکریپت پوسته مشترک هیچکدام نیست. مستندات NetworkManager درباره پرچمهای راز مقدارها را کامل فهرست میکند.