推荐使用密钥登录 SSH,因其更加安全。如果必须使用密码登录,请务必设置复杂密码,并更改默认的 SSH 端口以减少暴力破解的风险。此外,建议启用 Fail2Ban 来防范暴力破解攻击
更改ssh端口
sudo nano /etc/ssh/sshd_config
找到 #Port 22,更改为其他端口(例如123):
Port 123 UFW防火墙开放对应端口
sudo ufw allow 123/tcp
重启SSH服务
sudo systemctl restart sshd
⚠️ 重要: 不要关闭当前连接!用新开终端测试 123 端口能否连接,确认成功后再关闭原会话。
安装Fail2Ban
更新系统
sudo apt update
sudo apt install fail2ban rsyslog -y
安装 rsyslog,以确保日志文件能够正常生成并供 Fail2Ban 使用
1.3 启动服务
sudo systemctl enable --now fail2ban
sudo systemctl enable --now rsyslog
检查服务状态
sudo systemctl status fail2ban
sudo systemctl status rsyslog
配置 Fail2Ban
sudo nano /etc/fail2ban/jail.local
粘贴以下内容,记得把5522改成你的端口
[sshd]
ignoreip = 127.0.0.1/8
enabled = true
filter = sshd
port = 5522
maxretry = 3
findtime = 600
bantime = 3600
banaction = ufw
logpath = /var/log/auth.log
配置说明:
- enabled = true: 启用 SSH 防护
- port = 5522: 指定 SSH 端口(默认22)
- maxretry = 3: 3次失败后封禁
- bantime = 3600: 封禁1小时
- findtime = 600: 10分钟内达到失败次数则封禁
测试,打开本地cmd指定一个不存在的用户名,例如lao
ssh lao@1.2.3.4 -p 5522
新开一个ssh终端,然后查看日志
sudo tail -f /var/log/fail2ban.log
有本地ip输出即可
管理和监控
3.1 重启服务使配置生效
sudo systemctl restart fail2ban
3.2 查看运行状态
sudo systemctl status fail2ban
3.3 查看日志
sudo tail -f /var/log/fail2ban.log
3.4 管理封禁IP
sudo fail2ban-client status sshd
手动解封IP:
sudo fail2ban-client unban IP地址
4.2 使用 ufw 查看规则(如果使用 ufw)
sudo ufw status numbered
常见问题处理
5.1 如果服务启动失败 检查配置文件语法:
sudo fail2ban-client -t
5.2 如果日志不更新 重启 rsyslog 服务:
sudo systemctl restart rsyslog
卸载
sudo systemctl stop fail2ban
sudo systemctl disable fail2ban
sudo apt-get remove --purge fail2ban
sudo apt-get autoremove
sudo apt-get clean
sudo rm -rf /var/log/fail2ban.log
sudo rm -rf /var/lib/fail2ban