رویدادهای امنیتی
حدس رمز، کلید و کاربر تازه، تغییر فایل، حمله به سایت، پردازه و اتصال مشکوک، و بدافزار.
حدس رمز، کلید و کاربر تازه، تغییر فایل، حمله به سایت، پردازه و اتصال مشکوک، و بدافزار.
بخش امنیتی ایجنت دنبال نشانههای حمله و نفوذ میگردد: کسی که رمز را حدس میزند، کلید یا کاربری که بیخبر اضافه شده، فایلی که نباید آنجا باشد، و برنامهای که ناگهان کاری غیرعادی میکند. همهی این رویدادها در کارت رویدادها صفحهی سرور ثبت میشوند و مهمترینهایشان هشدار میدهند. در پنل رویدادها بهطور پیشفرض فقط موارد مهم نمایش داده میشوند؛ با برداشتن تیک فقط موارد مهم همه دیده میشوند. همهی تلاشهای ناموفق ورود SSH یک ردیف میشوند، و با باز کردن هر رویداد نوشته میشود چه کاری باید کرد.
ایجنت لاگ ورود سرور (/var/log/auth.log، /var/log/secure یا journald) را میخواند.
| رویداد | هشدار | شدت |
|---|---|---|
| حدس رمز SSH | ۳۰ ورود ناموفق یا بیشتر در ۱۰ دقیقه؛ متن هشدار IPهای اصلی را نشان میدهد | متوسط |
| ورود root با رمز | هر بار | زیاد |
| ورود از IP تازه | ورود موفق از IPای که پیشتر دیده نشده | متوسط |
| کاربر تازه | با useradd کاربری ساخته شود | زیاد |
| استفاده از sudo | فقط ثبت میشود؛ خود دستور ثبت نمیشود | بدون هشدار |
هشدار حدس رمز یک ساعت بعد از آخرین تلاش ناموفق بسته میشود. اگر بستن خودکار IP را روشن کرده باشید، مهاجم همان موقع در فایروال سرور بسته میشود.
ایجنت از فایلهای مهم اثر انگشت (SHA-256) نگه میدارد و هر تغییری را گزارش میدهد. محتوای فایلها هیچوقت ارسال نمیشود.
| فایل | هشدار | شدت |
|---|---|---|
کلید SSH تازه در authorized_keys | هر کلید تازه، با اثر انگشتش | زیاد؛ برای root بحرانی |
/etc/ld.so.preload | ساخته یا عوض شود؛ نشانهی شناختهشدهی rootkit | بحرانی |
passwd، group، sudoers، sshd_config، کرونها | ساخته، عوض یا حذف شود | زیاد |
بقیهی فایلهای حساس، مثل /etc/hosts | فقط ثبت میشود | متوسط |
| فایل اجرایی در پوشهی آپلود | فایل PHP، اسکریپت یا مشابه آن در پوشههایی مثل uploads | بحرانی |
| فایلهای سایت | فقط ثبت میشود | بدون هشدار |
فایلهای سیستم هر ۵ دقیقه و فایلهای سایت هر ۱۵ دقیقه بررسی میشوند. اولین بررسی هر پوشه فقط مرجع را ثبت میکند و هشداری نمیدهد. اگر در یک بررسی بیش از ۲۵ فایل سایت عوض شود، آن را یک انتشار تازه (deploy) حساب میکند و بهجای دهها رویداد جدا، یک رویداد خلاصه ثبت میکند.
پوشههای سایت بهطور پیشفرض /var/www و پوشههای رایج دیگرند. پوشهی دیگری را در صفحهی تنظیمات سرور زیر پوشههای سایت اضافه کنید. پوشههایی را که مدام عوض میشوند، مثل کش، در مسیرهایی که نادیده گرفته شوند بنویسید.
| رویداد | هشدار | شدت |
|---|---|---|
| پورت تازه باز شد | برنامهای روی پورتی که پیشتر هرگز باز نبوده، روی همهی شبکهها منتظر اتصال باشد | متوسط |
| سرویس حساس روی همهی شبکهها | MySQL، PostgreSQL، Redis، MongoDB، Elasticsearch، Memcached، API داکر و مشابه آنها روی همهی آدرسها باز باشند | زیاد |
پورتی که روی همهی آدرسها باز است، اگر فایروال جلویش را نگیرد، از اینترنت در دسترس است. دیتابیس و Redis را فقط روی 127.0.0.1 یا شبکهی خصوصی باز کنید.
از لاگ وبسرور:
| رویداد | هشدار | شدت |
|---|---|---|
| حملهی ورود با رمزهای لو رفته (credential stuffing) | ۱۰۰ ورود ناموفق یا بیشتر در ۱۰ دقیقه، از دستکم ۲۰ آدرس مختلف | زیاد |
| تلاشهای حمله | تزریق SQL، XSS، خواندن فایلهای سرور (LFI)، اجرای دستور، و جستوجوی فایلهای حساس مثل .env و .git | بدون هشدار؛ در کارت حمله به سایت |
| درخواست بیش از حد از یک IP | ۶۰۰ درخواست یا بیشتر در دقیقه | ثبت میشود |
ورود ناموفق در وردپرس (wp-login.php و xmlrpc.php) و مسیرهای رایج ورود (/login، /api/auth/login و مشابه آنها) شمرده میشود. اسکنرهای خودکار مدام همهی سایتها را امتحان میکنند، پس تلاشهای حمله بهتنهایی هشدار نمیدهند. بخش ترافیک و حملههای سایت دستهی هر تلاش، یک نمونه از آن و بیشترین مهاجمها را در ۲۴ ساعت گذشته نشان میدهد. اگر بخواهید IPهایی که مدام حمله میکنند خودکار بسته شوند، blockWebAttacks را روشن کنید؛ اقدامها را ببینید.
وقتی برنامهای که سایت را اجرا میکند ناگهان شل یا ابزار شبکه (sh، bash، nc، wget، curl، python و مشابه آنها) اجرا کند، معمولاً یعنی تزریق دستور یا web shell. ایجنت هر ۵ ثانیه پردازهها را بررسی میکند.
| رویداد | هشدار | شدت |
|---|---|---|
| برنامهی سایت شل اجرا کرد | مثلاً php-fpm → sh یا node → sh | بحرانی |
| ماینر | برنامهای با نام ماینرهای شناختهشده، مثل xmrig یا kinsing | بحرانی |
این برنامهها خودکار «برنامهی سایت» شناخته میشوند:
دستورهای بیخطری که برنامهها معمولاً اجرا میکنند، مثل ImageMagick، ffmpeg، ps، df، git و mysqldump، هشدار نمیدهند؛ به شرطی که همهی بخشهای دستور بیخطر باشند. convert a.png b.jpg بیخطر است، ولی uname -a; wget … هشدار میدهد. خط فرمان پردازهها فقط روی خود سرور برای همین تصمیم خوانده میشود و ارسال نمیشود.
برنامهای با نام خاص، مثل یک برنامهی Go، را در webProcesses اضافه کنید. دستوری را که سایت شما عمداً اجرا میکند در ignoreCommands بنویسید؛ تنظیمات را ببینید.
| رویداد | هشدار | شدت |
|---|---|---|
| درخواست به آدرس متادیتای ابر | هر برنامهای جز root به 169.254.169.254 وصل شود؛ کلیدهای دسترسی ابر همینجاست و هدف معمول حملهی SSRF است | بحرانی |
| اتصال وبسرور به سرویس داخلی | برنامهی سایت به API داکر، Kubernetes، etcd یا Consul وصل شود | زیاد |
| اتصال به پورت ماینر یا شل معکوس | مثل ۳۳۳۳، ۴۴۴۴ یا ۱۳۳۷ | زیاد |
فقط کاربر برنامه، آدرس و پورت مقصد گزارش میشوند، نه محتوای ارتباط.
ایجنت فایلهای سایت را با الگوهای شناختهشدهی بدافزار مقایسه میکند:
eval(base64_decode(…)) و رشتههای رمزشدهی خیلی بلند کنار evalsystem($_GET[…])| رویداد | هشدار | شدت |
|---|---|---|
| بدافزار در فایلهای سایت | فایلی با یکی از این الگوها | بحرانی |
الگوها عمداً محدود به موارد قطعیاند، چون هشدار اشتباه یعنی کسی فایل سالمی را پاک کند. کد عادی وردپرس و لاراول با آنها اشتباه گرفته نمیشود. در اولین بررسی کل سایت اسکن میشود، چون ممکن است آلودگی از پیش از نصب ایجنت باشد. بعد از آن فقط فایلهای تازه و تغییرکرده بررسی میشوند، و هر وقت الگوها بهروز شوند کل سایت یک بار دیگر اسکن میشود. کنار هر بدافزار در پنل رویدادها دکمهی قرنطینه هست، اگر قرنطینه را روشن کرده باشید.
authorized_keys پاک کنید، فایل مشکوک را قرنطینه کنید و نرمافزارها را بهروز کنید.