| AUDISP-REMOTE.CONF(5) | ابزارهای مدیریت سیستم | AUDISP-REMOTE.CONF(5) |
نام (NAME)
audisp-remote.conf - فایل پیکربندی ثبت از راه دور رویدادهای بازرسی audisp-remote
توضیحات (DESCRIPTION)
فایل audisp-remote.conf پیکربندی زیرسیستم ثبت از راه دور وقایع بازرسی (audit) را کنترل میکند. گزینههای دردسترس به شرح زیر هستند:
- remote_server
- یک رشته کاراکتری تککلمهای شامل نام میزبان (hostname) یا نشانی سرور راه دوری است که این افزونه اطلاعات گزارشها را به آن ارسال خواهد کرد. این مقدار میتواند یک نشانی عددی (IP) یا یک نام میزبان قابل حل (resolvable) باشد.
- port
- این گزینه یک عدد صحیح بدون علامت است که مشخص میکند به کدام پورت در دستگاه راه دور متصل شود.
- local_port
- این گزینه یک عدد صحیح بدون علامت است که مشخص میکند اتصال از کدام پورت محلی در سیستم مبدا برقرار شود. در صورت عدم تعیین (حالت پیشفرض) یا تنظیم بر روی کلمه any هر پورت غیراختصاصی (بدون امتیاز) دردسترس استفاده خواهد شد. این یک سازوکار امنیتی برای جلوگیری از تزریق رویدادها به دیمن بازرسی توسط برنامههای غیرقابل اعتماد فضای کاربری است. شما باید آن را روی یک پورت بلااستفاده کمتر از ۱۰۲۴ تنظیم کنید تا اطمینان حاصل شود که تنها کاربران مجاز و دارای دسترسی ریشه (root) میتوانند به آن پورت متصل شوند (bind کنند). سپس گزینه tcp_client_ports را نیز در فایل auditd.conf سرور تجمیعکننده تنظیم نمایید تا با پورتهایی که کلاینتها از آنها ارسال میکنند مطابقت داشته باشد.
- transport
- این پارامتر به برنامه ثبت وقایع از راه دور اعلام میکند که چگونه رویدادها را به سیستم راه دور ارسال کند. گزینههای معتبر عبارتند از TCP، TLS و KRB5. اگر بر روی TCP تنظیم شود، برنامه ثبت وقایع از راه دور صرفاً یک اتصال متنی ساده و بدون رمزنگاری (clear text) عادی به سیستم راه دور برقرار میکند. اگر بر روی TLS تنظیم شود، اتصال با استفاده از TLS 1.3 همراه با تبادل کلید ترکیبی پسا-کوانتومی (post-quantum hybrid key exchange) رمزگذاری خواهد شد. این حالت نیازمند پیکربندی یک کلید از پیش اشتراکگذاریشده (از طریق tls_psk_file) است. توجه داشته باشید که انتقال TLS نیازمند format=managed بوده و قالب ascii از رمزنگاری TLS پشتیبانی نمیکند. اگر بر روی KRB5 تنظیم شود، از Kerberos 5 برای احراز هویت و رمزنگاری استفاده خواهد شد. مقدار پیشفرض TCP است.
- mode
- این پارامتر راهبرد برنامه ثبت وقایع از راه دور را برای رساندن رکوردها به سیستم راه دور مشخص میکند. مقادیر معتبر عبارتند از immediate و forward. اگر بر روی immediate تنظیم شود، برنامه ثبت وقایع از راه دور بلافاصله پس از دریافت رویدادها، تلاش میکند آنها را ارسال کند. مقدار forward به این معناست که رویدادها را روی دیسک ذخیره کرده و سپس تلاش میکند رکوردها را ارسال نماید. در صورتی که اتصال برقرار نشود، رکوردها را تا زمانی که بتواند به سیستم راه دور متصل شود در صف نگه میدارد. عمق این صف توسط گزینه queue_depth کنترل میشود.
- queue_file
- مسیر فایلی که برای صف رویدادها استفاده میشود در صورتی که mode روی forward تنظیم شده باشد. مقدار پیشفرض /var/spool/audit/remote.log است.
- queue_depth
- این گزینه یک عدد صحیح بدون علامت است که مشخص میکند چه تعداد رکورد پیش از آنکه ارسال ناموفق تلقی شود، میتوانند روی دیسک یا در حافظه بافر شوند. این پارامتر بر حالت forward از گزینه mode و صفبندی داخلی برای قطعیهای موقت شبکه تأثیر میگذارد. عمق پیشفرض ۲۰۴۸ است.
- format
- این پارامتر به برنامه ثبت وقایع از راه دور اعلام میکند که چه قالبی از داده برای پیامهای ارسالی روی شبکه استفاده شود. مقدار پیشفرض managed است که مقداری بار اضافه (overhead) ایجاد میکند تا اطمینان حاصل شود هر پیام به درستی در سمت راه دور پردازش شده و همچنین پیامهای وضعیت را از سرور راه دور دریافت کند. اگر به جای آن ascii مشخص شود، هر پیام یک خط متنی ساده ASCII بدون هیچگونه بار اضافهای خواهد بود. قالب ascii یک پروتکل بسیار سادهانگارانه است؛ چنانچه مشکلی در شبکه رخ دهد، باعث خروج audisp-remote خواهد شد و ممکن است دیمن auditd در رویداد بعدی آن را مجدداً راهاندازی کند یا نکند. اگر به سازوکار پایدارتر و مقاومتری نیاز است، از قالب managed استفاده کنید. اگر mode روی forward تنظیم شده باشد، format باید الزاماً managed باشد.
- network_retry_time
- مدت زمان بر حسب ثانیه میان تلاشهای مجدد هنگام تشخیص خطای شبکه است. توجه داشته باشید که این مکث از پس از تلاش دوم اعمال میشود تا در صورتی که یک اتصال مجدد فوری برای حل مشکل کافی باشد، از تاخیرهای غیرضروری جلوگیری شود. مقدار پیشفرض ۱ ثانیه است.
- max_tries_per_record
- حداکثر تعداد دفعاتی که برای تحویل هر پیام تلاش میشود. حداقل مقدار یک است، زیرا حتی یک تحویل کاملاً موفق نیز به حداقل یک بار تلاش نیاز دارد. در صورتی که تعداد تلاشها بیش از حد مجاز شود، اقدام مشخصشده در network_failure_action اجرا میگردد. مقدار پیشفرض ۳ است.
- max_time_per_record
- حداکثر زمان صرفشده بر حسب ثانیه برای تلاش در جهت تحویل هر پیام. توجه داشته باشید که هم این گزینه و هم max_tries_per_record باید تنظیم شوند، زیرا هر تلاش ممکن است زمان زیادی طول بکشد تا با وقفه زمانی (timeout) مواجه شود. مقدار پیشفرض ۵ ثانیه است. اگر زمان صرفشده برای یک پیام بیش از این مقدار شود، اقدام مشخصشده در network_failure_action اجرا خواهد شد.
- heartbeat_timeout
- این پارامتر مشخص میکند که کلاینت هر چند ثانیه یک بار باید یک رویداد ضربان قلب (heartbeat) به سرور راه دور ارسال کند. این سازوکار برای این است که کلاینت و سرور هر دو متوجه شوند طرف مقابل زنده است و بدون بستن اتصال به شکل تمیز، متوقف نشده باشد. این مقدار باید با تنظیم tcp_client_max_idle در سرور هماهنگ شود. مقدار پیشفرض ۰ است که ارسال ضربان قلب را غیرفعال میکند.
- network_failure_action
- این پارامتر مشخص میکند هنگام تشخیص خطا در ارسال رویدادهای بازرسی به سیستم راه دور، چه اقدامی انجام شود. مقادیر معتبر عبارتند از ignore، syslog، exec، warn_once، suspend، single، halt و stop. اگر بر روی ignore تنظیم شود، برنامه ثبت وقایع کاری انجام نمیدهد. اگر رویدادی ارسال شده بود، از صف خارج (dequeued) میشود. syslog به این معناست که هشداری به syslog ارسال میکند. اگر رویدادی ارسال شده بود، از صف خارج میشود. این حالت پیشفرض است. گزینه exec به همراه /path-to-script اسکریپت مربوطه را اجرا خواهد کرد. شما نمیتوانید پارامتری به اسکریپت ارسال کنید. اگر رویدادی ارسال شده بود، از صف خارج میشود. warn_once_continue مانند syslog است با این تفاوت که تا زمان انتقال موفق یک رویداد، تنها یک پیام در syslog درج میشود. warn_once مانند warn_once_continue است به جز اینکه رویداد از صف خارج نمیشود. suspend باعث میشود برنامه ثبت وقایع از راه دور ارسال رکوردها به سیستم راه دور را متوقف کند؛ برنامه ثبت وقایع همچنان زنده خواهد ماند. اگر رویدادی ارسال شده بود، از صف خارج نمیشود. گزینه single باعث میشود برنامه ثبت وقایع، سیستم کامپیوتر را در حالت تککاربره (single user mode) قرار دهد. اگر رویدادی ارسال شده بود، از صف خارج نمیشود. گزینه stop باعث خروج برنامه ثبت وقایع از راه دور میشود اما سایر افزونهها در حال اجرا باقی میمانند. اگر رویدادی ارسال شده بود، از صف خارج نمیشود. گزینه halt باعث خاموش شدن سیستم کامپیوتر توسط برنامه ثبت وقایع میشود. اگر رویدادی ارسال شده بود، از صف خارج نمیشود. پیشفرض stop است.
- disk_low_action
- مشابهاً، این پارامتر مشخص میکند که اگر سمت راه دور خطای کمبود فضای دیسک (disk low) را اعلام کرد، چه اقدامی انجام شود. مقدار پیشفرض ignore است.
- disk_full_action
- مشابهاً، این پارامتر مشخص میکند که اگر سمت راه دور خطای پر شدن دیسک (disk full) را اعلام کرد، چه اقدامی انجام شود. مقدار پیشفرض warn_once است.
- disk_error_action
- مشابهاً، این پارامتر مشخص میکند که اگر سمت راه دور یک خطای دیسک (disk error) اعلام کرد، چه اقدامی صورت گیرد. مقدار پیشفرض warn_once است.
- remote_ending_action
- مشابهاً، این پارامتر مشخص میکند در صورت قطع شدن اتصال شبکه، سیستم چه اقدامی انجام دهد. این اقدام یک گزینه اضافی دارد: reconnect که به افزونه راه دور میگوید با دریافت رکورد بازرسی بعدی، تلاش کند مجدداً به سرور متصل شود. اگر هنگام وقوع رخدادی که این اقدام را تحریک کرده، رویدادی در حال ارسال بوده باشد، از صف خارج نخواهد شد. در صورتی که اتصال مجدد ناموفق باشد، ممکن است رکورد بازرسی از دست برود. مقدار پیشفرض reconnect است.
- generic_error_action
- مشابهاً، این پارامتر مشخص میکند اگر سمت راه دور خطایی اعلام کند که برای ما ناشناخته است، چه اقدامی انجام گیرد. مقدار پیشفرض ثبت آن در syslog است.
- generic_warning_action
- مشابهاً، این پارامتر مشخص میکند اگر سمت راه دور هشداری اعلام کند که برای ما ناشناخته است، چه اقدامی انجام گیرد. مقدار پیشفرض ثبت آن در syslog است.
- queue_error_action
- مشابهاً، این پارامتر اقدام لازم در صورت بروز مشکل در کار با صف رکوردهای محلی را مشخص میکند. مقدار پیشفرض stop است.
- overflow_action
- این پارامتر مشخص میکند در صورت سرریز شدن صف داخلی رویدادها، سیستم چه اقدامی انجام دهد. مقادیر معتبر عبارتند از ignore، syslog، suspend، single و halt. اگر بر روی ignore تنظیم شود، برنامه ثبت وقایع از راه دور کاری انجام نمیدهد. syslog به این معناست که هشداری به syslog صادر میکند؛ این حالت پیشفرض است. suspend باعث میشود برنامه ثبت وقایع از راه دور ارسال رکوردها به سیستم راه دور را متوقف کند؛ برنامه ثبت وقایع همچنان زنده خواهد ماند. گزینه single باعث میشود برنامه ثبت وقایع سیستم را در حالت تککاربره قرار دهد. گزینه halt باعث میشود برنامه ثبت وقایع سیستم کامپیوتر را خاموش کند.
- startup_failure_action
- این پارامتر مشخص میکند هنگام بروز خطا در اتصال به سیستم راه دور در زمان راهاندازی، چه اقدامی انجام شود. معمولاً این خطا بیخطر است زیرا رفتار پیشفرض افزونه این است که تا زمان موفقیت تلاش برای اتصال مجدد را ادامه دهد. اما گاهی ممکن است بخواهید رفتار دیگری تعریف کنید. مقادیر معتبر عبارتند از ignore، syslog، exec، warn_once و warn_once_continue. اگر بر روی ignore تنظیم شود، برنامه ثبت وقایع از راه دور کاری انجام نمیدهد. syslog به این معناست که هشداری به syslog ارسال میکند. گزینه exec به همراه /path-to-script اسکریپت مربوطه را اجرا میکند؛ شما نمیتوانید به اسکریپت پارامتر ارسال کنید. warn_once مانند syslog است با این تفاوت که تا زمان انتقال موفقیتآمیز یک رویداد، تنها یک پیام در syslog قرار میگیرد. warn_once_continue مانند warn_once است با این تفاوت که مشکل را نادیده میگیرد. این مقدار پیشفرض است.
- enable_krb5
- این گزینه منسوخ شده است. برای فعالسازی پشتیبانی از Kerberos از گزینه transport استفاده کنید. اگر این گزینه پس از گزینه پیکربندی transport قرار گیرد، تنظیمات transport را بازنویسی (override) خواهد کرد. این رفتار طبیعی و مورد انتظار جهت حفظ سازگاری با نسخههای پیشین است. در صورت تنظیم روی yes، از Kerberos 5 برای احراز هویت و رمزنگاری استفاده خواهد شد. مقدار پیشفرض no است. توجه داشته باشید که رمزنگاری فقط در اتصالات مدیریتشده (managed) قابل استفاده است و نه در ASCII ساده.
- krb5_principal
- در صورت مشخص شدن، این شناسه هویت (principal) مورد انتظار برای سرور است. کلاینت و سرور از principal تعیینشده برای توافق بر سر رمزنگاری استفاده خواهند کرد. قالب krb5_principal به صورت somename/hostname است؛ برای جزئیات بیشتر به صفحه راهنمای auditd.conf مراجعه کنید. در صورت عدم تعیین، از مقادیر krb5_client_name و remote_server استفاده میشود.
- krb5_client_name
- این گزینه بخش نام principal خود کلاینت را مشخص میکند. در صورت عدم تعیین، مقدار پیشفرض "auditd" است. باقیمانده principal شامل نام دامنه کاملاً مشخص (FQDN) میزبان و قلمرو (realm) پیشفرض کربروس خواهد بود، مانند این نمونه:
auditd/host14.example.com@EXAMPLE.COM
(با این فرض که شما "auditd" را به عنوان krb_client_name وارد کرده باشید). توجه داشته باشید که کلاینت و سرور باید نام principal و realm یکسانی داشته باشند.
- krb5_key_file
- محل فایل کلید برای principal این کلاینت. توجه داشته باشید که مالکیت فایل کلید باید متعلق به کاربر ریشه (root) و با دسترسی مجوز 0400 باشد. مقدار پیشفرض /etc/audisp/audisp-remote.key است.
- tls_auth
- حالت احراز هویت TLS. در حال حاضر فقط psk پشتیبانی میشود. مقدار پیشفرض psk است.
- tls_crypto_profile
- پروفایل رمزنگاری را برای TLS انتخاب میکند. مقادیر معتبر عبارتند از compatible، system و pqc. مقدار compatible از روش قدرتمند کلاسیک TLS 1.3 PSK همراه با تبادل کلید ترکیبی PQC بهره میبرد. system انتخاب تمام الگوریتمهای رمزنگاری و گروهها را به خطمشی رمزنگاری سیستم واگذار میکند. برای استقرارهای FIPS، میزبان را در حالت FIPS پیکربندی کرده و از این پروفایل استفاده نمایید. pqc نیازمند تبادل کلید ترکیبی پسا-کوانتومی (post-quantum hybrid key exchange) است. مقدار پیشفرض compatible است.
- tls_psk_file
- مسیر فایل حاوی کلید از پیش اشتراکگذاریشده به صورت کدگذاری هگزادسیمال برای احراز هویت TLS-PSK. طول کلید باید حداقل ۳۲ بایت (۶۴ کاراکتر هگز) باشد. برای تولید کلید از این دستور استفاده کنید:
openssl rand -hex 32
فایل باید متعلق به کاربر ریشه (root) بوده و با مجوز دسترسی 0400 تنظیم شده باشد.
- tls_psk_identity
- رشته هویتی که در جریان احراز هویت TLS-PSK به سرور ارسال میشود. این گزینه در صورتی که tls_psk_file تنظیم شده باشد، الزامی است. این شناسه فقط باید شامل کاراکترهای اسکی قابل چاپ باشد (بدون فاصله یا کاراکترهای کنترلی) و نباید از ۲۵۵ بایت تجاوز کند. مقداری به عنوان پیشفرض وجود ندارد.
- tls_cipher_suites
- فهرست مجموعههای رمزنگاری (cipher suites) نسخه TLS 1.3 که با دونقطه (:) از هم جدا شدهاند. این گزینه مقادیر پیشفرض پروفایل را بازنویسی میکند. مقدار پیشفرض برابر است با:
"TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384"
- tls_key_exchange
- فهرست گروههای تبادل کلید که با دونقطه (:) از هم جدا شدهاند. این گزینه مقادیر پیشفرض پروفایل را بازنویسی میکند. تبادل کلید ترکیبی PQC اندازه پیام ClientHello در TLS را تقریباً ۱۱۲۰ بایت افزایش میدهد.
- tls_require_pqc
- نام مستعار سازگاری برای tls_crypto_profile=pqc است. اگر بر روی yes تنظیم شود، tls_crypto_profile را روی pqc قرار میدهد. در صورت تنظیم روی no هیچ تأثیری بر tls_crypto_profile نخواهد داشت. در پیکربندیهای جدید توصیه میشود مستقیماً از tls_crypto_profile استفاده گردد.
نکات (NOTES)
تغییرات در گزینههای پیکربندی TLS شامل (tls_psk_file، tls_psk_identity، tls_cipher_suites، tls_key_exchange، tls_require_pqc، tls_auth و tls_crypto_profile) در فایل پیکربندی، با ارسال سیگنال SIGHUP دوباره خوانده نمیشوند. با این حال، سیگنال SIGHUP کانتکست فعلی TLS را نابود کرده و برقراری مجدد اتصال کامل را با یک کانتکست جدید که بر پایه پیکربندی فعلی (بدون تغییر) ساخته شده، تحمیل میکند. از آنجا که فایل کلید PSK در حین ایجاد کانتکست مجدداً از روی دیسک خوانده میشود، چرخش محتوای فایل کلید (key rotation) به همراه ارسال سیگنال SIGHUP باعث فعال شدن کلید جدید خواهد شد.
تعیین یک پورت محلی ممکن است به دلیل قرار گرفتن اتصال قبلی در وضعیت TIME_WAIT راهاندازی مجدد زیرسیستم بازرسی را دشوار سازد، به ویژه اگر در حال اتصال مجدد به و از همان میزبانها و پورتهای پیشین باشید.
منطق مدیریت خطای شبکه به شرح زیر عمل میکند: نخستین تلاش برای تحویل معمولاً به شکل عادی انجام میپذیرد. اگر موفقیتآمیز نبود، تلاش دوم بلافاصله انجام میشود که ممکن است پس از برقراری مجدد اتصال با سرور باشد. در صورتی که تلاش دوم نیز با شکست مواجه گردد، audisp-remote به مدت زمان پیکربندیشده مکث کرده و دوباره تلاش میکند. این مکث و تلاش مجدد ادامه مییابد تا زمانی که یا تعداد تلاشها از حد مجاز بگذرد یا زمان مجاز به پایان برسد. توجه داشته باشید در صورتی که میخواهید ثبت وقایع را در طول بازراهاندازی (reboot) سرور نیز حفظ کنید، این زمانها حداکثر زمانی را تعیین میکنند که سرور راه دور برای راهاندازی مجدد در اختیار دارد.
توصیه میشود در صورت استفاده از این افزونه، مقدار q_depth بزرگی در auditd.conf تنظیم نمایید. همچنین مقدار حتی بزرگتری را برای q_depth در audisp-remote.conf قرار دهید. علاوه بر این، heartbeat_timeout را روی مقداری غیرصفر تنظیم کنید اما آن را با سرور هماهنگ سازید تا نصف مقدار تنظیمشده برای tcp_client_max_idle در سرور باشد. این کار برای این است که در صورت بروز مشکل در شبکه، تلاشهای مجدد در زمان معقولی انجام شوند.
همچنین ببینید (SEE ALSO)
نویسنده (AUTHOR)
استیو گراب (Steve Grubb)
| 2022-07-01 | Red Hat |