云计算百科
云计算领域专业知识百科平台

服务器被挖矿了怎么办?别急看这里@~…~@

序:服务器被挖矿攻击通常是由于系统或应用程序的漏洞被黑客利用,导致恶意软件在服务器上运行,消耗大量资源进行加密货币挖矿。

列举:

 从图中可以看到,系统检测到了一次“挖矿”行为,并标记为高危威胁。攻击者的IP是 36.248.**,并且目标是 223.113.**。根据描述,攻击类型是通过客户端登录矿池进行的,矿池登录是挖矿行为的一种典型表现。

目录

一、隔离服务器

二、 检查并停止可疑进程

三、检查定时任务(crontab) 

四、删除恶意文件

五、检查系统的网络连接

六、检查用户和权限

 七、更新系统和应用程序

八、检查和删除后门

九、加强服务器安全

一、隔离服务器

  • 断开网络连接:首先将服务器从网络中隔离,防止进一步的恶意攻击或数据泄露。
  • 切换只读模式:如果有必要,可以将文件系统挂载为只读,避免更多数据损坏或篡改。

二、 检查并停止可疑进程

  • 使用 top 或 htop 查看系统中占用大量 CPU 或内存的可疑进程。
  • 使用 ps aux 来查找所有正在运行的进程,特别是带有 coin, mine, xmr, xmrig, minerd 等关键词的进程。
  • 使用 kill 或 kill -9 [PID] 停止这些恶意进程。

三、检查定时任务(crontab) 

  • 黑客常常会通过修改 crontab 添加计划任务来重新启动挖矿程序。
  • 使用以下命令检查定时任务: crontab -l
    sudo crontab -l

    如果发现可疑的任务,立即将其删除:

    crontab -e

四、删除恶意文件

  • 使用 find 命令查找可疑文件,尤其是那些最近创建或修改的文件: find / -type f -mtime -1
  • 检查 /tmp, /var/tmp, /dev/shm 这些临时目录是否有可疑文件,并删除它们。

五、检查系统的网络连接

 使用 netstat 或 ss 查看网络连接情况,找出与外部矿池连接的 IP 地址:

netstat -ntlp
ss -tuln

六、检查用户和权限

  • 检查是否有新的用户被创建: cat /etc/passwd
  • 检查 sudoers 文件,看是否有不明用户被赋予了 sudo 权限: sudo cat /etc/sudoers
  • 删除可疑的用户或禁止他们的访问。

 七、更新系统和应用程序

确保操作系统和所有运行的应用程序、服务、库都已更新到最新版本,修复可能被利用的漏洞:

sudo apt update && sudo apt upgrade # 对于 Ubuntu/Debian
sudo yum update # 对于 CentOS/RHEL

八、检查和删除后门

  • 查找是否存在 .ssh 文件中被黑客植入的公钥: cat ~/.ssh/authorized_keys
  • 删除可疑的公钥和配置文件。
  • 检查 rc.local 或其他启动脚本中是否有恶意代码

九、加强服务器安全

  • 更改所有密码,包括 SSH 密码和数据库密码。
  • 使用 公钥认证 来替代密码登录,并禁止 SSH 的密码认证。
  • 启用防火墙,只允许必要的端口开放,禁止所有其他未授权的流量。

sudo ufw enable # 对于 Ubuntu/Debian
sudo firewall-cmd –add-port=22/tcp –permanent # 对于 CentOS/RHEL
sudo firewall-cmd –reload

 看到这里基本不需要再往下看了,下面是记录本人服务器被告警后的排查过程。当然也可供大家参考:

步骤1:

