如何利用Fail2ban保护你的Joomla实例免遭暴力攻击

・3 分钟阅读

如果你管理过一个Joomla实例,在之前或之后就会发现你受到暴力攻击,Fail2ban是一个非常好的服务,用python定期扫描你的日志文件,寻找攻击攻击和执行攻击的行为,最常见的操作是在防火墙级别禁止攻击者IP,并向服务器管理员发送电子邮件。

Fail2ban附带了许多常见服务(ssh,apache认证,等等)的过滤器,但是,它缺少内置的Joomla集成,不过,在Fail2ban中添加一个Joomla过滤器很容易,在这里我会解释如何做。

安装Fail2Ban

在基于Debian的服务器中安装fail2ban就像发出以下命令一样简单:



$ apt-get install fail2ban

正确配置Fail2ban超出了本指南的范围,你可以在线找到许多资源,比如在官方Fail2ban wiki中。

安装Fail2ban Joomla插件

你可以使用标准的Joomla插件安装机制来安装Joomla Fail2ban插件,从而简化Fail2ban与Joomla认证系统的集成,这个插件将Joomla认证错误记录在标准的web服务器错误日志中,在那里,Fail2ban很容易扫描错误,并且禁止攻击者的IP 。

安装和激活插件后,当用户身份验证失败时,你将在web服务器错误日志中发现类似这样的内容:


/var/log/apache2/mywebsite_error.log:[Mon Mar 31 10:13:58 2014] [error] [client 212.109.14.203] user mywebsite authentication failure


fail2ban配置

将这个Fail2ban过滤器保存在一个叫做joomla-error.conf的文件中,并保存在/etc/fail2ban/filters.d中,


[Definition]

# Option: failregex
# Notes.: matches something like:
# [Mon Mar 31 10:15:00 2014] [error] [client 212.109.14.203] user mywebsite authentication failure
# Values: TEXT
failregex = [[]client <HOST>[]] user .* authentication failure.*

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =


将此jail添加到你的/etc/fail2ban/jail. local:


[joomla-error]
enabled = true
port = http,https
filter = joomla-error
logpath = /var/log/apache2/*error.log
maxretry = 5


重新加载fail2ban配置:



$ fail2ban-client reload

当攻击者被屏蔽时,请高兴吧

如果你配置了Fail2ban以发送电子邮件,在攻击者被屏蔽时,你将收到一封类似以下的电子邮件:



The IP 212.109.14.203 has just been banned by Fail2Ban after
5 attempts against joomla-error.

把攻击者的IP留在这里,我认为公开攻击者的IP是很有用的!

Zhongy0410 profile image