شبکههای کامپیوتری همیشه مورد حمله هکرها قرار دارند و اگر شانس با آنها یاری کند، میتوانند اقدام به شنود خطوط شبکه بزنند. از طرفی بعضی از پروتکلهای شناخته شده که دارای پورت مشخصی هستند، میتوانند گزینه حاضر و آمدهای برای هکرها باشند؛ برای مثال پروتکل SSH بر روی پورت 22 قرارداد شده است. از این رو یکی از راهکارهای پیشگیرانه امنیتی برای جلوگیری از نفوذ هکرها، تغییر پورتهای SSH است. این کار میتواند. ارتباط شما را از دید هکرها مخفی نگه دارد و هر گونه تلاش برای نفوذ به کانال ارتباطی را از همان ابتدا خنثی کند.
یکی از حملاتی که روی پروتکل SSH انجام میشود، حمله Brute Force برای شکستن کلمه عبور است. اگرچه احتمال موفقیت آن کم است، اما غیرممکن نیست. از دیگر حتملاتی که احتمال دارد ارتباط شما را مختل کند، حمله DDoS است؛ در این حمله همزمان از صدها آدرس IP بطور همزمان درخواست ارسال میشود و این حجم از درخواستها پورت را برای اتصال شما محدود میکند. پورتها دقیقاً مشابه فرکانسهای رادیویی هستند که روی هر کدام میتواند یک کانال رادیویی پخش شود. در این مقاله نحوه تغییر پورت SSH را بررسی خواهیم کرد.
حمله بروت فورس چیست؟ آشنایی با Brute Force و راهکارهای مقابله با آن
مراحل تغییر پورت SSH
اتصال به سرور:
-
از طریق یک نرمافزار SSH مانند PuTTY یا ترمینال لینوکس به سرور خود متصل شوید.
-
از نام کاربری و رمز عبور روت یا کاربری دارای دسترسی sudo استفاده کنید.
تنظیمات فایروال
قبل از هر چیز باید پورتهای جدید SSH را به فایروال نیز بشناسانید. توجه داشته باشید، در صورتی که از کاربری بدون دسترسی root استفاده میکنید، حتماً عبارت sudo را در ابتدای آن قرار دهید، درغیر اینصورت نیازی به وارد کردن این عبارت نیست. فایروال UFW در توزیعهای دبیان، مانند اوبونتو و زیرشاخههای آن بیشتر استفاده میشود. اگر از فایروال UFW استفاده میکنید، با دستور زیر پورت 7777 را به این فایروال معرفی کنید:
$ sudo ufw allow 7777/tcp
همچنین ساختار مربوط به iptables مانند زیر است:
sudo /sbin/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 7777 -j ACCEPT
اگر از سیستمعاملهایی نظیر FreeBSD / OpenBSD / NetBSD Unix استفاده می کنید، ساختار فایروال pf در pf.conf به شکل زیر است:
pass log on $ext_if proto tcp to any port 7777 keep state
برای افزودن پورت جدید به فایروال، دستور زیر را وارد کنید:
$ sudo firewall-cmd –permanent –zone=public –add-port=7777/tcp
$ sudo firewall-cmd –reload
ویرایش فایل پیکربندی SSH:
تنظیمات پیکربندی SSH در فایل sshd_config ذخیره شده است. با استفاده از ویرایشگر متن مانند nano یا vim، فایل پیکربندی SSH را باز کنید:
sudo nano /etc/ssh/sshd_config
به دنبال خطی که با Port 22 شروع میشود، بگردید.
عدد 22 را با پورت دلخواه خود جایگزین کنید. مثلاً:
Port 7777
توجه: از انتخاب پورتهای زیر 1024 خودداری کنید، زیرا معمولاً برای سرویسهای سیستمعامل رزرو شدهاند. برای مثال پورت 80 برای سرویس http و پورت 443 برای سرویس https قرارداد شده است. همچنین مطمئن شوید که سرویسهای دیگری که دارید، از پورت مورد نظر شما استفاده نمیکنند. برای مثال پورت کنترل پنل Direct Admin بر روی 2222 قرار دارد و تنظیم پورت SSH بر روی 2222 میتواند باعث اختلال در این دو سرویس شود.
ذخیره تغییرات:
تغییرات را ذخیره کنید و ویرایشگر را ببندید. در nano با زدن Ctrl+O و سپس Enter و در vim با زدن :wq انجام میشود.
ریستارت سرویس SSH:
نکته بسیار مهم: هنگام تغییر پورت SSH، حتماً به این نکته حیاتی توجه کنید که اگر سیستم امنیتی Selinux را بهطور موقت غیرفعال نکنید و سپس سرویس SSH را مجدداً راهاندازی کنید، دسترسی شما به سرور از طریق SSH بهطور کامل قطع خواهد شد و ممکن است برای بازیابی آن با مشکلات جدی مواجه شوید.
Selinux مخفف Security-Enhanced Linux است و یک سیستم امنیتی قدرتمند برای هسته لینوکس محسوب میشود. این سیستم با ایجاد محدودیتهای دقیق بر روی دسترسی فرآیندها به منابع سیستم، سطح امنیتی را به شدت افزایش میدهد. جهت غیرفعال کردن Selinux میتوانید از طریق دستور زیر اقدام نمائید:
nano /etc/selinux/config
اگر از Selinux استفاده میکنید، برای تغییر پورت قبلی به پورت جدید در Selinux باید حتماً دستور زیر را وارد کنید:
#semanage port -a -t ssh_port_t -p tcp 7777
به خاطر داشته باشید که قبل از هر چیز پورتها را در فایروال خود را بروزرسانی کرده باشید؛ درغیر اینصورت فایروال دسترسی به SSH را غیرفعال میکند.
برای اعمال تغییرات، سرویس SSH را ریستارت کنید:
sudo systemctl restart sshd
راهاندازی مجدد SSH
$ sudo service sshd restart
همچنین پورتهای TCP 7777 نیز باز هشتند و برای نمایش اطلاعات آن از دستور netstat و یا ss میتوانید استفاده کنید:
ss -tulpn | grep 7777
netstat -tulpn | grep 7777
تست اتصال با پورت جدید:
-
تغییر پورت در نرمافزار SSH: در نرمافافزار SSH خود، پورت جدید را در قسمت تنظیمات اتصال وارد کنید.
-
تلاش برای اتصال: مجدداً به سرور متصل شوید. اگر همه چیز به درستی انجام شده باشد، باید بتوانید با استفاده از پورت جدید به سرور متصل شوید.
نکات مهم:
- فایروال: اگر از فایروال استفاده میکنید، مطمئن شوید که پورت جدید را در آن باز کردهاید.
- پورت امن: پورت انتخابی شما باید به اندازه کافی امن باشد و در معرض حملات رایج قرار نگیرد.
- سایر سرویسها: اگر سرویسهای دیگری بر روی پورت 22 اجرا میشوند، باید آنها را به پورت دیگری منتقل کنید.
- تغییر پورت SSH در پنل مدیریت: برخی از ارائه دهندگان هاستینگ، امکان تغییر پورت SSH را از طریق پنل مدیریت فراهم میکنند.
مثال با استفاده از PuTTY:
- PuTTY را باز کنید.
- در قسمت Host Name، آدرس IP سرور خود را وارد کنید.
- در قسمت Port، پورت جدید (مثلاً 7777) را وارد کنید.
- روی Open کلیک کنید.
نکته:
این آموزش برای اکثر توزیعهای لینوکس مانند Ubuntu، Debian، CentOS و Fedora قابل استفاده است. برای امنیت بیشتر، میتوانید از احراز هویت مبتنی بر کلید عمومی (SSH keys) استفاده کنید.
سخن پایانی
هکرها توسط IP های مختلفی به شبکه شما حمله میکنند تا انواع نام کاربری و کلمه عبور را بر روی پورت شما آزمایش کنند. اما شما میتوانید با تنظیم فایروال جلوی این حملات را بگیرید. فایروال به هر آدرس IP سه بار اجازه آزمایش نام کاربری و کلمه عبور را میدهد و از طرفی تعداد آدرس IP ها برای هکرها محدود است و قادر نیستند تا با همه آنها تستهای سنگین با تعداد بالا انجام دهند. از این رو شانس تست میلیونها نام کاربری و کلمه عبور بشدت پایین خواهد آمد. علاوه بر همه این موارد، مطمئن شوید که برای نام کاربری از عبارتهایی همچون "root" ، "admin" استفاده نکنید.
همچنین برای کلمه عبور از عبارتهایی نظیر "password" و "pass" استفاده کنید. استفاده از عبارات ضعیف شبیه به این است که کلید خانه را کنار جا کفشی پنهان کرده باشید. اگرچه پنهان است، اما پیدا کردن آن ساده و سریع انجام میشود. همچنین بهتر است در کلمه عبور از کاراکترهای ویژه مانند @#amp;*! استفاده کنید.