笔者ubuntu小小小白,p都不懂。现在问题虽然解决了,但是仍然不知道是怎么造成的,应该怎么加密端口,是不是被弄成矿机了。。。只能常备份文件多观察系统状态了。
操作系统: Ubuntu 16.04
问题:一个叫ntpd的进程占用cpu利用率过高
pid 4313显示ntpd,用了400%的cpu。
Network Time Protocol daemon(ntpd) 常驻进程,应该是用来对时的。我尝试kill 4313进程,过不了几秒钟,这个进程换了一个pid,又出来了。重启系统该进程自动启动。当时第一反应是进程可能自己死循环了。。
上网学习了一下ubuntu的ntpd相关,找到了有人有macOS的类似问题,有可能是对时的进程链到旧的server上了[1][2]。所以我打开settings -> date & time -> Automatic Date & Time, Automatic Time Zone, 没有效果。Cpu利用率还是居高不下。失败!
后来看stackoverflow上有人说ntpd有很多种,Ubuntu默认用的不是ntp/ntpd,而应该是叫ntpdate(当然到现在我也不知道这是不是真的),并且建议用命令设置ntpd[3]。这时候我发现我没有ntp/ntpd/ntpq的命令:
man ntpd # No manual entry for ntpd
which ntpd #显示为空,我根本没安装ntpd
我本以为这种对时的东西是系统里自带的,在找安装包的时候发现也没有:
dpkg -l | grep ntp #只有这个显示有Network Time Protocol Daemon,ntpd没有
我以为ntp,ntpd这些东西是相互调用的,因为我没装ntpd所以出问题了,于是我就
sudo apt-get install ntpd
安装上了这个包,重启了服务器。结果cpu还是400%居高不下。失败!于是又删了。
再深入调查的时候发现有点不对头了。。没有安装东西在运行,怎么可能呢?
终于在中文网站找到了有人和我一样的问题,root下的ntpd利用率过高[4]. 他最后的结论是被攻击了。于是我按照他的步骤一步一步做(有些当时没截图已经找不到了,就笔录了):
ps -ef | grep ntpd #输出有一个root下的进程
但是没有/usr/sbin/ntpd这东西。
pstree -p #显示开了8个进程(kill了以后又自动生成了14503的ntpd进程,仍然占400%cpu)
跟上面网站里的人遭遇很相似。
在进程目录下找执行的程序:
cd /proc/14503
sudo ls -l exe
输出:
定位到执行文件
strace的输出,看不懂。。但是应该不是什么好东西。。因为和那哥们儿的输出结果类似:
sudo strace -p
sudo strace -cp
找到 /cpu/,只有/bin一个文件夹,里面是些实行文件和奇奇怪怪的东西,“?”文件是啥。。有的打开了也看不了。。
这里面也有cron.d文件。虽然看不懂,但是估计伪装进程的程序都在这儿了。
把bin文件夹全TM删了,杀掉进程:
sudo rm -rv bin
sudo kill 14503
cpu利用率回复了,并且进程没有再复活。
目前没有重启,不知道删没删干净,会不会重启后再次出现。htop的界面一直开着观察。
ref:
1, https://discussions.apple.com/thread/7390949
2, https://apple.stackexchange.com/questions/275453/macos-ntpd-uses-more-than-100-of-cpu
3, https://askubuntu.com/questions/254826/how-to-force-a-clock-update-using-ntp
4, https://lax.v2ex.com/t/471499