PAM_TALLY(8) راهنمای لینوکس PAM PAM_TALLY(8)

pam_tally - ماژول PAM برای شمارش تلاش‌های ناموفق ورود به سیستم

pam_tally.so [file=/path/to/counter] [onerr=[fail|succeed]] [magic_root] [even_deny_root_account] [deny=n] [lock_time=n] [unlock_time=n] [per_user] [no_lock_time] [no_reset] [audit] [silent] [no_log_info]

pam_tally [--file /path/to/counter] [--user username] [--reset[=n]] [--quiet]

این ماژول تعداد دفعات تلاش برای دسترسی را نگهداری می‌کند، می‌تواند شمارش را در صورت موفقیت بازنشانی کند، و در صورتی که تعداد تلاش‌های ناموفق بیش از حد باشد، می‌تواند از دسترسی جلوگیری کند.

ماژول pam_tally دارای محدودیت‌های متعددی است که در pam_tally2 برطرف شده‌اند. به همین دلیل pam_tally منسوخ شده است و در نسخه‌های آینده حذف خواهد شد.

ماژول pam_tally از دو بخش تشکیل شده است: pam_tally.so و pam_tally. بخش اول ماژول PAM است و بخش دوم، یک برنامه مستقل است. pam_tally یک برنامه (اختیاری) است که می‌تواند برای بررسی و دستکاری پرونده شمارنده استفاده شود. این برنامه می‌تواند تعداد دفعات تلاش کاربران را نمایش دهد، شمارنده‌های اختصاصی را تنظیم کند یا تمام شمارنده‌ها را پاک کند. تنظیم مقادیر بالا به صورت مصنوعی می‌تواند برای مسدود کردن کاربران بدون نیاز به تغییر گذرواژه آنها مفید باشد. به عنوان مثال، ممکن است پاک کردن تمامی شمارنده‌ها در نیمه‌شب از طریق یک وظیفه cron سودمند باشد. دستور faillog(8) نیز می‌تواند به جای pam_tally برای نگهداری پرونده شمارنده به کار رود.

به طور معمول، تلاش‌های ناموفق برای دسترسی به حساب root باعث مسدود شدن حساب کاربری root نخواهد شد، تا از حملات محروم‌سازی از سرویس (DoS) جلوگیری شود: اگر به کاربران شما حساب‌های کاربری با پوسته (shell) اختصاص داده نشده باشد و root تنها از طریق su یا در کنسول فیزیکی دستگاه (نه telnet/rsh و غیره) مجاز به ورود باشد، این رفتار امن خواهد بود.

گزینه‌های عمومی (GLOBAL OPTIONS)

این گزینه‌ها برای انواع ماژول‌های auth و account قابل استفاده هستند.

onerr=[fail|succeed]

اگر اتفاق غیرمعمولی رخ دهد (مانند عدم توانایی در باز کردن پرونده)، چنانچه onerr=succeed مشخص شده باشد مقدار PAM_SUCCESS و در غیر این صورت کد خطای مربوط به PAM را برمی‌گرداند.

file=/path/to/counter

پرونده‌ای که شمارش‌ها در آن نگهداری می‌شوند. پیش‌فرض /var/log/faillog است.

audit

اگر کاربر یافت نشود، نام کاربری را در گزارش‌های سیستم ثبت خواهد کرد.

silent

پیام‌های اطلاع‌رسانی را چاپ نمی‌کند.

no_log_info

پیام‌های اطلاع‌رسانی را از طریق syslog(3) ثبت نمی‌کند.

گزینه‌های AUTH (AUTH OPTIONS)

مرحله احراز هویت ابتدا بررسی می‌کند که آیا باید از دسترسی کاربر جلوگیری شود یا خیر، و در غیر این صورت شمارنده تلاش‌های ورود را افزایش می‌دهد. سپس با فراخوانی pam_setcred(3) شمارنده تلاش‌ها بازنشانی می‌شود.

deny=n

اگر تعداد تلاش‌های ناموفق برای این کاربر از n تجاوز کند، از دسترسی جلوگیری می‌کند.

lock_time=n

همیشه پس از یک تلاش ناموفق به مدت n ثانیه از دسترسی جلوگیری می‌کند.

unlock_time=n

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

magic_root

اگر ماژول توسط کاربری با uid=0 فراخوانی شود، شمارنده افزایش نمی‌یابد. مدیر سیستم باید از این گزینه برای سرویس‌های اجرا شده توسط کاربر، مانند su، استفاده کند؛ در غیر این صورت این آرگومان باید حذف شود.

no_lock_time

از فیلد .fail_locktime در پرونده /var/log/faillog برای این کاربر استفاده نمی‌کند.

no_reset

تعداد شمارش را در ورود موفقیت‌آمیز بازنشانی نمی‌کند، فقط آن را کاهش می‌دهد.

even_deny_root_account

حساب کاربری root نیز می‌تواند غیرقابل دسترس و مسدود شود.

per_user

اگر پرونده /var/log/faillog شامل یک فیلد غیر صفر .fail_max/.fail_locktime برای این کاربر باشد، از آن به جای پارامترهای deny=n/ lock_time=n استفاده می‌شود.

no_lock_time

از فیلد .fail_locktime در پرونده /var/log/faillog برای این کاربر استفاده نمی‌کند.

گزینه‌های ACCOUNT (ACCOUNT OPTIONS)

اگر کاربر حساب کاربری root جادویی (magic root) نباشد، مرحله حساب کاربری شمارنده تلاش‌ها را بازنشانی می‌کند. این مرحله می‌تواند به صورت اختیاری برای سرویس‌هایی که تابع pam_setcred(3) را به درستی فراخوانی نمی‌کنند، یا در صورتی که بازنشانی باید صرف نظر از شکست مرحله account در سایر ماژول‌ها انجام شود، استفاده گردد.

magic_root

اگر ماژول توسط کاربری با uid=0 فراخوانی شود، شمارنده افزایش نمی‌یابد. مدیر سیستم باید از این گزینه برای سرویس‌های اجرا شده توسط کاربر، مانند su، استفاده کند؛ در غیر این صورت این آرگومان باید حذف شود.

no_reset

تعداد شمارش را در ورود موفقیت‌آمیز بازنشانی نمی‌کند، فقط آن را کاهش می‌دهد.

انواع ماژول‌های auth و account ارائه شده‌اند.

PAM_AUTH_ERR

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

PAM_SUCCESS

همه عملیات با موفقیت انجام شد.

PAM_USER_UNKNOWN

کاربر ناشناخته است.

خط زیر را به پرونده /etc/pam.d/login اضافه کنید تا حساب پس از تلاش‌های ناموفق بیش از حد ورود به سیستم قفل شود. تعداد دفعات خطای مجاز توسط /var/log/faillog مشخص می‌شود و باید از قبل با pam_tally یا دستور faillog(8) تنظیم شده باشد.

auth     required       pam_securetty.so
auth     required       pam_tally.so per_user
auth     required       pam_env.so
auth     required       pam_unix.so
auth     required       pam_nologin.so
account  required       pam_unix.so
password required       pam_unix.so
session  required       pam_limits.so
session  required       pam_unix.so
session  required       pam_lastlog.so nowtmp
session  optional       pam_mail.so standard

/var/log/faillog

پرونده ثبت گزارش خرابی‌ها و خطاهای ورود

faillog(8), pam.conf(5), pam.d(5), pam(7)

ماژول pam_tally توسط Tim Baverstock و Tomas Mraz نوشته شده است.

2017-05-18 Linux-PAM