- 版本 24.04
由于GPU多卡服务器多人使用,需要链接隧道ssh等,容易中招挖矿脚本。
总的思路是,顺着进程的PID回溯最终的程序运行起点,这里可以先看一下日志:
通过 PID 精确定位进程的信息,包括其启动命令、用户等。
也可以是命令本身:
1. 基本排查
1.1 Top命令
这个是看cpu进程的命令,
一般程序的进程不可能100%, 如果是多核,那么多个100%, 就是40个核长期跑满,就是4000%
就是有脚本启动了程序长期高负载占用cpu。
1.2 Nvidia-smi命令
如果发现显卡被未知程序长期占用,那肯定也是挖矿程序
2. 删除木马
用top确定进程后,如果删除后又出现,说明有其他程序在定时启动它,需要排查隐藏的文件。
2.1 查询定时启动程序
- 定时任务文件包括 /var/spool/cron/root和 /etc/crontab, 使用vi或vim修改时会提示无法修改(文件被锁定了),使用chattr可进行解锁,使用lsattr可以查看文件的锁定属性
crontab -l # 查看所有定时器
crontab -r # 全部清除定时任务
crontab -e # 编辑定时器
- 也可以通过文件查找
ubuntu的/etc目录下有cron.weekly、cron.daily、cron.hourly等存放定时任务的文件夹,
里面的脚本是否有/bin下的文件记录,就是可疑文件
2.2 查询守护进程
通过PID查看进程树:
或
也可以:
如果PPID(父进程 ID) 是 init(PID=1),说明它可能是一个守护进程。
如果TTY 字段是 0 或 ?,通常表明它是后台运行的。
找到守护进程的PID后,
3. 常见报错 (有些忘记记录了,后面有再更新)
打开cmd出现:
分析:
解决方法:
1.停止守护进程服务
2.删除守护进程
4. 总结
4.1 解决思路
如果只是简单的病毒,删除PID运行的文件即可
进一步的就是定时启动程序,及开机启动程序(守护进程-daemon, 也叫系统服务,是指在后台运行且不直接与用户交互的进程)
最后就是排查日志,另外做好权限管理,账户的密码尽量复杂一些,跑程序的普通用户不需要给
4.1 工作账户权限设置
- 工作账户只拥有访问必要文件的权限,例如读取配置文件、写入日志文件等
- 将敏感文件(如配置文件中的密钥)限制为可读:
-
如果要用到root权限(sudo),在/etc/sudoers设置可用的特殊命令
-
未来计划,用docker容器将工作程序与系统隔离
reference
https://blog.csdn.net/ouxx2009/article/details/123479424
https://blog.csdn.net/weixin_43312117/article/details/143647187