功能:

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


安装fail2ban:

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

备份配置文件:

cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

编辑配置文件:

相关主要文件说明:

/etc/fail2ban/action.d        #动作文件夹,内含默认文件。iptables以及mail等动作配置


/etc/fail2ban/action.d        #动作文件夹,内含默认文件。iptables以及mail等动作配置

vim /etc/fail2ban/jail.conf
loglevel = 3     #默认日志的级别
logtarget = /var/log/fail2ban.log     #日志的目的
socket = /tmp/fail2ban.sock     #socket的位置

/etc/fail2ban/filter.d         #条件文件夹,内含默认文件。过滤日志关键内容设置

/etc/fail2ban/paths-*.conf    #定义一些系统文件路径,像日志路径

#/etc/fail2ban/jail.conf   #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值

# jail   [del]  监狱

vim /etc/fail2ban/jail.conf
ignoreip = 127.0.0.1       #忽略IP,在这个清单里的IP不会被屏蔽
bantime = 600      #屏蔽时间,该bantime将被[ssh-iptables]中bantime覆盖;
findtime = 600      #发现时间,在此期间内重试超过规定次数,会激活fail2ban
maxretry = 3      #默认尝试次数
backend = auto      #日志修改检测机制

启用sshd服务的日志分析,指定动作阀值即可。实例文件/etc/fail2ban/jail.conf及说明如下:

[DEFAULT]               #全局设置
ignoreip = 127.0.0.1/8       #忽略的IP列表,不受设置限制(多个ip或ip段用空格隔开)
bantime  = 3600             #屏蔽时间,单位:秒
findtime  = 300             #这个时间段内超过规定次数会被ban掉
maxretry = 3                #最大尝试次数
usedns = warn         #指定当日志中遇到主机名时候是否反向解析,warn进行解析,但会记录为warning
logencoding = auto      #指定日志文件的编码,auto就是使用系统本地的编码
enabled = false        #全局开关
backend = auto            #日志修改检测机制("pyinotify", "gamin", "polling", "systemd" 和"auto"这几种)

destemail = xflm_xx@163.com  #邮件接收人
sender = fail2ban@localhost  #邮件发送人
mta = mail
        
[sshd]  #单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置
enabled = true    #是否激活此项(true/false)
port    = ssh     #端口为ssh
logpath = %(sshd_log)s  #安全日志路径
backend = %(sshd_backend)s     #日志修改检测机制
action = %(action_mwl)s      #检测到非法登录,进行的动作



配置Fail2ban

Fail2ban服务的配置文件在/etc/fail2ban目录。在其中可以找到jail.conf配置文件,我不会直接编辑这个文件,因为在升级软件包时,会覆盖这个文件,使配置失效。我们应该创建一个新文件jail.local,在jail.local定义的值会覆盖jail.conf中的值。


我们来创建一个jail.local文件:

vim /etc/fail2ban/jail.local
写入如下代码:
[DEFAULT]
ignoreip = 127.0.0.1/8, 123.58.249.0/24
bantime  = 3600
findtime  = 300
maxretry = 3

#destemail = xxxxxxx@xxx.com

# 覆写 /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport

[sshd]
enabled = true
action = %(action_mwl)s

[sshd-ddos]
enabled = true


完成配置后,启动fail2ban

systemctl start fail2ban && systemctl enable fail2ban

查询fail2ban服务状态

fail2ban-client status

# jail   [del]  监狱

/etc/fail2ban/paths-*.conf    #定义一些系统文件路径,像日志路径


实用命令


最近一次启动,fail2ban日志:

journalctl -b -u fail2ban


实时跟踪显示fail2ban日志:

tail -f /var/log/fail2ban.log


显示防火墙规则:

iptables –L –n

移除禁止的ip

iptables -D f2b-sshd 1