我有以下用例:
- 需要允许用户从安全、可信的网络登录
- 然后允许几个(仅两个)移动用户在 Linux Centos 计算机上远程登录。
我可以让 sshd 在不同的端口上运行,例如:
- 从内部可以让它在 22 上运行,因为我不想让它们连接到其他端口(弄乱脚本)。
- 对于外部移动用户,我将在不同的端口上运行 sshd,例如端口 X(提高安全性 - 这是小型办公室类型的设置)。
为了增加安全性,我希望将 sshd 配置为仅允许访问端口 X 上的特定用户(然后配置一些警报,以便我们可以知道用户何时通过端口 X 登录)。
但是,我在 sshd 文档中找不到类似的配置。如果没有这样的解决方案,是否至少可以在有人在端口 X 上完成 sshd 登录时触发 shell 脚本运行?我正在查看 iptables 文档,看看它是否可以在 sshd 登录时触发警报,但无法提供任何信息。
赞赏投入
答案1
在备用端口上运行SSH
不再算作安全。它只会增加一点点模糊性,并为您的用户增加复杂性。它为那些想要破坏您的网络的人添加了零障碍,他们使用自动端口扫描仪并且不关心它在哪个端口上运行。
如果您想增强允许基于互联网的远程入站 SSH 的系统的安全性,请在以下位置控制您的用户:sshd_config
@Anthon 指示控制您的用户,然后直接在 PAM 中实现安全性。
创建两个组,lusers
并且rusers
。将远程移动用户添加到rusers
组中。使用pam_succeed_if.soPAM 模块允许这些用户访问。将行添加到 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
因此,默认情况下现在仅允许密钥身份验证。然后,对于本地用户,您可以使用match
配置设置来更改本地用户的默认设置。假设您的本地专用网络是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
您可以将类似的内容添加到您的/etc/ssh/sshd_config
:
AllowUsers mobileuser1 mobileuser2 *@10.0.0.0/8
以上假设允许的远程用户名为mobileuser1
和mobileuser2
,并且您的可信网络为 10.0.0.0,子网掩码为 255.0.0.0。
这允许两个移动用户从任何地方登录,并且每个人都可以从受信任的网络登录。任何与这些模式不匹配的用户(例如foo
从远程登录的用户)都将被拒绝访问。
答案3
您可以通过启动两个 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 日志记录到不同的文件,例如,按照写入该文件的内容来注意到异常的登录尝试。