LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

记一次排查阿里云 git 帐号异常登陆

问题描述

公司最近的阿里云 ECS 最近经常爆出服务器安全登陆问题:

异常登录-ECS在非常用地登录

……

登录时间:2019-07-15 21:17:20

登录账号:git

登录类型:SSH

登录源IP:14.28.45.14

……

必要条件

只有一个硬性条件是需要的,那就是 ssh 服务是日志级别调高,能够记录到必要的信息:

LogLevel DEBUG

之后在 /var/log/secure 文件里会产生一些 ssh 日志。

自从运维被辞退后,公司因为之前的安全和混乱问题,想重新迁移内部搭建的 gitlab,而我在负责搭建和迁移的在过程中,为了调试开启的 debug level,结果阴差阳错反倒得以排查问题……

着手解决

针对阿里云的警告,我们已经有了 IP 和时间,根据时间,我们可以在 ssh 的日志文件看到大致如下的信息:

Jul 15 20:40:58 xxx sshd[25982]: Received disconnect from xxx.xxx.xxx.xxx port xxxxx:xx: disconnected by user

Jul 15 20:40:58 xxx sshd[25982]: Disconnected from xxx.xxx.xxx.xxx port xxxxx

Jul 15 21:04:48 xxx sshd[28946]: Accepted publickey for git from xxx.xxx.xxx.xxx port xxxxx ssh2: RSA SHA256:WXdCxxxxxxxxxxxxxxxxxxxxxxxxx

这里我们可以看到 ssh 的公钥 sha256,该值可以通过如下产生:

ssh-keygen -E sha256 -lf $public_key_path

这里有个断定:假如该值不是我们 gitlab 认识的用户公钥生成的,那一定是被入侵了。

每次在 gitlab 添加公钥,都会在 git 的账户下追加的,格式如下:

command=”/opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell key-94”,no-port-forwarding,no-X11-forwarding,no-agent-for warding,no-pty ssh-rsa AAAAB3xxxxxxxxxxxxxxxxxxxxxxxxx

所以我们只要在 git 用户下执行命令:

cat ~/.ssh/authorized_keys | grep ^comm| awk '{print $3" "$4}' | while read i; do echo "$i" > /tmp/key && ssh-keygen -E sha256 -lf /tmp/key | grep "WXdCxxxxxxx" ; done; rm /tmp/key

有输出,则说明是 gitlab 上面某个用户的公钥了,很大程度就是没问题的。

如果要确定是某个用户,只要找到该公钥里在 gitlab 里面的 id,如上面 key-94,就可以在 gitlab 找到是谁的了。

兜兜转转了一圈,找到对应 key 的同事询问,才知道他一直是开着外地全局代理拉代码……