.TH AUDITCTL "8" "سپتامبر ۲۰۲۳" "Red Hat" "ابزارهای مدیریت سیستم" .SH "نام (NAME)" auditctl \- ابزاری کمکی برای کنترل سیستم حسابرسی هسته .SH "خلاصه دستور (SYNOPSIS)" \fBauditctl\fP [\fIگزینه‌ها\fP] .SH "توضیحات (DESCRIPTION)" برنامه \fBauditctl\fP برای پیکربندی گزینه‌های هسته مرتبط با حسابرسی، مشاهده وضعیت پیکربندی، و بارگذاری قوانین اختیاری حسابرسی به کار می‌رود. .SH "گزینههای پیکربندی (CONFIGURATION OPTIONS)" .TP .BI \-b\ backlog تنظیم حداکثر تعداد (حد مجاز) بافرهای معوقه حسابرسی مجاز (پیش‌فرض هسته=64). اگر تمام بافرها پر باشند، هسته برای اقدام به پرچم شکست (failure flag) مراجعه می‌کند. .TP .BI \-\-backlog_wait_time \ \fIwait_time\fP تنظیم مدت زمان انتظار هسته (پیش‌فرض هسته: 60*HZ) در زمان رسیدن به حد بافر معوقه، پیش از صف‌بندی رویدادهای حسابرسی بیشتر برای انتقال به auditd. این عدد باید بزرگتر یا مساوی صفر و کمتر از ۱۰ برابر مقدار پیش‌فرض باشد. .TP .BI \-\-reset_backlog_wait_time_actual بازنشانی شمارنده زمان واقعی انتظار بافر معوقه که توسط دستور وضعیت نمایش داده می‌شود. .TP .B \-c ادامه بارگذاری قوانین با وجود بروز خطا. این گزینه نتایج بارگذاری قوانین را خلاصه می‌کند. اگر بارگذاری هر قانونی با شکست مواجه شود، کد خروج موفقیت‌آمیز نخواهد بود. .TP .B \-D حذف تمام قوانین و نظارت‌ها (watches). این گزینه می‌تواند گزینه کلید .RB ( \-k ) را نیز بپذیرد. .TP \fB\-e\fP [\fB0\fP..\fB2\fP] تنظیم پرچم فعال‌سازی. ارسال مقدار \fB0\fP می‌تواند برای غیرفعال کردن موقت حسابرسی استفاده شود. اگر \fB1\fP به عنوان آرگومان ارسال شود، حسابرسی را فعال می‌کند. برای قفل کردن پیکربندی حسابرسی به گونه‌ای که نتوان آن را تغییر داد، مقدار \fB2\fP را به عنوان آرگومان ارسال کنید. قفل کردن پیکربندی معمولاً به عنوان آخرین دستور در audit.rules برای کسانی که خواهان فعال بودن این ویژگی هستند در نظر گرفته شده است. هر تلاشی برای تغییر پیکربندی در این حالت ثبت حسابرسی شده و رد خواهد شد. پیکربندی تنها با راه‌اندازی مجدد ماشین قابل تغییر است. .TP \fB\-f\fP [\fB0\fP..\fB2\fP] تنظیم حالت شکست (failure mode): .br \fB0\fP=silent \fB1\fP=printk \fB2\fP=panic. این گزینه به شما اجازه می‌دهد تعیین کنید که چگونه می‌خواهید هسته خطاهای بحرانی را مدیریت کند. نمونه شرایطی که این حالت ممکن است در آن‌ها تأثیرگذار باشد عبارتند از: خطاهای انتقال به دیمن حسابرسی فضای کاربر، فراتر رفتن از حد بافر معوقه، اتمام حافظه هسته، و فراتر رفتن از حد نرخ ارسال. مقدار پیش‌فرض \fB1\fP است. محیط‌های امن احتمالاً مایل خواهند بود این مقدار را روی \fB2\fP تنظیم کنند. .TP .B \-h,\ \-\-help راهنما .TP .B \-i هنگامی که به تنهایی استفاده شود، خطاها را هنگام خواندن قوانین از یک فایل نادیده می‌گیرد. این امر باعث می‌شود auditctl همیشه کد خروج موفقیت‌آمیز بازگرداند. اگر به عنوان یک آرگومان برای .B \-s ارسال شود، در صورت امکان اعداد را به کلمات قابل خواندن برای انسان تفسیر می‌کند. .TP .BI \-\-loginuid-immutable این گزینه به هسته اعلام می‌کند که loginuids را پس از تنظیم غیرقابل تغییر کند. تغییر دادن loginuids نیازمند مجوز CAP_AUDIT_CONTROL است، بنابراین توسط کاربران بدون امتیاز قابل انجام نیست. تنظیم این گزینه loginuid را در برابر دستکاری ایمن می‌کند، اما می‌تواند در انواع خاصی از کانتینرها مشکلاتی به وجود آورد. .TP .BI \-q\ mount-point,subtree اگر یک نظارت دایرکتوری از قبل موجود دارید و زیردرخت دیگری را با bind یا move روی زیردرخت تحت نظارت متصل (mount) کنید، باید به هسته بگویید زیردرختی را که متصل می‌شود معادل دایرکتوری تحت نظارت قرار دهد. اگر زیردرخت در زمان اعمال نظارت دایرکتوری از قبل متصل شده باشد، زیردرخت به صورت خودکار برای نظارت نشانه‌گذاری می‌شود. لطفاً به کامایی که دو مقدار را از هم جدا می‌کند توجه داشته باشید؛ حذف آن باعث ایجاد خطا می‌شود. .TP .BI \-r\ rate تنظیم محدودیت بر حسب پیام در ثانیه (\fB0\fP=none). اگر این \fIrate\fP غیر صفر باشد و از آن فراتر رود، هسته برای اقدام به پرچم شکست مراجعه می‌کند. مقدار پیش‌فرض \fB0\fP است. .TP .BI \-\-reset-lost بازنشانی شمارنده رکوردهای از دست رفته که توسط دستور وضعیت نشان داده می‌شود. .TP .BI \-R\ file خواندن و اجرای دستورات auditctl از یک \fIfile\fP. دستورات به صورت خط به خط و به همان ترتیبی که در فایل ظاهر می‌شوند اجرا می‌شوند. مالک فایل باید root باشد و نباید توسط کاربران دیگر قابل خواندن باشد، در غیر این صورت رد خواهد شد. خطوط خالی نادیده گرفته می‌شوند. خطوطی که با کاراکتر '#' آغاز می‌شوند به عنوان خطوط توضیح در نظر گرفته می‌شوند. هر خط به گونه‌ای اجرا می‌شود که گویی به عنوان آرگومان‌های خط فرمان به auditctl داده شده است. از آنجا که auditctl فایل را می‌خواند و نه پوسته‌ای مانند bash، کاراکترهای ویژه پوسته را اسکیپ نکنید. برای دیدن یک مثال به بخش «مثالها» مراجعه کنید. .TP .BI \-\-signal\ signal ارسال یک سیگنال به دیمن حسابرسی. برای انجام این کار باید دارای مجوز باشید. سیگنال‌های پشتیبانی‌شده عبارتند از: .I TERM, HUP, USR1, USR2, CONT و نگارش‌های کاربرپسندتر: .IR stop , .IR reload , .IR rotate , .IR resume , .IR state . .TP .BI \-t کوتاه کردن (trim) زیردرخت‌ها پس از یک دستور mount. .SH "گزینههای وضعیت (STATUS OPTIONS)" .TP .B \-l فهرست کردن تمام قوانین به صورت ۱ قانون در هر خط. دو گزینه دیگر می‌توان به این دستور داد: می‌توانید گزینه کلید .RB ( \-k ) را برای فهرست کردن قوانینی که با یک کلید مطابقت دارند، یا گزینه .RB ( \-i ) را برای تفسیر آرگومان‌های a0 تا a3 به منظور کمک به بررسی درستی مقادیر آرگومان‌های فراخوانی سیستم مشخص کنید. .TP .BI \-m\ text ارسال یک پیام فضای کاربر به درون سیستم حسابرسی. این کار تنها در صورتی امکان‌پذیر است که قابلیت CAP_AUDIT_WRITE را داشته باشید (معمولاً کاربر root این قابلیت را دارد). رویداد حاصل از نوع USER خواهد بود. .TP .B \-s گزارش وضعیت زیرسیستم حسابرسی هسته. این گزینه مقادیر درون هسته را که می‌توان توسط گزینه‌های \fB\-e\fP، \fB\-f\fP، \fB\-r\fP و \fB\-b\fP تنظیم کرد گزارش می‌دهد. مقدار pid شناسه فرآیند دیمن حسابرسی است. توجه داشته باشید که pid برابر با 0 نشان‌دهنده در حال اجرا نبودن دیمن حسابرسی است. مدخل lost نشان می‌دهد چه تعداد رکورد رویداد به دلیل سرریز شدن صف حسابرسی هسته دور ریخته شده است. فیلد backlog مشخص می‌کند چه تعداد رکورد رویداد در حال حاضر در صف منتظر خوانده شدن توسط auditd هستند. این گزینه می‌تواند با \fB\-i\fP همراه شود تا چند فیلد تفسیر شوند. .TP .BI \-v چاپ نسخه auditctl. .SH "گزینههای قوانین (RULE OPTIONS)" .TP .BI \-a\ [ list,action | action,list ] الحاق قانون به انتهای \fIlist\fP با اقدام \fIaction\fP. لطفاً به کامایی که دو مقدار را از هم جدا می‌کند توجه داشته باشید؛ حذف آن باعث ایجاد خطا خواهد شد. ترتیب فیلدها اهمیتی ندارد؛ می‌تواند list,action یا action,list باشد. در ادامه نام‌های معتبر \fIlist\fP شرح داده شده است: .RS .TP 12 .B task افزودن قانون به فهرست به ازای هر تسک (per task list). این فهرست قوانین تنها در زمان ایجاد تسک استفاده می‌شود -- زمانی که fork() یا clone() توسط تسک والد فراخوانی می‌شوند. هنگام استفاده از این فهرست، تنها باید از فیلدهایی استفاده کنید که در زمان ایجاد تسک مشخص هستند، مانند uid، gid و غیره. .TP .B exit افزودن قانون به فهرست خروج از فراخوانی سیستم (syscall exit list). این فهرست پس از خروج از یک فراخوانی سیستم برای تعیین این‌که آیا باید یک رویداد حسابرسی ایجاد شود یا خیر استفاده می‌شود. .TP .B user افزودن قانون به فهرست فیلتر پیام کاربر. این فهرست توسط هسته برای فیلتر کردن رویدادهای سرچشمه‌گرفته از فضای کاربر پیش از ارسال آن‌ها به دیمن حسابرسی به کار می‌رود. لازم به ذکر است که تنها فیلدهای معتبر عبارتند از: uid، auid، gid، pid، subj_user، subj_role، subj_type، subj_sen، subj_clr، msgtype و نام فایل اجرایی (executable name). با تمامی فیلدهای دیگر به عنوان عدم تطابق رفتار خواهد شد. باید توجه داشت که هر رویدادی که از فضای کاربر توسط فرآیندی با مجوز CAP_AUDIT_WRITE سرچشمه بگیرد در ردپای حسابرسی ثبت خواهد شد. این بدان معناست که محتمل‌ترین کاربرد برای این فیلتر، قوانینی با اقدام never است؛ زیرا برای مجاز بودن ثبت رویدادها نیازی به انجام کاری نیست. .TP .B exclude افزودن قانون به فهرست فیلتر استثنای نوع رویداد. این فهرست برای فیلتر کردن رویدادهایی که مایل به دیدن آن‌ها نیستید استفاده می‌شود. به عنوان مثال، اگر نمی‌خواهید هیچ پیام avc را مشاهده کنید، از این فهرست برای ثبت آن استفاده می‌کنید. رویدادها را می‌توان بر اساس شناسه فرآیند (process ID)، شناسه کاربر (user ID)، شناسه گروه (group ID)، شناسه کاربر ورود (login user ID)، نوع پیام (message type)، بستر سوژه (subject context)، یا نام فایل اجرایی مستثنی کرد. اقدام (action) نادیده گرفته می‌شود و از مقدار پیش‌فرض خود یعنی "never" استفاده می‌کند. .TP .B filesystem افزودن قانونی که بر روی کل یک سیستم‌فایل اعمال خواهد شد. سیستم‌فایل باید با فیلد fstype مشخص شود. به طور معمول این فیلتر برای مستثنی کردن تمامی رویدادها برای کل یک سیستم‌فایل مانند tracefs یا debugfs استفاده می‌شود. .TP .B io_uring افزودن قانون به فیلتر فراخوانی سیستم io_uring. قوانین در این فیلتر عملیات فراخوانی سیستم را با استفاده از ساختار -S syscall که در زیر شرح داده شده مشخص می‌کنند. می‌توانید یک فیلد key به قانون اضافه کنید تا بتوان آن را با سایر قوانین ناظر بر همان فراخوانی سیستم پایه گروه‌بندی کرد. .RE در ادامه اقدامات \fIactions\fP معتبر برای قانون شرح داده شده است: .RS .TP 12 .B never هیچ رکورد حسابرسی تولید نخواهد شد. از این گزینه می‌توان برای متوقف ساختن تولید رویداد استفاده کرد. به طور کلی، بهتر است موارد توقف را در ابتدای فهرست قرار دهید تا انتهای آن؛ چرا که رویداد با نخستین قانون منطبق فعال می‌شود. .TP .B always تخصیص یک بافتار حسابرسی (audit context)، پر کردن همیشگی آن در زمان ورود به فراخوانی سیستم، و نوشتن همیشگی یک رکورد در زمان خروج از فراخوانی سیستم. .RE .TP .BI \-A\ list , action افزودن قانون به ابتدای \fIlist\fP با اقدام \fIaction\fP. .TP \fB\-C\fP [\fIf\fP\fB=\fP\fIf\fP | \fIf\fP\fB!=\fP\fIf\fP] ساخت یک قانون مقایسه بین‌فیلدی: فیلد، عملیات، فیلد. می‌توانید چندین مقایسه را در یک خط فرمان ارسال کنید. هر یک از آن‌ها باید با \fB\-C\fP آغاز شود. هر معادله بین‌فیلدی با یکدیگر و همچنین با معادلات آغازشونده با \fB\-F\fP با عملگر AND ترکیب می‌شود تا ثبت یک رکورد حسابرسی را فعال کند. ۲ عملگر پشتیبانی می‌شود: مساوی (=) و نامساوی (!=). فیلدهای معتبر عبارتند از: .RS .TP 12 .B auid, uid, euid, suid, fsuid, obj_uid; and gid, egid, sgid, fsgid, obj_gid .RE .RS دو گروه uid و gid نمی‌توانند با یکدیگر ترکیب شوند، اما هرگونه مقایسه‌ای درون هر گروه مجاز است. فیلدهای obj_uid/gid از شیء رویداد مانند یک فایل یا دایرکتوری جمع‌آوری می‌شوند. .RE .TP .BI \-d\ list , action حذف قانون از \fIlist\fP با اقدام \fIaction\fP. قانون تنها در صورتی حذف می‌شود که دقیقاً با نام (یا نام‌های) فراخوانی سیستم و تک‌تک نام‌ها و مقادیر فیلدها مطابقت داشته باشد. .TP \fB\-F\fP [\fIn\fP\fB=\fP\fIv\fP | \fIn\fP\fB!=\fP\fIv\fP | \fIn\fP\fB<\fP\fIv\fP | \fIn\fP\fB>\fP\fIv\fP | \fIn\fP\fB<=\fP\fIv\fP | \fIn\fP\fB>=\fP\fIv\fP | \fIn\fP\fB&\fP\fIv\fP | \fIn\fP\fB&=\fP\fIv\fP] ساخت یک فیلد قانون: نام، عملیات، مقدار. می‌توانید تا ۶۴ فیلد را در یک خط فرمان ارسال کنید. هر یک باید با \fB\-F\fP آغاز شود. هر معادله فیلد با یکدیگر (و همچنین با معادلات آغازشونده با \fB\-C\fP) با عملگر AND ترکیب می‌شود تا ثبت یک رکورد حسابرسی را فعال کند. ۸ عملگر به ترتیب پشتیبانی می‌شوند: مساوی، نامساوی، کوچکتر، بزرگتر، کوچکتر یا مساوی، بزرگتر یا مساوی، ماسک بیتی، و تست بیتی. تست بیتی مقادیر را با AND ترکیب کرده و برابری آن‌ها را بررسی می‌کند؛ ماسک بیتی صرفاً مقادیر را AND می‌کند. فیلدهایی که شناسه کاربر را می‌پذیرند می‌توانند به جای آن نام کاربر را داشته باشند؛ برنامه نام را به شناسه کاربر تبدیل می‌کند. همین موضوع برای نام گروه‌ها نیز صادق است. فیلدهای معتبر عبارتند از: .RS .TP 12 .B a0, a1, a2, a3 به ترتیب، ۴ آرگومان نخست برای یک فراخوانی سیستم. توجه داشته باشید که آرگومان‌های رشته‌ای پشتیبانی نمی‌شوند؛ چرا که به هسته یک اشاره‌گر به رشته داده می‌شود و فعال‌سازی روی مقدار آدرس یک اشاره‌گر بعید است کارایی داشته باشد. بنابراین هنگام استفاده از این فیلدها، تنها باید از مقادیر عددی استفاده کنید. این فیلدها به احتمال زیاد در پلتفرم‌هایی که عملیات سوکت یا IPC را مالتی‌پلکس می‌کنند کاربرد دارند. .TP .B arch معماری پردازنده (CPU) فراخوانی سیستم. معماری را می‌توان با اجرای 'uname \-m' به دست آورد. اگر معماری سیستم خود را نمی‌دانید اما می‌خواهید از جدول فراخوانی سیستم ۳۲ بیتی استفاده کنید و سیستم شما از ۳۲ بیت پشتیبانی می‌کند، می‌توانید از .B b32 برای arch استفاده کنید. همین موضوع برای جدول فراخوانی سیستم ۶۴ بیتی نیز صدق می‌کند که می‌توانید از .B b64 استفاده کنید. به این ترتیب می‌توانید قوانینی بنویسید که تا حدودی مستقل از معماری باشند، زیرا نوع خانواده به صورت خودکار شناسایی می‌شود. با این حال، فراخوانی‌های سیستم می‌توانند وابسته به معماری باشند و آنچه در x86_64 در دسترس است ممکن است در ppc موجود نباشد. دستور arch باید پیش از گزینه .B \-S قرار گیرد تا auditctl بداند از کدام جدول داخلی برای جستجوی شماره‌های فراخوانی سیستم استفاده کند. .TP .B auid شناسه اصلی کاربری که با آن وارد سیستم شده است (مخفف audit uid). گاهی به آن loginuid نیز گفته می‌شود. می‌توان از متن حساب کاربری یا شماره آن استفاده کرد. .TP .B devmajor شماره اصلی دستگاه (Device Major Number). .TP .B devminor شماره فرعی دستگاه (Device Minor Number). .TP .B dir مسیر کامل دایرکتوری برای نظارت. این کار یک نظارت بازگشتی بر روی دایرکتوری و کل زیردرخت آن قرار می‌دهد. این فیلد تنها در فهرست exit قابل استفاده است. گزینه .RB "\fB\-w\fP" را ببینید. .TP .B egid شناسه گروه مؤثر (Effective Group ID). می‌تواند عددی یا نام گروه باشد. .TP .B euid شناسه کاربر مؤثر (Effective User ID). می‌تواند عددی یا نام حساب کاربری باشد. .TP .B exe مسیر مطلق به برنامه‌ای که این قانون هنگام اجرای آن اعمال خواهد شد. از عملگرهای = و != پشتیبانی می‌کند. توجه داشته باشید که برای هر قانون تنها یک بار می‌توانید از این گزینه استفاده کنید. .TP .B exit مقدار خروجی از یک فراخوانی سیستم. اگر کد خروج یک errno باشد، می‌توانید از نمایش متنی آن نیز استفاده کنید. .TP .B fsgid شناسه گروه سیستم‌فایل (Filesystem Group ID). می‌تواند عددی یا نام گروه باشد. .TP .B fstype نوع سیستم‌فایل. این فیلد با فهرست قوانین filesystem استفاده می‌شود. تنها مقادیر پشتیبانی‌شده عبارتند از: cgroup، cgroup2، debugfs و tracefs. .TP .B fsuid شناسه کاربر سیستم‌فایل (Filesystem User ID). می‌تواند عددی یا نام حساب کاربری باشد. .TP .B filetype نوع فایل هدف. می‌تواند file، dir، socket، link، character، block یا fifo باشد. .TP .B gid شناسه گروه (Group ID). می‌تواند عددی یا نام گروه باشد. .TP .B inode شماره Inode. .TP .B key تنظیم یک کلید فیلتر بر روی یک قانون حسابرسی. کلید فیلتر یک رشته متنی دلخواه تا ۳۱ بایت است. این کلید می‌تواند رکوردهای حسابرسی تولیدشده توسط یک قانون را به طور یکتا مشخص کند. کاربرد معمول آن زمانی است که چندین قانون دارید که در کنار یکدیگر یک الزام امنیتی را برآورده می‌سازند. مقدار کلید را می‌توان با ausearch جستجو کرد تا بدون توجه به این‌که کدام قانون رویداد را فعال کرده است، نتایج آن را بیابید. همچنین می‌توان از کلید در حذف همه قوانین .RB ( \-D ) و فهرست کردن قوانین .RB ( \-l ) برای انتخاب قوانینی با یک کلید مشخص استفاده کرد. اگر می‌خواهید رویدادهای ثبت‌شده را به روش‌های مختلف جستجو کنید یا پلاگینی برای auditd دارید که برای کمک به تحلیل خود از کلید استفاده می‌کند، می‌توانید بیش از یک کلید در یک قانون داشته باشید. .TP .B msgtype این فیلد برای مطابقت با نوع رکورد رویداد استفاده می‌شود و تنها باید در فهرست‌های فیلتر exclude یا user به کار رود. .TP .B obj_uid شناسه کاربر شیء (Object's UID). .TP .B obj_gid شناسه گروه شیء (Object's GID). .TP .B obj_user کاربر SELinux منبع (Resource's SE Linux User). .TP .B obj_role نقش SELinux منبع (Resource's SE Linux Role). .TP .B obj_type نوع SELinux منبع (Resource's SE Linux Type). .TP .B obj_lev_low سطح پایین SELinux منبع (Resource's SE Linux Low Level). .TP .B obj_lev_high سطح بالای SELinux منبع (Resource's SE Linux High Level). .TP .B path درج یک نظارت برای شیء سیستم‌فایل در \fIpath\fP. شما نمی‌توانید نظارتی روی دایرکتوری سطح بالا (top level directory) درج کنید؛ این کار توسط هسته ممنوع شده است. کاراکترهای عمومی (Wildcards) نیز پشتیبانی نمی‌شوند و هشدار تولید خواهند کرد. شیوه عملکرد نظارت‌ها از طریق ردیابی داخلی inode است. این فیلد تنها در فهرست exit قابل استفاده است. .TP .B perm فیلتر مجوز برای عملیات فایل. نوع دسترسی را که نظارت بر سیستم‌فایل بر اساس آن فعال می‌شود مشخص کنید: \fBr\fP=read، \fBw\fP=write، \fBx\fP=execute، \fBa\fP=attribute change. این مجوزها، مجوزهای استاندارد فایل نیستند؛ بلکه نوع فراخوانی سیستمی هستند که چنین کاری را انجام می‌دهد. فراخوانی‌های سیستم خواندن و نوشتن از این مجموعه حذف شده‌اند چرا که لاگ‌ها را بیش از حد شلوغ می‌کردند؛ در عوض برای خواندن یا نوشتن، فلگ‌های open بررسی می‌شوند تا مشخص شود چه مجوزی درخواست شده است. فیلد perm تنها در فهرست exit قابل استفاده است. می‌توانید بدون مشخص کردن فراخوانی سیستم از این گزینه استفاده کنید و هسته فراخوانی‌های سیستمی را که مجوزهای درخواستی را برآورده می‌کنند انتخاب خواهد کرد. این کار همچنین نیازمند ارائه یک پارامتر arch پیش از فیلد perm است تا هسته بتواند فراخوانی‌های سیستم مورد نیاز را بهتر تعیین کند. عدم ارائه arch باعث می‌شود .B تمامی فراخوانی‌های سیستم مشمول حسابرسی شوند که این امر کارایی سیستم را کاهش می‌دهد. .TP .B pers شماره ویژگی سیستم‌عامل (OS Personality Number). .TP .B pid شناسه فرآیند (Process ID). .TP .B ppid شناسه فرآیند والد (Parent's Process ID). .TP .B saddr_fam شماره خانواده آدرس همان‌گونه که در مسیر /usr/include/bits/socket.h مشخص شده است. برای نمونه، IPv4 برابر ۲ و IPv6 برابر ۱۰ خواهد بود. .TP .B sessionid شناسه نشست ورود کاربر (User's login session ID). .TP .B subj_user کاربر SELinux برنامه (Program's SE Linux User). .TP .B subj_role نقش SELinux برنامه (Program's SE Linux Role). .TP .B subj_type نوع SELinux برنامه (Program's SE Linux Type). .TP .B subj_sen حساسیت SELinux برنامه (Program's SE Linux Sensitivity). .TP .B subj_clr سطح شفافیت SELinux برنامه (Program's SE Linux Clearance). .TP .B sgid شناسه گروه ذخیره‌شده (Saved Group ID). صفحه راهنمای .BR getresgid (2) را ببینید. .TP .B success اگر مقدار خروجی >= 0 باشد این مقدار true/yes است، در غیر این صورت false/no می‌باشد. هنگام نوشتن قانون، از 1 برای true/yes و از 0 برای false/no استفاده کنید. .TP .B suid شناسه کاربر ذخیره‌شده (Saved User ID). صفحه راهنمای .BR getresuid (2) را ببینید. .TP .B uid شناسه کاربر (User ID). می‌تواند عددی یا نام حساب کاربری باشد. .RE .TP .BI \-k\ key تنظیم یک کلید فیلتر روی یک قانون حسابرسی. این شیوه هنگام استفاده با نظارت‌ها (watches) منسوخ شده است. نظارت‌ها را به شکل قوانین فراخوانی سیستم تبدیل کنید. این گزینه همچنان برای استفاده با حذف یا فهرست کردن قوانین معتبر است. .TP \fB\-p\fP [\fBr\fP|\fBw\fP|\fBx\fP|\fBa\fP] توصیف نوع دسترسی مجوزی که نظارت سیستم‌فایل بر اساس آن فعال می‌شود. این گزینه منسوخ شده است؛ نظارت‌ها را به شکل فراخوانی سیستم تبدیل کنید. .TP \fB\-S\fP [\fISyscall name or number\fP|\fBall\fP] هر \fIname\fP یا \fInumber\fP فراخوانی سیستم می‌تواند استفاده شود. کلمه .B all نیز می‌تواند استفاده شود. اگر فراخوانی سیستم مشخص‌شده توسط برنامه‌ای انجام شود، یک رکورد حسابرسی آغاز خواهد شد. اگر یک قانون فیلد داده شود و هیچ فراخوانی سیستمی مشخص نشود، به صورت پیش‌فرض تمام فراخوانی‌های سیستم را شامل خواهد شد. همچنین می‌توانید با استفاده از چندین گزینه .B \-S در یک قانون، چند فراخوانی سیستم را مشخص کنید. انجام این کار کارایی را افزایش می‌دهد زیرا قوانین کمتری نیاز به ارزیابی خواهند داشت. به عنوان روشی جایگزین، می‌توانید فهرستی از نام‌های فراخوانی سیستم جداشده با کاما را ارسال کنید. اگر بر روی یک سیستم دو معماری (مانند x86_64) هستید، باید آگاه باشید که auditctl صرفاً متن را می‌گیرد، آن را برای معماری بومی (در این مورد b64) جستجو می‌کند و آن قانون را به هسته می‌فرستد. اگر هیچ دستور arch دیگری وجود نداشته باشد، .B بر روی فراخوانی‌های سیستم ۳۲ و ۶۴ بیتی اعمال خواهد شد. این مسئله می‌تواند اثرات نامطلوبی داشته باشد زیرا هیچ تضمینی وجود ندارد که یک فراخوانی سیستم در هر دو رابط ۳۲ و ۶۴ بیتی شماره یکسانی داشته باشد. احتمالاً مایل خواهید بود این مورد را کنترل کرده و ۲ قانون بنویسید: یکی با arch برابر با b32 و دیگری با b64 تا مطمئن شوید هسته رویدادهای مد نظر شما را می‌یابد. برای اطلاعات بیشتر به توضیحات فیلد arch مراجعه کنید. .TP .BI \-w\ path قرار دادن یک نظارت بر روی path. اگر مسیر یک فایل باشد، تقریباً معادل استفاده از گزینه .B \-F path در یک قانون فراخوانی سیستم است. اگر نظارت بر روی یک دایرکتوری باشد، تقریباً معادل استفاده از گزینه .B \-F dir در یک قانون فراخوانی سیستم است. شیوه .B \-w برای نوشتن نظارت‌ها برای سازگاری با گذشته در نظر گرفته شده و .B به دلیل کارایی ضعیف سیستم منسوخ شده است. نظارت‌های این چنینی را به شکل مبتنی بر فراخوانی سیستم تبدیل کنید. تنها گزینه‌های معتبر هنگام استفاده از یک نظارت، .B \-p و .B \-k هستند. .TP .BI \-W\ path حذف یک نظارت برای شیء سیستم‌فایل در \fIpath\fP. قانون باید دقیقاً مطابقت داشته باشد. برای اطلاعات بیشتر توضیحات .B \-d را ببینید. .SH "نکات کارایی (PERFORMANCE TIPS)" قوانین فراخوانی سیستم برای هر فراخوانی سیستم در هر برنامه ارزیابی می‌شوند. اگر ۱۰ قانون فراخوانی سیستم داشته باشید، هر برنامه بر روی سیستم شما در حین فراخوانی سیستم دچار تأخیر می‌شود در حالی که سیستم حسابرسی تک‌تک قوانین را ارزیابی می‌کند. تعداد بیش از حد قوانین فراخوانی سیستم به کارایی آسیب می‌زند. سعی کنید هر زمان که فیلتر، اقدام، کلید و فیلدها یکسان هستند، تا حد امکان آن‌ها را ادغام کنید. برای نمونه: .nf .B auditctl \-a always,exit \-F arch=b64 \-S openat \-F success=0 .fi .nf .B auditctl \-a always,exit \-F arch=b64 \-S truncate \-F success=0 .fi می‌تواند به صورت یک قانون بازنویسی شود: .nf .B auditctl \-a always,exit \-F arch=b64 \-S openat \-S truncate \-F success=0 .fi همچنین سعی کنید تا جای ممکن از حسابرسی سیستم‌فایل استفاده کنید. این کار کارایی را بهبود می‌بخشد. برای نمونه، اگر می‌خواهید مانند بالا تمام openها و truncateهای ناموفق را ضبط کنید، اما تنها به فایل‌های موجود در /etc اهمیت می‌دهید و فایل‌های /usr یا /sbin برایتان مهم نیستند، استفاده از این قانون ممکن است: .nf .B auditctl \-a always,exit \-F arch=b64 \-S openat,truncate \-F dir=/etc \-F success=0 .fi این کارایی بالاتری خواهد داشت زیرا هسته آن را در تک‌تک فراخوانی‌های سیستم ارزیابی نخواهد کرد. این مورد توسط کد حسابرسی سیستم‌فایل مدیریت شده و تنها در فراخوانی‌های سیستم مرتبط با سیستم‌فایل بررسی می‌شود. .SH "مثالها (EXAMPLES)" برای مشاهده تمامی فراخوانی‌های سیستم انجام‌شده توسط یک برنامه خاص: .nf # By pid: .B auditctl \-a always,exit \-S all \-F pid=1005 # By executable path .B auditctl \-a always,exit \-S all \-F exe=/usr/bin/ls .fi برای مشاهده فایل‌های بازشده توسط یک کاربر خاص: .nf .B auditctl \-a always,exit \-S openat \-F auid=510 .fi برای مشاهده فراخوانی‌های ناموفق openat: .nf .B auditctl \-a always,exit \-S openat \-F success=0 .fi برای نظارت بر تغییرات یک فایل (۲ روش برای بیان): .nf .B auditctl \-w /etc/shadow \-p wa # Note this slows the system .B auditctl \-a always,exit \-F arch=b64 \-F path=/etc/shadow \-F perm=wa .fi برای نظارت بازگشتی بر تغییرات یک دایرکتوری (۲ روش برای بیان): .nf .B auditctl \-w /etc/ \-p wa # Note this slows the system .B auditctl \-a always,exit \-F arch=b64 \-F dir=/etc/ \-F perm=wa .fi برای بررسی این‌که آیا یک مدیر به فایل‌های کاربران دیگر دسترسی دارد یا خیر: .nf .B auditctl \-a always,exit \-F dir=/home/ \-F uid=0 \-C auid!=obj_uid .fi این یک نمونه از فایل قوانین است: .nf # Remove all existing rules \-D # Never record sudo invocations \-A exclude,always \-F exe=/usr/bin/sudo .fi .SH "غیرفعال بهصورت پیشفرض (DISABLED BY DEFAULT)" در بسیاری از سیستم‌ها auditd به گونه‌ای پیکربندی شده است که یک قانون .B \-a never,task را به صورت پیش‌فرض نصب کند. این قانون باعث می‌شود هر فرآیند جدید از تمام پردازش‌های قوانین حسابرسی صرف‌نظر کند. این کار معمولاً برای جلوگیری از بار اضافی اندک ناشی از حسابرسی فراخوانی‌های سیستم انجام می‌شود. اگر می‌خواهید از auditd استفاده کنید، باید با حذف 10-no-audit.rules و افزودن 10-base-config.rules به دایرکتوری قوانین حسابرسی، آن قانون را حذف کنید. اگر قوانین حسابرسی تعریف کرده‌اید که در زمان مورد انتظار مطابقت نمی‌یابند، دستور .B auditctl \-l را بررسی کنید تا مطمئن شوید قانون never,task در آنجا وجود ندارد. .SH "فایلها (FILES)" .TP .I /etc/audit/audit.rules /etc/audit/audit-stop.rules .SH "همچنین ببینید (SEE ALSO)" .BR audit.rules (7), .BR ausearch (8), .BR aureport (8), .BR auditd (8). .SH "نویسنده (AUTHOR)" Steve Grubb