زندگی کن!

از کجا بفهمیم که سرور لینوکسی ما در معرض خطر (هک) قرار گرفته؟

از کجا بفهمیم که سرور لینوکسی ما در معرض خطر (هک) قرار گرفته؟

یک سرور(سرور مجازی یا واقعی) می تواند به دلایل مختلفی در معرض خطر یا همان هک قرار گرفته باشد. هدف از این تهدیدات می تواند دسترسی های دولتی و یا خرابکارانه باشد. این هک شدن یا در معرض خطر قرار گرفتن ها می تواند از طریق یک هکر حرفه ای یا بات ها و برنامه های مختلف که هکر ها از آن ها استفاده می کنند صورت بگیرید.

علائم یک سرور که در معرض خطر (هک) قرارگرفته
وقتی یک سرور مورد تعرض (هک) توسط یک هکر با تجربه یا یک برنامه مخرب قرار می گیرد، معمولا منابع سرور به صورت ۱۰۰% درگیر می شوند. این منابع می تواند شامل CPU باشد که از آن برای استخراج رمز ارز ها و یا ارسال ایمیل های اسپم استفاده می شود و یا حتی پهنای باند که از آن برای حملات DDOS استفاده می شود.
نشانه استفاده از منابع به صورت حداکثری ، کند شدن سرور شماست. که در باز شدن سایت شما ، و یا ارسال ایمیل های با تاخیر از طریق سرورتان خود را نمایان می کند.
خب چه کار باید کرد؟

۱-  بررسی این که در حال حاضر چه کسی وارد سرور شده است؟
اولین چیزی که باید بفهمید این است که چه کسی در حال حاضر وارد سرور شده است. از طریق دستور w در ترمینال سرور لینوکس خود یک خروجی شبیه به خروجی زیر خواهید دید:

در این خروجی مشاهده می کنید که یکی از آی پی ها متعلق به Uk هست (که در این جا آی پی ماست) و دیگری متعلق به ویتنام که ربطی به ما ندارد، و  معنی خوبی نخواهد داشت. سعی کنید که ارتباط SSH آی پی ناشناس را از بین ببرید (Kill). البته توجه داشته باشید اگر که حمله کننده متوجه فهمیدن شما شده باشد ممکن است سریع اقدام کند و دسترسی شما را از سرور از بین ببرد. نحوه برخورد با این موضوع را در انتها توضیح خواهم داد.

برای اینکه بفهمید که آی پی ناشناس از کجاست، از طریق دستور whois  (نیاز به نصب دارد) برای آی پی مورد نظر می توانید اطلاعات لازم راجع به آی پی مورد نظر را بدست آورید.

۲-  بررسی اطلاعات کسانی که قبلا وارد سرور شده اند.
سرور لینوکس اطلاعات کاربرانی که وارد سرور شده اند را ذخیره می کند. این اطلاعات شامل مواردی همچون: (آی پی ، مدت زمان، زمان، و …) می باشد. این اطلاعات از طریق دستور last قابل دسترسی هستند. خروجی این دستور شبیه زیر است :

اگر در خروجی این دستور ، آی پی ناشناسی دیدن پس به انتهای مطلب بروید تا راهکار را یاد بگیرید.

توجه کنید که اطلاعات کاربران وارد شده به سیستم در یک فایل تکست در bash_history./~ ذخیره شده، بنابر این هکر ممکن است برای پاک کردن رد پای خود آن را تغییر داده باشد و یا پاک کرده باشد. پس اگر شما با اجرای این دستور فقط آخرین ورود خود را دیدید بدانید که احتمالا هکر آن را پاک کرده است.

با دستور lastb نیز می توانید تمام تلاش های ناموفق برای ورود به سرور را مشاهده کنید.

۳- بررسی تاریخچه دستور های اجرا  شده در ترمینال

از طریق فرمان history در ترمینال می توانید تاریخجه دستورات اجرا شده در ترمینال لینوکسی خود را ببینید. مخصوصا دقت کنید به دستور های wget و curl و فایل هایی که از طریق این دو دستور خارج از مخازن معتبر، دانلود شده اند و می توانند شامل ربات های اسپم یا برنامه های استخراج رمز ارز ( crypto miners ) باشند.

توجه کنید که تاریخچۀ دستورات اجرا شده ،  در یک فایل تکست در bash_history./~ ذخیره شده، بنابر این هکر ممکن است برای پاک کردن رد پای خود آن را تغییر داده باشد و یا پاک کرده باشد. بنابراین اگر شما با اجرای این دستور اطلاعاتی مشاهده نکردید. بدانید که احتمالا هکر آن را پاک کرده است.

۴- بررسی این که چه چیزی از تمام پردازنده (CPU) در حال استفاده است. 

