PAM_U2F(8) PAM U2F Module Manual PAM_U2F(8)

pam_u2f - ماژول PAM برای احراز هویت U2F

pam_u2f [...]

این ماژول امکان احراز هویت U2F را با استفاده از YubiKeyها و سایر احرازهویت‌کننده‌های سازگار فراهم می‌کند.

debug

فعال‌سازی خروجی اشکال‌زدایی (دیباگ).

debug_file

نام فایل برای نوشتن پیام‌های اشکال‌زدایی در آن. اگر این فایل وجود نداشته باشد، هیچ پیامی ثبت نخواهد شد. این فایل عادی باید توسط کاربر ایجاد شده باشد یا باید از قبل وجود داشته و یک فایل عادی باشد تا چیزی در آن لاگ شود. این فایل به عمد توسط pam-u2f ساخته نمی‌شود (به دلایل امنیتی). این نام فایل همچنین می‌تواند برابر "stderr" (پیش‌فرض)، "stdout" یا "syslog" تنظیم شود.

origin=origin

تنظیم شناسه طرف اعتمادکننده (relying party ID) برای فرایند احراز هویت FIDO. در صورت عدم تعیین مقدار، از شناسه "pam://" استفاده می‌شود.

appid=appid

تنظیم شناسه برنامه (application ID) برای فرایند احراز هویت FIDO. در صورت عدم تعیین مقدار، همان مقدار استفاده‌شده برای origin در نظر گرفته می‌شود (در صورت عدم تعیین origin نیز مقدار "pam://"). این تنظیم تنها برای اعتبارنامه‌های FIDO ایجادشده با نگارش‌های v1.0.8 یا قدیمی‌تر pamu2fcfg کاربرد دارد. توجه داشته باشید که در نسخه‌های v1.1.0 و v1.1.1 از pam-u2f، پردازش این گزینه در صورتی که با مقدار origin یکسان نبود موقتاً دچار اشکال شده بود.

authfile=file

تعیین مکان فایلی که حاوی نگاشت‌های نام کاربری به keyHandleها و کلیدهای کاربر است. یک فایل جداگانه (به ازای هر کاربر) می‌تواند به صورت نسبی به پوشه خانگی کاربران پیکربندی شود، مانند ".ssh/u2f_keys". در صورت عدم تعیین، مکان پیش‌فرض برابر /Yubico/u2f_keys است. اگر تنظیم نشده باشد، از /home/ahoura/.config/Yubico/u2f_keys استفاده می‌شود. ساختار فایل authfile به این صورت است: <username>:<KeyHandle1>,<UserKey1>,<CoseType1>,<Options1>:<KeyHandle2>,<UserKey2>,<CoseType2>,<Options2>:...

expand

فعال‌سازی بسط متغیرها در مسیر authfile: عبارت %u به نام کاربری محلی (PAM_USER) و عبارت %% به % بسط داده می‌شود. الگوهای بسط ناشناخته منجر به خطای احراز هویت خواهند شد. گزینه openasuser را نیز مشاهده کنید.

authpending_file=file

تعیین مکان فایلی که برای اعلان‌های درخواست لمس به کار می‌رود. این فایل زمانی که pam-u2f شروع به انتظار برای لمس دستگاه FIDO توسط کاربر می‌کند باز شده، و هنگامی که دیگر منتظر لمس نباشد بسته خواهد شد. از inotify برای گوش دادن به این رویدادها، یا از ابزارهای سطح بالاتر مانند yubikey-touch-detector استفاده کنید. مقدار پیش‌فرض: /var/run/user/1001/pam-u2f-authpending. برای غیرفعال کردن این قابلیت یک مقدار خالی تنظیم کنید: "authpending_file=".

nouserok

فعال کردن این گزینه باعث می‌شود تلاش‌های احراز هویت موفق شوند حتی اگر کاربری که تلاش می‌کند احراز هویت شود درون authfile یافت نشود یا اگر authfile وجود نداشته باشد یا معیوب باشد.

openasuser

تغییر شناسه کاربری (Setuid) به کاربر در حال احراز هویت هنگام باز کردن authfile. هنگام ذخیره پوشه خانگی کاربر روی یک حجم NFS که با گزینه root_squash سوار شده است بسیار مفید خواهد بود (که root را به nobody تبدیل می‌کند و قادر به خواندن فایل نیست). توجه داشته باشید که پس از نگارش 1.0.8، زمانی که هیچ authfile سراسری (با مسیر مطلق) یا متغیر محیطی XDG_CONFIG_HOME تنظیم نشده باشد، این عمل به طور پیش‌فرض انجام می‌شود.

alwaysok

تنظیم برای موفقیت تمام تلاش‌های احراز هویت (معروف به حالت نمایش یا presentation mode).

max_devices=n_devices

