ETOC

CentOS7安装fail2ban与使用

前言

真正的懒癌晚期患者(缺钱也治不了),懒到不想给服务器做安全加固,就靠着复杂的数字字母混合16位密码保障着。前段时间看了看/var/log/secure文件,吓到了,好几个IP登录ssh失败,有近十万次之多。网上的闲人是真不少啊,网站没几个正经访客,各种扫描的倒是每天都有近千IP。还是得出手干活啊,不然哪天真攻破了服务器,也对不起自己的专业了。
手里服务器大部分centos7,只有两台debian9,方案上自然选择fail2ban+firewall了。

安装fail2ban

fail2ban主要靠监控系统各种日志文件,并根据一定规则匹配异常IP后,再使用相应的防火墙将IP屏蔽,针对密码爆破和漏洞扫描非常有用。

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

安装成功之后,fail2ban的配置文件位于/etc/fail2ban,其中的jail.conf为主要配置文件,有关的匹配规则位于filter.d目录下。fail2ban的目录结构说明如下:

/etc/fail2ban                 ## fail2ban 服务配置目录
/etc/fail2ban/action.d        ## iptables 、mail 等动作文件目录
/etc/fail2ban/filter.d        ## 条件匹配文件目录,过滤日志关键内容
/etc/fail2ban/jail.d        ## 规则文件目录,按具体防护项目分成文件
/etc/fail2ban/jail.local    ## 默认规则文件
/etc/fail2ban/jail.conf        ## fail2ban 防护配置文件
/etc/fail2ban/fail2ban.conf    ## fail2ban 配置文件,定义日志级别、日志、sock 文件位置等

fail2ban规则配置

新建/etc/fail2ban/jail.local来设置默认配置

[DEFAULT]
# time is in seconds. 3600 = 1 hour, 86400 = 24 hours (1 day)
findtime    = 3600
bantime     = 86400
maxretry    = 5
ignoreip    = 127.0.0.1 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16

参数说明:
ignoreip:IP白名单,白名单中的IP不会屏蔽
bantime:屏蔽时间,单位为秒(s)
findtime:时间范围
maxretry:最大次数

修改/etc/fail2ban/jail.d/00-firewalld.conf

[DEFAULT]
banaction = firewallcmd-ipset
action = %(action_mwl)s

参数说明:
banaction:屏蔽IP所使用的方法,上面使用firewalld屏蔽端口
action: 触发规则后进行的动作
#这里banaction必须用firewallcmd-ipset,这是firewall支持的关键,
#如果是用Iptables则填写iptables-multiport[name=sshd-ddos, port="22", protocol=tcp]

最后为ssh新建文件/etc/fail2ban/jail.d/sshd.local

[sshd]
enabled     = true
filter      = sshd
action      = %(action_mwl)s
logpath     = /var/log/secure

参数说明:
[sshd]:名称,可以随便填写
filter:规则名称,必须填写位于filter.d目录里面的规则,sshd是fail2ban内置规则
port:对应的端口,默认端口,所以这里没有填写
action:采取的行动
logpath:需要监视的日志路径

fail2ban相关的命令

#启动
systemctl start fail2ban
#停止
systemctl stop fail2ban
#启动
systemctl restart fail2ban
#开机启动
systemctl enable fail2ban
#是配置立即生效
systemctl daemon-reload
#查看是否开机启动
systemctl is-enabled fail2ban
#查看被ban IP,其中sshd为名称
fail2ban-client status sshd
#删除被ban IP
fail2ban-client set sshd unbanip 192.168.111.111
或
fail2ban-client set sshd delignoreip 192.168.111.111
#如果用以上命令删除被ban IP发现这个IP还是无法连接,是因为在临时策略中的ipset集合,只有电脑重启或者从这里面删除IP才行。
#查看临时策略中的ipset集合:“ipset list”,删除ipset集合中IP:“ipset del fail2ban-sshd 192.168.111.111 -exist”
#查看日志
tail /var/log/fail2ban.log

总结

jail.conf文件里有许多配置说明,可仔细看看。filter.d目录包含常见的SSH/FTP/NGINX/APACHE等日志匹配。action.d目录里许多关于防火墙的操作,如果屏蔽IP的细节可以参考里面的内容。建议升级到0.10以上,以支持ipv6

参考:
https://github.com/fail2ban/fail2ban

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »