如何解决fail2ban port=https,http 只屏蔽 https 不屏蔽 http
我已经安装了 fail2ban 来减少对我在 Debian 10 LAMP 上托管的 wordpress 页面的蛮力攻击。过滤器搜索 IP 并将此 IP 地址添加到 ipset。事实上,它捕获了一些 IP 地址,它仍然可以正常工作,但我的问题是它只阻止 https (443),而不是 HTTP (80)
过滤器在这里:
[DeFinition]
failregex = ^<HOST> .* "POST .*wp-login.PHP
^<HOST> .* "POST .*xmlrpc.PHP
jail.conf 关于 worpress 的部分:
[wordpress]
enabled = true
port = https,http
logpath = /opt/logs/*/access.log
bantime = 1w
maxretry = 1
wordpress.local 看起来是这样:
[wordpress]
action = iptables-ipset-proto6[name=wordpress,port=https,http,protocol=tcp,bantime=604800]
port = https,http
enabled = true
filter = wordpress
maxretry = 1
findtime = 1d
bantime = 1w
ignoreip = 127.0.0.1/8
Chain INPUT (policy ACCEPT 0 packets,0 bytes)
pkts bytes target prot opt in out source destination
16 868 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 443 match-set f2b-wordpress src reject-with icmp-port-unreachable
354 21240 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22 match-set f2b-ssh src reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets,0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets,0 bytes)
pkts bytes target prot opt in out source destination
显示只有443被屏蔽了,80没有被屏蔽。我希望阻止两个端口以防止从 http://example.com 重定向到 https://example.com。
如果我将 port = https,http
更改为 port = http,https
,它只会阻止 80 端口,而不是 443。还尝试以数字方式(443,80)写入端口,但行为没有区别。
有没有可能只用一个监狱规则来阻止两个端口(80 和 443),或者我需要两个规则,一个用于 http,一个用于 https?
解决方法
您确实覆盖了操作条目中的端口值(并且做错了):
- action = iptables-ipset-proto6[...,port=https,http,...]
+ action = iptables-ipset-proto6[...,port="https,http" ...]
所以在你的情况下,http 只是另一个参数名称,而且它也无关紧要,你现在直接在 jail 中指定哪些端口。
还有已经为您准备好的正确的)插值变量action
和action_
(例如参见jail.conf)。
无论如何,如果您不需要它,请不要覆盖它......在您的情况下,像这样设置 banaction
就足够了:
[wordpress]
banaction = iptables-ipset-proto6
顺便说一句,您的正则表达式极其脆弱,最好更精确地重写它,至少消除所有问题.*
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。