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

تغییر پورت SSH در لینوکس، یکی از اقدامات امنیتی است که هر مدیر سروری باید در چک‌لیست نکات امنیتی خود داشته باشد. این آموزش برای مدیران سرورهای مجازی یا سرورهای اختصاصی بسیار کاربردی است. با ما همراه باشید.

چرا باید پورت SSH را تغییر دهیم؟

شاید تا به حال درباره سرقت اطلاعات، ارسال انبوه اسپم به سرورها و حملات Brute Force بسیار شنیده باشید. تمامی این موارد از طریق نقاط ضعف در تأمین امنیت یک سرور اتفاق می‌افتد. برای جلوگیری از این حملات باید تنظیمات و به‌روزرسانی‌های امنیتی را به صورت منظم و درست انجام دهیم.

حملات Brute Force که به خصوص برای نفوذ در سرور و از طریق پورت ۲۲ انجام می‌شود، معمولاً برای شکستن رمز عبورها، کلیدهای رمزگذاری‌شده، کلیدهای API و SSH کاربرد دارند. در این گونه حملات، ترکیبات مختلفی از کاراکترها برای دسترسی به نتیجه مورد نظر استفاده می‌شود.

SSH با پورت ۲۲ برای دسترسی به سرور لینوکس استفاده می‌شود. تمامی هکرها می‌دانند که پورت پیش‌فرض SSH عدد ۲۲ است و به راحتی اقدامات هک سرور را انجام می‌دهند. اگر این پورت را تغییر دهیم، هکرها به سادگی نمی‌توانند آن را تشخیص دهند. بنابراین هر چه سریع‌تر در راستای امنیت سرویس SSH اقدام کنیم.

الزامات قبل از تغییر پورت SSH

قبل از تغییر دادن پورت پیش‌فرض SSH، نکاتی است که باید به آن‌ها توجه کنیم:

  • پورتی که می‌خواهیم به عنوان پورت جدید معرفی کنیم، باید قبل از هر کاری در فایروال سرور باز شود.
  • شماره‌ای که برای پورت جدید تنظیم می‌کنیم، باید در لیست پورت‌های رزرو‌شده سیستم نباشد.
  • پیش از ریستارت سرویس SSH، یک اتصال SSH جداگانه با پورت جدید تست کنید تا مطمئن شوید اتصال برقرار است.
  • دسترسی VNC یا KVM برای موارد اضطراری فعال باشد.

نحوه افزودن پورت جدید SSH به فایروال CSF

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

۱. ویرایش فایل تنظیمات CSF:

/etc/csf/csf.conf

۲. وارد کردن پورت جدید در لیست‌های Incoming و Outgoing:

# Allow incoming TCP ports
TCP_IN = "20,443,465,21,22,587,993,25,53,80,110,143,995"
# Allow outgoing TCP ports
TCP_OUT = "20,21,443,587,22,25,80,110,43,53"

عدد پورت جدید را به این لیست‌ها اضافه کنید.

۳. ریستارت سرویس CSF:

csf -r

اگر این فایروال در سرور شما فعال نیست، باید بر اساس نوع فایروال خود اقدام کنید.

انتخاب شماره پورت مناسب

نمی‌توان هر عددی برای پورت انتخاب کرد. باید ابتدا بررسی کنید که عدد مورد نظر در لیست پورت‌های رزرو‌شده نباشد:

  • شماره‌های ۰ تا ۱۰۲۳ برای سرویس‌های مختلف سیستم رزرو هستند — از آن‌ها استفاده نکنید.
  • بهترین بازه: اعداد بین ۱۰۲۴ تا ۶۵۵۳۵.
  • توصیه می‌کنیم عددی ۴ یا ۵ رقمی انتخاب کنید که با سایر سرویس‌های شناخته‌شده تداخل نداشته باشد.
  • برای بررسی اینکه پورت مورد نظر آزاد است یا نه: netstat -tuln | grep :PORTNUMBER

آموزش تغییر پورت SSH

در این آموزش سیستم عامل CentOS را مبنا قرار می‌دهیم. مراحل زیر را دنبال کنید:

