| AUDITD-PLUGINS(5) | ابزارهای مدیریت سیستم | AUDITD-PLUGINS(5) |
نام (NAME)
auditd-plugins - فایلهای پیکربندی افزونههای دیسپچر دیمن auditd
توضیحات (DESCRIPTION)
دیمن auditd میتواند رویدادهای بازرسی را به صورت بلادرنگ تسهیم (multiplex) کند. این دیمن رویدادهای بازرسی را دریافت کرده و میان برنامههای فرزندی که مایل به بررسی و تحلیل رویدادها در زمان واقعی هستند توزیع میکند. هنگامی که دیمن بازرسی سیگنال SIGTERM یا SIGHUP را دریافت میکند، آن را به فرآیندهای فرزند خود انتقال میدهد تا بتوانند پیکربندی خود را مجدداً بارگذاری کرده یا خاتمه یابند.
برنامههای فرزند یک فایل پیکربندی در دایرکتوری افزونهها نصب میکنند که مسیر پیشفرض آن /etc/audit/plugins.d است. در صورتی که مدیر سیستم بخواهد افزونهها در مکان دیگری قرار گیرند، این مسیر از طریق گزینه plugin_dir در فایل auditd.conf قابل تنظیم است؛ هرچند خود auditd افزونههایش را در همان مسیر پیشفرض نصب خواهد کرد.
دایرکتوری افزونهها پویش میشود و هر افزونهای که فعال باشد آغاز به کار خواهد کرد. چنانچه افزونه با مشکلی مواجه شده و متوقف شود، حداکثر به تعداد مشخصشده در گزینه max_restarts در فایل auditd.conf مجدداً راهاندازی خواهد شد.
نام فایلهای پیکربندی نباید بیش از یک نقطه (.) در نام خود داشته باشند؛ در غیر این صورت به عنوان نسخه پشتیبان در نظر گرفته شده و نادیده گرفته میشوند. گزینههای فایل پیکربندی در هر سطر با قرار گرفتن علامت مساوی (=) میان کلیدواژه و مقدار آن درج میشوند. گزینههای دردسترس به شرح زیر است:
- active
- گزینههای مجاز برای این مورد yes یا no هستند.
- direction
- مقدار این گزینه توسط خود افزونه دیکته و مشخص میشود. تنها انتخابهای ممکن in یا out هستند. صرفاً با تغییر این گزینه نمیتوانید افزونه را به گونهای وادار به کار کنید که برای آن طراحی نشده است. کاربرد این گزینه آگاه کردن دیسپچر رویداد از جهت جریان رویدادها است. نکته: رویدادهای ورودی (inbound) در حال حاضر پشتیبانی نمیشوند.
- path
- مسیر مطلق به فایل اجرایی افزونه است. در صورت استفاده از افزونههای داخلی، این مقدار نام افزونه خواهد بود.
- type
- این گزینه به دیسپچر اعلام میکند که افزونه چگونه باید اجرا شود. تنها یک گزینه معتبر وجود دارد: always که نشان میدهد افزونه از نوع خارجی است و همیشه باید اجرا شود. از آنجا که افزونههای توکار (builtin) دیگری وجود ندارند، مقدار پیشفرض آن always است.
- args
- این گزینه امکان ارسال آرگومانها به برنامه فرزند را فراهم میآورد. معمولاً افزونهها آرگومانی دریافت نمیکنند و خود دارای فایل پیکربندی جداگانهای هستند که نحوه تنظیمات آنها را مشخص میکند. در حال حاضر، محدودیت حداکثر ۲ آرگومان برقرار است.
- format
- گزینههای معتبر برای این مورد binary و string هستند. مقدار binary دادهها را دقیقاً همانگونه که دیسپچر رویداد بازرسی از دیمن بازرسی تحویل میگیرد، ارسال میکند. گزینه string به دیسپچر دستور میدهد رویداد را به طور کامل به یک رشته مناسب برای تجزیه از طریق کتابخانه تجزیه بازرسی تبدیل کند. مقدار پیشفرض آن string است.
نکته (NOTE)
دیمن auditd یک صف داخلی برای نگهداری رویدادهای افزونهها دارد (تنظیم q_depth در فایل auditd.conf را مشاهده کنید). افزونهها موظفاند تا حد امکان با سرعت بالا رویدادها را رصد کرده و از صف خارج کنند (dequeue) و در صورت عدم امکان پردازش فوری، آنها را در صف داخلی خود ذخیره نمایند. چنانچه افزونه قادر به خارج کردن رکوردها از صف نباشد، صف داخلی auditd پر خواهد شد. در هر زمان، با دسترسی مدیر سیستم (root) میتوانید دستور زیر را برای بررسی معیارهای auditd اجرا کنید:
auditctl --signal cont ; sleep 1 ; cat /var/run/auditd.state
اگر صف داخلی auditd پر شود، قادر به خارج کردن هیچ رویدادی از صف انباشته (backlog) هسته نخواهد بود. در صورتی که صف انباشته هسته پر شود، هسته به مقدار backlog_wait_time نگاه میکند تا تمامی فرآیندهای تولیدکننده رویداد را به تأخیر بیندازد تا ببیند آیا فضایی برای افزودن رویداد باز میشود یا خیر. این حالت معمولاً به صورت افت محسوس سرعت فرآیندهای گوناگون در سیستم به چشم میآید. زیرسیستم بازرسی هسته را میتوان با اجرای دستور زیر بررسی کرد:
auditctl -s
هنگام تنظیم و بهینهسازی کارایی سیستم بازرسی، باید هر دو معیار هسته و auditd را همزمان ارزیابی کرده و تغییرات مقتضی را اعمال نمایید.
نکاتی برای توسعهدهندگان (NOTES FOR DEVELOPERS)
هنگامی که دیمن بازرسی افزونه شما را آغاز میکند، افزونه با دسترسی کاربر ارشد (root) اجرا خواهد شد. اگر به مجوزهای ریشه نیاز ندارید، بهتر است شناسههای کاربر و گروه (uid/gid) را تغییر دهید تا شانس تبدیل شدن به هدفی برای سوءاستفادههای امنیتی (exploit) کاهش یابد. در صورتی که نیاز به حفظ قابلیتهای لینوکس (capabilities) دارید، استفاده از کتابخانه libcap-ng سادهترین راهکار است.
محیط اجرای افزونه ایزوله و دستنخورده نخواهد بود؛ شما ویژگیهای فراوانی را از خود auditd به ارث میبرید. لازم است ماسک سیگنال (signal mask)، مدیریت سیگنال (sigaction)، ماسک مجوزهای فایل (umask) و متغیرهای محیطی (environmental variables) را در افزونه خود تنظیم کنید. صفحه راهنمای auditd را بررسی کنید تا بدانید از کدام سیگنالها استفاده کرده است. از افزونهها انتظار میرود سیگنالهای SIGTERM و SIGHUP را مدیریت نمایند. شما همچنین محدودیتهای منابع auditd را به ارث خواهید برد. توجه داشته باشید که برخی از این محدودیتها، مانند حداکثر تعداد توصیفگرهای پرونده باز، توسط systemd کنترل میشوند. علاوه بر این، مقدار اولویت (nice) دیمن auditd نیز به افزونه منتقل میشود؛ ممکن است بخواهید آن را طوری تنظیم کنید که پردازش همگام با ورود رویدادها پیش برود.
دیمن auditd رویدادها را از طریق ورودی استاندارد stdin به افزونه ارسال خواهد کرد. افزونه باید همواره این توصیفگر را خالی نگه دارد تا رویدادها انباشته نشوند. اگر روی هر رویداد پردازش سنگینی انجام میدهید، باید در طراحی خود یک صف داخلی بگنجانید تا پیوستگی جریان رویدادها حفظ شود. در صورتی که نیاز به تحلیل محتوای رویدادها دارید، تابع auparse_feed گزینه ترجیحی و استاندارد برای بررسی کل رویدادها به شمار میآید.
فایلها (FILES)
/etc/auditd/auditd.conf
/etc/audit/plugins.d
همچنین ببینید (SEE ALSO)
نویسنده (AUTHOR)
Steve Grubb
| 2024-01-01 | Red Hat |