Linux处理挖矿程序实践

Linux   2024-06-03 09:26   260   0  
排查命令
# 查看所有进程
top
# 查看内存占用进程
top -o %MEM
# cpu占用最高的进程
top -c
ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | more
# 异常网络连接
netstat -antp
# 查看执行命令
history | grep sh
# 进程若隐藏可尝试【记得备份】
echo “”>/etc/ld.so.preload 
# 在使用,查看进程
top -o %MEM 
# 查看隐藏进程方式2【需要安装,大家自行百度哈】
unhide proc
# 查看进程启动文件
ls -l /proc/进程ID/exe
# 常用挖矿程序 查找 
find . -name xmrig
# 找到启动程序后,记得根据程序启动时间排查执行命令,执行命令角色等等
# 不过还是建议大家重装吧
根据进程占用程度杀死进程,搬迁期间可用
#!/bin/bash

# 设置 CPU 和内存占用的阈值(百分比)
cpu_threshold=60
memory_threshold=80

# 使用 ps 命令查找所有进程,并按 CPU 或内存占用排序
processes=$(ps -eo pid,%cpu,%mem,comm --sort=-%cpu | awk 'NR>1 { print $1, $2, $3, $4; }')

# 遍历所有进程
while read -r pid cpu_usage memory_usage process_name; do
  if (( $(bc <<< "$cpu_usage > $cpu_threshold") )); then
    # CPU 占用超过阈值,终止进程
    kill "$pid"
    echo "进程 $process_name (PID: $pid) 的 CPU 占用超过 $cpu_threshold%,已终止."
  elif (( $(bc <<< "$memory_usage > $memory_threshold") )); then
    # 内存占用超过阈值,终止进程
    kill "$pid"
    echo "进程 $process_name (PID: $pid) 的内存占用超过 $memory_threshold%,已终止."
  fi
done <<< "$processes"
或指定进程
#!/bin/bash

# 请替换为你要删除的进程名称
process_name="your_process_name"

# 设置 CPU 占用阈值(百分比)
cpu_threshold=60

# 使用 pgrep 查找进程 ID
process_id=$(pgrep "$process_name")

if [ -z "$process_id" ]; then
  echo "进程 $process_name 未找到."
else
  # 使用 top 命令获取进程的 CPU 占用百分比
  cpu_usage=$(top -b -n 1 -p "$process_id" | awk 'NR>7 { sum += $9; } END { print sum; }')

  if [ "$cpu_usage" -gt "$cpu_threshold" ]; then
    # CPU 占用超过阈值,终止进程
    kill "$process_id"
    echo "进程 $process_name (PID: $process_id) 的 CPU 占用超过 $cpu_threshold%,已终止."
  else
    echo "进程 $process_name (PID: $process_id) 的 CPU 占用为 $cpu_usage%,未超过 $cpu_threshold%."
  fi
fi
防火墙 ip 禁用

CentOSUbuntu个有不同 这里是CentOS

# 网络连接查看
netstat -anp
# 禁止某个IP
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="<要禁止的IP地址>" drop'
# 重启保存
sudo firewall-cmd --reload
其他审查
### 历史执行命令
history
### 日志查找
### **Linux 系统日志文件**
cat /var/log/syslog
cat /var/log/messages
### **防火墙和安全相关的日志文件**
cat /var/log/iptables.log
cat /var/log/ufw.log
cat /var/log/firewalld
### **SSH 日志**
# 一般会被删掉。。。
cat /var/log/auth.log
cat /var/log/secure
### **Web 服务器日志(例如 Apache 或 Nginx)**
可疑用户禁止
cat /etc/passwd
# 或者
cut -d: -f1 /etc/passwd
# 或者
vi /etc/passwd
# 改为 nologin
/usr/sbin/nologin
# 通过日志查看近期是否有创建账号行为
cat /var/log/audit/audit.log | grep useradd
# 或者
cat /var/log/secure | grep 'new user'
# 通过账户的home目录查看可疑账户的创建或最近活跃时间,需特别关注近期创建的home目录
stat /home/guest/

定时任务审查

# 查看计划任务
crontab -l
# 查看具体任务
crontab -u username -l
# 主机所有计划任务文件
/etc/crontab
/var/spool/cron/
/etc/anacrontab
/etc/cron.d/
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/
清除自启动服务项
# 查询所有自启动服务
systemctl list-unit-files | grep enabled

# 可疑文件查找
ls -al /etc/systemd/system/*.service
ls -al /usr/lib/systemd/system/*.service

# 查看服务详细信息(服务启动的进程文件)
cat /etc/systemd/system/<service_unit_name>.service

# 禁用服务器 删除启动文件
systemctl disable <service name>
rm /etc/systemd/system/<service_unit_name>.service
rm /usr/lib/systemd/system/<service_unit_name>.service
清除SSH公钥
# 排查以下文件 建议.ssh下文件整体备份后删除
~/.ssh/authorized_keys
~/.ssh/authorized_keys
清除.so劫持
# 排查预加载的.so文件
cat /etc/ld.so.preload
# 删除预加载劫持
echo > /etc/ld.so.preload
不可更改文件属性回复
chattr -i /etc/passwd
chattr -i /etc/crontab

参考文献