NTLM_AUTH(1) User Commands NTLM_AUTH(1)

ntlm_auth - ابزاری برای فراهم کردن امکان دسترسی خارجی به تابع احراز هویت NTLM در Winbind

ntlm_auth

این ابزار بخشی از مجموعهٔ samba(7) است.

ابزار ntlm_auth یک ابزار کمکی است که کاربران را با استفاده از احراز هویت NT/LM تأیید اعتبار می‌کند. در صورتی که کاربر با موفقیت احراز هویت شود مقدار 0 و در صورت رد دسترسی مقدار 1 را برمی‌گرداند. ابزار ntlm_auth از winbind برای دسترسی به داده‌های کاربر و احراز هویت یک دامنه استفاده می‌کند. این ابزار فقط برای استفاده توسط سایر برنامه‌ها (در حال حاضر Squid و mod_ntlm_winbind) طراحی شده است.

برای کارکرد بسیاری از این دستورات، دیمن winbindd(8) باید در حال اجرا باشد.

برخی از این دستورات همچنین نیازمند دسترسی به دایرکتوری winbindd_privileged در $LOCKDIR هستند. این کار باید با اجرای دستور به عنوان کاربر ریشه (root) یا اعطای دسترسی گروهی به دایرکتوری winbindd_privileged انجام شود. به دلایل امنیتی، این دایرکتوری نباید برای همگان قابل دسترس باشد.

--helper-protocol=PROTO

عملکرد به عنوان یک ابزار کمکی مبتنی بر stdio. پروتکل‌های کمکی معتبر عبارتند از:

squid-2.4-basic

ابزار کمکی سمت سرور برای استفاده با احراز هویت اولیه (متن خام) در Squid 2.4.

squid-2.5-basic

ابزار کمکی سمت سرور برای استفاده با احراز هویت اولیه (متن خام) در Squid 2.5.

squid-2.5-ntlmssp

ابزار کمکی سمت سرور برای استفاده با احراز هویت NTLMSSP در Squid 2.5.

نیازمند دسترسی به دایرکتوری winbindd_privileged در $LOCKDIR است. پروتکل مورد استفاده در اینجا شرح داده شده است: http://devel.squid-cache.org/ntlm/squid_helper_protocol.html. این پروتکل گسترش یافته است تا بستهٔ NTLMSSP Negotiate بتواند به عنوان آرگومان به دستور YR ارسال شود (و بدین ترتیب از دست رفتن اطلاعات در تبادل پروتکل جلوگیری شود).

ntlmssp-client-1

ابزار کمکی سمت کلاینت برای استفاده با برنامه‌های خارجی دلخواهی که ممکن است مایل به استفاده از دانش احراز هویت NTLMSSP در Samba باشند.

این ابزار کمکی از نوع کلاینت است و به همین دلیل می‌تواند توسط هر کاربری اجرا شود. پروتکل مورد استفاده در واقع معکوس پروتکل قبلی است. یک دستور YR (بدون هیچ آرگومانی) تبادل احراز هویت را آغاز می‌کند.

gss-spnego

ابزار کمکی سمت سرور که GSS-SPNEGO را پیاده‌سازی می‌کند. این ابزار از پروتکلی استفاده می‌کند که تقریباً مشابه با squid-2.5-ntlmssp است، اما تفاوت‌های ظریفی دارد که در این مرحله در خارج از کد منبع مستند نشده‌اند.

نیازمند دسترسی به دایرکتوری winbindd_privileged در $LOCKDIR است.

gss-spnego-client

ابزار کمکی سمت کلاینت که GSS-SPNEGO را پیاده‌سازی می‌کند. این ابزار نیز از پروتکلی مشابه ابزارهای کمکی بالا استفاده می‌کند، اما در حال حاضر مستند نشده است.

ntlm-server-1

پروتکل کمکی سمت سرور، طراحی‌شده برای استفاده توسط یک سرور RADIUS یا پلاگین 'winbind' برای pppd، به منظور ارائهٔ احراز هویت MSCHAP و MSCHAPv2.

این پروتکل شامل خطوطی به این صورت است: Parameter: value و Parameter:: Base64-encode value. وجود یک نقطهٔ منفرد . نشان می‌دهد که یک طرف ارسال داده به طرف دیگر را به پایان رسانده است (که به نوبهٔ خود می‌تواند باعث شود ابزار کمکی کاربر را احراز هویت کند).

پارامترهای پیاده‌سازی‌شدهٔ کنونی از برنامهٔ خارجی به ابزار کمکی عبارتند از:

Username

نام کاربری، که انتظار می‌رود در unix charset سامبا باشد.

مثال‌ها:

Username: bob

Username:: Ym9i

NT-Domain

دامنهٔ کاربر، که انتظار می‌رود در unix charset سامبا باشد.

مثال‌ها:

NT-Domain: WORKGROUP

