让我的远程 SSH 更安全

让我的远程 SSH 更安全

我最近设置了对一个小型 Ubuntu 盒子的 SSH 访问,目前我可以从本地网络和异地登录该盒子。

目前我只有 2 个正在远程处理的用户,但是检查我的 /var/logs/auth.log 我看到大量随机用户名/端口组合尝试登录,如下所示:

Failed password for invalid user buildbot from xxx.92.16.81 port 11934 ssh2
Received disconnect from xxx.92.16.81 port 11934:11: Bye Bye [preauth]
Disconnected from invalid user buildbot xxx.92.16.81 port 11934 [preauth]
Invalid user aimax from xxx.92.16.81 port 24768
pam_unix(sshd:auth): check pass; user unknown
pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=xxx.92.16.81

虽然我认为这并不是超级威胁,因为我在 sshd_config 的允许用户部分只有两个用户,但看到人们真的想尝试进入而我可怜的服务器正在处理看起来数百个这样的内容,这有点让人紧张每天。

有没有一种方法(通过路由器/防火墙或服务器本身(也许是ip表?))可以让它忽略或丢弃不适合特定端口22上允许的用户的SSH请求?

一般来说,我可以采取哪些步骤来确保我的 SSH 尽可能安全,同时在我不在家时仍然能够登录?

编辑:我没有像我想象的那样配置我的 SSHD_config,更新了AllowedUsers,可怕

答案1

端口号是源端口,而不是目标端口 (22)。

为了保护 ssh 服务器的安全,您需要禁用基于密码的身份验证。仅使用基于密钥的身份验证,确保密钥足够长并安全保存(不要共享私钥,或让它们被知晓)。

涉及防火墙的技术,仅允许知道IP地址等,只能降低攻击率(减少服务器负载)。然而,您仍然应该确保您有一个基本的防火墙(也许不限制 IP 地址,因为这可能会使其更难以使用。尽管我的一些设备仅限于本地访问)。使用 gufw(ufw 的图形前端。无需学习一年中只会使用几次的命令的命令行)。

答案2

您应该安装fail2ban。检查这个 DigitalOcean 指南来安装它。https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-ubuntu-14-04

或者使用防火墙仅允许 ssh 上的特定 IP 地址。如果您使用的是 ubuntu,通常会安装 ufw,只需键入ufw allow from [YOUR IP ADDRESS] to any port 22(确保您将 ufw 设置为活动状态)或firewalld(如果您使用的是 redhat 风味发行版)。

答案3

如果您知道您的两个用户仅来自一小部分 IP 地址,则可以通过 IP 表阻止端口 22 上来自这些 IP 地址以外的任何位置的所有连接。如果您无法减少传入的 IP 地址范围,我建议强制使用 SSH 密钥进行登录,并阻止任何使用密码登录的尝试。

答案4

你可以做以下事情,

  1. 使用 IPTABLES 阻止端口 22 的所有传入子网/IP 地址(允许的除外)
  2. 设置空闲时间断开连接
  3. 通过编辑 sshd conf 文件拒绝从 putty 直接 root 登录
  4. 监视 /var/log/secure 日志上的登录失败并采取补救措施

相关内容