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
因此,默认值为现在仅允许密钥身份验证。然后,对于本地用户,您可以使用match
config设置来更改本地用户的默认设置。假设您的本地专用网络是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
指向用户没有写权限的受控目录意味着他们无法生成自己的密钥,也无法使用它来解决已制定的规则。
lusers
组中的某个人而不是该rusers
组中的某人生成密钥对并更新其~/.ssh/authorized_keys
,则他们将能够从远程登录。