۱. از طریق نرم‌افزار PuTTY به سرویس SSH متصل می‌شویم. حتماً باید با سطح دسترسی root وارد شویم.

۲. برای تغییر پورت SSH لازم است فایل sshd_config را ویرایش کنیم:

vim /etc/ssh/sshd_config

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

$ find / -name "sshd_config" 2>/dev/null

۳. عبارت #Port 22 را پیدا می‌کنیم. عدد ۲۲ را به عدد دلخواه تغییر می‌دهیم. توصیه می‌کنیم عددی ۴ رقمی انتخاب کنید.

۴. نکته مهم: به صورت پیش‌فرض یک کاراکتر # قبل از کلمه Port نوشته شده است. این کاراکتر باید حذف شود تا خط به صورت یک دستور اجرایی فعال شود.

۵. بعد از اعمال تغییرات، تنظیمات را با Ctrl+X ذخیره می‌کنیم تا از این قسمت خارج شویم.

۶. حالا باید سرویس SSH را ریستارت کنیم:

service sshd restart

۷. بعد از ریستارت، پورت ۲۲ از کار می‌افتد و اتصال فعلی قطع می‌شود. از این پس باید با پورت جدید به SSH متصل شوید.

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

روش‌های تکمیلی برای امنیت SSH

تغییر پورت SSH یک لایه امنیتی است، اما کافی نیست. چند اقدام تکمیلی وجود دارد که باید در کنار تغییر پورت انجام دهید:

استفاده از کلید SSH به جای رمز عبور: احراز هویت با کلید SSH بسیار امن‌تر از رمز عبور است. ابتدا یک جفت کلید عمومی و خصوصی روی کامپیوتر خود ایجاد کنید:

ssh-keygen -t rsa -b 4096

سپس کلید عمومی را به سرور اضافه کنید:

ssh-copy-id -p PORTNUMBER user@serverip

بعد از اطمینان از کارکرد کلید SSH، می‌توانید احراز هویت با رمز عبور را غیرفعال کنید. در فایل sshd_config خط زیر را پیدا کرده و تغییر دهید:

PasswordAuthentication no

نصب و پیکربندی Fail2ban: Fail2ban یک ابزار است که IP‌هایی که تلاش‌های ناموفق متعدد برای ورود دارند را به صورت خودکار مسدود می‌کند. نصب آن در CentOS:

yum install fail2ban -y
systemctl enable fail2ban
systemctl start fail2ban

با تنظیمات پیش‌فرض، Fail2ban بعد از ۵ تلاش ناموفق SSH، IP مهاجم را برای ۱۰ دقیقه مسدود می‌کند. این تنظیمات قابل تغییر است.

محدود کردن دسترسی به SSH از طریق فایروال: اگر IP ثابتی دارید، می‌توانید دسترسی به پورت SSH جدید را فقط از آن IP مجاز کنید:

csf -a YOUR_IP_ADDRESS

این کار احتمال نفوذ را به حداقل می‌رساند.

تغییر پورت SSH در اوبونتو و دبیان

روش فوق برای CentOS است. در اوبونتو و دبیان مراحل تقریباً یکسان است اما دستور ریستارت سرویس متفاوت است:

sudo systemctl restart ssh

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

sudo ufw allow NEWPORTNUMBER/tcp
sudo ufw deny 22/tcp
sudo ufw reload

پیکربندی‌های پیشرفته SSH برای امنیت بیشتر

علاوه بر تغییر پورت، تنظیمات دیگری هم در فایل sshd_config وجود دارند که امنیت SSH را به شکل قابل توجهی بالا می‌برند:

غیرفعال کردن ورود root مستقیم: اجازه ندادن به کاربر root برای ورود مستقیم از طریق SSH یکی از بهترین اقدامات امنیتی است. به جای آن، با یک کاربر معمولی وارد شوید و سپس با دستور sudo su به root تبدیل شوید:

PermitRootLogin no

محدود کردن تعداد تلاش‌های ناموفق:

MaxAuthTries 3

با این تنظیم، بعد از ۳ تلاش ناموفق، اتصال قطع می‌شود.

