如何强化 SSH 服务器?

如何强化 SSH 服务器?

我可以/应该采取什么措施来确保我的 SSH 服务器周围的安全性绝对牢不可破?

从一开始这将是一个社区维基,所以让我们看看人们如何保护他们的服务器。

答案1

使用公钥/私钥对进行身份验证,而不是密码。

  1. 为每台需要访问服务器的计算机生成受密码保护的 SSH 密钥:

    ssh-keygen

  2. 允许来自允许的计算机的公钥 SSH 访问:

    将每台计算机上的内容复制到服务器上~/.ssh/id_rsa.pub的单独行中,或者在您授予访问权限的每台计算机上运行(您必须在提示符下输入服务器密码)。~/.ssh/authorized_keysssh-copy-id [server IP address]

  3. 禁用密码 SSH 访问:

    打开/etc/ssh/sshd_config,找到#PasswordAuthentication yes,并将其更改为PasswordAuthentication no。重新启动 SSH 服务器守护程序以应用更改(sudo service ssh restart)。

现在,通过 SSH 进入服务器的唯一可能方法是使用与 中的一行匹配的密钥~/.ssh/authorized_keys。使用此方法,不担心暴力攻击,因为即使他们猜出了我的密码,也会被拒绝。暴力破解公钥/私钥对是不可能的利用当今的技术。

答案2

我会建议:

  • 使用失败2ban以防止暴力登录尝试。

  • 禁用通过 SSH 以 root 身份登录。这意味着攻击者必须找出用户名和密码,从而使攻击更加困难。

    添加PermitRootLogin no到您的/etc/ssh/sshd_config

  • 限制可以通过 SSH 连接到服务器的用户。可以按组或特定用户进行限制。

    添加AllowGroups group1 group2AllowUsers user1 user2限制谁可以通过 SSH 访问服务器。

答案3

其他答案提供了安全性,但有一件事你可以做,它将使你的日志更安静,并减少你被锁定在你的帐户之外的可能性:

将服务器从端口 22 移至另一个端口。无论是在网关还是在服务器上。

它不会提高安全性,但意味着所有随机的互联网扫描程序都不会弄乱您的日志文件。

答案4

这是一件简单的事情:安装联邦快递(“简单的防火墙”)并使用它来限制传入连接的速率。

在命令提示符下,键入:

$ sudo ufw limit OpenSSH 

如果联邦快递未安装,请执行以下操作并重试:

$ sudo aptitude install ufw 

许多攻击者会尝试使用您的 SSH 服务器来暴力破解密码。这将仅允许每 30 秒从同一 IP 地址进行 6 次连接。

相关内容