امیر اعزازی
امیر اعزازی
خواندن ۴ دقیقه·۲ سال پیش

تجربه های شخصی برای دریافت مجوز مکنا (۴)

اول سلام، دوم ممنون بابت پیگیریها، لایکها و نظرات خوبتون در لینکدین و ویرگول، سوم عذر تقصیر بابت غیبت طولانی مدتم.

بخش سوم (پیگیری تغییرات فایلها Audit)

یکی از ابزارهای مرسوم برای پیگیری تغییرات بر روی فایل ها در سیستم عامل لینوکس، مانند تغییر محتوا، حذف یا اضافه کردن یک فایل از یا به یک مسیر خاص و موارد اینچنینی رو با ابزار audit در لینوکس و ویندوز رهگیری و ثبت میکنند. برای مثال فرض کنید می خواهید پیگیری کنید چه افرادی فایل etc/passwd/ را توسط چه ابزار (مانند tail, head, nano یا vi) در چه زمان و تاریخی خوانده اند. توسط ابزار audit و تعریف یک رول بر روی فایل مربوطه اطلاعات فوق ثبت می شوند. audit دارای یک فرایند پس زمینه به نام auditd است که تمامی کنترل های لازم را انجام می دهد. همچنین شامل دو فایل auditd.conf که فایل پیکربندی تنظیمات فرایند پس زمینه auditd و فایل audit.rules که مربوط به تعریف رول‌هایی است که در زمان راه اندازی خوانده و بارگذاری می شوند. اگر ابزار audit روی سیستم عامل شما نصب نیست، می‌توانید توسط دستورهای زیر به ترتیب در توزیع های مبتنی بر ردهت و توزیع های مبتنی بر دبیان اقدام به نصب این ابزار کنید.

  • yum install audit
  • apt-get install audit

بعد از نصب و فعال کردن سرویس، باید رولهای مدنظر خودتون را تعریف کنید. برای انجام این مورد به صورت دستی با تغییر دادن فایل audit.rules و یا با استفاده از دستور auditctl این کار قابل انجام خواهد بود. برای مثال دستور زیر با استفاده از auditctl یک رول بر روی فایل etc/passwd/ تعریف می کند.

  • auditctl -w /etc/passwd -k passwd -p ra

سوئیچ w- برای معرفی مسیر کامل فایل مدنظرتون و سوئیچ k- برای تعریف یک فیلتر که یک رشته منحصر به فرد برای شناختن رول مدنظرتون خواهد بود تعریف می کند. توسط این رشته منحصر به فرد، یک رول خاص را از میان چندین رول برای گرفتن اطلاعاتی از آن توسط دستور ausearch استفاده می کنیم. جلوی سوئیچ p- بر اساس نیاز شما یکی از مقدارهای زیر قرار می‌گیرد.

  • مقدار r یا read: هر وقت فایل خوانده شد نام و گروه اصلی کاربر و زمان و تاریخ و دستوری که با آن فایل را خوانده ثبت می کند.
  • مقدار w یا write: هر وقت بر روی فایل نوشته شد (تغییر کرد) نام و گروه اصلی کاربر و زمان و تاریخ و دستوری که با آن بر روی فایل نوشته است را ثبت می کند.
  • مقدار a یا attribute: هر وقت یکی از خصوصیت های فایل تغییر کرد نام و گروه اصلی کاربر تغییر دهنده خصوصیت فایل و زمان و تاریخ تغییر خصوصیت ثبت می کند.
  • مقدار x یا execute: هر وقت فایلی اجرا شد (مانند اجرای یک اسکریپت) نام و گروه کاربر اجرا کننده و زمان و تاریخ اجرا را ثبت می کند.

یادتون باشه پس از هر تغییر روی رولهای فایل audit.rules حتما باید سرویس auditd را restart کنید. برای انجام این کار هم میتونید از هرکدوم از دستورات زیر که خواستید استفاده کنید.

  • /etc/init.d/auditd restart
  • service auditd restart