NT-Domain:: V09SS0dST1VQ

Full-Username

نام کاربری کامل، که انتظار می‌رود در unix charset سامبا باشد و با winbind separator مشخص شده باشد.

مثال‌ها:

Full-Username: WORKGROUP\bob

Full-Username:: V09SS0dST1VQYm9i

LANMAN-Challenge

مقدار ۸ بایتی LANMAN Challenge که به طور تصادفی توسط سرور تولید می‌شود، یا (در مواردی مانند MSCHAPv2) به نحوی توسط هر دو طرف سرور و کلاینت تولید می‌گردد.

مثال‌ها:

LANMAN-Challenge: 0102030405060708

LANMAN-Response

مقدار ۲۴ بایتی LANMAN Response که از گذرواژهٔ کاربر و LANMAN Challenge ارائه‌شده محاسبه می‌شود. به طور معمول، این مقدار از طریق شبکه توسط کلاینتی که مایل به احراز هویت است ارائه می‌گردد..PP مثال‌ها:
LANMAN-Response: 0102030405060708090A0B0C0D0E0F101112131415161718

NT-Response

مقدار >= 24 بایت NT Response که از گذرواژهٔ کاربر و LANMAN Challenge ارائه‌شده محاسبه می‌شود. به‌طور معمول، این مقدار از طریق شبکه توسط کلاینتی که قصد احراز هویت دارد، ارائه می‌گردد.

مثال‌ها:

NT-Response: 0102030405060708090A0B0C0D0E0F10111213141516171

Password

گذرواژهٔ کاربر. اگر helper در شرایطی قدیمی (legacy) استفاده شود که گذرواژه‌های متن‌ساده را به این شیوه آشکار می‌سازد، این مقدار توسط کلاینت شبکه ارائه خواهد شد.

مثال‌ها:

Password: samba2

Password:: c2FtYmEy

Request-User-Session-Key

پس از احراز هویت موفق، کلید نشست کاربر (user session key) مرتبط با ورود را بازمی‌گرداند.

مثال‌ها:

Request-User-Session-Key: Yes

Request-LanMan-Session-Key

پس از احراز هویت موفق، کلید نشست LANMAN مرتبط با ورود را بازمی‌گرداند.

مثال‌ها:

Request-LanMan-Session-Key: Yes

هشدار
توسعه‌دهندگان و پیاده‌سازان باید دقت کنند که هر داده‌ای (مانند نام‌های کاربری/گذرواژه‌ها) را که ممکن است حاوی داده‌های مخرب کاربر باشد، مانند نویسهٔ خط جدید (newline)، به‌صورت base64 کدگذاری نمایند. آن‌ها همچنین ممکن است نیاز داشته باشند رشته‌های دریافتی از helper را که ممکن است به همین ترتیب با base64 کدگذاری شده باشند، رمزگشایی کنند.

--username=USERNAME

تعیین نام کاربری کاربر برای احراز هویت

--domain=DOMAIN

تعیین دامنهٔ کاربر برای احراز هویت

--workstation=WORKSTATION

تعیین ایستگاه کاری (workstation) که کاربر از آن احراز هویت شده است

--challenge=STRING

چالش NTLM (به‌صورت هگزادسیمال - HEXADECIMAL)

--lm-response=RESPONSE

پاسخ LM به چالش (به‌صورت هگزادسیمال - HEXADECIMAL)

--nt-response=RESPONSE

پاسخ NT یا NTLMv2 به چالش (به‌صورت هگزادسیمال - HEXADECIMAL)

--password=PASSWORD

گذرواژهٔ متن‌سادهٔ کاربر

اگر در خط فرمان مشخص نشود، در صورت نیاز درخواست خواهد شد.

برای نقش‌های سرور مبتنی بر NTLMSSP، این پارامتر گذرواژهٔ مورد انتظار را مشخص می‌کند، و امکان آزمایش را بدون فعال بودن winbindd فراهم می‌سازد.

--request-lm-key

دریافت کلید نشست LM

--request-nt-key

درخواست کلید NT

--diagnostics

انجام عیب‌یابی روی زنجیرهٔ احراز هویت. از گذرواژهٔ مشخص‌شده در --password استفاده می‌کند یا برای وارد کردن آن اعلان نمایش می‌دهد.

--require-membership-of={SID|Name}

برای موفقیت‌آمیز بودن احراز هویت، کاربر باید حتماً عضو گروه مشخص‌شده (نام یا SID) باشد.

--pam-winbind-conf=FILENAME

تعیین مسیر فایل pam_winbind.conf.

--target-hostname=HOSTNAME

تعیین نام میزبان هدف.

--target-service=SERVICE

تعیین سرویس هدف.

--use-cached-creds

تعیین این که آیا از اطلاعات هویتی (اعتبارنامه‌های) کش‌شده توسط winbindd استفاده شود یا خیر.

