我已经设置了一个解决方案,其中 Linux 系统的登录由 Microsoft Active Directory 和组成员身份管理。现在我想要基于访问时间,以便广告用户在一段时间后将被踢出系统。
我读了一些关于 RADIUS 及其最终实现这一目标的可能性的文章。我想要完成的是...
- ...用户a将被放入活动目录登录组,但无法登录Linux系统。
- ...用户 a 可以调用网站来请求访问服务器 x 几个小时或几天,但前提是用户 a 位于此广告组中。
- ...用户 a 将使用他/她的广告凭据以及可能的第二个因素(例如一次性密码)激活该服务器。
- ...用户a被踢出系统,并且在一段时间后将无法再次登录。
有没有人有这样的场景或类似的场景可以在这里工作的经验?或者知道一些有用的软件来实现这个目标?
谢谢你!
答案1
您可以颁发临时 OpenSSH 证书来实现限时 SSH 登录。有各种网页描述了如何做到这一点ssh 密钥生成器工具。用户将在 Web 服务上进行身份验证,SSH-CA 将颁发有效期为几个小时或几天的 OpenSSH 证书(不是 X.509)。
我还为客户实现了这样一个 SSH-CA 组件,作为一个简单的无状态 Web 服务,可以在客户端使用一个小型 Python 脚本进行访问。
但这只会阻止用户在证书过期后使用此密钥再次登录。棘手的部分是在该时间之后可靠地踢出活动用户会话。特别是您应该澄清您是否真的想这样做,或者只是监视并警告持久的 SSH 会话。
答案2
我认为没有任何现成的解决方案,所以你必须努力解决它。
将 Linux 机器连接到 Active Directory 相对容易,因为 AD 作为 LDAP 工作,并且 Linux 可以根据 LDAP 进行身份验证很长时间。还有一些AD特定的解决方案。我建议首先谷歌搜索“linux sssd active Directory”。
我认为这就是你必须实施的。一种可能的方法:您可以向组中添加/删除用户,Linux 盒子 AD 身份验证(上一点)可以基于组成员身份。
第二因素可能独立于 AD,您可以为您的 Linux 机器设置 2 因素身份验证。一种(流行的)方法是使用谷歌身份验证器。 (不要混淆,这与 Google 帐户无关。)
要防止新登录很容易,根据您在第二点中的选择,您可以在超时或类似情况后从组中删除用户。但我不知道有什么方法可以终止已经运行的会话...也许您可以实现一个简单的服务,根据某种条件杀死所有用户进程(再次是 AD 组成员身份?)