centos

如何限制SSH登录尝试次数

小樊
32
2025-12-15 09:36:47
栏目: 编程语言

限制SSH登录尝试次数是一种常见的安全措施,可以防止暴力破解攻击。以下是几种常见的方法来实现这一目标:

方法一:使用PAM(Pluggable Authentication Modules)

PAM是一种灵活的认证框架,可以用来限制SSH登录尝试次数。以下是具体步骤:

  1. 编辑PAM配置文件: 打开 /etc/pam.d/sshd 文件,添加以下行:

    auth required pam_tally2.so onerr=fail deny=5 unlock_time=600
    

    解释:

    • onerr=fail:如果认证失败,立即返回失败。
    • deny=5:允许的最大失败尝试次数。
    • unlock_time=600:锁定时间(秒),在这段时间内用户无法尝试登录。
  2. 重启SSH服务

    sudo systemctl restart sshd
    

方法二:使用Fail2Ban

Fail2Ban是一个入侵防御软件框架,可以监控日志文件并根据配置的规则禁止恶意IP地址。以下是具体步骤:

  1. 安装Fail2Ban

    sudo apt-get install fail2ban
    
  2. 配置Fail2Ban: 编辑 /etc/fail2ban/jail.local 文件,添加以下内容:

    [sshd]
    enabled = true
    port = ssh
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 5
    bantime = 600
    

    解释:

    • enabled = true:启用该jail。
    • port = ssh:监控SSH端口。
    • filter = sshd:使用默认的sshd过滤器。
    • logpath = /var/log/auth.log:日志文件路径。
    • maxretry = 5:最大失败尝试次数。
    • bantime = 600:锁定时间(秒)。
  3. 重启Fail2Ban服务

    sudo systemctl restart fail2ban
    

方法三:使用iptables

iptables可以用来限制SSH登录尝试次数。以下是具体步骤:

  1. 创建iptables规则

    sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
    sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 -j DROP
    

    解释:

    • 第一条规则设置一个新的连接时,将其添加到recent列表中。
    • 第二条规则检查recent列表中的连接,如果在60秒内有5次失败的尝试,则丢弃该连接。
  2. 保存iptables规则

    sudo iptables-save > /etc/iptables/rules.v4
    
  3. 设置iptables规则开机自启动: 编辑 /etc/network/if-pre-up.d/iptables 文件,添加以下内容:

    #!/bin/sh
    iptables-restore < /etc/iptables/rules.v4
    

    然后赋予执行权限:

    sudo chmod +x /etc/network/if-pre-up.d/iptables
    

注意事项

通过以上方法,你可以有效地限制SSH登录尝试次数,提高系统的安全性。

0
看了该问题的人还看了