我可以/应该采取什么措施来确保我的 SSH 服务器周围的安全性绝对牢不可破?
从一开始这将是一个社区维基,所以让我们看看人们如何保护他们的服务器。
答案1
使用公钥/私钥对进行身份验证,而不是密码。
为每台需要访问服务器的计算机生成受密码保护的 SSH 密钥:
ssh-keygen
允许来自允许的计算机的公钥 SSH 访问:
将每台计算机上的内容复制到服务器上
~/.ssh/id_rsa.pub
的单独行中,或者在您授予访问权限的每台计算机上运行(您必须在提示符下输入服务器密码)。~/.ssh/authorized_keys
ssh-copy-id [server IP address]
禁用密码 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 group2
或AllowUsers user1 user2
限制谁可以通过 SSH 访问服务器。
答案3
其他答案提供了安全性,但有一件事你可以做,它将使你的日志更安静,并减少你被锁定在你的帐户之外的可能性:
将服务器从端口 22 移至另一个端口。无论是在网关还是在服务器上。
它不会提高安全性,但意味着所有随机的互联网扫描程序都不会弄乱您的日志文件。
答案4
这是一件简单的事情:安装联邦快递(“简单的防火墙”)并使用它来限制传入连接的速率。
在命令提示符下,键入:
$ sudo ufw limit OpenSSH
如果联邦快递未安装,请执行以下操作并重试:
$ sudo aptitude install ufw
许多攻击者会尝试使用您的 SSH 服务器来暴力破解密码。这将仅允许每 30 秒从同一 IP 地址进行 6 次连接。