AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1073725
Accepted
nagylzs
nagylzs
Asked: 2021-08-07 01:36:03 +0800 CST2021-08-07 01:36:03 +0800 CST 2021-08-07 01:36:03 +0800 CST

fail2ban 不使用 DROP 块类型

  • 772

使用 Ubuntu 20.04 LTS,我在 /etc/fail2ban/jail.local 中有这个:

[DEFAULT]
bantime   = 3600
banaction = iptables
blocktype = drop


[sshd]
enabled   = true
protocol  = tcp
port      = ssh
filter    = sshd
logpath   = /var/log/auth.log
maxretry  = 3

但这是我在列出 iptables 规则时看到的:

╰─# iptables -L f2b-sshd -n -v
Chain f2b-sshd (1 references)
 pkts bytes target     prot opt in     out     source               destination
   13  1356 REJECT     all  --  *      *       222.187.232.205      0.0.0.0/0            reject-with icmp-port-unreachable
   18  1516 REJECT     all  --  *      *       221.181.185.153      0.0.0.0/0            reject-with icmp-port-unreachable
   17  1064 REJECT     all  --  *      *       222.186.180.130      0.0.0.0/0                  777 55854 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

问题是它使用 REJECT(使用 ICMP)而不是 DROP。

action.d/iptables.conf 包含以下内容:

# Option:  actionban
# Notes.:  command executed when banning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    See jail.conf(5) man page
# Values:  CMD
#
actionban = <iptables> -I f2b-<name> 1 -s <ip> -j <blocktype>

它是默认的 iptables 操作文件,随该操作系统版本的官方 fail2ban apt 软件包一起提供。

还尝试在 [sshd] 下添加“blocktype=drop”,但没有效果。

我不确定如何调试它,因为 fail2ban 服务不会记录实际的 iptables 命令。

我错过了什么?

fail2ban
  • 2 2 个回答
  • 1479 Views

2 个回答

  • Voted
  1. Best Answer
    sebres
    2021-08-07T10:14:17+08:002021-08-07T10:14:17+08:00

    要为单个监狱的操作提供一些参数,您必须设置action所有参数(通常也提供在的默认部分中jail.conf),或者在禁止操作的情况下,您可以使用类似的东西:

    [some_jail]
    banaction = %(known/banaction)s[blocktype=DROP]
    

    关于 DROP vs. REJECT 的主题,讨论就像 net-filter 子系统本身一样古老,双方都有很多优点/缺点。
    有关禁止问题,请参阅https://github.com/fail2ban/fail2ban/issues/2217#issuecomment-423248516了解详细信息。

    • 1
  2. nagylzs
    2021-08-07T11:27:30+08:002021-08-07T11:27:30+08:00

    我已经接受了@sebres 的解决方案,但我想补充一些问题。

    对于 iptables-allports banaction,reject 块类型内部可以有空格。你需要引用那个。

    例子:

    [sshd]
    banaction=iptables_allports[blocktype="REJECT --reject-with icmp-port-unreachable"]
    

    第二个有趣的事情:banaction 和 jail 配置都有一个名为“protocol”的参数。当下面的配置没有抛出任何错误时,我首先感到困惑,但它没有阻止 UDP 请求:

    [named-ddos]
    banaction=iptables_allports[blocktype=DROP,protocol=all]
    

    发生这种情况是因为我错过了监狱中的协议=所有设置。您需要在监狱级别指定协议=全部:

    [named-ddos]
    banaction=iptables_allports[blocktype=DROP,protocol=all]
    protocol=all
    

    原因是 named-ddos 部分在 iptables 中创建了一条新链,而被禁​​止的 ip 在该链中创建了规则。如果你没有在监狱级别指定协议=全部,那么链将被定义如下:

    Chain INPUT (policy DROP 22 packets, 952 bytes)
     pkts bytes target     prot opt in     out     source               destination         
     1371  229K named-ddos  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           
    

    确实,banaction 将在链内创建 proto=all 的规则,但链本身不会用于非 tcp 数据包。结论是在jail级别和banaction中都需要指定protocol=all(如果支持的话),否则不起作用。

    • 0

相关问题

  • AWS 服务器是否需要 fail2ban?

  • 哪个 Nginx 日志文件适用于 fail2ban?

  • Fail2Ban 登录过滤器在 Debian Web 服务器上不起作用

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve