仅允许特定用户通过ssh在一个端口登录,而其他用户则通过另一端口登录


13

我有以下用例:

  • 需要允许用户从安全,可信任的网络登录
  • 然后允许几个(只有两个)移动用户在Linux Centos计算机上远程登录。

我可以使sshd在不同的端口上运行,例如:

  • 从内部可以在22上运行是可以的,因为我不想让它们在其他端口上连接(使脚本混乱)。
  • 对于外部移动用户,我将在另一个端口(例如端口X)上运行sshd(提高了安全性-这是一种小型办公室设置)。

为了提高安全性,我希望将sshd配置为仅允许访问端口X上的特定用户(然后配置一些警报,以便我们可以知道用户何时通过端口X登录)。

但是,我无法在sshd文档中找到这样的任何配置。如果没有这样的解决方案,那么只要有人在端口X上完成sshd登录,是否至少有可能触发shell脚本运行?我正在查看iptables文档,以查看当sshd登录存在时是否可以触发警报,但无法解决任何问题。

赞赏输入

Answers:


12

SSH在备用端口上运行不再视为安全。它只会增加一点点模糊性,并为您的用户增加复杂性。对于希望破坏您的网络的人们,他们正在使用自动端口扫描程序,而不在乎它在哪个端口上运行,它为您增加了零障碍。

如果要增强允许远程基于Internet的入站SSH的系统上的安全性,请sshd_config按指示的@Anthon 控制用户,然后直接在PAM中实现安全性。

创建两个组,lusers然后创建rusers。将远程移动用户添加到rusers组中。使用pam_succeed_if.so PAM模块允许访问这些用户。将行添加到ssh的pam配置中:

account     sufficient  pam_succeed_if.so user ingroup lusers
account     sufficient  pam_succeed_if.so user ingroup rusers

某些pam_succeed_if.so模块可能要求您使用稍有不同的语法,例如group = lusers

然后,不仅sshd限制了可以连接的用户,而且即使在中出现错误sshd,您仍然可以享受基于PAM的限制所提供的保护。

远程用户的另一步骤是强制将ssh_keys与口令一起使用。因此,本地用户可以使用密钥或密码登录,但是远程用户必须具有密钥,并且如果为他们创建密钥,则可以确保该密钥具有密码短语关联。因此,限制了对实际拥有SSH密钥密码短语的位置的访问。如果用户密码不正确,则限制潜在的攻击媒介。

sshd_config

更改2个设置:

ChallengeResponseAuthentication yes

PasswordAuthentication yes

至:

ChallengeResponseAuthentication no

PasswordAuthentication no

因此,默认值为现在仅允许密钥身份验证。然后,对于本地用户,您可以使用matchconfig设置来更改本地用户的默认设置。假设您的本地专用网络是192.168.1.0/24,请添加到sshd_config

Match Address 192.168.1.0/24
PasswordAuthentication yes

现在,本地用户可以使用密码或密钥进行连接,而远程用户将被迫使用密钥。由您来创建带有密码短语的密钥。

另外一个好处是,您只需要管理一个sshd_config,并且只需要在单个端口上运行ssh,就可以简化自己的管理。


编辑2017-01-21-限制authorized_keys文件的使用。

如果要确保用户不能仅自己生成一个ssh密钥,并将其与authorized_keys文件一起使用进行登录,则可以通过设置sshd的特定位置来控制它来查找授权密钥,从而进行控制。

在中/etc/ssh/sshd_config,更改:

AuthorizedKeysFile  %h/ssh/authorized_keys

像这样:

AuthorizedKeysFile  /etc/.ssh/authorized_keys/%u

指向用户没有写权限的受控目录意味着他们无法生成自己的密钥,也无法使用它来解决已制定的规则。


2
我看不出您的答案如何将远程用户与本地用户区分开。如果该lusers组中的某个人而不是该rusers组中的某人生成密钥对并更新其~/.ssh/authorized_keys,则他们将能够从远程登录。
理查德·汉森

8

您可以将以下内容添加到您的/etc/ssh/sshd_config

AllowUsers mobileuser1 mobileuser2 *@10.0.0.0/8

上面假设允许的远程用户名为mobileuser1mobileuser2,并且您的可信网络为10.0.0.0,子网掩码为255.0.0.0。

这使两个移动用户可以从任何地方登录,每个人都可以从受信任的网络登录。与这些模式都不匹配的任何用户(例如foo从远程登录的用户)将被拒绝访问。


那是我在答案中遗漏的那一部分。我认为,如果将您的答案与我的答案相结合,这将是一个非常强大的解决方案。
蒂姆·肯尼迪

2

您可以通过启动两个ssh守护程序和两个sshd_config文件来执行此操作。复制从现有的一个(例如/etc/ssh/sshd_config /etc/ssh/sshd_alt_config且在可替代的配置设置(从man用于页面sshd_config

港口

Specifies the port number that sshd(8) listens on.  The default
is 22.  Multiple options of this type are permitted.  See also
ListenAddress

允许用户

This keyword can be followed by a list of user name patterns,
separated by spaces.  If specified, login is allowed only for
user names that match one of the patterns.  Only user names are
valid; a numerical user ID is not recognized.  By default, login
is allowed for all users.  If the pattern takes the form
USER@HOST then USER and HOST are separately checked, restricting
logins to particular users from particular hosts.  The
allow/deny directives are processed in the following order:
DenyUsers, AllowUsers, DenyGroups, and finally AllowGroups.

您可能希望将替代的ssh日志保存到其他文件,例如,按照写入该文件的内容来注意异常的登录尝试。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.