پایش یکپارچگی به پرسشی پاسخ می‌دهد که نه ضدویروس پاسخش را دارد و نه دیوار آتش: از هفته پیش روی این سرور چه چیزی تغییر کرده است. پویشگر امضا به دنبال چیز بدِ شناخته‌شده می‌گردد؛ AIDE اما چیزی درباره بدی نمی‌داند، تنها می‌داند که این فایل دیروز جور دیگری بود. و برای یافتن دری پشتی که به فایلی موجود افزوده شده، این تنها رویکردی است که کار می‌کند.

AIDE با دو فرمان نصب می‌شود. تنظیم آن به‌گونه‌ای که گزارش‌هایش خوانده شوند بخش دشوارتر است — و همان است که معمولاً از پایش می‌کُشد: نخستین گزارش با ده هزار سطر می‌آید، دومی را کسی باز نمی‌کند، و یک ماه بعد آن وظیفه حذف می‌شود.

نصب و نخستین پایگاه

sudo apt install aide aide-common
sudo aideinit

راه‌اندازی از چند دقیقه تا نیم‌ساعت طول می‌کشد: برای هر فایل درهم‌سازی محاسبه می‌شود. نتیجه کنار پایگاه کاری با پسوند .new گذاشته می‌شود و باید به کار گرفته شود:

sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

و از آن پس بررسی چنین اجرا می‌شود:

sudo aide --check

چه چیزی را کنار بگذاریم تا گزارش خواندنی بماند

تنظیمات در /etc/aide/aide.conf و در پوشه /etc/aide/aide.conf.d/ زندگی می‌کنند. پیکربندی استاندارد Debian بیش از اندازه بررسی می‌کند، و نخستین کار برداشتن چیزی است که پیوسته خودبه‌خود تغییر می‌کند:

  • /var/log — هر ثانیه تغییر می‌کند؛
  • تمام /var/lib — پایگاه‌های داده، وضعیت بسته‌ها، وضعیت سرویس‌ها؛
  • /var/cache، /tmp، /proc، /sys، /run؛
  • پوشه‌های بارگذاری و حافظه نهان سایت — محتوایشان را بازدیدکنندگان تغییر می‌دهند.

و آنچه با سخت‌گیرانه‌ترین تنظیمات ارزش بررسی دارد فهرستی تنگ است:

  • /bin، /sbin، /usr/bin، /usr/sbin — فایل‌های اجرایی سامانه؛
  • /lib، /usr/lib — کتابخانه‌ها؛
  • /etc — پیکربندی؛
  • /root/.ssh و پوشه‌های .ssh کاربرانتان؛
  • کد سایت، اما بدون پوشه‌های بارگذاری و حافظه نهان.

معیار: گزارش روزانه معمولی باید در یک صفحه نمایش جا شود. اگر بلندتر باشد استثناها بس نیستند و خواندنش رها خواهد شد.

پایگاه را کجا نگه داریم

نکته‌ای مهم که اغلب از قلم می‌افتد. اگر کسی دیگر root داشته باشد، جایگزین‌کردن فایلی و بی‌درنگ به‌روزکردن پایگاه AIDE برایش هیچ هزینه‌ای ندارد — و بررسی پس از آن گزارش خواهد داد که همه‌چیز خوب است. پایگاهی که روی همان ماشین و نوشتنی باشد تنها در برابر اتفاق‌های ناخواسته محافظت می‌کند.

کمینه معقول برای یک سرور:

  • پس از هر به‌روزرسانی پایگاه را روی ماشینی دیگر کپی کنید و بررسی را با همان رونوشتِ جایگذاشته اجرا کنید؛
  • یا دست‌کم جمع کنترلی پایگاه را جداگانه نگه دارید و پیش از بررسی راستی‌آزمایی‌اش کنید:
sha256sum /var/lib/aide/aide.db

حتی چنین اقدام ساده‌ای جایگزینی خاموش را به رویدادی آشکار بدل می‌کند.

به‌روزکردن پایگاه کاری آگاهانه است

پس از تغییرهای مشروع — به‌روزرسانی سامانه، انتشار نسخه تازه سایت — پایگاه بازسازی می‌شود:

sudo aide --update
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

و اینکه این کار کی انجام شود اهمیت دارد. درست: گزارش را بخوانید، مطمئن شوید هر تغییر توضیح‌پذیر است، و تنها آن‌گاه به‌روز کنید. نادرست و بسیار رایج: اجرای aide --update بر پایه زمان‌بندی تا گزارش‌ها پاک درآیند. در حالت دوم سامانه کار می‌کند، گزارش‌ها می‌آیند، و تغییرها درست در همان لحظه‌ای که رخ می‌دهند عادی ثبت می‌شوند — یعنی معنا یکسره از میان رفته است.

زمان‌بندی و بار

بسته aide-common خودش وظیفه‌ای روزانه نصب می‌کند. بررسی چند دقیقه دیسک و پردازنده را بار می‌گذارد، پس ارزش دارد در ساعتی آرام و با اولویت پایین اجرا شود:

0 4 * * * ionice -c3 nice -n19 /usr/bin/aide --check

گزارش را چگونه بخوانیم

سه بخش: فایل‌های افزوده‌شده، حذف‌شده و تغییریافته. و برای هر تغییر نشان می‌دهد دقیقاً چه چیزی فرق دارد: محتوا، مجوزها، مالک، زمان.

و نخست به چه چیزی واکنش نشان دهیم:

  • تغییر هر فایلی در /bin، /sbin، /usr/bin بیرون از پنجره به‌روزرسانی؛
  • فایل‌های تازه در پوشه‌های سامانه؛
  • تغییرها در authorized_keys، /etc/passwd، /etc/sudoers، /etc/crontab و /etc/cron.d؛
  • پیداشدن فایل /etc/ld.so.preload — که هرگز خودبه‌خود پیدا نمی‌شود.

صد فایل تغییریافته بی‌درنگ پس از apt upgrade عادی است، و مهر زمانی گزارش این را تأیید می‌کند. اما سه فایل تغییریافته در /usr/bin در یک چهارشنبه بدون هیچ به‌روزرسانی‌ای دلیلی است برای ایستادن و بررسی‌کردن.

AIDE و debsums

این دو ابزار مسئله‌هایی همسایه را حل می‌کنند، اما مرجعشان فرق دارد. AIDE با تصویر لحظه‌ای خودتان می‌سنجد — پس تغییر در هر فایلی را می‌بیند، از جمله کد سایت. debsums با جمع‌های کنترلی بسته‌های توزیع می‌سنجد — پس فایل‌های سامانه‌ای جایگزین‌شده را بدون هیچ آماده‌سازی پیشین می‌بیند، اما درباره آنچه بیرون از بسته‌ها نصب کرده‌اید چیزی نمی‌داند. نگه‌داشتن هر دو معقول است؛ در عمل معمولاً نخست debsums می‌آید، چون نه پیکربندی می‌خواهد و نه پایگاه.

و یک ضعف مشترک هم دارند: گزارش با ایمیل می‌آید، و ایمیل گم می‌شود. پس آنچه اهمیت دارد این نیست که بررسی اجرا شده بلکه این است که جایی باشد که آخرین نتیجه‌اش دیده شود. شکل این را صفحه نمایشی پایین نشان می‌دهد.