فهرست مطالب
چرا باید پورت پیشفرض SSH را تغییر دهیم؟
اول از همه بریم سر اصل مطلب: چرا اصلاً بخوایم پورت SSH رو از 22 به عدد دیگهای تغییر بدیم؟
امنیت بیشتر و کاهش حملات brute‑force
پورت 22، شکارگاه هکرهاست—چون میدونن تقریباً همهجا بازه! تغییر پورت، اولین سد حفاظتی در کنار فایروال و محدودسازی آیپی محسوب میشه.
پنهانسازی در مقابل اسکنرهای خودکار
سرورهایی که پورت SSH اصلی دارند، مدام زیر شناسایی هستن. وقتی پورت رو تغییر میدید، جلوی اسکنرهای خودکار گرفته میشه و سرورتون کمتر در دید عمومی قرار میگیره.
جلوگیری از مشکلات همپوشانی پورتها
ممکنه پورت 22 برای سرویس دیگری رزرو شده باشه یا بالافاصله روی سرور استفاده بشه. تغییر پورت، تعارض احتمالیشو برطرف میکنه.
پیشنیازها و نکات قبل از تغییر
دسترسی root یا sudo
برای تغییر فایلهای سیستمی مثل /etc/ssh/sshd_config باید دسترسی sudo داشته باشید. بدون sudo یا root، هیچ کاری نمیشه پیش برد.
تهیه بکاپ از فایل sshd_config
قبل از هر دستکاری، بکاپ بگیرید. دستوری مثل:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
خیلی وقتا نجاتبخش میشه اگه با تغییر اشتباه مواجه بشیم.
انتخاب یک پورت مناسب و آزاد
از بازه 1024–65535 انتخاب کنید (زیرا پورتهای 0–1023 برای سرویسهای سیستمی رزرو شدن)
گامبهگام تغییر پورت SSH
۱. ورود به سرور و بکاپگیری
وارد سرور بشید (مثلاً ssh root@IP) و بکاپ فایل تنظیمات رو بگیرید.
۲. باز کردن و ویرایش فایل /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
یا با vi، به دنبال خط #Port 22 بگردید و اون رو به شکل زیر تغییر بدید:
Port 2222
فراموش نکنید که # رو بردارید—این خط رو فعال میکنه.
۳. ذخیره تغییرات و خروج از ویرایشگر
در nano: Ctrl+O → Enter → Ctrl+X.
در vi: Esc → :wq → Enter.
۴. باز کردن پورت جدید در فایروال
اگر از UFW استفاده میکنید:
sudo ufw allow 2222/tcp
برای Firewalld:
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
مطمئن بشید پورت جدید بازه.
۵. ریاستارت سرویس SSH
sudo systemctl restart sshd
یا برای Ubuntu:
sudo systemctl restart ssh
در توزیعهای غیر-systemd مثل Fedora قدیمی:
sudo service sshd restart
یا:
sudo service ssh restart
۶. تست اتصال روی پورت جدید
اگه تو پنجره SSH قبلی هستید، همچنان امنیت دارید—خروج نکنید. در تب جدید:
ssh -p 2222 username@IP
اتصال برقرار شد؟ همه چیز اوکیه!
نکات پیشرفته و تطبیق با systemd
استفاده از sshd_config.d در Ubuntu جدید
برخی نسخههای جدید (مانند Ubuntu 24.04) فایل /etc/ssh/sshd_config.d رو پشتیبانی میکنن—به جای ویرایش مستقیم، میتونید فایل جدید در این دایرکتوری قرار بدید.
بررسی unit ssh.socket
در systemd، بعضی تنظیمات پورت مستقیماً از طریق unit فایل اعمال میشن. پس از تغییر، systemctl daemon-reload هم اجرا کنید و unit رو نیز ریاستارت کنید.
مراحل مخصوص توزیعهای مختلف لینوکس
Ubuntu / Debian
- ویرایش
/etc/ssh/sshd_config sudo ufw allow PORT/tcpsudo systemctl restart sshd
CentOS / RHEL / Fedora
- ویرایش
/etc/ssh/sshd_config sudo firewall-cmd …sudo service sshd restartیاsudo systemctl restart sshd
رفع مشکلات احتمالی
قفل شدن دسترسی SSH بعد از تغییر
اگر فایروال پورت جدید را باز نکرده باشید، ممکن خوششانس بمونید با sesion قبلی. اگه نه، دسترسی کامل بسته شده—باید از کنسول کنترل پنل یا rescue mode استفاده کنید.
تداخل با SELinux
در RHEL/CentOS، SELinux ممکنه اتصال رو بلاک کنه. قبل از تغییر، SELinux context پورت جدید رو مجاز کنید یا موقت disable کنید.
بررسی لاگها برای خطا
اگر sshd بالا نیومد، در /var/log/auth.log (Debian/Ubuntu) یا /var/log/secure (CentOS) دنبال خطا بگردید.
نکات امنیتی هنگام تغییر پورت
استفاده از پورتهای بالای 1024
پورتهای پایینتر اغلب سیستم رزرو کردهاند—برای جلوگیری از تداخل، پورت بالای 1024 انتخاب کنید.
اضافهکردن IP ثابت یا Fail2Ban
برای امنیت بیشتر، ورود رو به IP خاص محدود کنید یا از ابزارهایی مثل Fail2Ban استفاده کنید تا ورودهای اشتباه رو بلاک کنه.
جمعبندی
تغییر پورت SSH یکی از سادهترین و مؤثرترین روشها برای افزایش امنیت سرور لینوکس است. مراحلش:
- تهیه بکاپ
- ویرایش
sshd_config - باز کردن فایروال
- ریاستارت سرویس
- تست اتصال
- بررسی SELinux و unitها (در systemd)
اگر دقیق بروید، حتی حرفهایترین حملات اولیه هم روی سرورتون جواب نمیده.
سؤالات متداول (FAQs)
1. آیا تغییر پورت SSH به تنهایی امنیت کامل فراهم میکند؟
خیر، فقط لایه ابتداییه. توصیه میشه از کلید عمومی، Fail2Ban، محدودسازی IP و فایروال هم استفاده کنید.
2. بهترین پورت برای SSH چیست؟
پورت آزاد بین 1024 تا 65535—مثلاً 2222، 2200 یا یک عدد تصادفی.
3. اگر پس از تغییر پورت دسترسی از راه دور قطع شد چه کنم؟
وارد سرور از طریق کنسول یا rescue mode بشید، فایل کانفیگ و فایروال رو تنظیم کنید و سرویس SSH رو مجدداً ریاستارت کنید.
4. SELinux چه تأثیری دارد؟
در حالت enforcing، SELinux ممکنه پورت جدید را بلاک کنه. باید context جدید رو با semanage port -a -t ssh_port_t -p tcp NEWPORT اضافه کنید یا SELinux رو موقتاً permissive قرار دهید.
5. آیا روی Ubuntu جدید راه دیگری غیر ویرایش مستقیم فایل هست؟
بله، میتونید فایل .conf در /etc/ssh/sshd_config.d/ اضافه کنید، سپس systemctl daemon-reload و systemctl restart sshd اجرا کنید.
