推荐使用密钥登录 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
最后修改:2024 年 12 月 15 日
如果觉得我的文章对你有用,请随意赞赏