阻止ssh暴力破解的核心是fail2ban与ssh安全配置结合;2. fail2ban通过监控日志、匹配失败尝试并自动封禁ip实现动态防御;3. 强化ssh需禁用密码认证、禁用root登录、修改默认端口、限制用户访问及认证次数;4. 实施时需备份配置、测试新设置、避免锁死自身,确保日志路径正确并合理设置封禁时长;5. 定期检查fail2ban状态和防火墙规则以确保防护有效,该策略可高效抵御自动化攻击但非万能。

要有效阻止SSH暴力破解,核心在于两点:一是动态地、自动化地封禁恶意IP,这正是Fail2Ban的拿手好戏;二是强化SSH自身的安全配置,从根本上提升认证难度和访问控制。两者结合,能构筑一道坚实的防线,让那些无休止的尝试变得徒劳。
防止SSH暴力破解,我们通常会采用Fail2Ban配合SSH自身配置双管齐下的策略。Fail2Ban通过监控日志文件,一旦发现有IP地址在短时间内多次尝试SSH登录失败,就会自动将其IP地址加入防火墙的黑名单,从而阻止其进一步的恶意尝试。这就像给你的服务器门口装了个智能摄像头,发现可疑分子就直接关门。
具体的实现步骤包括:
安装 Fail2Ban: 在Debian/Ubuntu系统上:
sudo apt update && sudo apt install fail2ban
sudo yum install epel-release && sudo yum install fail2ban
配置 Fail2Ban: Fail2Ban的配置主要在
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.local
jail.local
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
jail.local
[sshd]
[sshd-ddos]
enabled = true
bantime
bantime = 1h
bantime = -1
findtime
maxretry
maxretry
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log # 或 /var/log/secure,取决于你的系统 maxretry = 5 bantime = 3600 # 封禁1小时 findtime = 600 # 10分钟内
配置完成后,重启Fail2Ban服务:
sudo systemctl restart fail2ban
强化 SSH 配置: 编辑SSH服务器配置文件
/etc/ssh/sshd_config
PasswordAuthentication no
PermitRootLogin no
sudo
su
Port 2222
AllowUsers yourusername anotheruser
MaxAuthTries 3
LoginGraceTime 30
sshd_config
sudo systemctl restart sshd
Fail2Ban的工作原理其实挺巧妙的,它并非什么高深莫测的人工智能,而是基于一种非常实用的模式识别。简单来说,它会持续地“盯”着你的系统日志文件,特别是那些记录认证尝试的日志(比如
/var/log/auth.log
/var/log/secure
当一个IP地址尝试登录SSH,并且登录失败时,日志里就会留下相应的记录。Fail2Ban的过滤器会用这些正则表达式去匹配日志里的每一行。一旦某个IP地址在设定的
findtime
maxretry
接着,它会执行预设的“动作”(actions),通常就是调用防火墙(如iptables)的命令,将这个恶意IP地址加入到防火墙的丢弃规则中。这样一来,这个IP在
bantime
我个人觉得,Fail2Ban更多是“事后惩罚”,而SSH自身的配置则是“事前预防”和“提高门槛”。两者结合起来,才能形成一个完整的防御体系。除了Fail2Ban,以下几个SSH配置项是强化服务器安全的关键:
首先,禁用密码认证,强制使用SSH密钥登录是优先级最高的。密码再复杂也可能被暴力破解,或者通过其他方式泄露。SSH密钥则不同,它基于非对称加密,私钥留在本地,公钥放在服务器,没有私钥就无法登录,而且私钥还可以用密码短语加密,安全性极高。这是我个人最推荐的配置,它能从根本上杜绝密码暴力破解的可能性。
然后是禁用Root用户直接登录。Root用户拥有系统的最高权限,一旦被攻破后果不堪设想。我们应该始终使用普通用户登录,然后通过
sudo
更改SSH默认端口(22)虽然不能从根本上提升安全性,但它能显著减少日志中的“噪音”。大量的自动化扫描器只会扫描默认的22端口,当你把端口改掉后,这些扫描器就不会再来烦你,你的日志会干净很多,也更容易发现真正的异常。这就像是把你的门牌号换了,那些盲目敲门的就找不到你了。
再者,利用
AllowUsers
DenyUsers
最后,可以调整
MaxAuthTries
LoginGraceTime
MaxAuthTries
LoginGraceTime
实施这些安全策略,特别是涉及到SSH访问权限时,最常见的“陷阱”就是把自己锁在外面。我踩过最大的坑就是修改
sshd_config
sshd_config
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
对于Fail2Ban,有几个需要注意的点:
jail.local
jail.conf
jail.conf
/var/log/auth.log
/var/log/secure
bantime
sudo fail2ban-client status sshd
sudo iptables -L -n
这些策略虽然能大幅提升安全性,但它们并非万能。它们主要针对自动化、大规模的暴力破解。对于更高级的攻击手段,比如社会工程学、0day漏洞等,还需要其他更全面的安全措施。但作为基础防御,它们无疑是高效且必要的。
以上就是使用 Fail2Ban + SSH 安全策略防止暴力破解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号