Debian 服务器 SSH 安全加固实录:密钥登录、改端口与 fail2ban
这台 Debian 小服务器挂在公网上,SSH 的 22 端口每天都会被扫,auth.log 里满是失败登录。密码再复杂也架不住字典爆破,前阵子我把 SSH 加固了一遍,记下来以后照着做。
一、密钥登录,关掉密码登录
先在电脑上生成密钥:ssh-keygen -t ed25519,一路回车即可。再把公钥传到服务器:ssh-copy-id user@服务器。传完先用新终端试登,确认能登录再关当前会话,这是防止把自己锁在门外的关键一步。确认无误后改 sshd_config:PasswordAuthentication 改成 no,PubkeyAuthentication 改成 yes,PermitRootLogin 改成 no。改完重启 sshd,再用密码试登,应该直接被拒绝才算生效。另外 ~/.ssh 权限 700,authorized_keys 权限 600。
二、改默认端口,先放行防火墙
把 sshd_config 里的 Port 改成高位端口,比如 2222。顺序不能反:先在云厂商安全组和服务器防火墙里放行新端口,再改端口、再重启,否则新端口连不上、旧端口又关了,只能走控制台救援。重启后用 ss -tlnp 确认新端口在监听,再用新端口登录验证。
三、装 fail2ban 挡爆破
即使改了端口和密钥,也不妨碍再加一层自动封禁:apt install fail2ban。Debian 自带的 sshd 监狱默认就是开的,重点是在 jail.local 里调阈值,我用的是 10 分钟内失败 5 次就封 1 小时。改完重启服务,用 fail2ban-client status sshd 看封禁数。
四、定期检查登录日志
加固不是一劳永逸,每周花几分钟看看就行:last 看成功登录,lastb 看失败登录,journalctl 看 sshd 日志,auth.log 里能快速定位还在尝试的 IP。
五、密钥备份,别把私钥弄丢
密钥登录最大的风险从密码变成了私钥:私钥只放自己电脑,绝不要传到代码仓库或聊天记录里。我把私钥加密备份到离线 U 盘,同时给服务器留一个备用公钥,万一主设备出问题还能登录。
清单:密钥登录、关密码、改端口先放行、fail2ban 封禁、每周看日志、密钥离线备份。按这个顺序做,基本不会把自己锁在门外。
- 点赞
- 收藏
- 关注作者
评论(0)