SSH AllowUsers 来自特定网络

OJW*_*OJW 5 ssh

如何只允许某些用户从特定网络接口登录到 SSH 服务器?

例如

  • eth0 是“外部”,eth1 是“内部”。
  • 信任 user1 可以从任何地方登录
  • user2 只允许从“内部”登录

无法使用,AllowUsers user1@eth0因为 AllowUsers 采用主机名而不是接口名称。

本网站上的其他答案建议如下:

Match address 1.2.3.4/16 # eth0's network
   AllowUsers user1
Match address 2.3.4.5/16 # eth1's network
   AllowUsers user1,user2
Match address 0.0.0.0/0  # Match's equivalent of a closing brace?
Run Code Online (Sandbox Code Playgroud)

但是,如果 eth0 使用 DHCP 服务器来获取其地址,那么它事先并不知道 1.2.3.4 是放入 sshd_config 的正确地址。

(如果有所不同,请在 Ubuntu 12.04 上使用 OpenSSH)

Mad*_*ter 7

我不知道如何在一个Match块中执行此操作,并且您上面的评论表明这是不可能的(正如您所注意到的,该man页面也是如此)。

但是,如果您确定要按界面进行用户限制 - 您的问题说明您会这样做 - 您可以运行两个sshds,每个都有不同的sshd_config指示它仅在一个界面上侦听,由ListenAddress指令控制。

sshd对内部接口的侦听可以在其配置中具有AllowUsers user1 user2,而对外部接口的侦听可以具有AllowUsers user1。我可能会通过组成员身份来完成它并使用AllowGroups internal/AllowGroups internal external代替,但这只是我。

编辑:imo,正确的方法是运行/usr/sbin/sshd -f /etc/ssh/sshd_config_inside/usr/sbin/sshd -f /etc/ssh/sshd_config_outside. 在启动时安排它的工作方式,并确保您的服务启动/关闭文件做正确的事情确实很重要,但这对于系统管理员来说也是一件非常正常的事情。要做到这一点,绝对没有必要有两个二进制文件,甚至两个不同名称的同一个二进制文件。

  • @OJW 没有必要使用不同的二进制文件,甚至是符号链接。使用不同的配置文件是这里的重要部分。 (2认同)

Chr*_*ris 7

我知道这是一个老问题,但我一直在寻找无需启动 2 个 sshd 实例的解决方案。

参考您的具体问题以及 1.2.3.4/16 子网和 2.3.4.5/16 子网,您可以使用以下内容:

AllowUsers user1@1.2.* user1@2.3.* user2@2.3.*
Run Code Online (Sandbox Code Playgroud)

参考:http : //www.unixlore.net/articles/five-minutes-to-even-more-secure-ssh.html

对于我的网络,我使用以下命令允许用户 chris 从任何地方进行 ssh,但只允许 user1、user2 和 user3 在我的内部网络 (192.168.0.0/24) 上进行 ssh:

AllowUsers chris user1@192.168.0.* user2@192.168.0.* user3@192.168.0.*
Run Code Online (Sandbox Code Playgroud)

版本:Ubuntu 14.04.3 LTS 上的 SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3