云服务器

帮助中心 >  产品文档 >  云服务器 >  服务器教程 >  Linux 如何使用 fail2ban 防止 SSH 暴力破解

Linux 如何使用 fail2ban 防止 SSH 暴力破解

如果你坚持使用带密码的 SSH 登录, 业内公认的, 防止SSH爆破的最有效且成本最低的方法是利用Fail2ban. 不需要加之一, 而且, 几乎没有副作用.

Fail2ban还能结合 wordpress 防止暴力登录, 今天只说最小可用方式, 也是最实用的方式, 在你使用 ssh 账户和密码登录的情况下, 如何防止别人暴力破解.

Centos 下安装 faile2ban

yum -y install epel-release
yum
-y install fail2ban

配置 Fail2Ban

编辑其配置文件 /etc/fail2ban/jail.conf。在配置文件的“[DEFAULT]”区,你可以在此定义所有受监控的服务的默认参数,另外在特定服务的配置部分,你可以为每个服务(例如SSH,Apache等)设置特定的配置来覆盖默认的参数配置。

在针对服务的监狱区(在[DEFAULT]区后面的地方),你需要定义一个[ssh-iptables]区,这里用来定义SSH相关的监狱配置。真正的禁止IP地址的操作是通过iptables完成的。

下面是一个包含“ssh-iptables”监狱配置的/etc/fail2ban/jail.conf的文件样例。当然根据你的需要,你也可以指定其他的应用监狱

[DEFAULT]               #全局设置
ignoreip
= 127.0.0.1/8       #忽略的IP列表,不受设置限制
bantime  
= 600             #屏蔽时间,单位:秒
findtime  
= 600             #这个时间段内超过规定次数会被ban掉
maxretry
= 3                #最大尝试次数
backend
= auto            #日志修改检测机制(gamin、polling和auto这三种)
[ssh-iptables]              
#单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置。
enabled  
= true             #是否激活此项(true/false)修改成 true
filter  
= sshd              #过滤规则filter的名字,对应filter.d目录下的sshd.conf
action  
= iptables[name=SSH, port=ssh, protocol=tcp]             #动作的相关参数,对应action.d/iptables.conf文件
sendmail-whois
[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"]#触发报警的收件人
logpath  
= /var/log/secure   #检测的系统的登陆日志文件。这里要写sshd服务日志文件。默认为logpath = /var/log/sshd.log
#5分钟内3次密码验证失败,禁止用户IP访问主机1小时。配置如下
bantime  
= 3600   #禁止用户IP访问主机1小时
findtime  
= 300    #在5分钟内内出现规定次数就开始工作
maxretry
= 3    #3次密码验证失败

image.png

重启Fail2Ban

systemctl restart fail2ban

测试

密码输入错误三次之后ssh服务断开

image.png

查看防火墙规则,我们的IP已经被禁止端口访问

image.png


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: