山高疑日近,海阔觉天低

fail2ban保护wordpress

工作原理有点像Nginx,配置文件位于/etc/fail2ban

action.d
fail2ban.conf
fail2ban.d  #空的

filter.d #里面存放过滤器,比如如下我们创建的wordpress.conf

jail.conf
jail.d  #里面存放用户自己添加的保护对象,其实这个文件夹的文件可以说是jail.conf的后续扩展。比如如下我们创建的wordpress.conf

程序会扫描jail.d下面的所有*.conf文件,根据文件描述去拦截

jail配置文件有优先级顺序:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf,按字母顺序排列
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local,按字母顺序排列
jail.d 下面增加wordpress.conf:

[wordpress]
enabled = true
port = http,https
filter = wordpress
#action = iptables-multiport[name=wordpress, port="http,https", protocol=tcp, blocktype=DROP]
action = iptables-allports[name=all,blocktype=DROP]
logpath = /var/log/nginx/access.log
maxretry = 5
findtime = 120
bantime = 3600

filter.d 下面增加过滤规则wordpress.conf:

[Definition]
failregex = ^ .* "(GET|POST) /+wp-login.php
            ^<HOST> .* "(GET|POST) /+wp-<name>php
            ^ .* "(GET|POST) /+xmlrpc.php
            ^<HOST> .* "(GET|POST).*" (404|444|403|400) .*$

第一条.第二条针对wp-login,第二条的意思是自己可以修改wordpress的登陆php名字,防止暴力登录
第三条针对 xmlrpc,这个没什么用,可以在nginx中禁用
第四条针对http错误,有人会扫描wordpress查看是否某些漏洞存在

这时你可以通过命令 fail2ban-client status 来查看,日志文件路径:

sudo less /var/log/fail2ban.log

为了防止暴力登录修改了登录wp-login.php,可以修改登录php名字(在Linux_setup.sh已经有脚本):
1,复制一份根目录wp-login.php文件命名为wp-login1.php,然后将wp-login.php者删除。然后打开wp-login1.php文件将源码中的wp-login.php全部替换为wp-login1.php。

sed -i s/${WPLOGINCUR}/${WPLOGINNEW}/g wp-includes/general-template.php

2,然后打开wp-includes/目录下的general-template.php文件把其中的wp-login.php替换为wp-login1.php。
3, 注意修改完成记得将登录php加入cache排除选项,否则登录显示会出问题的
文件

赞(1) 打赏
未经允许不得转载:Mr.Zhang » fail2ban保护wordpress

你的打赏是我的动力

登录

找回密码

注册