如何限制某个组的成员每个用户只能登录一次?

如何限制某个组的成员每个用户只能登录一次?

我有一个 ssh 服务器。我的一些用户同时登录多次;有些这样做的用户不应该这样做,我怀疑他们共享了帐户。那些不应该这样做的用户都是某个特定 unix 组的成员。

我想要的是一种方法来限制 402 组成员可以拥有的并发登录次数为“每人一次”,并且最近的登录优先。

最后一点很重要;这些用户有时会真正失去与机器的连接并需要重新建立连接,我不希望他们因为无法终止挂起的会话而被锁定在机器之外。相反,我希望新的经过身份验证的连接尝试能够自动断开旧连接。

有人做过这样的事吗?有人有任何基于 PAM 的巧妙建议或类似建议吗?

答案1

相信您可以使用 /etc/security/limits.conf 来强制执行这一点,语法是:

<domain> <type> <item> <value>

因此,工作线路可能看起来像这样:

@402 hard maxlogins 1

至于丢失的会话,您可以ClientAliveInterval在 sshd 中设置一个低值以确保死亡会话不会持续太长时间吗?

答案2

MaxSessions在 sshd_config 中使用指令。

Match Group groupname
MaxSessions 1
ClientAliveInterval 30
ClientAliveCountMax 1

在文件末尾,这样值只会被组覆盖groupname(必须使用名称,而不是数字 ID)。如果客户端每 30 秒发送一条以上消息,但客户端没有响应,则客户端将断开连接。您可以随意调整数值,直到您满意为止。似乎在我的 RHEL 6 上有效。

相关内容