我的SSH服务器是否受到了损害? 如果是这样,我应该如何以及采取什么步骤?

我最近启用了ssh访问我的机器来与我的同学一起处理小组项目。 我阅读了在ubuntu上设置ssh的指南,并尝试遵循良好的安全措施。 我禁用了密码validation,所以进入的唯一方法是使用RSA密钥,我只在authorized_keys文件中列出了2个密钥:我自己(在测试时使用它来查看ssh是否正常工作)和朋友。

今天晚上我好奇地看到我的朋友在我使用它时是否已经进入我的系统,所以我搜索了一个命令,告诉我是否有人ssh’d,如果有的话,谁。 我得到的结果是:

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,并且似乎因恶意攻击而闻名。

所以我对你们的问题是:

  1. 我们可以肯定地说中国的IP以某种方式SSH进入我的机器吗? 即使它只接受RSA密钥授权?

  2. 我们能肯定地说他/她也有root权限吗? 在我的ssh-config中,我有默认的PermitRootLogin without-password 。 我原本认为这意味着不允许root登录(我知道这两个声音是矛盾的,但我用Google搜索了,这就是我得到的结果)

  3. 如果是这样,怎么样?

  4. 有什么方法可以看出到目前为止已经造成了什么损害?

  5. 我将来如何防范这种情况? 我仍然需要最终运行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,失败了,并且根本没有访问任何内容?

我们可以肯定地说中国的IP以某种方式SSH进入我的机器吗? 即使它只接受RSA密钥授权?

它们不太可能经过身份validation,除非他们设法获得有效密钥。 尝试从没有密钥的控制主机进行连接,并检查正在运行的进程。 它们应该和你看到的相似。 [net]进程作为sshd运行的事实表明它们没有成功登录。

我们可以肯定地说他/她也有根吗? 在我的ssh-config中,我有默认的PermitRootLogin without-password 。 我原本认为这意味着不允许root登录(我知道这两个声音是矛盾的,但我用Google搜索了,这就是我得到的结果)

您使用的选项允许登录到root,但禁用root的密码身份validation。 除非您真的需要,否则最好不要通过SSH允许任何root登录。 如果您尽可能严格限制访问权限。 除非您已启用密钥,否则您不太可能使用SSH登录root。 without-password禁用基于密码的登录,但不禁用密码validation方法。

如果是这样,怎么样?

您可以检查身份validation日志以查看是否有任何身份validation成功。 但是,如果他们确实成功了,他们可能会覆盖证据。

有什么方法可以看出到目前为止已经造成了什么损害?

运行rootkit检查程序并脱机validation文件签名应指示是否有任何文件被泄露。 在您安全的情况下获取文件签名并将其存储在脱机状态将为您提供基准。

我将来如何防范这种情况? 我仍然需要最终运行ssh来完成我的团队项目。

sshd支持使用tcpwrappers来限制访问。 构建一个规则集,该规则集仅允许从您期望流量的地址范围进行访问。

发生了大量的ssh暴力攻击。 你有可能有一个过时的ssh包,他们就是这样。

检查日志中的ssh失败,他可能只是对你进行暴力破解。

转到/ tmp并从ls -al发布其输出,如果有一个root工具包可能会显示在那里。

您可以在ssh中设置允许用户,fail2ban也很有用。

如果可能,将/ tmp和/ home设置为fstab中的不可执行文件将有很大帮助。

如果只是蛮力攻击填满日志,只需更改端口即可。

大多数脚本都是愚蠢的,有足够的服务器可以监听端口22.我总是设置为30200或225.这可以很容易地完成

 /etc/ssh/sshd.conf 

只需更改端口号并重新启动守护程序即可。

然后可以使用ssh的附加选项访问系统

 ssh -p224 user@example.com 

马日志总是在填满,我改变了端口,噪音消失了。