如何确保多个用户能够安全地通过 SSH 访问运行 Ubuntu k 的 Linux 机器?
该服务器将用于 Web 应用程序,但我不确定如何评估执行此任务的工具。我过去尝试过一些工具,但不确定它们如何相互比较。我如何评估我的 SSH 安全性以及我将用于执行该保护的工具和实用程序?
答案1
你对安全有何目标?你保护这些安全是为了防范谁?
广谱,使用 iptables 通过防火墙端口 22 来阻止任何不需要的 IP,方法是专门允许您想要的 IP,然后阻止其他所有 IP。
您还可以指定用户是否可以使用密码登录,或者是否必须拥有证书,如果您怀疑有人会试图侵入他人的帐户,这可能是一个好主意。
但具体来说,我们必须知道你在做什么。
编辑
好的,考虑到您在下面的评论中所说的内容,您希望防止未经授权访问机器。第二部分,确保您的用户不会做任何坏事,超出了这个问题的范围,但也是一个值得讨论的话题。范围很广,但值得一问。
您需要编辑的主要文件是 /etc/ssh/sshd_config,每次更改配置后,您需要运行 /etc/init.d/sshd restart(如果是 debian/ubuntu 系统,则运行 /etc/init.d/ssh)。当您第一次学习如何配置 ssh 时,最好登录本地控制台,因为配置错误会切断您的访问权限。
步骤1:确保root不能通过ssh登录。
PermitRootLogin no
如果您确实必须拥有 root 登录,则可以将其设置为“无密码”,这要求连接用户出示证书并进行身份验证。
第 2 步:允许(或拒绝)任何应该(或不应该)有访问权限的特定用户
有多种配置指令可以实现这一点,例如 DenyUsers、AllowUsers、DenyGroups 和 AllowGroups。这些指令采用以空格分隔的用户或组列表。
其中一个巧妙之处在于你可以指定 user@host,所以如果你只希望 Bob 能够从他的家用机器连接,你可以说
AllowUsers [email protected]
步骤 3:明确允许公钥认证
PubkeyAuthentication yes
这是默认设置,但我们希望确保它生效,因为我们将禁用用户输入密码的功能……
步骤 4:禁用密码验证
密码可能会被盗、被偷听或从键盘下的便签上复制。证书更难获得。确保人们不能这样使用密码:
PasswordAuthentication no
步骤 5:确保客户端使用现代协议
Protocol 2
OpenSSH 支持 2 种协议,创造性地称为“1”和“2”。“1”比较老,允许 DES 加密和其他不安全的东西。
现在,您必须获取用户的 Putty 证书才能进行连接。最简单的方法是使用 PuttyGEN,它位于 Putty 网站 (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)。
希望能帮助到你!
答案2
您可以尝试强制使用 ssh 密钥或引入硬令牌(如 yubikey),将 ssh 移离端口 22 有助于抵御脚本小子,但肯定无法保护您免受将您作为受害者的人的攻击。
答案3
除了顶级发帖者所说的一切之外,还有一个名为“Denyhosts”的脚本,它将拒绝对任何三次验证错误的内容的访问,或者,通过更多的IP表方式来做同样的事情: