مجله ایرانیکاسرور آموزش سرور، هاست، وردپرس و شبکه پنل کاربری

چگونه بفهمیم چه IPهایی به SSH سرور مجازی حمله می‌کنند؟ راهنمای کامل امنیت VPS

  اگر یک VPS لینوکس با IP عمومی داشته باشید، احتمالاً در لاگ‌های سرور با تلاش‌های متعدد برای ورود به SSH مواجه خواهید شد. این تلاش‌ها معمولاً توسط ربات‌ها و اسکریپت‌های خودکار انجام می‌شوند…

Amir Jabbari 📅 29 شهریور 1405 ⏱ 10 دقیقه مطالعه 👁 0 بازدید 💬 0 دیدگاه

 

اگر یک VPS لینوکس با IP عمومی داشته باشید، احتمالاً در لاگ‌های سرور با تلاش‌های متعدد برای ورود به SSH مواجه خواهید شد. این تلاش‌ها معمولاً توسط ربات‌ها و اسکریپت‌های خودکار انجام می‌شوند و مهاجمان نام‌های کاربری مختلف مانند root، admin، user و test را امتحان می‌کنند.

اما از کجا بفهمیم چه IPهایی در حال تلاش برای ورود به سرور هستند؟ در این آموزش یاد می‌گیریم چگونه IP مهاجمان، تعداد تلاش‌های ناموفق، ورودهای موفق و IPهای مسدودشده توسط Fail2Ban را بررسی کنیم.

SSH چیست و چرا هدف حمله قرار می‌گیرد؟

SSH یا Secure Shell یکی از اصلی‌ترین روش‌های مدیریت سرورهای لینوکسی است. مدیر سرور می‌تواند از طریق SSH به VPS متصل شود و کارهایی مانند موارد زیر را انجام دهد:

🔹 نصب نرم‌افزار
🔹 مدیریت فایل‌ها
🔹 اجرای دستورات لینوکس
🔹 مدیریت کاربران
🔹 مدیریت سرویس‌ها
🔹 نصب و مدیریت وب‌سرور
🔹 مدیریت Docker
🔹 بررسی لاگ‌ها
🔹 مدیریت فایروال
🔹 به‌روزرسانی سیستم

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

از کجا بفهمیم چه IPهایی به SSH حمله می‌کنند؟

در لینوکس، اطلاعات مربوط به ورودها و تلاش‌های ناموفق SSH در لاگ‌های سیستم ثبت می‌شود. محل لاگ بسته به توزیع لینوکس متفاوت است. در Ubuntu و Debian معمولاً می‌توانید لاگ SSH را در این فایل مشاهده کنید:

/var/log/auth.log

همچنین در سیستم‌هایی که از systemd استفاده می‌کنند، می‌توان لاگ SSH را با journalctl مشاهده کرد.

مشاهده تلاش‌های ناموفق SSH

در Ubuntu و Debian ابتدا دستور زیر را اجرا کنید:

sudo grep "Failed password" /var/log/auth.log

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

Failed password for root from 185.123.45.67 port 45122 ssh2
Failed password for admin from 91.234.56.78 port 39211 ssh2
Failed password for root from 185.123.45.67 port 48321 ssh2

در این خروجی، بخش مهم IP است. برای مثال 185.123.45.67 و 91.234.56.78 مبدا تلاش‌های ناموفق برای ورود به SSH هستند.

پیدا کردن پرتکرارترین IPهای مهاجم

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

sudo grep "Failed password" /var/log/auth.log | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq -c | sort -nr

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

152 185.123.45.67
 87 91.234.56.78
 34 103.45.67.89
 12 194.26.135.10

عدد سمت چپ تعداد دفعات مشاهده آن IP در لاگ است. برای مثال 152 185.123.45.67 یعنی این IP در لاگ مورد بررسی، ۱۵۲ تلاش ناموفق داشته است.

نمایش فقط ۲۰ IP پرتکرار