انواع مهاجمان (هکر ها) ، برای عدم لو رفتن خود معمولا در استفاده از منابع سرور، احتیاط نمی کنند. بنابراین آن ها فعالیت هایی را انجام می دهند که منابع سرور مخصوصا cpu را کامل درگیر می کند. برهمین اساس شما می توانید به راحتی با استفاده از دستور top در ترمینال، مشاهده کنید که بیشترین پردازش متعلق به چه چیزی است. همچنین شما از این راه ممکن است متوجه استفاده هایی شوید که نیاز به ورود به سرور شما نداشته اند مثل فرم های غیر محافظت شده ای که در سایت شما هستند و از آن طریق هکر اقدام به ارسال اسپم می کند.

اگر شما فعالیتی که از طریق دستور top نمایش داده شده را نمی شناسید، می توانید نام آن را از طریق گوگل جستجو کنید و یا از طریق دستور losf یا strace راجع به آن اطلاعات بیشتری کسب کنید. کافی است PID برنامه مورد نظر که در گزارش دستور top آمده را همانند زیر وارد کنید:

و یا از طریق این دستور :

ممکن است که پردازش قابل توجه در لیست مشاهده نکنید ، از طریق دستور ps auxf شما می توانید به طور کامل تمامی فعالیت های پردازشی را مشاهده کنید، و با دقت در آن فعالیت های غیر معمول و ناشناخته را پیدا کنید.

۵- بررسی میزان استفاده از شبکه 

همانند دستور top دستوری دیگر برای نمایش میزان استفاده از شبکه شما وجود دارد به نام iftop که البته در صورت نصب نبودن باید آن را از مخازن مخصوص به سرور خود نصب کنید مثلا در سرور cenots از طریق دستور yum install iftop می توانید آن را نصب کنید.

پس از اجرای این دستور اگر فعالیتی که منبع زیادی از شبکه شما را درگیر کرده و دارای ارسال و دریافت بالاست ، وجود داشته باشد سریعا نمایان می شود. معمولا حملات DDOS و ارسال Spam از این دسته هستند.

۶- چه برنامه هایی در حال شنود ارتباطات شبکه شما هستند؟

معمولا هکرها نرم افزارهایی بر روی سرور نصب می کنند که کار آن ها چیزی جز شنود پورت ها، برای انجام فعالیت های خاص نیست. این موارد منابع مورد توجهی از سرور مثل CPU و یا پهنای باند را درگیر نمی کنند و در بررسی ها توسط سایر دستور ها،  همانند دستور top ممکن است مورد توجه قرار نگیرند.

دستور های lsof و netstat تمامی فعالیت های شبکه شما را نمایش می دهند. اگر در خروجی این دستورات فعالیت ناآشنایی دیدید احتمالا شما هک شده اید و باید اقدامات لازم را انجام دهید.

نتیجه : در صورتی که سرور شما مورد تهاجم و هک قرار گرفته است چه کار باید بکنید.

اولین چیز، حفظ آرامش و خونسردیست. 😉 مخصوصا اگر مهاجم هنوز هم در سرور شما حضور دارد. قبل از آن که هکر متوجه آگاهی شما شده باشد، شما نیاز دارید تا کنترل سرور را مجدداً به دست بگیرید چرا که اگر هکر متوجه آگاهی شما بشود، ممکن است که دسترسی شما را از سرور قطع کند و شروع به اقدامات تخریبی بر روی سرور شما کند.

اگر شما تخصص کافی ندارید بهترین راه این است که سرور را خاموش کنید. برای این کار یا می توانید از طریق پنل خود که هنگام خرید سرور، تامین کننده خدمات سرور شما، در اختیارتان قرار داده اقدام کنید، و یا می توانید از طریق فرمان shutdown -h now  و یا systemctl poweroff  در ترمینال خود اقدام کنید و سپس با آرامش به تغییرات لازم در فایروال خود و مشورت با تامین کننده سرورتان بپردازید.

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

  1. ترافیک ssh خود را جوری تنظیم کنید که فقط از طریق آی پی شما قابل دسترس باشد. برای این کار شما نیاز دارید که یک آی پی ثابت داشته باشید.
  2. تمامی پروتکل ها و پورت های باز سیستم را بلاک کنید.

این کار باعث می شود که دسترسی ssh هکر سریعا قطع شود.

اگر فایروال بالادستی موجود نبود، و یا شما به آن دسترسی نداشتید و یا تامین کننده به هر نحوی با شما همکاری نکرد ( مرسوم در ایران) دو گزینه بالا را باید در فایروال سرور خود ایجاد کنید و سپس نشت SSH هکر را از طریق دستور kill از بین ببرید.

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

امیدوارم که این مطلب برای شما مفید بوده باشه.در پایان اگر سوال یا نکته ای به نظرتان رسید در قسمت کامنت ها با من در میان بگذارید. 🙂

ارسال پاسخ

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای مورد نیاز با * مشخص شده اند.پر کردن این فیلد ضروری است *