--allow-mschapv2

اجازه دادن صریح به MSCHAPv2.

--offline-logon

مجاز شمردن ورودهای برون‌خط (offline) برای احراز هویت متن‌ساده.

-?|--help

چاپ خلاصه‌ای از گزینه‌های خط فرمان.

--usage

نمایش پیام کوتاه نحوهٔ استفاده.

-d|--debuglevel=level

level یک عدد صحیح از 0 تا 10 است. مقدار پیش‌فرض برای برنامه‌های کلاینت در صورتی که این پارامتر مشخص نشود، 1 است.

هرچه این مقدار بالاتر باشد، جزئیات بیشتری دربارهٔ فعالیت‌های سرور در فایل‌های گزارش ثبت خواهد شد. در سطح 0، تنها خطاهای حیاتی و هشدارهای جدی ثبت خواهند شد. سطح 1 سطحی معقول برای اجرای روزمره است - مقدار اندکی اطلاعات دربارهٔ عملیات‌های انجام‌شده تولید می‌کند.

سطوح بالاتر از 1 حجم قابل توجهی از داده‌های گزارش را تولید می‌کنند و تنها باید هنگام بررسی یک مشکل استفاده شوند. سطوح بالاتر از 3 فقط برای استفادهٔ توسعه‌دهندگان طراحی شده‌اند و حجم عظیمی از داده‌های گزارش تولید می‌کنند که اغلب آن‌ها بسیار پیچیده و ناخوانا هستند.

توجه داشته باشید که مشخص کردن این پارامتر در اینجا، پارامتر log level را در فایل /etc/samba/smb.conf بازنویسی خواهد کرد. --debug-stdout

این گزینه خروجی اشکال‌زدایی را به STDOUT هدایت می‌کند. به‌طور پیش‌فرض تمام کلاینت‌ها وقایع را در STDERR ثبت می‌کنند.

--configfile=<configuration file>;

فایل مشخص‌شده حاوی جزئیات پیکربندی مورد نیاز کلاینت است. اطلاعات موجود در این فایل می‌تواند عمومی (برای کلاینت و سرور) باشد یا تنها گزینه‌های مختص کلاینت مانند client smb encrypt را فراهم کند. برای اطلاعات بیشتر /etc/samba/smb.conf را ببینید. نام پیش‌فرض فایل پیکربندی در زمان کامپایل تعیین می‌شود.

--option=<name>=<value>

گزینهٔ "<name>" در smb.conf(5) را از خط فرمان روی مقدار "<value>" تنظیم می‌کند. این کار پیش‌فرض‌های زمان کامپایل و گزینه‌های خوانده‌شده از فایل پیکربندی را بازنویسی می‌کند. اگر یک نام یا مقدار حاوی فاصله است، کل --option=name=value را داخل علامت نقل‌قول قرار دهید.

-V|--version

شماره نسخهٔ برنامه را چاپ می‌کند.

برای راه‌اندازی ntlm_auth جهت استفاده توسط squid 2.5، هم با احراز هویت basic و هم NTLMSSP، موارد زیر باید در فایل squid.conf قرار داده شوند.

auth_param ntlm program ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param basic program ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

نکته

این مثال فرض می‌کند که ntlm_auth در مسیر (PATH) شما نصب شده است و مجوزهای گروهی روی winbindd_privileged همان‌طور که در بالا شرح داده شد، تنظیم شده‌اند.

برای راه‌اندازی ntlm_auth جهت استفاده توسط squid 2.5 با محدودیت گروهی، علاوه بر مثال بالا، موارد زیر باید به فایل squid.conf اضافه شوند.

auth_param ntlm program ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of='WORKGROUP\Domain Users'
auth_param basic program ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of='WORKGROUP\Domain Users'

اگر در احراز هویت Internet Explorer اجراشده تحت MS Windows 9X یا Millennium Edition در برابر هلپر احراز هویت NTLMSSP متعلق به ntlm_auth (--helper-protocol=squid-2.5-ntlmssp) با مشکل مواجه شدید، لطفاً مقالهٔ شماره ۲۳۹۸۶۹ در Microsoft Knowledge Base را مطالعه کرده و دستورالعمل‌های شرح‌داده‌شده در آن را دنبال کنید..SH "نسخه (VERSION)"

این صفحهٔ راهنما بخشی از نسخهٔ 4.24.6 از مجموعهٔ Samba است.

نرم‌افزار اصلی Samba و ابزارهای مرتبط با آن توسط Andrew Tridgell ایجاد شدند. Samba اکنون توسط Samba Team به‌صورت یک پروژهٔ متن‌باز، مشابه شیوهٔ توسعهٔ هستهٔ Linux، توسعه داده می‌شود.

صفحهٔ راهنمای ntlm_auth توسط Jelmer Vernooij و Andrew Bartlett نوشته شده است.

08/16/2026 Samba 4.24.6