Fail2ban 是由 Python 语言开发监控软件,通过监控系统日志的登录信息来调用系统防火墙屏蔽相应登录IP,以阻止某个IP不停尝试密码。Fail2ban 在防御对 SSH 服务器的暴力密码破解上非常有用。–Linux运维笔记
应用场景
新买一台机子,不久之后登录SSH看到这样的提示信息
There were 1595 failed login attempts since the last successful login.
这说明这台机子正在被尝试SSH暴力破解登录,要防止这种暴力破解就可以用Fail2ban。 Fail2ban配合FirewallD工作,当发现被暴力破解时就及时屏蔽掉此IP。
系统环境
CentOS7。CentOS7自带FirewallD防火墙,本文将会讲解基于此的Fail2ban使用方法
配置方法
如果已经安装了iptables,建议先关掉iptables
service iptables stop
systemctl disable iptables.service
查看 FirewallD 的状态以及启动 FirewallD,并且设置自动启动
#查看状态
firewall-cmd --state
#启动
systemctl start firewalld
#设置自动启动
systemctl enable firewalld
开启一些必要的端口
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
安装Fail2ban
配置好了FirewallD,下面来安装Fail2ban。 CentOS 内置源并未包含 Fail2ban,需要先安装 epel 源
yum -y install epel-release
安装Fail2ban
yum -y install fail2ban
安装成功后 Fail2ban 配置文件位于 /etc/fail2ban,其中 jail.conf 为主配置文件,相关的匹配规则位于filter.d目录。
配置规则
新建 jail.local 来覆盖 Fail2ban 的一些默认规则:
vi /etc/fail2ban/jail.local
写入默认配置:
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 86400
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s
说明:
- ignoreip:IP白名单,白名单中的IP不会屏蔽,可填写多个以(,)分隔
- bantime:屏蔽时间,单位为秒(s)
- findtime:时间范围
- maxretry:最大次数
- banaction:屏蔽IP所使用的方法,上面使用 FirewallD 屏蔽端口,这里 banaction 必须用 firewallcmd-ipset,这是FirewallD支持的关键,如果是用 iptables 请不要这样填写
继续修改 jail.local 这个配置文件,在后面追加如下内容:
[sshd]
enabled = true
filter = sshd
port = 22
action = %(action_mwl)s
logpath = /var/log/secure
说明:
- [sshd]:名称,可以随便填写
- filter:规则名称,必须填写位于filter.d目录里面的规则,sshd是fail2ban内置规则
- port:对应的端口
- action:采取的行动
- logpath:需要监视的日志路径
按照以上配置下来, jail.local应该是这样:
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 7200
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s
[sshd]
enabled = true
filter = sshd
port = 22
action = %(action_mwl)s
logpath = /var/log/secure
上述配置的意思是如果600秒内错误登录5次将会屏蔽此IP,屏蔽时长为7200秒。
启动Fail2ban
启动
systemctl start fail2ban
设置自动启动
systemctl enable fail2ban
查看已封禁IP
fail2ban-client status sshd
REFERENCE