Fail2ban

Fail2ban防暴力破解

企业案例

生产环境发现总是有人尝试ssh暴力破解密码:

grep 'Failed' /var/log/secure

频繁登陆不仅危险,而且造成大量日志消耗性能,所以使用Fail2ban防止暴力破解

简介

Fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙),例如当有人在试探你的SSH、SMTP、FTP密码,只要达到你预设的次数,fail2ban就会调用防火墙屏蔽这个IP,而且可以发送e-mail通知系统管理员,是一款很实用、很强大的IP自动屏蔽工具!

简洁的说,就是fail2ban通过对日志的监控, 发现具有破坏性的行为IP调用防火墙将它屏蔽一段时间

功能、特性

  1. 支持大量服务:sshd 、apache 、qmail 等
  2. 支持多作动作:iptables 、tcp-wrapper 、shorewall 、mail notifications 等
  3. logpath 选项中支持通配符
  4. 需要 Gamin 支持(Gamin 用于监控文件和目录是否更改)
  5. 如果需要邮件通知,则系统事先要确保能够正常发送邮件

安装

环境检查

  1. Python版本必须大于2.4.3 
  2. 防火墙iptables必须开启 

安装

# 需要epel源

yum -y install epel-release

yum -y install fail2ban

目录结构

fail2ban/
├── action.d         # iptables 、mail 等动作文件目录
├── fail2ban.conf    # fail2ban 配置文件,定义日志级别、日志、sock 文件位置等
├── filter.d         # 条件匹配文件目录,过滤日志关键内容
├── jail.conf        # fail2ban 防护配置文件

配置fail2ban实现防暴力破解

官方的文档写到:在配置时,我们应该避免修改由fail2ban安装创建的文件,我们应该去编写具有.local扩展名的新文件。在.local新文件里配置的内容会覆盖jail.conf内容里相同的值。

当我们的配置发生改变了我们可以使用  fail2ban-client reload ,来加载新的配置。

vim /etc/fail2ban/jail.d/jail.local

 文件内容:

#defalut这里是设定全局设置,如果下面的监控没有设置就以全局设置的值设置。
[DEFAULT]
# 用于指定哪些地址ip可以忽略 fail2ban 防御,以空格间隔。
ignoreip = 127.0.0.1/8
# 客户端主机被禁止的时长(默认单位为秒)
bantime  = 3600
# 过滤的时长(秒)
findtime  = 600
# 匹配到的阈值(次数)
maxretry = 3



[ssh-iptables]
# 是否开启
enabled  = true
# 过滤规则
filter   = sshd
# 动作
action   = iptables[name=SSH, port=ssh, protocol=tcp]
# 日志文件的路径
logpath  = /var/log/secure
# 匹配到的阈值(次数)
maxretry = 3

在这里需要注意一点就是:我们上面的action设置的时候,port=ssh,如果我们更改了sshd服务的端口号,我能需要在这里设置对应的端口号,否则配置不生效。

在上面配置好了之后,我们需要让配置生效:

fail2ban-client reload

猜你喜欢

转载自www.cnblogs.com/lxfpy/p/10862204.html