حداکثر تعداد احرازهویت‌کننده‌های FIDO مجاز به ازای هر کاربر (پیش‌فرض ۲۴ است). احرازهویت‌کننده‌های FIDO مشخص‌شده در فایل نگاشت مجوزها که از این مقدار فراتر روند، نادیده گرفته خواهند شد.

interactive

اعمال نمایش یک پیام و انتظار قبل از آزمایش حضور یک احرازهویت‌کننده FIDO. در صورتی که احرازهویت‌کننده شما فاقد ماشه لمسی باشد توصیه می‌شود.

[prompt=your prompt here]

تنظیم پیام درخواست مجزا برای حالت تعاملی. به براکت‌های دور این پارامتر توجه کنید تا فاصله‌ها توسط PAM به درستی تشخیص داده شوند.

manual

تنظیم برای خروج به کنسول دستی که در آن چالش‌ها روی صفحه چاپ شده و پاسخ از ورودی استاندارد خوانده می‌شود. برای اشکال‌زدایی و نشست‌های SSH بدون پشتیبانی FIDO از سوی سرویس‌گیرنده/سرویس‌دهنده SSH کاربرد دارد. در صورت فعال بودن، حالت تعاملی زائد شده و اثری نخواهد داشت.

cue

نمایش پیامی برای یادآوری لمس دستگاه احراز هویت FIDO.

[cue_prompt=your prompt here]

تنظیم پیام یادآوری سفارشی برای گزینه cue. به براکت‌های دور این پارامتر توجه کنید تا فاصله‌ها به درستی توسط PAM شناخته شوند.

nodetect

صرف‌نظر کردن از تشخیص اینکه آیا یک دستگاه FIDO مناسب متصل است پیش از انجام احراز هویت کامل. بخش NOTES در زیر را ببینید.

userpresence=int

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

userverification=int

اگر ۱ باشد، اعتبارسنجی کاربر (مانند بیومتریک) در طول احراز هویت الزامی است. اگر ۰ باشد، درخواست نمی‌شود. در صورت حذف، به رفتار پیش‌فرض بازمی‌گردد. در صورت فعال بودن، یک دستگاه با پشتیبانی از تأیید کاربر FIDO2 مورد نیاز است.

pinverification=int

اگر ۱ باشد، اعتبارسنجی PIN در طول احراز هویت الزامی است. اگر ۰ باشد، درخواست نمی‌شود. در صورت حذف، به رفتار پیش‌فرض بازمی‌گردد. در صورت فعال بودن، دستگاه با پشتیبانی از PIN در FIDO2 مورد نیاز است.

sshformat

استفاده از اعتبارنامه‌های تولیدشده توسط نسخه‌هایی از OpenSSH که از احرازهویت‌کننده FIDO پشتیبانی می‌کنند. امکان ترکیب اعتبارنامه‌های بومی و اعتبارنامه‌های SSH وجود ندارد. پس از فعال شدن این گزینه، تمام اعتبارنامه‌ها به صورت SSH پردازش خواهند شد.

conf=path/to/pam_u2f.conf

تنظیم یک مکان جایگزین برای فایل پیکربندی. مسیر ارائه‌شده باید مطلق بوده و منطبق بر یک فایل عادی موجود باشد. بخش CONFIGURATION FILE را ببینید.

احراز هویت دومرحله‌ای با واگذاری پیکربندی اعتبارسنجی کاربر به فایل نگاشت مجوزها.

auth required pam_u2f.so authfile=/etc/u2f_mappings cue

احراز هویت بدون رمز عبور با الزام به اعتبارسنجی PIN.

auth sufficient pam_u2f.so authfile=/etc/u2f_mappings cue pinverification=1 userverification=0

احراز هویت بدون رمز عبور با استفاده از UV داخلی (مانند بیومتریک) با بازگشت به PIN.

auth sufficient pam_u2f.so authfile=/etc/u2f_mappings cue pinverification=0 userverification=1
auth sufficient pam_u2f.so authfile=/etc/u2f_mappings cue pinverification=1 userverification=0

به صورت پیش‌فرض، مسیرهای نسبی به authfile با هویت کاربر هدف باز می‌شوند، در حالی که مسیرهای مطلق با هویت "root" باز خواهند شد. اگر متغیر "XDG_CONFIG_HOME" تنظیم شده باشد، مجوزها رها نخواهند شد مگر اینکه گزینه پیکربندی "openasuser" تنظیم شده باشد.

استفاده از pam-u2f برای ایمن‌سازی ورود به رایانه در حالی که فایل نگاشت در یک دایرکتوری خانگی رمزگذاری‌شده قرار دارد، منجر به عدم امکان ورود به سیستم خواهد شد. پارتیشن پس از ورود رمزگشایی می‌شود و فایل نگاشت پیش از آن قابل دسترسی نیست.

یک فایل پیکربندی می‌تواند برای تعیین آرگومان‌های پیش‌فرض ماژول استفاده شود.

