هدف سختسازی SSH
SSH در بسیاری از زیرساختها مسیر اصلی دسترسی مدیریتی است. سختسازی آن باید دسترسی مجاز را حفظ کند و همزمان سطح حمله را کاهش دهد.
تهیه نسخه پشتیبان
قبل از تغییر configuration، یک session باز نگه دارید و از فایل فعلی نسخه پشتیبان بگیرید.
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F)
sudo sshd -tتنظیمات پیشنهادی
در بیشتر سرورهای Production، غیرفعال کردن ورود مستقیم root و محدود کردن password authentication نقطه شروع خوبی است.
Port 22
Protocol 2
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
AllowUsers admin deploy
ClientAliveInterval 300
ClientAliveCountMax 2
X11Forwarding noتست بدون قطع دسترسی
بعد از تغییرات، ابتدا syntax را بررسی کنید و سپس سرویس را reload کنید. قبل از بستن session قبلی، یک اتصال جدید تست کنید.
sudo sshd -t
sudo systemctl reload sshd
ssh -o PreferredAuthentications=publickey admin@server.example.comمحدودسازی شبکه
اگر سرور فقط از طریق VPN یا bastion مدیریت میشود، دسترسی پورت SSH را در firewall محدود کنید.
sudo ufw allow from 10.20.0.0/16 to any port 22 proto tcp
sudo ufw deny 22/tcp
sudo ufw status numberedقبل از اعمال deny عمومی، مطمئن شوید مسیر دسترسی مجاز از VPN، bastion یا IP مدیریتی تست شده است.
چکلیست پایانی
- فایل
sshd_configپشتیبانگیری شده است. sshd -tبدون خطا اجرا میشود.- ورود root مستقیم غیرفعال شده است.
- احراز هویت کلید عمومی تست شده است.
- firewall فقط مسیرهای مدیریتی مجاز را باز میگذارد.
- session جدید قبل از بستن session قبلی تایید شده است.

