推荐使用密钥登录 SSH,因其更加安全。如果必须使用密码登录,请务必设置复杂密码,并更改默认的 SSH 端口以减少暴力破解的风险。此外,建议启用 Fail2Ban
来防范暴力破解攻击
更改ssh端口
更改ssh端口
sudo nano /etc/ssh/sshd_config
找到 #Port 22
,更改为其他端口(例如123):
Port 123
UFW防火墙开放对应端口
sudo ufw allow 123/tcp
重启SSH服务
sudo systemctl restart sshd
⚠️ 重要: 不要关闭当前连接!用新开终端测试 123 端口能否连接,确认成功后再关闭原会话。
连接新端口示例:
ssh user@ip -p 123
安装Fail2Ban
1. 系统准备
1.1 更新系统
sudo apt update
sudo apt upgrade
1.2 安装必要软件
sudo apt install fail2ban rsyslog -y
安装
rsyslog
,以确保日志文件能够正常生成并供Fail2Ban
使用1.3 启动服务
# 启动并设置开机自启 fail2ban sudo systemctl enable --now fail2ban # 启动并设置开机自启 rsyslog sudo systemctl enable --now rsyslog
检查服务状态
sudo systemctl status fail2ban sudo systemctl status rsyslog
2. 配置 Fail2Ban
2.1 创建配置文件
sudo nano /etc/fail2ban/jail.local
2.2 基础配置内容
[DEFAULT] # 白名单设置(1.2.3.4替换为你的实际IP) ignoreip = 127.0.0.1/8 ::1 1.2.3.4 [sshd] enabled = true # 替换为实际ssh端口 port = ssh logpath = /var/log/auth.log # 最大尝试次数 maxretry = 3 # 封禁时间(秒) bantime = 3600 # 检测时间窗口(秒) findtime = 600
配置说明:
enabled = true
: 启用 SSH 防护port = ssh
: 指定 SSH 端口(默认22)maxretry = 3
: 3次失败后封禁bantime = 3600
: 封禁1小时findtime = 600
: 10分钟内达到失败次数则封禁3. 管理和监控
3.1 重启服务使配置生效
sudo systemctl restart fail2ban
3.2 查看运行状态
sudo systemctl status fail2ban
3.3 查看日志
sudo tail -f /var/log/fail2ban.log
3.4 管理封禁IP
查看已封禁IP:
sudo fail2ban-client status sshd
手动解封IP:
sudo fail2ban-client unban IP地址
4. 防火墙规则验证
4.1 使用 iptables 查看规则
sudo iptables -L
4.2 使用 ufw 查看规则(如果使用 ufw)
sudo ufw status
5. 常见问题处理
5.1 如果服务启动失败
检查配置文件语法:
sudo fail2ban-client -t
5.2 如果日志不更新
重启 rsyslog 服务:
sudo systemctl restart rsyslog
6. 安全建议
- 定期检查日志文件
- 保持适当的封禁时间(1-2小时较为合理)
- 确保将自己的IP加入白名单
- 定期更新系统和 fail2ban
卸载
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