在 Linux Ubuntu 上保护 SSH

在 Linux Ubuntu 上保护 SSH

如何确保多个用户能够安全地通过 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表方式来做同样的事情:

http://dwm.me.uk/articles/2008/mitigating-ssh-attacks

答案4

要了解有关保护 Linux 的更多信息,请参阅 NSA 指南:

Red Hat Enterprise Linux 5 安全配置指南

它有一些关于 SSH、强制密码长度等方面的很好的部分。

相关内容