top
top – 15:53:27 up 259 days, 6:12, 1 user, load average: 0.13, 0.42, 0.44
Tasks: 1178 total, 1 running, 1177 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.1 us, 1.1 sy, 0.0 ni, 97.6 id, 0.0 wa, 0.0 hi, 0.1 si, 0.1 st
KiB Mem : 16256840 total, 320400 free, 11537616 used, 4398824 buff/cache
KiB Swap: 4194300 total, 3272380 free, 921920 used. 4122620 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
34316 root 20 0 5611452 1.3g 9368 S 4.3 8.6 1315:07 java
32119 root 20 0 5634380 1.4g 11872 S 2.6 9.1 611:49.20 java
41614 3000 20 0 6495032 1.2g 4916 S 1.7 7.6 1365:46 java
60364 root 20 0 756088 86756 3136 S 1.7 0.5 497:02.98 MediaServer
19591 root 20 0 163208 3464 1592 R 1.0 0.0 0:00.27 top
26850 root 20 0 4815448 614144 8100 S 1.0 3.8 699:54.25 java
9152 root 20 0 4930188 465372 7848 S 0.3 2.9 28:25.92 java
19281 root 20 0 116100 5564 4248 S 0.3 0.0 0:00.07 sshd
39128 root 20 0 1236448 8676 4076 S 0.3 0.1 7:19.32 containerd-shim
39189 root 20 0 1236704 8292 3964 S 0.3 0.1 6:30.65 containerd-shim
39835 root 20 0 7790008 223744 4568 S 0.3 1.4 141:00.97 java
1 root 20 0 51916 3684 2116 S 0.0 0.0 114:38.10 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:03.66 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 17:55.37 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:53.57 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 150:56.86 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 1:03.12 watchdog/0
12 root rt 0 0 0 0 S 0.0 0.0 0:50.13 watchdog/1
13 root rt 0 0 0 0 S 0.0 0.0 0:55.87 migration/1
14 root 20 0 0 0 0 S 0.0 0.0 2:12.06 ksoftirqd/1
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H
17 root rt 0 0 0 0 S 0.0 0.0 0:46.90 watchdog/2
18 root rt 0 0 0 0 S 0.0 0.0 0:53.69 migration/2
19 root 20 0 0 0 0 S 0.0 0.0 1:41.88 ksoftirqd/2
21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/2:0H
22 root rt 0 0 0 0 S 0.0 0.0 0:46.73 watchdog/3
23 root rt 0 0 0 0 S 0.0 0.0 0:52.96 migration/3
24 root 20 0 0 0 0 S 0.0 0.0 1:31.12 ksoftirqd/3
26 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/3:0H
28 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
29 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
30 root 20 0 0 0 0 S 0.0 0.0 2:48.21 khungtaskd
31 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
32 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
33 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
34 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
35 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
36 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
37 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md
38 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 edac-poller
39 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 watchdogd
45 root 20 0 0 0 0 S 0.0 0.0 8:56.99 kswapd0
46 root 25 5 0 0 0 S 0.0

