چگونه بفهمیم سرور Linux هک شده است؟

چگونه بفهمیم سرور Linux هک شده است؟

جدول محتوا 👇

بسیاری از نفوذها به سرورهای لینوکسی هفته‌ها یا ماه‌ها بی‌صدا ادامه دارند: سرور برای استخراج رمزارز، ارسال اسپم یا حمله به دیگران استفاده می‌شود و صاحب آن فقط وقتی متوجه می‌شود که ارائه‌دهنده یا یک فهرست سیاه خبر می‌دهد. در این راهنما نشانه‌های رایج نفوذ را مرور می‌کنیم و قدم‌به‌قدم با دستورهای لینوکس بررسی می‌کنیم که آیا سرور Linux شما هک شده است، و در صورت تأیید، چه باید کرد.

نشانه‌های رایج نفوذ

  • مصرف بالای CPU بدون افزایش بازدید یا کار واقعی؛ نشانه رایج ماینرها.
  • ترافیک خروجی غیرعادی یا هشدار ارائه‌دهنده درباره ارسال اسپم یا حمله از سرور شما.
  • کاربران، کلیدهای SSH یا کرون‌جاب‌هایی که شما نساخته‌اید.
  • فرایندهایی با نام‌های عجیب یا نام‌هایی که از فرایندهای سیستمی تقلید می‌کنند.
  • فایل‌های PHP ناشناخته در پوشه سایت یا ریدایرکت کاربران به سایت‌های دیگر.
  • لاگ‌های پاک‌شده یا دارای فاصله زمانی بی‌دلیل.
  • غیرفعال شدن فایروال یا سرویس‌های امنیتی.

قبل از شروع بررسی

  • اگر احتمال نفوذ جدی است، از دیسک سرور Snapshot بگیرید تا شواهد حفظ شود.
  • از سیستمی آلوده، رمز یا کلید جدید وارد نکنید.
  • در نظر داشته باشید که مهاجم با دسترسی root ممکن است ابزارهایی مثل ps و ls را دستکاری کرده باشد (روت‌کیت). نتایج منفی را با احتیاط تفسیر کنید و در صورت امکان، دیسک را از یک سیستم سالم بررسی کنید.

۱. فرایندها و مصرف منابع

top -c
ps auxf --sort=-%cpu | head -20
ls -l /proc/*/exe 2>/dev/null | grep -E "deleted|/tmp|/dev/shm"

به دنبال این موارد باشید:

  • فرایندهای پرمصرف با نام ناآشنا.
  • فایل اجرایی در مسیرهای غیرمعمول مثل /tmp، /dev/shm یا /var/tmp.
  • فرایندهایی که فایل اجرایی آن‌ها حذف شده (deleted)؛ روشی رایج برای پنهان‌کاری.
  • فرایندهای اجراشده با کاربر وب‌سرور (مثلاً www-data) که شل یا اسکریپت غیرمنتظره اجرا می‌کنند.

۲. اتصال‌های شبکه و پورت‌ها

sudo ss -tulpn
sudo ss -tunp state established
  • پورت‌هایی که گوش می‌دهند و شما آن‌ها را نمی‌شناسید.
  • اتصال‌های خروجی دائمی به IPهای ناشناس، به‌خصوص روی پورت‌های استخرهای ماینینگ یا IRC.
  • تعداد زیاد اتصال خروجی روی پورت ۲۵ (ارسال اسپم).

مصرف ترافیک ماهانه را هم با نمودار پنل یا vnStat بررسی کنید؛ جهش ناگهانی ترافیک خروجی نشانه مهمی است. روش‌ها در گراف ترافیک ماهانه سرور.

۳. کاربران، کلیدها و ورودها

awk -F: '$3 == 0 {print $1}' /etc/passwd          # کاربران با UID صفر (باید فقط root باشد)
awk -F: '$7 !~ /nologin|false/ {print $1, $7}' /etc/passwd
sudo cat /root/.ssh/authorized_keys
sudo find /home -name authorized_keys -exec ls -l {} \; -exec cat {} \;
getent group sudo
last -a | head -30
  • کاربر جدیدی که نساخته‌اید یا کاربری غیر از root با UID صفر.
  • کلید SSH ناشناس در authorized_keys.
  • ورود موفق از IPها یا کشورهایی که انتظارش را ندارید، یا در ساعات غیرعادی.

ورود با رمز عبور و root را غیرفعال کنید تا این مسیر بسته شود؛ راهنما در امنیت SSH.

۴. روش‌های ماندگاری مهاجم

مهاجمان معمولاً راهی برای بازگشت بعد از ری‌استارت ایجاد می‌کنند:

sudo crontab -l; ls -la /etc/cron.* /var/spool/cron/crontabs/
systemctl list-unit-files --type=service --state=enabled
ls -lt /etc/systemd/system/ | head
cat /etc/ld.so.preload 2>/dev/null
grep -r "curl\|wget\|base64" /etc/profile.d/ /etc/rc.local ~/.bashrc 2>/dev/null
  • کرون‌جاب‌هایی که اسکریپتی را از اینترنت دانلود و اجرا می‌کنند.
  • سرویس‌های systemd جدید با نام‌های گمراه‌کننده.
  • وجود فایل /etc/ld.so.preload که در سیستم‌های عادی معمولاً وجود ندارد و از روش‌های رایج روت‌کیت‌هاست.
  • دستورهای مشکوک در فایل‌های شروع نشست شل.

۵. فایل‌های تغییرکرده و مشکوک

sudo find /etc /usr/bin /usr/sbin -mtime -7 -type f -ls
sudo find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -newer /etc/hostname 2>/dev/null
sudo debsums -s 2>/dev/null
  • فایل‌های سیستمی که اخیراً تغییر کرده‌اند، بدون اینکه به‌روزرسانی انجام داده باشید.
  • فایل‌های SUID جدید که امکان افزایش دسترسی می‌دهند.
  • بسته debsums در Debian و Ubuntu (و rpm -Va در خانواده RHEL) فایل‌های بسته‌های نصب‌شده را با نسخه اصلی مقایسه می‌کند.

۶. وب‌سایت و وب‌شل

بیشتر نفوذها از طریق اپلیکیشن وب، مثل افزونه آسیب‌پذیر وردپرس، شروع می‌شوند و مهاجم یک «وب‌شل» (اسکریپتی برای اجرای دستور از طریق مرورگر) آپلود می‌کند:

find /var/www -name "*.php" -mtime -7 -ls
grep -rlE "eval\(base64_decode|gzinflate\(|shell_exec\(|assert\(\\\$_" /var/www --include=*.php
find /var/www/*/wp-content/uploads -name "*.php"

