我有一个暴露在互联网上的 Ubuntu 10.04 代理服务器,并且我在其上安装了 SSH 服务器,以便从内部 LAN 和远程对其进行管理。即使我使用了强密码,它仍然感觉不安全……我考虑过在互联网端禁用 ssh,但这样我就无法使用。有什么解决方法吗?我正在寻找一个非常简短的“必须做”列表来提高安全性。
答案1
我只想针对所有这些答案补充一点:
Fail2ban 会扫描日志文件(如 /var/log/pwdfail 或 /var/log/apache/error_log)并封禁密码失败次数过多的 IP。它会更新防火墙规则以拒绝该 IP 地址。
下面是我的服务器上活动禁令的 (损坏的) rrd 图表:
图表由 munin 绘制,fail2ban 插件。
答案2
您还可以做另外两件事来增强 ssh 安全性:
切换到仅使用公钥的 ssh 登录,详情如下: 如何设置 ssh 来使用密钥而不是用户名/密码进行身份验证?
然后您可以将 SSH 登录限制到特定 IP,详情如下: 如何限制 ssh 登录到特定 ip 或主机
如果这些方法设置正确,那么为了进入,有人需要使用你的私钥文件从你的 IP 地址进行连接
答案3
启用基于密钥的身份验证,并关闭质询响应/密码身份验证。这将使其达到所需的安全性。
此外,我会确保您的iptables
规则只允许从您自己的 IP 地址/范围进行 SSH 访问(如果可能的话)。
答案4
除了上述答案之外,您还可以执行以下操作来进一步保护您的 ssh 访问:
更改默认 SSH 端口
通常,机器人会尝试访问默认端口 22/tcp,并尝试使用不同的用户名(root、admin 等)登录。如果您使用强密码或更好的密钥,并且不允许 root 登录,则这种攻击通常不会造成问题。
令人讨厌的是,不成功的登录尝试会向您的安全日志发送垃圾邮件,如果发生任何事情,将很难找到正确的条目。
启用端口敲击
端口敲击是个好主意。默认 ssh 端口处于关闭状态,直到您以正确的顺序敲击一个或多个端口。然后 ssh 端口会自动打开,您就可以登录了。
像往常一样,有人已经实现了它;-) 这里是文档: https://help.ubuntu.com/community/PortKnocking