我最近开始查看我的 auth-logs 并且令人惊讶地发现来自中国的机器人试图在这方面暴力破解他们的方式(没有努力)。我竭尽全力改变机器人永远不会检查的许多事情,并且更难暴力破解。
我的问题是:
我正在尝试查找可以通过 SSH 登录到我的服务器的所有用户的列表。我知道 /etc/passwd 有一个所有用户的列表,但我不知道他们中的任何一个(除了 1)是否可以登录。
我的目标是只有 1 个可以登录的用户,并让该用户拥有真正的强密码。
阅读man sshd_config
更多详细信息,但您可以使用AllowUsers
in 指令/etc/ssh/sshd_config
来限制可以登录的用户集。
例如
AllowUsers boris
意味着只有boris
用户可以通过 ssh 登录。
任何具有有效外壳的用户/etc/passwd
都可以登录。如果您想提高安全性,请使用公钥身份验证设置 SSH(网上有很多关于这样做的信息),在一个用户的~/.ssh/authorized_keys
文件中安装公钥,并禁用基于密码的身份验证。这将阻止除一个用户之外的任何人登录,并要求用户拥有匹配的私钥。确保私钥具有合适的密码。
为防止机器人试图进入,请在 22 以外的端口(即 3456)上运行 SSH。这不会提高安全性,但可以防止脚本小子和机器人因尝试失败而弄乱您的日志。
任何登录 shell 设置/etc/passwd
为交互式 shell 的用户都可以登录。我认为没有一种完全可靠的方法来判断程序是否是交互式 shell。检查它是否在里面/etc/shells
可能和你能得到的一样好。
其他用户也可以登录,但他们运行的程序不应允许他们获得对系统的太多访问权限。根本不允许登录的用户应该拥有/etc/false
他们的外壳——这只会立即将他们注销。