فایل PHP در پوشه uploads وردپرس تقریباً همیشه مشکوک است. لاگ دسترسی وب‌سرور را هم برای درخواست‌های POST به فایل‌های ناشناخته بررسی کنید.

۷. ابزارهای اسکن

sudo apt install -y rkhunter chkrootkit
sudo rkhunter --update && sudo rkhunter --check --sk
sudo chkrootkit

rkhunter و chkrootkit نشانه‌های شناخته‌شده روت‌کیت‌ها را بررسی می‌کنند. ClamAV برای اسکن فایل‌ها و Lynis برای ممیزی کلی امنیت سرور مفیدند. این ابزارها هشدار اشتباه هم دارند و نبود هشدار هم تضمین سلامت نیست؛ نتایج را در کنار بررسی‌های دستی تفسیر کنید.

اگر نفوذ تأیید شد

  1. سرور را از شبکه جدا کنید یا فایروال را فقط برای IP خودتان باز بگذارید تا آسیب بیشتر یا حمله به دیگران متوقف شود.
  2. شواهد را حفظ کنید: Snapshot و کپی لاگ‌ها.
  3. داده‌ها را جدا کنید: از داده‌ها (دیتابیس و فایل‌های محتوا، نه فایل‌های اجرایی و کد) بکاپ بگیرید و قبل از استفاده، آن‌ها را بررسی کنید.
  4. سرور را از نو بسازید: نصب مجدد سیستم‌عامل امن‌ترین راه است؛ پاک‌سازی دستی سیستمی که دسترسی root به آن گرفته شده، قابل اطمینان نیست.
  5. همه رمزها و کلیدها را تغییر دهید: SSH، دیتابیس، پنل‌ها، کلیدهای API و هر رمزی که روی سرور بوده است.
  6. ریشه نفوذ را پیدا و رفع کنید: نرم‌افزار آسیب‌پذیر، رمز ضعیف یا پورت باز؛ وگرنه نفوذ تکرار می‌شود.
  7. از بکاپ سالم بازیابی کنید و سخت‌سازی را طبق تنظیمات امنیتی ضروری VPS انجام دهید.

اهمیت بکاپ مستقل در چنین شرایطی را در بکاپ سرور چیست توضیح داده‌ایم.

سوالات متداول

در صورت تأیید هک، امن‌ترین اقدام چیست؟

جدا کردن سرور از شبکه، حفظ شواهد، بکاپ از داده‌ها (نه فایل‌های اجرایی)، نصب مجدد سیستم‌عامل، تغییر همه رمزها و کلیدها و رفع آسیب‌پذیری‌ای که نفوذ از آن انجام شده است.

آیا با حذف فرایند مخرب مشکل حل می‌شود؟

معمولاً نه. مهاجم روش‌های ماندگاری مثل کرون‌جاب، سرویس یا کلید SSH ایجاد کرده و ممکن است ابزارهای سیستم را تغییر داده باشد. نصب مجدد قابل اطمینان‌تر است.

چرا مهاجمان به سرورهای کوچک حمله می‌کنند؟

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

چطور از نفوذ دوباره جلوگیری کنم؟

ورود SSH فقط با کلید، فایروال، به‌روزرسانی خودکار امنیتی، به‌روز نگه داشتن اپلیکیشن‌ها، کمترین دسترسی و پایش منظم ورودها و منابع.

پایش و امنیت سرور

با پایش ۲۴ ساعته تراست هاست رفتار غیرعادی سرور را زودتر تشخیص دهید؛ برای بررسی و بازسازی سرورهای آلوده هم پشتیبانی تخصصی سرور در دسترس است.

سرور مجازی ابری تراست هاست

مشاوره تراست‌هاست​

با متخصصان و کارشناسان به صورت رایگان!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *