当我安装 fail2ban 时,它还会安装 Firewalld。重新启动后,firewalld 也会启动,强制执行 iptables 上的设置(删除大多数连接并接受 ssh)。这很令人沮丧,因为我想允许 https 和 http。我应该卸载 Firewalld、禁用它还是更改 service/init.d 部分?firewalld 从哪里获取命令,例如下面的命令。
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
##### much later in the config #########
Chain IN_public_allow (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ctstate NEW
对此最好的方法是什么?
顺便问一下,fail2ban 在哪里存储被禁止的 IP 以及如何强制执行限制?
答案1
不,如果您使用的是 debian、Ubuntu 或 iptables,您也可以使用 ufw。
在 fail2ban 文档中,你会看到你可以使用“fail2ban-client status“jailname””查看被禁止的 IP。你可能使用的是 redhat 或基于 redhat 的发行版,比如 centos
您可以更改fail2ban的配置以直接使用iptables。
在 /etc/fail2ban/jail.local 中
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 10m
findtime = 10m
maxretry = 3
backend = auto
usedns = warn
destemail = root@localhost
sendername = Fail2Ban
banaction = iptables-multiport
mta = sendmail
protocol = tcp
chain = INPUT
action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
action_mw = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
%(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s", sendername="%(sendername)s"]
action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s", sendername="%(sendername)s"]
action = %(action_)s
然后使用 systemctl restart fail2ban 重新启动 fail2ban。不要卸载firewalld,否则可能会造成破坏,只需使用 systemctl 停止并禁用该服务即可。
然后使用 iptables -F 刷新所有 iptables 链以摆脱firewalld 链并重新启动fail2ban。
Fail2ban 使用所谓的 jails 来强制执行限制,如果查询特定服务(例如 ssh)的日志,然后禁止执行大量失败身份验证请求的 IP。jails 使用正则表达式过滤器来查找日志中的恶意行为。有关它的更多信息,请参阅此处 https://github.com/fail2ban/fail2ban/wiki/How-fail2ban-works
您还可以使用firewalld轻松允许http和https
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
最后一个选项是卸载你使用的分发包中的 fail2ban 和firewalld,然后手动安装 https://github.com/fail2ban/fail2ban/wiki/How-to-test-newer-fail2ban-version-resp.-use-fail2ban-standalone-instance