اگر تعداد حملات زیاد باشد، می‌توانید فقط ۲۰ IP اول را مشاهده کنید:

sudo grep "Failed password" /var/log/auth.log | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq -c | sort -nr | head -20

این دستور برای یک بررسی سریع بسیار کاربردی است.

بررسی تلاش برای ورود با کاربران جعلی

مهاجمان معمولاً فقط root را امتحان نمی‌کنند. ممکن است نام‌های کاربری مختلفی مانند admin، user، test، ubuntu، oracle، guest و support را آزمایش کنند. برای مشاهده تلاش‌هایی که با کاربر نامعتبر انجام شده‌اند، دستور زیر را اجرا کنید:

sudo grep "Invalid user" /var/log/auth.log

مثلاً:

Invalid user admin from 185.123.45.67
Invalid user test from 185.123.45.67
Invalid user oracle from 91.234.56.78

این خروجی نشان می‌دهد مهاجم تلاش کرده با یک حساب کاربری که روی سرور وجود ندارد وارد شود.

استخراج IPهای مربوط به کاربران جعلی

برای مشاهده IPهایی که بیشترین تلاش با کاربران نامعتبر را داشته‌اند:

sudo grep "Invalid user" /var/log/auth.log | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq -c | sort -nr

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

امنیت VPS خود را جدی بگیرید و از حملات SSH پیشگیری کنید

اگر سرور مجازی شما مرتباً هدف حملات SSH قرار می‌گیرد، جای نگرانی نیست؛ با انتخاب یک سرور مجازی امن و پایدار از ایرانیکاسرور می‌توانید با خیال راحت امنیت سرور خود را مدیریت کنید. سرورهای مجازی ایرانیکاسرور با منابع اختصاصی CPU و RAM، دیسک NVMe پرسرعت، پهنای باند نامحدود، آپ‌تایم بالا و پشتیبانی ۲۴/۷ آماده ارائه به شما هستند.

تماس با پشتیبانی:91302460021 | ایرانیکاسرور

بررسی لاگ SSH با journalctl

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

sudo journalctl -u ssh

برای مشاهده تلاش‌های ناموفق:

sudo journalctl -u ssh | grep "Failed password"

برای بررسی لاگ ۲۴ ساعت گذشته:

sudo journalctl -u ssh --since "24 hours ago"

این روش زمانی مفید است که اطلاعات مورد نیاز شما در فایل auth.log وجود نداشته باشد یا بخواهید لاگ سرویس SSH را مستقیماً از systemd بررسی کنید.

بررسی ورودهای موفق SSH؛ مهم‌تر از تلاش‌های ناموفق

دیدن صدها تلاش ناموفق همیشه به معنی هک شدن VPS نیست. سرورهایی که IP عمومی دارند ممکن است دائماً توسط ربات‌های اینترنتی اسکن شوند. اما ورود موفق از یک IP ناشناس موضوع بسیار مهم‌تری است. برای بررسی ورودهای موفق در Ubuntu و Debian:

sudo grep "Accepted" /var/log/auth.log

ممکن است نتیجه‌ای شبیه این باشد:

Accepted publickey for root from 192.168.1.20 port 51234 ssh2
Accepted password for root from 185.123.45.67 port 42311 ssh2

در اینجا باید IP را بررسی کنید و مطمئن شوید که متعلق به خودتان یا یکی از کاربران مجاز سرور است.

تفاوت Failed و Accepted چیست؟

دو عبارت مهم در لاگ SSH وجود دارد:

Failed password

یعنی تلاش برای ورود ناموفق بوده است. مثلاً Failed password for root from 185.123.45.67. این مورد به‌تنهایی نشان نمی‌دهد که سرور هک شده است.

Accepted

یعنی احراز هویت موفق بوده است. مثلاً Accepted password for root from 185.123.45.67. اگر این IP متعلق به شما نیست، باید موضوع را جدی بررسی کنید.