محدود کردن کاربران مجاز به SSH: می‌توانید مشخص کنید فقط کاربران خاصی اجازه ورود از طریق SSH را داشته باشند:

AllowUsers username1 username2

غیرفعال کردن X11 Forwarding: اگر به رابط گرافیکی از طریق SSH نیاز ندارید، این گزینه را غیرفعال کنید:

X11Forwarding no

تنظیم Timeout: اتصالات SSH بی‌فعال را بعد از مدت مشخصی قطع کنید:

ClientAliveInterval 300
ClientAliveCountMax 2

با این تنظیم، اگر ۱۰ دقیقه بی‌فعالیت باشد، اتصال قطع می‌شود. این از خطرات session‌های باز و فراموش‌شده جلوگیری می‌کند.

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

تأیید تغییر پورت SSH

برای اطمینان از اینکه تغییر پورت به درستی اعمال شده، می‌توانید موارد زیر را بررسی کنید:

  • با پورت جدید به SSH متصل شوید و اتصال را تأیید کنید.
  • با دستور زیر ببینید SSH روی کدام پورت گوش می‌دهد:
netstat -tuln | grep sshd
  • اگر عدد پورت جدید در خروجی ظاهر شد، تغییر با موفقیت انجام شده است.
  • پورت قدیمی (۲۲) را در فایروال ببندید.

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

آیا تغییر پورت SSH واقعاً امنیت را بالا می‌برد؟
بله، به صورت معنادار. اکثر حملات Brute Force و اسکنرهای خودکار فقط پورت ۲۲ را هدف می‌گیرند. با تغییر پورت، این نوع حملات خودکار را به صفر نزدیک می‌کنید. البته این به معنای پایان کار امنیتی نیست — باید رمز عبور قوی، احراز هویت کلید عمومی و Fail2ban هم داشته باشید.

بهترین شماره پورت برای SSH چیست؟
هیچ «بهترین» شماره‌ای وجود ندارد. هر عدد ۴ تا ۵ رقمی که در بازه ۱۰۲۴ تا ۶۵۵۳۵ باشد و با سرویس دیگری تداخل نداشته باشد مناسب است. مثلاً ۲۲۲۸، ۴۴۴۴، ۵۹۱۳ و... همه گزینه‌های خوبی هستند.

بعد از تغییر پورت، با Filezilla یا WinSCP چطور متصل شویم؟
در تنظیمات اتصال این نرم‌افزارها، بخشی برای «Port» وجود دارد. به جای ۲۲، شماره پورت جدید را وارد کنید.

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

مانیتورینگ تلاش‌های ورود به SSH

بعد از تغییر پورت SSH، توصیه می‌کنیم لاگ‌های دسترسی را زیر نظر داشته باشید تا بدانید آیا کسی تلاش می‌کند به سرور نفوذ کند یا نه. دستور زیر تلاش‌های ناموفق ورود را نشان می‌دهد:

grep "Failed password" /var/log/secure | tail -20

یا در اوبونتو:

grep "Failed password" /var/log/auth.log | tail -20

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

csf -d IP_ADDRESS "Blocking suspicious SSH attempts"

همچنین می‌توانید با دستور زیر ببینید Fail2ban چه IPهایی را مسدود کرده:

fail2ban-client status sshd

این نظارت منظم به شما اجازه می‌دهد در صورت مشاهده الگوهای مشکوک، سریع اقدام کنید.

جمع‌بندی

تغییر پورت SSH یکی از ساده‌ترین و در عین حال مؤثرترین اقدامات امنیتی برای سرورهای لینوکسی است. این کار چند دقیقه وقت می‌برد اما تعداد حملات خودکار به سرور شما را به‌شدت کاهش می‌دهد. فراموش نکنید قبل از ریستارت سرویس، پورت جدید را در فایروال باز کنید و یک ترمینال آزمایشی برای تأیید اتصال داشته باشید.

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

اگر سوالی دارید که در این مقاله پاسخش را پیدا نکردید، در قسمت کامنت‌ها مطرح کنید. کارشناسان ما در کمترین زمان ممکن پاسخ خواهند داد.