我在使用 fail2ban/iptables 时遇到了一个非常奇怪的问题。有些东西无法正常工作,但我不知道是什么问题。
我已经为 fail2ban 添加了此配置和过滤器:
[wordpress-register]
enabled = true
port = http,https
filter = wordpress-register
logpath = /var/log/nginx/access.log
[Definition]
failregex = ^<HOST> .* "GET /wp-login.php\?action=register HTTP/.*" .*$
Fail2ban 启动了,但是错误日志中有以下内容:
2014-09-22 15:14:35,794 fail2ban.server.action [5275]:错误 ipset 创建 fail2ban-wordpress-register hash:ip 超时 600
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp -m multiport --dports http,https -m set --match-set fail2ban-wordpress-register src -j REJECT --reject-with icmp-port-unreachable -- stderr: 'ipset v6.19: 收到内核错误:设置类型不受支持\n'
2014-09-21 02:57:43,860 fail2ban.server.action[1191]: 错误 ipset 创建 fail2ban-wordpress-register hash:ip timeout 600 防火墙-cmd --direct --add-rule ipv4 过滤器 INPUT 0 -p tcp -m multiport --dports http,https -m set --match-set fail2ban-wordpress-register src -j REJECT --reject-with icmp-port-unreachable -- stdout: "\x1b[91mError: COMMAND_FAILED: '/sbin/iptables -t filter -I INPUT_direct 1 -p tcp -m multiport --dports http,https -m set --match-set fail2ban-wordpress-register src -j REJECT --reject-with icmp-port-unreachable' 失败: iptables v1.4.21: 设置fail2ban-wordpress-register 不存在。\n\n请尝试“iptables -h”或“iptables --help”获取更多信息。\x1b[00m\n”
知道问题可能是什么吗?我猜主要问题是:
ipset v6.19:收到内核错误:设置类型不受支持
但是,这是什么意思?
答案1
该ipset
命令需要内核中的 IP SET 支持。具体来说,您需要寻找以下设置:
CONFIG_IP_SET=m
CONFIG_IP_SET_HASH_IP=m
看起来你的内核没有支持 ipset,或者至少找不到这些模块。解决这个问题,你的错误就会消失。
尝试运行find /lib/modules/$(uname -r) -name ip_set.ko
以查看您当前的内核是否支持它们,以及find /lib/modules -name ip_set.ko
查看是否有任何已安装的内核支持它们。
如果您需要更多帮助,请告诉我们:
- 你使用的 CentOS 是什么版本
- 你正在运行什么内核
- 您如何安装 fail2ban(从 EPEL 存储库安装还是手动安装?)
我还应该指出,您问题中报告的 ipset 版本(6.19)是 CentOS 7 附带的版本,因此如果您使用原始内核和来自 EPEL repo 的 fail2ban,那么一切都应该可以正常工作。
CentOS 6.5 还支持 ip 集,并且 fail2ban 在 CentOS 6 的 EPEL 中可用。这些也应该可以正常工作。
但是,如果您运行的是 CentOS 5,那么您的运气可能就不好了。您可能很幸运地构建了 ipset 附带的模块,但我不确定 CentOS 5 内核是否受支持。如果您确实成功了,并且后来升级了内核,那么只需为新内核重建模块即可。