⚠️ هشدار: صرفاً مشاهده تعداد زیاد تلاش‌های ناموفق نشانه هک شدن سرور نیست، اما هر ورود موفق ناشناس باید فوراً بررسی شود.

بررسی آخرین ورودهای SSH

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

last

یا برای مشاهده اطلاعات مربوط به ورودهای SSH:

last -i

خروجی می‌تواند اطلاعاتی مانند نام کاربر، زمان ورود و IP را نشان دهد. مثلاً root pts/0 185.123.45.67 Sun Sep 20 10:25 still logged in. اگر IP یا زمان ورود برای شما ناشناخته است، بررسی بیشتری انجام دهید.

بررسی Fail2Ban

اگر روی VPS خود Fail2Ban نصب کرده باشید، این سرویس می‌تواند IPهایی را که تعداد زیادی تلاش ناموفق دارند، به‌صورت خودکار مسدود کند. برای مشاهده وضعیت jail مربوط به SSH:

sudo fail2ban-client status sshd

ممکن است خروجی شبیه این باشد:

Status for the jail: sshd
|- Currently failed: 3
|- Total failed: 248
|- Currently banned: 5
|- Total banned: 37
`- Banned IP list: 185.123.45.67 91.234.56.78

در این خروجی، Currently banned تعداد IPهایی است که در حال حاضر مسدود هستند، Total banned تعداد کل IPهایی است که Fail2Ban تاکنون مسدود کرده و Banned IP list لیست IPهای مسدودشده فعلی را نشان می‌دهد.

آیا باید تمام IPهای مهاجم را دستی مسدود کنیم؟

معمولاً این کار راهکار مناسبی نیست. دلیل آن این است که مهاجمان می‌توانند از IPهای مختلف استفاده کنند و ممکن است هر روز IP جدیدی مشاهده کنید. به‌جای ایجاد یک لیست دستی بزرگ، بهتر است امنیت SSH را اصولی‌تر کنید. برخی اقدامات مهم عبارت‌اند از:

🔹 استفاده از SSH Key
🔹 غیرفعال کردن ورود مستقیم Root
🔹 استفاده از کاربر مدیریتی جداگانه
🔹 استفاده از Fail2Ban
🔹 فعال کردن فایروال
🔹 محدود کردن دسترسی SSH
🔹 استفاده از رمز عبور قوی در صورت فعال بودن Password Authentication
🔹 بررسی دوره‌ای لاگ‌های SSH

چگونه IP مشکوک را بررسی کنیم؟

اگر IP خاصی را در لاگ پیدا کردید، ابتدا تعداد تلاش‌های آن را بررسی کنید. مثلاً:

sudo grep "185.123.45.67" /var/log/auth.log

این دستور تمام خطوط مربوط به IP موردنظر را نمایش می‌دهد. با این کار می‌توانید متوجه شوید که IP موردنظر:

🔹 چند بار تلاش کرده است
🔹 چه نام کاربری را امتحان کرده است
🔹 چه زمانی تلاش کرده است
🔹 آیا ورود موفقی داشته است یا خیر

بررسی اینکه یک IP موفق به ورود شده یا نه

فرض کنید IP مشکوک شما 185.123.45.67 است. دستور زیر را اجرا کنید:

sudo grep "185.123.45.67" /var/log/auth.log

اگر فقط مواردی مانند Failed password for root from 185.123.45.67 مشاهده کردید، تلاش‌ها ناموفق بوده‌اند. اما اگر موردی مانند Accepted password for root from 185.123.45.67 مشاهده کردید، باید بررسی امنیتی جدی‌تری انجام دهید.

اگر IP ناشناس وارد سرور شده باشد چه کنیم؟

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

last
sudo journalctl --since "24 hours ago"
cat /etc/passwd
ps aux
systemctl list-units --type=service --state=running

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

یک دستور سریع برای بررسی حملات SSH

اگر فقط می‌خواهید سریع متوجه شوید چه IPهایی بیشترین تلاش ناموفق را داشته‌اند، در Ubuntu و Debian می‌توانید از این دستور استفاده کنید:

sudo grep -E "Failed password|Invalid user" /var/log/auth.log | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq -c | sort -nr | head -20

این دستور تلاش‌های ناموفق SSH را پیدا می‌کند، IPها را استخراج می‌کند، IPهای تکراری را شمارش می‌کند، آنها را بر اساس تعداد تلاش مرتب می‌کند و ۲۰ IP پرتکرار را نمایش می‌دهد.

نکته مهم درباره حملات SSH

مشاهده تعداد زیادی تلاش ناموفق SSH روی یک VPS عمومی موضوع عجیبی نیست. ممکن است رباتی در مدت کوتاهی ده‌ها یا صدها نام کاربری و رمز عبور را امتحان کند. بنابراین صرفاً مشاهده چنین لاگ‌هایی به معنی نفوذ موفق نیست. مهم‌ترین تفاوت این است:

🔹 Failed password → تلاش ناموفق
🔹 Invalid user → نام کاربری وجود ندارد
🔹 Accepted password → ورود موفق با رمز عبور
🔹 Accepted publickey → ورود موفق با کلید SSH

به همین دلیل هنگام بررسی امنیت سرور، فقط تعداد حملات را بررسی نکنید؛ ورودهای موفق را نیز حتماً بررسی کنید.

مشکل امنیتی یا کانفیگ SSH دارید؟

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

تماس با پشتیبانی: 91302460021 | ایرانیکاسرور

جمع‌بندی

برای فهمیدن اینکه چه IPهایی به SSH سرور مجازی شما حمله می‌کنند، نیازی به نرم‌افزار پیچیده ندارید. لاگ‌های SSH اطلاعات ارزشمندی درباره تلاش‌های ورود در اختیار شما قرار می‌دهند. در Ubuntu و Debian می‌توانید با دستور زیر تلاش‌های ناموفق را ببینید:

sudo grep "Failed password" /var/log/auth.log

برای پیدا کردن IPهای پرتکرار:

sudo grep "Failed password" /var/log/auth.log | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq -c | sort -nr

و برای بررسی ورودهای موفق:

sudo grep "Accepted" /var/log/auth.log

اگر تعداد زیادی حمله مشاهده می‌کنید، بهتر است به‌جای مسدود کردن دستی تک‌تک IPها، امنیت SSH را با SSH Key، Fail2Ban، فایروال و محدود کردن دسترسی Root تقویت کنید. در نهایت، به یاد داشته باشید که تعداد زیاد تلاش ناموفق به‌تنهایی نشانه هک شدن VPS نیست؛ ورود موفق ناشناس چیزی است که باید فوراً بررسی شود.

پیشنهاد ایرانیکاسرور برای سرور مجازی امن

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

تماس با پشتیبانی: 91302460021 | ایرانیکاسرور

این آموزش برایت مفید بود؟ می‌توانی لینک آن را ذخیره یا برای دیگران ارسال کنی.

Amir Jabbari

نویسنده مجله ایرانیکاسرور؛ منتشرکننده آموزش‌ها و راهنماهای کاربردی در حوزه هاست، سرور، وردپرس و شبکه.

برای اجرای آموزش به زیرساخت نیاز داری؟

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

ایرانیکاسرور
گفت‌وگو درباره آموزش

دیدگاه‌ها

0 دیدگاه برای این مطلب ثبت شده است.

هنوز دیدگاهی ثبت نشده است؛ اگر سؤال یا تجربه‌ای درباره این آموزش داری، همین‌جا بنویس. پاسخ‌های مدیریت و کاربران به‌صورت مشخص از هم تفکیک می‌شوند.

دیدگاه یا سؤال خود را بنویسید

ایمیل شما منتشر نمی‌شود. فیلدهای ضروری مشخص شده‌اند.