SUDO_LOGSRVD.CONF(5) File Formats Manual SUDO_LOGSRVD.CONF(5)

sudo_logsrvd.conf — پیکربندی سرور ثبت وقایع sudo (sudo_logsrvd)

پروندهٔ sudo_logsrvd.conf برای پیکربندی سرور ثبت وقایع sudo_logsrvd استفاده می‌شود. این پرونده از قالبی به سبک INI متشکل از بخش‌هایی درون براکت‌ها و جفت‌های “key = value” مربوط به هر بخش در زیر نام آن بخش استفاده می‌کند. بسته به کلید، مقادیر ممکن است اعداد صحیح، مقادیر بولی یا رشته‌ها باشند. نام بخش‌ها و کلیدها به حروف بزرگ و کوچک حساس نیستند، اما مقادیر حساس هستند.

علامت هش (‘#’) برای نشان دادن توضیح (کامنت) استفاده می‌شود. هم نویسهٔ کامنت و هم هر متنی پس از آن تا پایان خط نادیده گرفته می‌شوند. خطوطی که با نقطه ویرگول (‘;’) آغاز می‌شوند نیز نادیده گرفته می‌شوند.

خطوط طولانی را می‌توان با قرار دادن یک بک‌اسلش (‘\’) به عنوان آخرین نویسه در خط ادامه داد. فاصله‌های خالی ابتدای خطوط حتی در صورت استفاده از نویسهٔ ادامه‌دهنده حذف می‌شوند.

بخش مثالها (EXAMPLES) شامل یک نسخه از پروندهٔ پیش‌فرض sudo_logsrvd.conf است.

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

  • server
  • relay
  • iolog
  • eventlog
  • syslog
  • logfile

هر بخش با جزئیات در ادامه شرح داده شده است.

بخش server نشانی و درگاهی را که سرور روی آن شنود خواهد کرد پیکربندی می‌کند. کلیدهای زیر شناخته می‌شوند:

listen_address = host[:port][(tls)]
نام میزبان یا نشانی IP، درگاه اختیاری برای شنود و یک فلگ اختیاری امنیت لایه انتقال (TLS) درون پرانتز.

میزبان می‌تواند یک نام میزبان، یک نشانی IPv4، یک نشانی IPv6 درون براکت یا مدخل نویسه عام ‘*’ باشد. تنظیم میزبان روی ‘*’ باعث می‌شود sudo_logsrvd روی تمام رابط‌های شبکهٔ پیکربندی‌شده شنود کند.

در صورت وجود فلگ اختیاری tls، sudo_logsrvd اتصال را با نسخهٔ 1.2 یا 1.3 پروتکل TLS امن خواهد کرد. نسخه‌های TLS پیش از 1.2 پشتیبانی نمی‌شوند. برای جزئیات مربوط به تولید کلیدها و گواهی‌های TLS به sudo_logsrvd(8) مراجعه کنید.

در صورت مشخص شدن درگاه، این مقدار می‌تواند یک شماره درگاه یا یک نام سرویس شناخته‌شده طبق پایگاه داده نام سرویس‌های سیستم باشد. اگر درگاهی مشخص نشود، از درگاه 30343 برای اتصالات متنی ساده (plaintext) و از درگاه 30344 برای اتصالات TLS استفاده خواهد شد.

مقدار پیش‌فرض عبارت است از:

listen_address = *:30343
listen_address = *:30344(tls)
که روی تمام رابط‌های شبکهٔ پیکربندی‌شده برای هر دو اتصال متنی ساده و TLS شنود خواهد کرد. چندین خط listen_address را می‌توان برای شنود روی بیش از یک درگاه یا رابط تعیین کرد.
server_log = string
محل ثبت پیام‌های هشدار و خطای سرور. مقادیر پشتیبانی‌شده عبارتند از none, stderr, syslog یا یک نام مسیر که با نویسهٔ ‘/’ آغاز شود. مقدار stderr تنها در صورت استفادهٔ هم‌زمان با گزینهٔ -n مؤثر است. مقدار پیش‌فرض syslog است.
pid_file = path
مسیر فایلی که شامل شناسه فرایند (process ID) برنامهٔ در حال اجرای sudo_logsrvd است. اگر روی یک مقدار خالی تنظیم شود، یا اگر sudo_logsrvd با گزینهٔ -n اجرا شود، هیچ pid_file ایجاد نخواهد شد. اگر pid_file به یک پیوند نمادین اشاره کند، نادیده گرفته خواهد شد. مقدار پیش‌فرض /run/sudo/sudo_logsrvd.pid است.
tcp_keepalive = boolean
اگر روی true تنظیم شود، sudo_logsrvd گزینهٔ سوکت TCP keepalive را در اتصال کلاینت فعال خواهد کرد. این کار ارسال دوره‌ای پیام‌های keepalive به کلاینت را ممکن می‌سازد. اگر کلاینت در زمان مقرر به پیامی پاسخ ندهد، اتصال بسته خواهد شد. پیش‌فرض true است.
timeout = number
مدت زمانی، به ثانیه، که sudo_logsrvd منتظر پاسخ کلاینت خواهد ماند. مقدار 0 مهلت زمانی (timeout) را غیرفعال می‌کند. مقدار پیش‌فرض 30 است.
tls_cacert = path
مسیر فایل بسته مرجع صدور گواهی (CA bundle)، در قالب PEM، جهت استفاده به جای پایگاه داده پیش‌فرض مرجع صدور گواهی سیستم هنگام احراز هویت کلاینت‌ها. حالت پیش‌فرض استفاده از /etc/ssl/sudo/cacert.pem در صورت وجود است، در غیر این صورت از پایگاه داده پیش‌فرض مرجع صدور گواهی سیستم استفاده می‌شود.
tls_cert = path
مسیر فایل گواهی سرور، در قالب PEM. مقدار پیش‌فرض /etc/ssl/sudo/certs/logsrvd_cert.pem است.
tls_checkpeer = bool
اگر روی true تنظیم شود، گواهی‌های کلاینت توسط sudo_logsrvd اعتبارسنجی خواهند شد؛ کلاینت‌های بدون گواهی معتبر قادر به اتصال نخواهند بود. اگر روی false تنظیم شود، هیچ اعتبارسنجی روی گواهی‌های کلاینت انجام نخواهد شد. اگر روی true باشد و گواهی‌های کلاینت با استفاده از یک مرجع صدور گواهی خصوصی ایجاد شده باشند، تنظیم tls_cacert باید روی یک بسته CA حاوی گواهی CA که برای تولید گواهی کلاینت استفاده شده تنظیم گردد. مقدار پیش‌فرض false است.
tls_ciphers_v12 = string
فهرستی از مجموعه‌های رمز (ciphers) برای استفاده در اتصالاتی که تنها با TLS نسخهٔ 1.2 ایمن شده‌اند، جداشده با دونقطه ‘:’. برای جزئیات کامل بخش CIPHER LIST FORMAT در openssl-ciphers(1) را ببینید. مقدار پیش‌فرض “HIGH:!aNULL” است که متشکل از مجموعه‌های رمز رمزنگاری با طول کلید بزرگ‌تر از 128 بیت و برخی مجموعه‌های رمز با کلیدهای 128 بیتی است. مجموعه‌های رمزی که احراز هویت ارائه نمی‌دهند مستثنی شده‌اند.
tls_ciphers_v13 = string
فهرستی از مجموعه‌های رمز برای استفاده در اتصالاتی که تنها با TLS نسخهٔ 1.3 ایمن شده‌اند، جداشده با دونقطه ‘:’. مجموعه‌های رمز پشتیبانی‌شده به نگارش OpenSSL مورد استفاده بستگی دارند، اما باید شامل موارد زیر باشند:
TLS_AES_128_GCM_SHA256
 
TLS_AES_256_GCM_SHA384
 
TLS_CHACHA20_POLY1305_SHA256
 
TLS_AES_128_CCM_SHA256
 
TLS_AES_128_CCM_8_SHA256
 

مجموعه رمز پیش‌فرض “TLS_AES_256_GCM_SHA384” است.

tls_dhparams = path
مسیر فایلی شامل پارامترهای سفارشی دیفی-هلمن در قالب PEM. این فایل را می‌توان با دستور زیر ایجاد کرد:
openssl dhparam -out /etc/sudo_logsrvd_dhparams.pem 2048

به‌طور پیش‌فرض، sudo_logsrvd از مقادیر پیش‌فرض OpenSSL برای تولید کلید دیفی-هلمن استفاده می‌کند.

tls_key = path
مسیر فایل کلید خصوصی سرور، در قالب PEM. مقدار پیش‌فرض /etc/ssl/sudo/private/logsrvd_key.pem است.
tls_verify = bool
اگر روی true تنظیم شود، sudo_logsrvd گواهی خود را در زمان راه‌اندازی یا هنگام تغییر پیکربندی اعتبارسنجی خواهد کرد. اگر روی false تنظیم شود، هیچ راستی‌آزمایی روی گواهی سرور انجام نمی‌گیرد. هنگام استفاده از گواهی‌های خودامضا بدون مرجع صدور گواهی، این تنظیم باید روی false قرار داده شود. مقدار پیش‌فرض true است.

بخش relay میزبان و درگاه رلهٔ اختیاری logsrv را که سرور به آن متصل می‌شود پیکربندی می‌کند. کلیدهای پیکربندی TLS اختیاری هستند؛ به‌طور پیش‌فرض کلیدهای متناظر در بخش server استفاده خواهند شد. این کلیدها تنها برای این در این بخش حضور دارند تا اتصال رله بتواند از مجموعه‌ای متفاوت از پارامترهای TLS نسبت به سرور متصل به کلاینت استفاده نماید. کلیدهای زیر شناخته می‌شوند:

connect_timeout = number
مدت زمانی، به ثانیه، که sudo_logsrvd منتظر برقراری کامل اتصال به یک relay_host (به ادامه مراجعه کنید) خواهد ماند. پس از برقراری اتصال، تنظیم مدت زمانی را که sudo_logsrvd منتظر پاسخ رله می‌ماند کنترل می‌کند. مقدار 0 مهلت زمانی را غیرفعال می‌کند. مقدار پیش‌فرض 30 است.
relay_dir = path
پوشه‌ای که پیام‌های لاگ قبل از ارسال به میزبان رله به‌طور موقت در آن ذخیره می‌شوند. پیام‌ها در قالب ارتباطی (wire format) مشخص‌شده توسط sudo_logsrv.proto(5) ذخیره می‌شوند. مقدار پیش‌فرض /var/log/sudo_logsrvd است.
relay_host = host[:port][(tls)]
نام میزبان یا نشانی IP رله، درگاه اختیاری برای اتصال و یک فلگ اختیاری امنیت لایه انتقال (TLS) درون پرانتز. ساختار نگارش دقیقاً مشابه listen_address در بخش server است با یک استثنا: ساختار نویسه عام ‘*’ پشتیبانی نمی‌شود.

هنگامی که این تنظیم فعال باشد، پیام‌های ارسالی از کلاینت به جای ذخیرهٔ محلی، به یکی از میزبان‌های رلهٔ مشخص‌شده فوروارد خواهند شد. میزبان host می‌تواند یک نمونه از sudo_logsrvd یا سرور دیگری باشد که از پروتکل sudo_logsrv.proto(5) پشتیبانی می‌کند.

اگر چندین خط relay_host تعیین شده باشد، از اولین میزبان رلهٔ در دسترس استفاده خواهد شد.

retry_interval = number
تعداد ثانیه‌هایی که پس از بروز خطای اتصال، پیش از تلاش مجدد برای فوروارد یک پیام به یک میزبان رله باید منتظر ماند. مقدار پیش‌فرض 30 است.
store_first = boolean
اگر روی true تنظیم شود، sudo_logsrvd پیش از رله کردن لاگ‌ها، آن‌ها را به‌صورت محلی ذخیره می‌کند. پس از کامل شدن لاگ، اتصالی به میزبان رله باز شده و لاگ رله می‌شود. اگر اتصال شبکه پیش از انتقال کامل لاگ قطع شود، بعداً مجدداً ارسال خواهد شد. حالت پیش‌فرض، رله کردن هم‌زمان و بی‌درنگ (real-time) لاگ‌ها است.
tcp_keepalive = boolean
اگر روی true تنظیم شود، sudo_logsrvd گزینهٔ سوکت TCP keepalive را روی اتصال رله فعال می‌کند. این کار ارسال دوره‌ای پیام‌های keepalive به سرور رله را فعال می‌سازد. اگر سرور رله در زمان مقرر به پیامی پاسخ ندهد، اتصال بسته خواهد شد.
timeout = number
مدت زمانی، به ثانیه، که sudo_logsrvd پس از برقراری موفقیت‌آمیز اتصال، منتظر پاسخ سرور رله خواهد ماند. مقدار 0 مهلت زمانی را غیرفعال می‌کند. مقدار پیش‌فرض 30 است.
tls_cacert = path
مسیر فایل بسته مرجع صدور گواهی (CA bundle)، در قالب PEM، جهت استفاده به جای پایگاه داده پیش‌فرض مرجع صدور گواهی سیستم هنگام احراز هویت کلاینت‌ها. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش server است، یا در صورت عدم تعیین، استفاده از پایگاه داده پیش‌فرض مرجع صدور گواهی سیستم.
tls_cert = path
مسیر فایل گواهی سرور، در قالب PEM. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش server است.
tls_checkpeer = bool
اگر روی true تنظیم شود، گواهی میزبان رله توسط sudo_logsrvd اعتبارسنجی خواهد شد؛ اتصالات به یک رله بدون گواهی معتبر با شکست مواجه می‌شود. اگر روی false تنظیم شود، هیچ اعتبارسنجی روی گواهی‌های رله انجام نمی‌شود. اگر روی true باشد و گواهی‌های رله با استفاده از یک مرجع صدور گواهی خصوصی ایجاد شده باشند، تنظیم tls_cacert باید روی یک بسته CA حاوی گواهی CA که برای تولید گواهی رله استفاده شده تنظیم گردد. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش server است.
tls_ciphers_v12 = string
فهرستی از مجموعه‌های رمز برای استفاده در اتصالاتی که تنها با TLS نسخهٔ 1.2 ایمن شده‌اند، جداشده با دونقطه ‘:’. برای جزئیات کامل بخش CIPHER LIST FORMAT در openssl-ciphers(1) را ببینید. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش server است.
tls_ciphers_v13 = string
فهرستی از مجموعه‌های رمز برای استفاده در اتصالاتی که تنها با TLS نسخهٔ 1.3 ایمن شده‌اند، جداشده با دونقطه ‘:’. مجموعه‌های رمز پشتیبانی‌شده به نسخه OpenSSL مورد استفاده بستگی دارند؛ برای اطلاعات بیشتر بخش server را ببینید. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش server است.
tls_dhparams = path
مسیر فایلی شامل پارامترهای سفارشی دیفی-هلمن در قالب PEM. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش server است.
tls_key = path
مسیر فایل کلید خصوصی سرور، در قالب PEM. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش server است.
tls_verify = bool
اگر روی true تنظیم شود، گواهی سرور مورد استفاده برای رله در زمان راه‌اندازی بررسی خواهد شد. اگر روی false تنظیم شود، هیچ راستی‌آزمایی روی گواهی سرور انجام نمی‌گیرد. هنگام استفاده از گواهی‌های خودامضا بدون مرجع صدور گواهی، این تنظیم باید روی false قرار گیرد. حالت پیش‌فرض استفاده از مقدار مشخص‌شده در بخش server است.

بخش iolog پارامترهای لاگ ورودی/خروجی (I/O) را پیکربندی می‌کند. این تنظیمات مشابه پیکربندی I/O در sudoers(5) است. کلیدهای زیر شناخته می‌شوند:

iolog_compress = boolean
در صورت تنظیم، لاگ‌های ورودی/خروجی با استفاده از فشرده‌سازی خواهند شد. فعال کردن فشرده‌سازی به دلیل بافر شدن داده‌ها ممکن است مشاهدهٔ هم‌زمان لاگ‌ها را حین اجرای برنامه دشوارتر کند. مقدار پیش‌فرض false است.
iolog_dir = path
پوشه سطح بالایی که هنگام ساخت نام مسیر برای پوشه لاگ ورودی/خروجی استفاده می‌شود. شماره ترتیبی نشست (session sequence number)، در صورت وجود، در این پوشه ذخیره می‌شود. مقدار پیش‌فرض /var/log/sudo-io است.

توالی‌های گریز درصد (‘%’) زیر پشتیبانی می‌شوند:

%{seq}
به یک شماره ترتیبی در مبنای 36 که به‌طور پیوسته افزایش می‌یابد (مانند 0100A5) باز می‌شود، که در آن هر دو رقم برای تشکیل یک پوشهٔ جدید به کار می‌روند، مانند 01/00/A5
%{user}
به نام کاربری فراخواننده دستور باز می‌شود
%{group}
به نام گروه واقعی (real group-ID) کاربر فراخواننده دستور باز می‌شود
%{runas_user}
به نام کاربری که دستور با هویت او اجرا می‌شود (مانند root) باز می‌شود
%{runas_group}
به نام گروه کاربری که دستور با هویت آن اجرا می‌شود (مانند wheel) باز می‌شود
%{hostname}
به نام میزبان محلی بدون نام دامنه باز می‌شود
%{command}
به نام پایهٔ دستوری که در حال اجرا است باز می‌شود

علاوه بر این، هرگونه توالی گریز که توسط تابع strftime(3) سیستم پشتیبانی شود بسط داده خواهد شد.

برای درج نویسهٔ واقعی ‘%’ باید از رشتهٔ ‘%%’ استفاده شود.

iolog_file = path
نام مسیر، نسبت به iolog_dir ، که لاگ‌های ورودی/خروجی در آن ذخیره می‌شوند. ممکن است iolog_file شامل مؤلفه‌های پوشه باشد. مقدار پیش‌فرض “%{seq}” است.

برای فهرستی از توالی‌های گریز درصد (‘%’) پشتیبانی‌شده، تنظیم iolog_dir در بالا را ببینید.

علاوه بر توالی‌های گریز، در نام‌های مسیری که به شش یا تعداد بیشتری X ختم می‌شوند، نویسه‌های X با ترکیبی یکتا از ارقام و حروف، مشابه با عملکرد تابع mktemp(3) جایگزین خواهند شد.

اگر مسیر حاصل از پیوستن iolog_dir و iolog_file از قبل وجود داشته باشد، فایل لاگ ورودی/خروجی موجود کوتاه (truncate) و بازنویسی خواهد شد، مگر اینکه iolog_file به شش یا تعداد بیشتری X ختم شود.

iolog_flush = boolean
در صورت تنظیم، داده‌های لاگ ورودی/خروجی پس از هر نوشتن به جای بافر شدن، روی دیسک تخلیه (flush) می‌شوند. این امکان مشاهدهٔ بی‌درنگ لاگ‌ها را در حین اجرای برنامه فراهم می‌کند اما ممکن است اثربخشی فشرده‌سازی لاگ ورودی/خروجی را به میزان چشمگیری کاهش دهد. صرف‌نظر از این تنظیم، لاگ‌های ورودی/خروجی همیشه قبل از ارسال نقطهٔ تثبیت (commit point) به کلاینت تخلیه می‌شوند. مقدار پیش‌فرض true است.
iolog_group = name
نام گروهی که هنگام تنظیم شناسه گروه روی فایل‌ها و پوشه‌های جدید لاگ ورودی/خروجی جستجو می‌شود. اگر iolog_group تنظیم نشده باشد، شناسه گروه اصلی کاربری که توسط iolog_user مشخص شده است استفاده می‌شود. اگر نه iolog_group و نه iolog_user تنظیم نشده باشند، فایل‌ها و پوشه‌های لاگ ورودی/خروجی با شناسه گروه 0 ایجاد می‌شوند.
iolog_mode = mode
حالت دسترسی فایل برای ایجاد فایل‌های لاگ ورودی/خروجی. بیت‌های دسترسی خواندن و نوشتن برای مالک، گروه یا سایرین رعایت می‌شوند و سایر بیت‌ها نادیده گرفته می‌شوند. مجوزهای فایل همواره شامل بیت‌های خواندن و نوشتن مالک خواهند بود، حتی اگر در حالت مشخص‌شده وجود نداشته باشند. هنگام ایجاد پوشه‌های لاگ ورودی/خروجی، بیت‌های پیمایش (اجرا) مطابق با بیت‌های خواندن و نوشتن مشخص‌شده توسط اضافه می‌شوند. مقدار پیش‌فرض است.
iolog_user = name
نام کاربری که هنگام تنظیم مالک فایل‌ها و پوشه‌های جدید لاگ ورودی/خروجی جستجو می‌شود. اگر iolog_group تنظیم شده باشد، به جای شناسه گروه اصلی کاربر استفاده خواهد شد. به‌طور پیش‌فرض، فایل‌ها و پوشه‌های لاگ ورودی/خروجی با شناسه کاربر و شناسه گروه 0 ایجاد می‌شوند.
log_passwords = bool
بیشتر برنامه‌هایی که نیاز به گذرواژهٔ کاربر دارند، قبل از خواندن گذرواژه انعکاس (echo) را غیرفعال می‌کنند تا از نمایش متن آشکار گذرواژه روی صفحه جلوگیری شود. با این وجود، اگر ورودی ترمینال در حال ثبت باشد، گذرواژه همچنان در لاگ ورودی/خروجی وجود خواهد داشت. اگر log_passwords روی false تنظیم شود، sudo_logsrvd تلاش خواهد کرد از ثبت گذرواژه‌ها جلوگیری کند. این کار با استفاده از عبارت‌های باقاعده در passprompt_regex برای تطبیق اعلان گذرواژه در بافر خروجی ترمینال انجام می‌گیرد. هنگام یافتن تطابق، نویسه‌های ورودی در لاگ ورودی/خروجی با ‘*’ جایگزین می‌شوند تا زمانی که نویسهٔ خط بعد (line feed) یا بازگشت به ابتدای خط (carriage return) در ورودی ترمینال یافت شود یا یک بافر خروجی ترمینال جدید دریافت گردد. با این حال، اگر برنامه‌ای نویسه‌ها را هم‌زمان با تایپ کاربر نمایش دهد (مانند sudo هنگامی که گزینهٔ تنظیم شده باشد)، تنها اولین نویسهٔ گذرواژه در لاگ ورودی/خروجی جایگزین خواهد شد. مقدار پیش‌فرض true است.
maxseq = number
حداکثر شماره ترتیبی که جایگزین توالی گریز “%{seq}” در فایل لاگ ورودی/خروجی می‌شود (برای اطلاعات بیشتر به توضیحات iolog_dir در بالا مراجعه کنید). اگرچه مقدار جایگزین‌شده برای “%{seq}” در مبنای 36 است، خود باید به صورت ده‌دهی بیان شود. مقادیر بزرگ‌تر از 2176782336 (که متناظر با شماره ترتیبی “ZZZZZZ” در مبنای 36 است) بدون هشدار به 2176782336 محدود خواهند شد. مقدار پیش‌فرض است.
passprompt_regex = string
یک یا چند عبارت باقاعده گستردهٔ POSIX که برای تطبیق با اعلان‌های گذرواژه در خروجی ترمینال در هنگام غیرفعال بودن log_passwords استفاده می‌شوند. به عنوان یک قابلیت تکمیلی، اگر عبارت باقاعده با “(?i)” آغاز شود، تطبیق به صورت غیرحساس به بزرگی و کوچکی حروف انجام خواهد شد. چندین تنظیم passprompt_regex را می‌توان تعیین کرد. طول هر عبارت باقاعده حداکثر به 1024 نویسه محدود است. مقدار پیش‌فرض “[Pp]assword[: ]*” است.

بخش eventlog نحوهٔ ثبت رویدادهای خط‌مشی امنیتی (و در صورت لزوم ثبت آن‌ها) را پیکربندی می‌کند. کلیدهای زیر شناخته می‌شوند:

log_type = string
محل ثبت رویدادهای پذیرش (accept)، رد (reject) و هشدار (alert) گزارش‌شده توسط خط‌مشی. مقادیر پشتیبانی‌شده عبارتند از syslog, logfile و none. مقدار پیش‌فرض syslog است.
log_exit = boolean
اگر روی true تنظیم شود، sudo_logsrvd هنگام خروج دستور یا پایان یافتن آن توسط یک سیگنال، رویدادی را ثبت خواهد کرد. پیش‌فرض false است.
log_format = string
قالب ثبت وقایع رویداد. قالب‌های لاگ پشتیبانی‌شده عبارتند از:
json
در حال حاضر این یک نام مستعار برای json_pretty است. در نگارش آیندهٔ sudo_logsrvd, مقدار معادل json_compact خواهد بود. ورودی‌های لاگ JSON شامل محتویات کامل پیام‌های پذیرش، رد، خروج و هشدار هستند.
json_compact
ثبت رویدادها در قالب JSON “فشرده” (minified). هر رویداد به صورت یک شیء JSON مجزا در یک خط بدون فاصله‌های خالی اضافه نوشته می‌شود. به دلیل محدودیت‌های پروتکل، رویدادهای JSON ارسال‌شده از طریق syslog ممکن است کوتاه شوند.
json_pretty
ثبت رویدادها در قالب JSON “خوانا” (pretty). هنگام ثبت در فایل، کل فایل به عنوان یک شیء JSON واحد متشکل از چندین رویداد تلقی می‌شود که هر رویداد چندین خط را در بر می‌گیرد. هنگام ثبت از طریق syslog, تفاوتی میان قالب‌های json_pretty و json_compact وجود ندارد.
sudo
ثبت رویدادها در قالب سنتی به سبک sudo. برای جزئیات بیشتر بخش در sudoers(5) را ببینید.

مقدار پیش‌فرض است.

بخش syslog نحوهٔ ثبت وقایع از طریق syslog(3) را پیکربندی می‌کند. کلیدهای زیر شناخته می‌شوند:

facility = string
تسهیلات (facility) سیلاگ در صورت استفاده از syslog برای ثبت وقایع. پیش‌فرض auth است.

تسهیلات syslog زیر پشتیبانی می‌شوند: (در صورت پشتیبانی سیستم‌عامل شما)، auth, daemon, , , , , , , , و .

accept_priority = string
اولویت syslog مورد استفاده هنگامی که کاربر مجاز به اجرای دستور است و احراز هویت موفقیت‌آمیز بوده است. پیش‌فرض notice است.

اولویت‌های syslog زیر پشتیبانی می‌شوند: alert, , , , , , notice, و none. تنظیم آن روی مقدار none ثبت وقایع دستورات موفق را غیرفعال خواهد کرد.

reject_priority = string
اولویت syslog مورد استفاده هنگامی که کاربر مجاز به اجرای دستور نیست یا احراز هویت ناموفق است. پیش‌فرض alert است.

برای فهرست اولویت‌های syslog پشتیبانی‌شده، accept_priority را ببینید.

alert_priority = string
اولویت syslog مورد استفاده برای پیام‌های هشدار لاگ رویداد دریافت‌شده از کلاینت. پیش‌فرض alert است.

برای فهرست اولویت‌های syslog پشتیبانی‌شده، accept_priority را ببینید.

maxlen = number
روی بسیاری از سیستم‌ها، syslog(3) دارای بافر لاگ نسبتاً کوچکی است. سند IETF RFC 5424 بیان می‌دارد که سرورهای syslog باید از پیام‌های دست‌کم 480 بایتی پشتیبانی کنند و بهتر است از پیام‌های تا 2048 بایت پشتیبانی نمایند. به‌طور پیش‌فرض، sudo_logsrvd پیام‌های لاگ تا 960 بایت ایجاد می‌کند که متناظر با پیاده‌سازی تاریخی syslog در BSD است که از یک بافر 1024 بایتی برای ذخیره پیام، تاریخ، نام میزبان و نام برنامه استفاده می‌کرد.

جهت جلوگیری از کوتاه شدن پیام‌های syslog، برنامهٔ sudo_logsrvd پیام‌های لاگ به سبک sudo را که بزرگ‌تر از maxlen بایت باشند به چند بخش تقسیم خواهد کرد. هنگامی که پیامی تقسیم می‌شود، بخش‌های اضافی شامل رشتهٔ “(command continued)” پس از نام کاربری و پیش از آرگومان‌های ادامه‌یافته خط فرمان خواهند بود. ورودی‌های لاگ با قالب JSON هرگز تقسیم نمی‌شوند و تحت تأثیر maxlen قرار نمی‌گیرند.

server_facility = string
تسهیلات syslog در صورتی که از syslog برای پیام‌های هشدار سرور استفاده شود. برای فهرستی از تسهیلات پشتیبانی‌شده به بالا مراجعه کنید. پیش‌فرض daemon است.

بخش logfile شامل تنظیمات مربوط به ثبت وقایع در یک فایل ساده (غیر از syslog) است. کلیدهای زیر شناخته می‌شوند:

path = string
مسیر فایل لاگ رویدادها. این مسیر باید کامل و مطلق بوده و با نویسهٔ ‘/’ آغاز شود. مقدار پیش‌فرض /var/log/sudo.log است.
time_format = string
رشتهٔ مورد استفاده هنگام قالب‌بندی تاریخ و زمان برای لاگ‌های رویداد مبتنی بر فایل. قالب‌بندی از طریق تابع strftime(3) سیستم انجام می‌شود، بنابراین هر توالی گریزی که توسط این تابع پشتیبانی شود بسط خواهد یافت. مقدار پیش‌فرض “%h %e %T” است که تاریخ‌هایی مانند “Oct 3 07:15:24” را در محلی‌سازی (locale) ‘C’ تولید می‌کند.

/etc/sudo_logsrvd.conf
فایل پیکربندی سرور ثبت وقایع sudo

#
# sudo logsrv daemon configuration
#

[server]
# The host name or IP address and port to listen on with an optional TLS
# flag.  If no port is specified, port 30343 will be used for plaintext
# connections and port 30344 will be used to TLS connections.
# The following forms are accepted:
#   listen_address = hostname(tls)
#   listen_address = hostname:port(tls)
#   listen_address = IPv4_address(tls)
#   listen_address = IPv4_address:port(tls)
#   listen_address = [IPv6_address](tls)
#   listen_address = [IPv6_address]:port(tls)
#
# The (tls) suffix should be omitted for plaintext connections.
#
# Multiple listen_address settings may be specified.
# The default is to listen on all addresses.
#listen_address = *:30343
#listen_address = *:30344(tls)

# The file containing the ID of the running sudo_logsrvd process.
#pid_file = /run/sudo/sudo_logsrvd.pid

# Where to log server warnings: none, stderr, syslog, or a path name.
#server_log = syslog

# If true, enable the SO_KEEPALIVE socket option on client connections.
# Defaults to true.
#tcp_keepalive = true

# The amount of time, in seconds, the server will wait for the client to
# respond.  A value of 0 will disable the timeout.  The default value is 30.
#timeout = 30

# If true, the server will validate its own certificate at startup.
# Defaults to true.
#tls_verify = true

# If true, client certificates will be validated by the server;
# clients without a valid certificate will be unable to connect.
# By default, client certs are not checked.
#tls_checkpeer = false

# Path to a certificate authority bundle file in PEM format to use
# instead of the system's default certificate authority database.
#tls_cacert = /etc/ssl/sudo/cacert.pem

# Path to the server's certificate file in PEM format.
# Required for TLS connections.
#tls_cert = /etc/ssl/sudo/certs/logsrvd_cert.pem

# Path to the server's private key file in PEM format.
# Required for TLS connections.
#tls_key = /etc/ssl/sudo/private/logsrvd_key.pem

# TLS cipher list (see "CIPHER LIST FORMAT" in the openssl-ciphers manual).
# This setting is only effective if the negotiated protocol is TLS version
# 1.2.  The default cipher list is HIGH:!aNULL.
#tls_ciphers_v12 = HIGH:!aNULL

# TLS cipher list if the negotiated protocol is TLS version 1.3.
# The default cipher list is TLS_AES_256_GCM_SHA384.
#tls_ciphers_v13 = TLS_AES_256_GCM_SHA384

# Path to the Diffie-Hellman parameter file in PEM format.
# If not set, the server will use the OpenSSL defaults.
#tls_dhparams = /etc/ssl/sudo/logsrvd_dhparams.pem

[relay]
# The host name or IP address and port to send logs to in relay mode.
# The syntax is identical to listen_address with the exception of
# the wild card ('*') syntax.  When this setting is enabled, logs will
# be relayed to the specified host instead of being stored locally.
# This setting is not enabled by default.
#relay_host = relayhost.dom.ain
#relay_host = relayhost.dom.ain(tls)

# The amount of time, in seconds, the server will wait for a connection
# to the relay server to complete.  A value of 0 will disable the timeout.
# The default value is 30.
#connect_timeout = 30

# The directory to store messages in before they are sent to the relay.
# Messages are stored in wire format.
# The default value is /var/log/sudo_logsrvd.
#relay_dir = /var/log/sudo_logsrvd

# The number of seconds to wait after a connection error before
# making a new attempt to forward a message to a relay host.
# The default value is 30.
#retry_interval = 30

# Whether to store the log before relaying it.  If true, enable store
# and forward mode.  If false, the client connection is immediately
# relayed.  Defaults to false.
#store_first = true

# If true, enable the SO_KEEPALIVE socket option on relay connections.
# Defaults to true.
#tcp_keepalive = true

# The amount of time, in seconds, the server will wait for the relay to
# respond.  A value of 0 will disable the timeout.  The default value is 30.
#timeout = 30

# If true, the server's relay certificate will be verified at startup.
# The default is to use the value in the [server] section.
#tls_verify = true

# Whether to verify the relay's certificate for TLS connections.
# The default is to use the value in the [server] section.
#tls_checkpeer = false

# Path to a certificate authority bundle file in PEM format to use
# instead of the system's default certificate authority database.
# The default is to use the value in the [server] section.
#tls_cacert = /etc/ssl/sudo/cacert.pem

# Path to the server's certificate file in PEM format.
# The default is to use the certificate in the [server] section.
#tls_cert = /etc/ssl/sudo/certs/logsrvd_cert.pem

# Path to the server's private key file in PEM format.
# The default is to use the key in the [server] section.
#tls_key = /etc/ssl/sudo/private/logsrvd_key.pem

# TLS cipher list (see "CIPHER LIST FORMAT" in the openssl-ciphers manual).
# this setting is only effective if the negotiated protocol is TLS version
# 1.2.  The default is to use the value in the [server] section.
#tls_ciphers_v12 = HIGH:!aNULL

# TLS cipher list if the negotiated protocol is TLS version 1.3.
# The default is to use the value in the [server] section.
#tls_ciphers_v13 = TLS_AES_256_GCM_SHA384

# Path to the Diffie-Hellman parameter file in PEM format.
# The default is to use the value in the [server] section.
#tls_dhparams = /etc/ssl/sudo/logsrvd_dhparams.pem

[iolog]
# The top-level directory to use when constructing the path name for the
# I/O log directory.  The session sequence number, if any, is stored here.
#iolog_dir = /var/log/sudo-io

# The path name, relative to iolog_dir, in which to store I/O logs.
# It is possible for iolog_file to contain directory components.
#iolog_file = %{seq}

# If set, I/O logs will be compressed using zlib.  Enabling compression can
# make it harder to view the logs in real-time as the program is executing.
#iolog_compress = false

# If set, I/O log data is flushed to disk after each write instead of
# buffering it.  This makes it possible to view the logs in real-time
# as the program is executing but reduces the effectiveness of compression.
#iolog_flush = true

# The group to use when creating new I/O log files and directories.
# If iolog_group is not set, the primary group-ID of the user specified
# by iolog_user is used.  If neither iolog_group nor iolog_user
# are set, I/O log files and directories are created with group-ID 0.
#iolog_group = wheel

# The user to use when setting the user-ID and group-ID of new I/O
# log files and directories.  If iolog_group is set, it will be used
# instead of the user's primary group-ID.  By default, I/O log files
# and directories are created with user and group-ID 0.
#iolog_user = root

# The file mode to use when creating I/O log files.  The file permissions
# will always include the owner read and write bits, even if they are
# not present in the specified mode.  When creating I/O log directories,
# search (execute) bits are added to match the read and write bits
# specified by iolog_mode.
#iolog_mode = 0600

# If disabled, sudo_logsrvd will attempt to avoid logging plaintext
# password in the terminal input using passprompt_regex.
#log_passwords = true

# The maximum sequence number that will be substituted for the "%{seq}"
# escape in the I/O log file.  While the value substituted for "%{seq}"
# is in base 36, maxseq itself should be expressed in decimal.  Values
# larger than 2176782336 (which corresponds to the base 36 sequence
# number "ZZZZZZ") will be silently truncated to 2176782336.
#maxseq = 2176782336

# One or more POSIX extended regular expressions used to match
# password prompts in the terminal output when log_passwords is
# disabled.  Multiple passprompt_regex settings may be specified.
#passprompt_regex = [Pp]assword[: ]*
#passprompt_regex = [Pp]assword for [a-z0-9]+: *

[eventlog]
# Where to log accept, reject, exit, and alert events.
# Accepted values are syslog, logfile, or none.
# Defaults to syslog
#log_type = syslog

# Whether to log an event when a command exits or is terminated by a signal.
# Defaults to false
#log_exit = true

# Event log format.
# Currently only sudo-style event logs are supported.
#log_format = sudo

[syslog]
# The maximum length of a syslog payload.
# On many systems, syslog(3) has a relatively small log buffer.
# IETF RFC 5424 states that syslog servers must support messages
# of at least 480 bytes and should support messages up to 2048 bytes.
# Messages larger than this value will be split into multiple messages.
#maxlen = 960

# The syslog facility to use for event log messages.
# The following syslog facilities are supported: authpriv (if your OS
# supports it), auth, daemon, user, local0, local1, local2, local3,
# local4, local5, local6, and local7.
#facility = auth

# Syslog priority to use for event log accept messages, when the command
# is allowed by the security policy.  The following syslog priorities are
# supported: alert, crit, debug, emerg, err, info, notice, warning, none.
#accept_priority = notice

# Syslog priority to use for event log reject messages, when the command
# is not allowed by the security policy.
#reject_priority = alert

# Syslog priority to use for event log alert messages reported by the
# client.
#alert_priority = alert

# The syslog facility to use for server warning messages.
# Defaults to daemon.
#server_facility = daemon

[logfile]
# The path to the file-based event log.
# This path must be fully-qualified and start with a '/' character.
#path = /var/log/sudo.log

# The format string used when formatting the date and time for
# file-based event logs.  Formatting is performed via strftime(3) so
# any format string supported by that function is allowed.
#time_format = %h %e %T

strftime(3), sudo.conf(5), sudoers(5), sudo(8), sudo_logsrvd(8)

افراد بسیاری در طول سال‌ها روی sudo کار کرده‌اند؛ این نگارش عمدتاً از کدهای نوشته‌شده توسط افراد زیر تشکیل شده است:

Todd C. Miller

برای مشاهده فهرست کامل افرادی که در sudo مشارکت داشته‌اند، فایل CONTRIBUTORS.md را در توزیع sudo (https://www.sudo.ws/about/contributors) ببینید.

اگر فکر می‌کنید باگی در sudo_logsrvd.conf یافته‌اید، می‌توانید یک گزارش اشکال در پایگاه داده اشکالات sudo در https://bugzilla.sudo.ws ثبت کنید یا یک مشکل در https://github.com/sudo-project/sudo/issues باز نمایید. اگر ترجیح می‌دهید از رایانامه استفاده کنید، پیام‌ها می‌توانند به فهرست پستی sudo-workers در https://www.sudo.ws/mailman/listinfo/sudo-workers (عمومی) یا به <sudo@sudo.ws> (خصوصی) ارسال شوند.

لطفاً آسیب‌پذیری‌های امنیتی را از طریق مشکلات عمومی گیت‌هاب، پایگاه Bugzilla یا فهرست‌های پستی گزارش ندهید. در عوض، آن‌ها را از طریق رایانامه به <Todd.Miller@sudo.ws> ارسال نمایید. در صورت تمایل می‌توانید پیام خود را با استفاده از کلید PGP موجود در https://www.sudo.ws/dist/PGPKEYS رمزگذاری کنید.

پشتیبانی رایگان محدود از طریق فهرست پستی sudo-users در دسترس است، برای اشتراک یا جستجو در بایگانی نشانی https://www.sudo.ws/mailman/listinfo/sudo-users را ببینید.

sudo به‌صورت “همانی که هست (AS IS)” ارائه می‌شود و هرگونه ضمانت صریح یا ضمنی، از جمله، اما نه محدود به، ضمانت‌های ضمنی خرید و فروش و تناسب برای یک هدف خاص رد می‌شود. برای جزئیات کامل فایل LICENSE.md توزیع‌شده با sudo یا نشانی https://www.sudo.ws/about/license را ملاحظه فرمایید.

March 9, 2024 Sudo 1.9.17p2