限制每个用户/组/系统的SSH登录数

时间:2020-03-21 11:46:00  来源:igfitidea点击:

正如我们可能知道的那样,我们可以多次由同一用户SSH进入远程Linux系统。
没有限制!我们可以简单地打开多个终端窗口(或者终端中的多个选项卡),并由同一用户帐户从每个选项卡启动多个SSH会话。
如果你想改变这个行为怎么办?
例如,我们可能希望仅允许用户一个活动SSH会话。
这就是我们现在要看到的。
本简要教程解释了如何限制Linux上每个用户或者组或者系统的SSH登录数。

在大多数Linux发行版中,有一个名为limits.conf的文件,我们可以其中定义用户或者用户组的并发SSH会话数。
如果特定用户尝试以允许的SSH登录多SSH进入系统,则他/她将被拒绝访问。

限制Linux上每个用户或者组的SSH登录数

Limits.conf文件通常位于RPM和基于Deb的系统上的/etc/security /目录下。

使用sudo或者root用户转到远程系统和编辑/etc/security/limits.conf文件:

$sudo nano /etc/security/limits.conf

要限制特定用户的并发SSH会话数,例如Inirad,最后添加以下行:

theitroad	hard	maxlogins	1

其中

  • onitad - 我的CentOS 8服务器中的用户名。
  • maxlogins 1 - 此用户的最大登录数。在我的情况下,它是1.我们可以增加此值以允许最大值。每个用户的活动SSH会话。
  • 坚决强制性的硬限制。

如果要限制一组用户的SSH连接数,请添加以下内容:

@mygroup	hard    maxlogins	1

用组名替换@MyGroup。
在此方案中,MyGroup中的所有用户都无法通过SSH登录多次。

如果要限制系统中所有用户(全局)的SSH会话,请添加此行:

*	hard    maxlogins	1

其中星号表示全局(即系统中的所有用户)。
一旦定义每个用户/组或者整个系统的最大SSH会话数,保存并关闭文件。

现在尝试使用同一用户多次使用同一用户的系统。
我们将看到如下所示的错误消息。

Too many logins for 'theitroad'.
Last login: Tue Nov 18 17:12:09 2017 from 192.168.225.37
Connection to 192.168.225.52 closed.

正如我们在上述输出中所看到的;

  • 首先,我通过SSH和连接将我SSH作为root用户身份才能成功建立。
  • 然后,我将一个新的选项卡和ssh打入与普通用户"theitroad"的同一服务器中,并且连接成功。
  • 最后,我尝试用同一用户(即theitroad)ssh进入同一台服务器,并且这次连接被拒绝。用户"onitad"不能多次将系统中的。因为他为此用户的最大允许的SSH会话数仅是一次。因此,对于此用户拒绝了SSH连接。

在此示例中,我们限制了用户或者组或者系统中的所有用户的活动SSH会话总数。
也可以限制每个系统的SSH会话。
例如,我们只能允许从系统或者组中的系统登录一个SSH登录。

限制每个系统的SSH会话总数

要限制每个系统的活动SSH连接总数,请在/etc/security/limits.conf文件中添加以下行:

*       hard    maxsyslogins    1

其中MaxSyslogins是指系统上的最大登录数,而不是每个用户或者每组。

尝试将SSH放入系统中,我们无法访问系统的最大数量,而不是系统上的允许登录数。

看到了吗?
用户"theitroad"甚至不能第一次SSH。
因为,允许的SSH登录的总数仅为系统。
这次由root用户制作的SSH连接也被考虑在内。
因此,SSH登录的最大数量已越过定义的限制,并且拒绝访问用户"theitroad"。
希望你能理解。

请注意,此限制仅适用于普通用户。
root用户仍然可以通过任何次数通过SSH登录。