如何防止两个或多个具有不同 IP 的用户使用一个用户名同时连接到我的服务器?

Vah*_*han 8 server ssh adduser

在我的国家,我用来绕过互联网过滤/审查的方法之一是 SSH 隧道。为此,我使用命令在 Ubuntu 18.04 服务器上创建一个用户adduser USERNAME --shell=/bin/false。不过这种方法有一个很大的缺陷,就是多个不同IP地址的用户可以同时使用这个用户名连接到我的服务器,导致服务器的IP被政府过滤。如何防止两个或多个具有不同 IP 的用户使用一个用户名同时连接(SSH 隧道)到我的服务器?

PS我是Linux和Ubuntu的初学者,所以请简单地解释一下所有步骤。

mat*_*igo 7

防止来自多个 IP 的同时连接的一个简单方法是限制用户可以打开的活动会话的数量。这可以通过创建单个文件并重新启动 SSH 守护程序来完成。

您可以这样做:

  1. 连接到您的服务器(如果尚未连接)
  2. 创建一个文件来/etc/security/limits.d包含连接限制规则:
    sudo {editor of choice} /etc/security/limits.d/10-ssh.conf 
    
    Run Code Online (Sandbox Code Playgroud) 注意:请务必替换{editor of choice}为您喜欢的文本编辑器。
  3. 将以下内容粘贴或键入到新文件中:
    # Additional limits for users of SSH
    *    hard    maxlogins   1
    
    Run Code Online (Sandbox Code Playgroud)
  4. 保存文件
  5. 重新启动 SSH 守护进程
    sudo service ssh restart
    
    Run Code Online (Sandbox Code Playgroud)

配置如何工作

物品 意义
* 该规则适用于谁
hard 应采取什么级别的执法
maxlogins 正在执行什么
1 执行限制

如果您希望仅对某些用户进行限制,则可以替换*为特定的用户名。例如:

johnny   hard   maxlogins   3
Run Code Online (Sandbox Code Playgroud)

这将限制该帐户只能johnny同时进行三个会话。

如果您希望某些用户组受到限制,可以替换*为组名称。例如:

@family   hard   maxlogins   1
Run Code Online (Sandbox Code Playgroud)

这将限制组中的帐户family只能有一个同时连接。

如果您想要多个级别,可以向文件添加更多行。例如:

# Additional limits for users of SSH
@family   hard   maxlogins   1
johnny    hard   maxlogins   2
*         hard   maxlogins   3
Run Code Online (Sandbox Code Playgroud)

如果您决定将来删除限制,只需删除该文件或将其重命名为类似名称10-ssh.old,然后重新启动 SSH 守护程序即可。