خب تا اینجا مفهوم audit رو کامل فهمیدیم، روش تنظیم audit را یاد گرفتیم و راه اندازی مجدد سرویسش را هم انجام دادیم. حالا بریم سراغ اینکه برای مکنا لازمه ما چه بخشهایی از سیستم را audit کنیم.

اصولا مکنا بر اساس آخرین نسخه کتابهای CIS اقدام به کنترل audit برنامه ها و فایلهاتون میکنه ولی اگر بخوام به طور خلاصه بهتون یک لیست مختصر بدم تا سرعت کارتون در انجام این روند بالاتر بره میتونم به موارد زیر اشاره کنم:

  • فایل مربوط به اطلاعات کاربران و گروههای سیستم
  • کلیه فایلهای مربوط به داکر، تنظیمات، کانتینرها، سکرت کدها، و داکر کامپوزها
  • کلیه فایل تنظیمات دیتابیسهای mysql یا pgsql
  • کلیه تنظیمات grub و بوت سیستم عامل
  • کلیه فایلهای تنظیمات audit
  • کلیه فایلهای تنظیمات شبکه، هاست، sudoer و ....


نکته مهم ۱: مسیرهایی که به audit اضافه میکنید را حتما چک کنید که روی سیستم وجود داشته باشند، به عنوان تجربه خودم یکی از مسیرهای مخصوص داکر رو بر اساس کتاب CIS به audit اضافه کردم در حالی که اون فایل روی سیستم عامل سرور من موجود نبود و همین عامل باعث شده بود تا audit نتونه اون فایل رو پیدا بکنه و دچار مشکل بشه، جالب اینجا بود که سرویس audit با خطا مواجه نشده بود و داشت کارش رو بدرستی انجام میداد اما بر اساس دستور زیر:

  • grep modules /etc/audit/audit.rules

که برای تست رولهای audit استفاده میشه موقع تست این بخش توسط مکنا هیچ خروجی نگرفتیم و کارشناس مکنا نتیجه گرفت که سرویس audit ما روی داکر فعال نیست و باعث به تاخیر افتادن تایید اون بخش از روند بررسی مکنا شد. پس حتما و حتما مسیرهایی که به رولهای audit اضافه میکنید رو بررسی کنید تا دچار این مشکل نشوید.

نکته مهم ۲: برای اضافه کردن رولهایی مورد نظر خودتون حتما اونها را به صورت گروه بندی شده در فایلهای مجزا در مسیر زیر

  • /etc/audit/auditd.d/

اضافه کنید. خود auditd به صورت اتوماتیک بعد از راه اندازی مجدد، تجمیع تمام تنظیمات اعمال شده در مسیر فوق را به فایل audit.rules اضافه میکند و اگر فایلی در مسیر بالا نداشته باشید و یا تنظیمات خودتون رو به صورت دستی در فایل audit.rules وارد کرده باشید به صورت کامل پاک میکنه و به حالت پیش فرض برمی‌گردونه، پس یادتون باشه حتما و حتما رولهای خودتون را به صورت مرتب (برای راحتی خودتون در جستجو) و حل این روند تصمیم گیری audit بعد از هر راه اندازی مجدد در مسیر ذکر شده در بالا ذخیره کنید.

خب برای بخش پیگیری تغییرات فایلها فکر میکنم تا همین حد توضیحات کافی باشه و مسیر رو براتون مشخص کرده باشه، طبق معمول اگر کمکی خواستید میتونید به لینکدینم مراجعه کنید.

برای مطلب بعدی به ابزار apparmor خواهم پرداخت پس تا بعد ?


سیستم عاملauditپیگیری تغییرات بر روی فایل ها مکنا
کارشناس ارشد نرم‌افزار، برنامه نویس خوشحال، مدیر سرورهای لینوکس پایه، عاشق نوآوری و چالش
شاید از این پست‌ها خوشتان بیاید