我最近启用了 ssh 对我的计算机的访问,以便与我的同学一起开展一个小组项目。我阅读了在 ubuntu 上设置 ssh 的指南,并尝试遵循良好的安全做法。我禁用了密码验证,因此唯一的登录方式是使用 RSA 密钥,并且我在 authorized_keys 文件中只列出了 2 个密钥:我自己的(在测试 ssh 是否正常工作时使用它)和一个朋友的密钥。
今天晚上,我很好奇,想知道当我使用我的系统时,我的朋友是否通过 ssh 进入了我的系统,所以我在 Google 上搜索了一个命令,该命令可以告诉我是否有人通过 ssh 进入,如果有,是谁。我得到的结果是:
sudo netstat -tnpa | grep ESTABLISHED.*sshd
我尝试了一下,输出结果如下:
tcp 0 0 192.168.1.86:22 59.47.0.150:44728 ESTABLISHED 7416/sshd: [accepte
这看起来不对劲。我联系了我的朋友,他向我保证他没有登录。我再次尝试了该命令,然后看到:
tcp 0 0 192.168.1.86:22 59.47.0.150:44728 ESTABLISHED 7416/sshd: root [pr
这时,我对“root”这个词感到有点害怕,于是给一个比我更了解这个东西的朋友发了一条消息。他告诉我试试:
ps aux | grep ssh
输出:
root 3702 0.0 0.0 61364 2872 ? Ss Apr12 0:00 /usr/sbin/sshd -D
root 7473 0.0 0.0 112692 3920 ? Ss 20:46 0:00 sshd: root [priv]
sshd 7474 0.0 0.0 62784 1516 ? S 20:46 0:00 sshd: root [net]
sid 7476 0.0 0.0 22476 936 pts/1 S+ 20:46 0:00 grep --color=auto ssh
现在我彻底吓坏了,所以尽管我想等一会儿看看是否能找出谁登录了,但我还是决定sudo stop ssh
。
经过更多的谷歌搜索,我发现59.47.0.150
是一个位于中国沈阳附近的 IP,并且似乎以恶意攻击。
我要问你们的问题是:
我们能肯定地说来自中国的 IP 以某种方式通过 SSH 进入了我的计算机吗?即使它只接受 RSA 密钥授权?
我们能肯定地说他/她也拥有 root 访问权限吗?在我的 ssh-config 中,我使用的是默认设置
PermitRootLogin without-password
。我最初以为这意味着不允许 root 登录(我知道这两者听起来很矛盾,但我在谷歌上搜索了一下,这就是我得到的结果)如果是,怎么办?
有什么方法可以让我了解目前造成的损害有多大?
我以后该如何防范这种情况?我最终仍需要运行 ssh 来完成我的小组项目。
谢谢你尽你所能的帮助!
编辑:根据 saiarcot895 和 Steven 的建议,我检查了 auth.log,其中重复了以下几行:
Apr 13 20:43:50 PrometheusU sshd[7392]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=59.47.0.150 user=root
Apr 13 20:43:55 PrometheusU sshd[7394]: reverse mapping checking getaddrinfo for 150.0.47.59.broad.bx.ln.dynamic.163data.com.cn [59.47.0.150] failed - POSSIBLE BREAK-IN ATTEMPT!
Apr 13 20:43:55 PrometheusU sshd[7394]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=59.47.0.150 user=root
Apr 13 20:43:58 PrometheusU sshd[7394]: Failed password for root from 59.47.0.150 port 54813 ssh2
Apr 13 20:44:03 PrometheusU sshd[7394]: message repeated 2 times: [ Failed password for root from 59.47.0.150 port 54813 ssh2]
Apr 13 20:44:04 PrometheusU sshd[7394]: Received disconnect from 59.47.0.150: 11: [preauth]
这是否意味着攻击者已进入我的系统但无法登录 root 权限,或者他/她正尝试直接访问 root 权限,但失败了,并且根本没有访问任何内容?
答案1
我们能肯定地说来自中国的 IP 以某种方式通过 SSH 进入了我的计算机吗?即使它只接受 RSA 密钥授权?
他们不太可能通过身份验证,除非他们设法获得有效的密钥。尝试从您控制的主机进行连接,而无需密钥,并检查正在运行的进程。它们应该与您看到的类似。进程[net]
正在运行的事实sshd
表明他们没有成功登录。
我们能肯定地说他/她也拥有 root 权限吗?在我的 ssh-config 中,我使用的是默认设置
PermitRootLogin without-password
。我原本以为这意味着不允许 root 登录(我知道这两者听起来很矛盾,但我在谷歌上搜索了一下,这就是我得到的结果)
您使用的选项允许以 root 身份登录,但禁用 root 密码验证。除非您确实需要,否则最好不要允许任何 root 通过 SSH 登录。如果确实需要,请尽可能严格地限制访问。除非您启用了密钥,否则您不太可能使用 SSH 登录 root。此选项without-password
禁用基于密码的登录,但不会禁用密码验证方法。
如果是,怎么办?
您可以检查身份验证日志以查看是否有任何身份验证成功。但是,如果成功,他们可能已经覆盖了证据。
有什么方法可以让我了解目前造成的损害有多大?
运行 rootkit 检查程序并离线验证文件签名应该可以显示是否有文件被盗用。在安全的情况下获取文件签名并将其离线存储将为您提供基准。
我以后该如何防范这种情况?我最终仍需要运行 ssh 来完成我的小组项目。
sshd 支持使用 tcpwrappers 来限制访问。构建一个规则集,仅允许来自您预期流量的地址范围的访问。
答案2
发生了许多 ssh 暴力攻击。可能您有一个过时的 ssh 包,而他们就是通过这种方式入侵的。
检查日志中是否存在 ssh 失败,他可能只是对你进行暴力破解。
转到 /tmp 并从 ls -al 发布其输出,如果有 root kit,它可能会显示在那里。
您可以在 ssh 中设置允许用户,并且 fail2ban 同样有用。
如果可能的话,在 fstab 中将 /tmp 和 /home 设置为不可执行将会很有帮助。
答案3
如果只是暴力攻击填满日志,只需更改端口即可。
大多数脚本都很愚蠢,而且有足够多的服务器监听端口 22。我总是将我的端口设置为 30200 或 225。这可以在
/etc/ssh/sshd.conf
只需更改端口号并重新启动守护进程。
然后可以通过 ssh 的附加选项访问系统
ssh -p224 [email protected]
Ma 日志总是被填满,我改变了端口,噪音就消失了。