رازهای نامعتبر مشکل ظرف است، نه قاعدهٔ گذرواژه
ممکن است اعتبارنامهٔ ردشده هرگز به درگاه نرسیده باشد. نخست ظرف ورودی، مرحلهٔ احراز هویت و خود حساب را مقایسه کنید.
دیدن «رازهای نامعتبر» معمولاً به یک نتیجه میرسد: VPN علامتهای نگارشی را دوست ندارد. این نتیجه معمولاً نادرست است، زیرا پیام اغلب از پردازش محلی میآید، پیش از آنکه هیچ درگاهی به حساب نگاه کرده باشد. دو طراحی همان گذرواژه را تحویل میدهند، یک فیلد گرافیکی و یک فایل اعتبارنامه، و در جاهای مختلف شکست میخورند. پیش از سادهکردن گذرواژهای که همیشه درست بود، ظرفها را مقایسه کنید.
خطا پیش از درگاه رخ میدهد
اعتبارسنجی محلی، انبار قفلشدهٔ رازها، عامل ازکارافتاده و فایل اعتبارنامهٔ بدشکل، همه شکستهایی پدید میآورند که کاربر آن را یک رد واحد تجربه میکند. هیچیک از آنها به سرور احراز هویت مربوط نیست. رد خود درگاه رویدادی جداست و معمولاً با پیام و زمان متفاوت میرسد. این رد پس از وجود تونل و پس از انتقال اعتبارنامه رخ میدهد.
پس پرسش نخست این نیست که کدام نویسهها مجازند، بلکه این است که تلاش کجا متوقف شده. کارخواهی که هرگز اتصالی باز نکرده، توسط هیچکس رد نشده است. مرحلهای را که مشاهده کردید بنویسید، زیرا هر گام بعدی به این طبقهبندی وابسته است.
این تمایز همچنین تغییر میدهد که چه کسی آن را درست کند. مشکل ظرف به دستگاه و صاحبش تعلق دارد، در حالی که رد حساب به کسی تعلق دارد که بخش پشتی احراز هویت را اداره میکند.
ظرفها را مقایسه کنید، نه نویسهها را
فیلد گرافیکی گذرواژه، یک ورودی در جاکلیدی، فایل اعتبارنامهٔ دوخطی و یک راز خودکارسازی، هر یک همان مقدار را در پوشهای متفاوت حمل میکنند. پوشه قواعد خودش را دارد و معمولاً همان قواعد میشکنند. مقدار بهندرت مشکل است؛ انتقال مقدار مشکل است. دو ایده را جدا نگه دارید تا تشخیص کوتاهتر شود.
| Where the value stops | What you see | What you check | Who owns the fix |
|---|---|---|---|
| GUI field or managed profile | A validation message before any connection opens | The selected authentication mode and whether the field holds the secret or the username | The device owner or the profile author |
| Keychain or secret agent | A prompt that keeps reappearing, or an agent error | Whether the agent is unlocked and holds an entry for this profile | The user who owns the keychain |
| Two-line credential file | A prompt for a password that was already supplied | Line count, line order and whether a trailing newline is present | Whoever generated the file |
| Shell argument or environment | Works interactively but fails in automation | Whether the shell expanded, trimmed or logged the value | Whoever wrote the automation |
گزینههای کارخواه OpenVPN 2.6 جامعه همان فایل دوخطی را برای auth-user-pass توصیف میکنند، از جمله رفتار وقتی سطر گذرواژه غایب است: در آن صورت کارخواه خودش میپرسد. همین یک جزئیات طبقهٔ کاملی از گزارشهای «گذرواژهای را که قبلاً دادهام میپرسد» را توضیح میدهد. همچنین به شما میگوید که سطر دوم خالی حالتی معنادار است، نه یک انتخاب قالببندی بیخطر.
نقلقول لایهٔ دیگری است: گیومههای درون یک فایل اعتبارنامهٔ ساده بهعنوان داده ذخیره میشوند، در حالی که پوسته آنها را پیش از آنکه برنامه چیزی ببیند حذف میکند. همان نویسه در جایی بیخطر و در جای دیگر ساختاری است. یک جدول نمیتواند بگوید کارخواه شما از کدام ظرف استفاده کرده، پس پیش از انتخاب یک سطر، پیکربندی خود کارخواه را بخوانید.
شکستن سطرها هم ساختاری است. فایلی با فیلدهای جداشده با سطر نمیتواند مقداری را که سطر جدید دارد حمل کند، و این محدودیت قالب است نه داوری دربارهٔ قدرت گذرواژه. بهجای کوتاهکردن راز برای جا شدن در فایلی خودساخته، از سازوکار تحویل پشتیبانیشدهٔ استقرار استفاده کنید.
فایل اعتبارنامه را بدون آسیب پوسته بسازید
امنترین مسیر محلی راز را بیرون از تاریخچهٔ پوسته و بیرون از فهرست آرگومانهای فرایند نگه میدارد. هر دو فیلد را تعاملی بخوانید، سپس دو خطی را که کارخواه انتظار دارد بنویسید. بقیه چیزها میتواند در فایل پیکربندیای بماند که بازبینیاش آسان است.
read -r VPN_USER
read -rs VPN_PASS
printf '%s\n%s\n' "$VPN_USER" "$VPN_PASS" > /etc/openvpn/client/creds
chmod 600 /etc/openvpn/client/creds
openvpn --config /etc/openvpn/client/office.conf --auth-user-pass /etc/openvpn/client/creds
دو فرمان نخست نام کاربری و سپس گذرواژه را بدون نمایش میخوانند، فرمان سوم هر دو خط را مینویسد، فرمان چهارم فایل را محدود میکند و فرمان آخر کارخواه را با همان فایل اجرا میکند. توجه کنید که read -r بکاسلشها را حفظ میکند، و این دقیقاً همان جزئیاتی است که وقتی حذف شود، گذرواژهٔ کارکننده را به گذرواژهٔ شکستخورده تبدیل میکند.
از ساختن فایل با متغیری بدون گیومه یا با here-document پر از بسطهای پوسته بپرهیزید. هر دو میتوانند نویسهها را پیش از رسیدن به فایل دگرگون کنند، و شکست حاصل شبیه رد VPN به نظر میرسد، زیرا گذرواژهٔ روی دیسک واقعاً با گذرواژهای که میشناسید متفاوت است. اگر چنین ظنی دارید، طول بایتی فایل را با مقدار مورد انتظار مقایسه کنید، بدون چاپ خود راز. اختلاف یک یا دو بایت امضای یک حادثهٔ گیومه است.
مرحله را از نخستین خطا بخوانید
نخستین پیام مشخص یک تلاش را نگه دارید و سپس آن را طبقهبندی کنید. خطای اعتبارسنجی محلی، کلید خصوصی مفقود، عامل رازهای در دسترسنبوده و شکست احراز هویت در درگاه، چهار نتیجهٔ متفاوت با چهار صاحب متفاوت هستند. تنها یکی از آنها دربارهٔ حساب است.
اگر درگاه واقعاً اعتبارنامهای را که درست تحویل شده رد میکند، حساب، بخش پشتی احراز هویت و هر چالش لازم را بررسی کنید با سرپرست. شکست عمومی احراز هویت هیچ نویسهٔ ممنوعی را نام نمیبرد.
مقدار تأییدشده را از سازوکار درست بازگردانید، نه اینکه آن را به حروف و رقم کاهش دهید. سیاست گذرواژه متعلق به اپراتور است و راه دور زدنی که آن را بیصدا نقض کند، اصلاح نیست. همچنین نقص واقعی را از شخص بعدی پنهان میکند، کسی که با گذرواژهای ضعیفتر و بدون ایدهٔ بهتر با همان خطا روبهرو خواهد شد.