从 top 命令的输出来看,目前服务器的负载并不高,load average 大约在 0.13 到 0.44 之间,CPU 的使用率也比较低,主要处于空闲状态 (97.6% 空闲)。内存方面,服务器已经使用了大约 11.5GB,剩余大约 320MB,不过还有大约 4.3GB 的缓存可用。需要注意的点:

  • Java进程占用较多资源:
    • 有多个Java进程在运行,其中有的进程消耗了较多的CPU时间(例如 34316 进程使用了 1315:07 的CPU时间,占用了 1.3GB 内存),可能是你运行的主要应用服务。
  • MediaServer 进程:
    • 进程 MediaServer (60364) 运行时间较长,并且也占用了较多的CPU时间和内存。
  • 目前没有明显显示出挖矿进程(例如 xmrig、minerd 等典型挖矿工具),但是可以进一步检查这些Java进程是否有异常网络行为,特别是与外部挖矿池的通信。

    步骤2:

    ps aux | grep -E 'miner|xmrig|minerd|cpuminer|crypto'
    root 48 0.0 0.0 0 0 ? S< Jan23 0:00 [crypto]
    root 25011 0.0 0.0 112820 1000 pts/1 S+ 16:02 0:00 grep –color=auto -E miner|xmrig|minerd|cpuminer|crypto

    从结果来看,有一个进程 [crypto] 正在运行。尽管它的 CPU 使用率为 0 且几乎没有占用内存,但这个进程名带有 "crypto",需要进一步确认它的作用。

    [crypto] 进程通常是系统内核线程的一部分,负责处理与加密相关的内核任务(比如硬件加密、SSL/TLS等)。因此,看到它并不一定意味着系统受到挖矿攻击。

    要进一步确认是否存在挖矿行为,可以执行以下操作:

    检查 [crypto] 进程来源: 使用以下命令查看该进程的详细信息:

    ps -ef | grep [crypto]

    检查进程的文件位置: 使用 lsof 或 ls 命令查看该进程使用的文件,以确认它是合法的系统内核线程: 

    lsof -p <PID> # 替换 <PID> 为该进程的实际 PID

    检查可疑的网络连接 检查网络连接,特别是是否有可疑的外部连接:

    netstat -tulnp

    监控网络流量: 使用 iftop 或 nload 等工具监控系统的实时网络流量,检查是否有异常的大量流量出现在不常见的端口。

    步骤3:

    find / -name 'crypto'
    /proc/sys/crypto
    /proc/crypto
    find: ‘/proc/26689’: No such file or directory
    /root/openssl-1.1.1v/crypto
    /root/openssl-1.1.1v/include/crypto
    /usr/lib/modules/3.10.0-1160.el7.x86_64/kernel/arch/x86/crypto
    /usr/lib/modules/3.10.0-1160.el7.x86_64/kernel/crypto
    /usr/lib/modules/3.10.0-1160.el7.x86_64/kernel/drivers/crypto
    /usr/lib/modules/3.10.0-1160.81.1.el7.x86_64/kernel/arch/x86/crypto
    /usr/lib/modules/3.10.0-1160.81.1.el7.x86_64/kernel/crypto
    /usr/lib/modules/3.10.0-1160.81.1.el7.x86_64/kernel/drivers/crypto
    /usr/lib/modules/3.10.0-1160.119.1.el7.x86_64/kernel/arch/x86/crypto
    /usr/lib/modules/3.10.0-1160.119.1.el7.x86_64/kernel/crypto
    /usr/lib/modules/3.10.0-1160.119.1.el7.x86_64/kernel/drivers/crypto
    /usr/src/kernels/3.10.0-1160.119.1.el7.x86_64.debug/arch/arm/crypto
    /usr/src/kernels/3.10.0-1160.119.1.el7.x86_64.debug/arch/powerpc/crypto
    /usr/src/kernels/3.10.0-1160.119.1.el7.x86_64.debug/arch/s390/crypto
    /usr/src/kernels/3.10.0-1160.119.1.el7.x86_64.debug/arch/sparc/crypto
    /usr/src/kernels/3.10.0-1160.119.1.el7.x86_64.debug/arch/x86/crypto
    /usr/src/kernels/3.10.0-1160.119.1.el7.x86_64.debug/arch/x86/include/asm/crypto
    /usr/src/kernels/3.10.0-1160.119.1.el7.x86_64.debug/crypto
    /usr/src/kernels/3.10.0-1160.119.1.el7.x86_64.debug/drivers/crypto
    /usr/src/kernels/3.10.0-1160.119.1.el7.x86_64.debug/drivers/s390/crypto
    /usr/src/kernels/3.10.0-1160.119.1.el7.x86_64.debug/include/config/crypto
    /usr/src/kernels/3.10.0-1160.119.1.el7.x86_64.debug/include/config/rtllib/crypto
    /usr/src/kernels/3.10.0-1160.119.1.el7.x86_64.debug/include/crypto

    从 find / -name 'crypto' 的输出结果来看,所有出现的路径都与系统内核模块、加密库(如 OpenSSL)、或者相关的内核功能有关。暂时没有发现与挖矿程序有关的可疑文件。分析:

  • /proc/sys/crypto 和 /proc/crypto 是 Linux 系统中与加密相关的内核接口,用于管理和查看加密相关的信息。
  • /root/openssl-1.1.1v/crypto 和 /root/openssl-1.1.1v/include/crypto 是 OpenSSL 加密库的路径,OpenSSL 是一个用于加密和SSL/TLS的开源项目。
  • /usr/lib/modules/…/crypto 和 /usr/src/kernels/…/crypto 是内核模块目录,包含了与加密相关的驱动程序和模块。
  • 这些目录和文件都属于系统中合法的加密相关模块,目前没有明显的恶意挖矿程序的迹象。

    如果你怀疑有挖矿程序隐藏在系统中,可以结合这些步骤进一步排查。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 服务器被挖矿了怎么办?别急看这里@~…~@
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!