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 / 问题 / 1089175
Accepted
Hynek Bernard
Hynek Bernard
Asked: 2022-01-07 07:04:49 +0800 CST2022-01-07 07:04:49 +0800 CST 2022-01-07 07:04:49 +0800 CST

使用来自 fail2ban 正则表达式的 <F-USER> 值

  • 772

我正在尝试向我和用户发送电子邮件,有人试图登录他们的 ssh 并失败 - IP 被禁止。但我不明白如何在我尝试发送的电子邮件中使用该变量。

Sendmail 设置正确,因为电子邮件发送没有问题。

这是我的 jail.local 配置

[sshd]
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
action  = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
             %(mta)s-whois-lines-ssh[name=%(__name__)s, sender="%(sender)s", dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"]

这是我的 action.d/sendmail-whois-lines-ssh.conf

[INCLUDES]

before = sendmail-common.conf
         helpers-common.conf

[Definition]

norestored = 1
actionban = ( printf %%b "Subject: [Fail2Ban] <name>: banned <ip> from <fq-hostname>
            Date: `LC_ALL=C date +"%%a, %%d %%h %%Y %%T %%z"`
            From: <sendername> <<sender>>
            To: <dest>, <F-USER>@mydomain.cz\n
            Hi,\n
            The IP <ip> has just been banned by Fail2Ban after
            <failures> attempts against <name>.\n\n
            Here is more information about <ip> :\n
            `/usr/bin/whois <ip> || echo missing whois program`\n\n
            Lines containing failures of <ip>\n";
            %(_grep_logs)s;
            printf %%b "\n
            Regards,\n
            Fail2Ban" ) | /usr/sbin/sendmail -f <sender>.mydomain.cz <dest> <F-USER>@mydomain.cz

[Init]
name = default
logpath = /dev/null

发送给我的电子邮件很好,因为从配置中正确获取,但 <F-USER> 没有价值,因此它被发送到@mydomain.cz

我怎样才能获得价值,以便能够将电子邮件发送给用户?

编辑 在 SSH 上受到打击的正则表达式是这个:

^pam_unix\(sshd:auth\):\s+authentication failure;\s*logname=\S*\s*uid=\d*\s*euid=\d*\s*tty=\S*\s*ruser=<F-USER>\S*</F-USER>\s*rhost=<HOST>\s.*%(__suff)s$
debian ssh fail2ban
  • 1 1 个回答
  • 262 Views

1 个回答

  • Voted
  1. Best Answer
    sebres
    2022-01-14T11:00:17+08:002022-01-14T11:00:17+08:00

    我正在尝试向我和用户发送电子邮件,有人尝试登录他们的 ssh 并失败

    我对这种方法几乎没有疑问,例如可能由此引入的某些“漏洞” - RE<F-USER>\S*</F-USER>将匹配任何内容,直到第一个空格,因此例如,如果匹配的“用户名”将是[email protected],test您的邮件也将被发送到[email protected],这可能是不是您域的用户。我还可以想象另一种情况,因为您尝试在邮件操作中使用外部输入(来自日志) - 所以最好确保这不受某些注入可能性的影响(例如,还要注意GHSA-m985-3f3v-cwmm)。

    在 SSH 上受到打击的正则表达式是这个......

    failregex 还必须包含<F-USER>...</F-USER>以捕获将存储为用户名的值,并且它必须匹配某些内容。

    这是它在当前版本中的外观示例(请注意,它不是由于<F-NOFAIL>标签而导致的失败 RE,它只是为没有 IP 的消息查找 IP 的助手,有关详细信息,请参阅问题/3189#issuecomment-999571654)。

    因此,如果部分匹配空值,则<F-ALT_USER>有一个替代用户名并将其存储到F-USER票证中捕获的组中。<F-USER>...</F-USER>

    也许(就像上面的问题/3189)你也有错误的后端,所以切换到systemd可以帮助你使用另一个 sshd-regex 匹配它。

    与您的正则表达式相关,它可以像这里一样更改(从当前的 sshd-filter 向后移植):

    - ^pam_unix\(sshd:auth\):\s+authentication failure;\s*logname=\S*\s*uid=\d*\s*euid=\d*\s*tty=\S*\s*ruser=<F-USER>\S*</F-USER>\s*rhost=<HOST>\s.*%(__suff)s$
    + ^pam_unix\(sshd:auth\):\s+authentication failure;(?:\s+(?:(?:logname|e?uid|tty)=\S*)){0,4}\s+ruser=<F-ALT_USER>\S*</F-ALT_USER>\s+rhost=<HOST>(?:\s+user=<F-USER>\S*</F-USER>)?%(__suff)s$
    

    但这更像是pam-generic过滤器/监狱的 RE,正如在issues/3189中已经说过的,因此将其用于 sshd 监狱并不完全正确(通常您会在日志或 auth.log 中看到不同的消息)。

    无论如何,要深入调查,需要消息示例(或者更好的日志摘录,其中包含导致禁令的所有 sshd-session 消息)。

    • 1

相关问题

  • 关闭 FTP

  • 如何在同一台电脑上从 putty 连接 debian vmware

  • debian- 文件到包的映射

  • Debian Ubuntu 网络管理器错误 [关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

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