工作原理有点像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排除选项,否则登录显示会出问题的
文件