•این فایل از قالب name = value پیروی می‌کند، و خطوط توضیحات با نویسه # آغاز می‌شوند.
•فاصله‌های خالی در ابتدای خط، انتهای خط و در اطراف علامت = نادیده گرفته می‌شوند.
•هرگونه آرگومان conf در فایل پیکربندی نادیده گرفته می‌شود.
•حداکثر اندازه مجاز برای فایل پیکربندی ۴ کیلوبایت است.
•مسیر پیش‌فرض برای فایل پیکربندی /etc/security/pam_u2f.conf است. فایل پیش‌فرض مجاز است وجود نداشته باشد. مسیر جایگزین را می‌توان در گزینه‌های خط فرمان ماژول تعیین کرد.
•گزینه‌های مشخص‌شده در خط فرمان ماژول مقادیر فایل پیکربندی را بازنویسی می‌کنند.

Nodetect

گزینه "nodetect" باید با احتیاط استفاده شود. ماژول pam_u2f پیش از انجام احراز هویت لمسی کامل، بررسی می‌کند که آیا کلید پیکربندی‌شده برای کاربر متصل است یا خیر. این بررسی با ارسال یک درخواست احراز هویت "فقط بررسی" (check-only) به تمام توکن‌های متصل انجام می‌شود تا بررسی کند آیا حداقل یکی از آن‌ها پاسخ مثبت به یک یا چند کلید کاربر می‌دهد یا خیر. با این کار، pam_u2f می‌تواند از نمایش پیام "cue" (در صورت پیکربندی) خودداری کند، که در غیر این صورت در صورت نمایش اعلان و سپس شکست فوری کتابخانه زیربنایی، ممکن است منجر به مسائل رابط کاربری گیج‌کننده شود. این گزینه همچنین برای جلوگیری از تأخیر ناخواسته ۱ ثانیه‌ای پیش از احراز هویت لمسی در نسخه‌های libu2f-host <= 1.1.5 مفید است.

اگر pam_u2f با گزینه‌های "cue" و "nodetect" پیکربندی شده باشد، مهاجم می‌تواند با اتصال هر توکن تصادفی U2F و تلاش برای احراز هویت، متوجه شود که pam_u2f بخشی از پشته احراز هویت است. در این سناریو، مهاجم پیام اعلان را دیده و به دنبال آن بلافاصله شکست می‌خورد، در حالی که در صورت فعال بودن تشخیص، احراز هویت در سکوت شکست می‌خورد. توجه داشته باشید که یک مهاجم می‌تواند دستگاهی را انتخاب کند که به نحوی تلاش احراز هویت "فقط بررسی" را به او هشدار دهد، بنابراین این احتیاط تنها مشکل را یک گام به عقب می‌راند.

به طور خلاصه، ویژگی تشخیص برای جلوگیری از ابهامات رابط کاربری و جلوگیری از افشای اطلاعات درباره پشته احراز هویت در سناریوی خاصی که "cue" پیکربندی شده افزوده شده است. گزینه "nodetect" برای جلوگیری از رفتار معیوب خواب (sleep) در نسخه‌های قدیمی‌تر libu2f-host و برای توکن‌های فرضی که احراز هویت دوگانه را تحمل نمی‌کنند، اضافه شده است. تشخیص انجام می‌شود و به همین ترتیب "nodetect" رعایت می‌گردد، فارغ از اینکه "cue" مشخص شده باشد یا خیر.

SELinux

به دلیل مشکلی در Fedora Linux و احتمالاً در توزیع‌های دیگری که از SELinux استفاده می‌کنند، سیستمی که با pam-u2f پیکربندی شده است ممکن است در وضعیتی قرار گیرد که دسترسی به فایل اعتبارنامه‌ها رد شود. اگر گزینه nouserok نیز تنظیم شده باشد، این امر منجر به احراز هویت موفق در ماژول بدون استفاده از احرازهویت‌کننده FIDO خواهد شد.

برای به‌روزرسانی صحیح بافت امنیتی (security context)، دستور fixfiles onboot باید در سیستم‌های موجود استفاده شود.

علاوه بر این، برای اجازه دسترسی خواندن به یک authfile یا دایرکتوری در مکانی غیراستاندارد، باید دستور

# chcon -R -t auth_home_t /path/to/authfile

استفاده شود.

برای اطلاعات بیشتر https://access.redhat.com/security/cve/CVE-2020-24612 را ببینید.

گزارش اشکالات pam-u2f در سامانه پیگیری: https://github.com/Yubico/pam-u2f/issues

pam(7)

صفحه خانگی pam-u2f: https://developers.yubico.com/pam-u2f

دستگاه‌های YubiKey از وب‌سایت Yubico قابل تهیه هستند: http://www.yubico.com

Version\ 1.4.0 pam-u2f