我正在与fail2ban进行斗争,以阻止对Joomla管理页面的暴力攻击。
使用Joomla中的扩展程序,我可以阻止IP,因此会出现错误消息。
在apache日志中,这会给出以下日志;
domain.com:80 146.185.150.198 - - [16/Jun/2014:21:29:09 +0200] "GET /administrator/index.php HTTP/1.0" 403 358 "-" "-"
domain.com可能会有所不同,因为服务器上有很多域。
我在fail2ban中有以下配置
jail.local
[administrator]
enabled = true
port = http,https
filter = administrator
action = iptables-multiport[name=ALL, port="http,https"]
logpath = /var/log/apache2/other_vhosts_access.log
maxretry = 3
filter.d / administrator.conf
[Definition]
failregex = [].<HOST> .*HTTP/[0-9.]+" 403
ignoreregex =
我也尝试过failregex:^<HOST> -.GET.*administrator.*.HTTP\/1.0".* 403 .*$
两者都没有。
谁拥有正确的配置才能实现这一目标?
答案 0 :(得分:2)
最终让它发挥作用,与预期有点不同;
我的过滤器:
failregex = .* <HOST> - - .*(POST|GET) .*administrator/index.php HTTP.* 403 .*$
现在效果很好,甚至还有更多的登录尝试
答案 1 :(得分:2)
我写了这个插件
http://www.rupostel.com/joomla/hacks/blocking-joomla-brute-force-login-attacks-with-fail2ban-on-ubuntu-server (需要php5.4 +)
基于 http://baxeico.wordpress.com/2014/03/31/joomla-brute-force-attacks-file2ban/
并将其添加到fail2ban config:
\等\的fail2ban \ jail.local
[joomla-error]
enabled = true
port = http,https
filter = joomla-error
logpath = /var/log/joomla.log
maxretry = 7
findtime = 6000
bantime = 17200
\等\的fail2ban \ filter.d \的Joomla-error.conf
[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 =
\等\ rsyslog.d \ 10 joomla.conf
if $programname == 'joomla' then /var/log/joomla.log
该插件将身份验证错误发送到syslog中,即使池位于chroot内,也可以将系统范围的fail2ban与iptables一起使用。
答案 2 :(得分:0)
你可以试试这个:
failregex = ^.* <HOST> .*"(:?GET|POST|HEAD) .* 403 [0-9]{3}.*
或者您可以在在线正则表达式测试器中使用它:http://regex101.com/r/jQ7wQ9/2