配置 NFTY 以在来自本地 IP 范围之外的 SSH 时通知我

配置 NFTY 以在来自本地 IP 范围之外的 SSH 时通知我

如果我通过 NTFY 接受外部连接的计算机成功 SSH 登录,我希望收到通知。由于我经常在本地登录这台计算机 (192.168.1.0/24),因此我希望避免在该范围内连接时收到通知。

我正在遵循此处列出的示例: https://docs.ntfy.sh/examples/#ssh-login-alerts

通知工作正常,但我正在尝试修改我的脚本以排除 192.168.*,我的 bash 很糟糕,我已经为此努力了几个小时。

我已将 ntfy-ssh-login.sh 修改为:

#!/bin/bash
if [ "${PAM_TYPE}" = "open_session" ]; then
        if [ "${PAM_RHOST}" != 192.168.* ]; then
          curl \
            -H prio:high \
            -H tags:warning \
            -d "SSH login: ${PAM_USER} from ${PAM_RHOST}" \
            http://192.168.1.137:8777/alerts
        fi
fi

如果 PAM_RHOST 以 192.168 开头,我预计不会向 NTFY 发送警报。但是,它始终会发送警报。我知道 PAM_RHOST 的值以该值开头,因为它包含在警报中:

30/08/2023, 22:12 Priority 4

⚠️ SSH login: --redacted-- from 192.168.1.11

192.168.1.11 由 设定${PAM_RHOST}

我确信我正在做一些愚蠢的事情。

答案1

将我的评论变成某种答案。

[测试不会将*字符视为通配符/模式,因此${PAM_RHOST}永远不会匹配,并且then始终会评估您的表达式。

由于您正在使用/bin/bash,因此您可以使用测试来处理与作为模式的[[比较:*

if [[ "${PAM_RHOST}" != 192.168.* ]];

相关内容