امن کردن SSH در ده دقیقه
لاگ SSH هر سروری را که نشانی عمومی دارد باز کنید: هر چند ثانیه یک تلاش ناموفق برای ورود میبینید. اینها رباتهایی هستند که فهرست گذرواژههای رایج را امتحان میکنند. تا وقتی ورود با گذرواژه باز باشد، امنیت سرور به اندازهی ضعیفترین گذرواژهی آن است.
۱. کلید بسازید
روی رایانهی خودتان، نه روی سرور:
ssh-keygen -t ed25519 -C "laptop"
ssh-copy-id user@server
الگوریتم ed25519 کلیدهای کوتاهتر و سریعتری از RSA میسازد و سالهاست همهجا پشتیبانی میشود. برای کلید عبارت عبور بگذارید؛ اگر لپتاپتان گم شود، همین عبارت تنها چیزی است که بین یابنده و سرورهای شما میماند.
۲. ورود با گذرواژه را ببندید
اول مطمئن شوید با کلید میتوانید وارد شوید. بعد یک فایل در /etc/ssh/sshd_config.d/ بسازید تا به فایل اصلی دست نزنید:
# /etc/ssh/sshd_config.d/10-hardening.conf
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
MaxAuthTries 3
LoginGraceTime 30
sshd -t && systemctl reload ssh
sshd -t پیکربندی را بررسی میکند. اگر خطا داشته باشد و بدون بررسی سرویس را دوباره راه بیندازید، ممکن است دیگر نتوانید وصل شوید.
۳. نتیجه را بیازمایید
sshd -T | grep -Ei 'passwordauth|permitroot|maxauthtries'
ssh -o PubkeyAuthentication=no user@server
دستور اول تنظیمات مؤثر را نشان میدهد، نه آنچه در فایل نوشتهاید. دستور دوم باید با Permission denied (publickey) تمام شود.
عوض کردن درگاه چطور؟
عوض کردن درگاه ۲۲ امنیت نمیآورد، ولی لاگها را خلوت میکند. اگر این کار را میکنید، قاعدهی فایروال را قبل از راهاندازی دوبارهی سرویس اضافه کنید، نه بعد از آن.
fail2ban
وقتی ورود با گذرواژه بسته است، fail2ban بیشتر به درد خلوت کردن لاگ میخورد تا امنیت. با این حال نصبش دو دقیقه طول میکشد و تنظیم پیشفرضش برای SSH کافی است:
apt install fail2ban
systemctl enable --now fail2ban
fail2ban-client status sshd