不要两次跳转到同一个用户定义的链

不要两次跳转到同一个用户定义的链

在我的/etc/pam.d/sshd我有一行:

session optional pam_exec.so /usr/local/bin/pam_exec_sshd

每当我进行 ssh 登录或注销时,它都会调用我的脚本。脚本内容:

#!/bin/bash
IPTABLES=/usr/sbin/iptables
case $PAM_TYPE in
open_session) act=-I;;
close_session) act=-D;;
*) exit 0;;
esac

$IPTABLES "$act" INPUT -s "$PAM_RHOST" -j PAM_EXEC_SSHD

PAM_EXEC_SSHD当发送到任何端口的任何协议的数据包来自有效的 ssh 客户端主机时,它会添加或删除一条规则,以跳转到我的自定义 netfilter 链。

如果一台主机有 2 个或多个同时 ssh 连接,链中将有 2 个以上相同的规则INPUT- 一种引用计数。

但是当我们从PAM_EXEC_SSHDback返回到 时INPUT,如果还有另一个相同的规则,我们将PAM_EXEC_SSHD再次跳转到 。如何防止这种情况发生?

如果我将脚本更改为每个主机仅保留一条规则,则当两个会话之一关闭时,该主机的唯一规则将被删除。

相关内容