fail2ban 需要firewalld 吗?

fail2ban 需要firewalld 吗?

当我安装 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

相关内容