服务器被挖矿后的应急处理与安全加固指南

2023/1/1

点击勘误issues (opens new window),哪吒感谢大家的阅读

# 服务器被挖矿后的应急处理与安全加固指南

# 1. 挖矿病毒的特征识别

服务器被挖矿病毒感染通常会表现出以下特征:

  • 异常的系统资源占用:CPU使用率异常高(通常接近100%),即使在服务器空闲时也是如此
  • 系统性能下降:服务器响应缓慢,应用程序运行卡顿
  • 硬件异常:服务器发热严重,风扇持续高速运转
  • 异常网络连接:存在与未知IP地址(尤其是境外IP)的连接
  • 隐藏进程:使用常规工具(如top、htop)无法看到高CPU占用的进程
  • 自动恢复机制:即使杀死可疑进程,短时间内又会自动重启

# 2. 应急响应流程

# 2.1 紧急隔离

一旦确认服务器被挖矿病毒感染,应立即采取以下措施:

# 1. 断开网络连接(物理断网或禁用网络接口)
ifconfig eth0 down  # 禁用网络接口(请根据实际情况替换接口名)

# 2. 修改所有用户密码,特别是root密码
passwd root

重要提示:在处理过程中,建议使用Live CD启动系统进行操作,避免在已感染的系统中直接操作,因为:

  • 修改的密码可能被监听
  • 修复的文件可能被隐藏的病毒改回
  • 使用的工具可能已被篡改
  • 操作过程可能被全程监控

# 2.2 确认感染情况

# 2.2.1 检查高CPU占用进程
# 使用top命令查看高CPU占用进程
top
# 在top界面按下'c'键可按CPU使用率排序

# 使用ps命令查看高CPU占用进程
ps -eo cmd,pcpu,pid,user --sort -pcpu | head

# 对于隐藏进程,可使用专用工具
# 安装sysdig工具
apt install sysdig  # Debian/Ubuntu系统
yum install sysdig  # CentOS/RHEL系统

# 使用sysdig查看CPU占用排行
sysdig -c topprocs_cpu

# 安装unhide工具
apt install unhide  # Debian/Ubuntu系统
yum install unhide  # CentOS/RHEL系统

# 使用unhide查找隐藏进程
unhide proc
# 2.2.2 检查异常网络连接
# 查看所有TCP连接
ss -anpt
# 或使用netstat(如果可用)
netstat -antp

# 查看所有UDP连接
ss -anpu

# 使用lsof查看网络连接
lsof -i

# 使用tcpdump抓包分析
tcpdump -i <网卡名> host <本地IP> and port <可疑端口>
# 2.2.3 检查定时任务
# 查看当前用户的定时任务
crontab -l

# 查看所有用户的定时任务
ls -l /var/spool/cron/*

# 查看系统定时任务
cat /etc/crontab
ls -l /etc/cron.d/
ls -l /etc/cron.hourly/
ls -l /etc/cron.daily/
ls -l /etc/cron.weekly/
ls -l /etc/cron.monthly/

# 查看定时任务日志
tail -f /var/log/cron
# 2.2.4 检查启动项和服务
# 检查开机启动脚本
cat /etc/rc.d/rc.local

# 检查systemd服务
ls -l /etc/systemd/system/
ls -l /etc/systemd/system/multi-user.target.wants/

# 对于可疑进程,查看其关联的服务
systemctl status <PID>
# 2.2.5 检查异常文件和动态链接库
# 检查/etc/ld.so.preload文件(该文件默认为空)
cat /etc/ld.so.preload

# 检查可疑的二进制文件(按修改时间排序)
ls -Athl /usr/bin
ls -Athl /usr/sbin

# 检查可疑的二进制文件(按文件大小排序)
ls -AShl /usr/bin
ls -AShl /usr/sbin
# 2.2.6 检查SSH配置和异常公钥
# 检查SSH授权密钥
cat ~/.ssh/authorized_keys

# 检查SSH配置
grep AuthorizedKeysFile /etc/ssh/sshd_config
grep Root /etc/ssh/sshd_config
grep Password /etc/ssh/sshd_config

# 3. 清除挖矿病毒

警告:在执行以下操作前,请确保已备份重要数据。对于严重感染的系统,建议在清理后重装系统。

# 3.1 解锁系统文件

# 解除系统文件的隐藏属性
chattr -iRa /usr/ /etc/

# 3.2 终止恶意进程

# 终止挖矿进程
kill -9 <PID>

# 如果进程由服务启动,先停止并禁用服务
systemctl stop <服务名>.service
systemctl disable <服务名>.service

# 3.3 清除恶意文件

# 清空/etc/ld.so.preload文件
echo "" > /etc/ld.so.preload

# 删除恶意定时任务
rm -rf /var/spool/cron/*
chattr +i /var/spool/cron/  # 锁定目录防止再次写入

rm -rf /etc/cron.d/*
chattr +i /etc/cron.d/  # 锁定目录防止再次写入

# 删除常见挖矿病毒文件
rm -f /usr/local/lib/libs.so
chattr +i /usr/local/lib  # 锁定目录防止再次写入

rm -f /var/tmp/kworkerds*
rm -f /var/tmp/1.so
rm -f /tmp/kworkerds*
rm -f /tmp/1.so
rm -f /var/tmp/wc.conf
rm -f /tmp/wc.conf

# 3.4 清除异常SSH公钥

# 检查并删除可疑的SSH公钥
cat ~/.ssh/authorized_keys
# 手动编辑文件删除可疑公钥

# 4. 系统安全加固

# 4.1 更新系统和软件

# Debian/Ubuntu系统
apt update && apt upgrade -y

# CentOS/RHEL系统
yum update -y

# 4.2 加固SSH服务

# 编辑SSH配置文件
vi /etc/ssh/sshd_config

# 推荐的安全配置
PermitRootLogin no           # 禁止root直接登录
PasswordAuthentication no    # 禁用密码认证,使用密钥认证
Port 22345                   # 修改默认SSH端口
AllowUsers user1 user2       # 限制允许登录的用户
MaxAuthTries 3               # 最大认证尝试次数
ClientAliveInterval 300      # 客户端活跃检测间隔
ClientAliveCountMax 0        # 客户端活跃检测计数

# 重启SSH服务
systemctl restart sshd

# 4.3 配置防火墙

# 安装并启用防火墙
# Debian/Ubuntu系统
apt install ufw
ufw enable
ufw default deny incoming
ufw default allow outgoing
ufw allow 22345/tcp  # 允许SSH端口(使用修改后的端口)
ufw allow 80/tcp     # 允许HTTP端口(根据需要配置)
ufw allow 443/tcp    # 允许HTTPS端口(根据需要配置)

# CentOS/RHEL系统
yum install firewalld
systemctl enable firewalld
systemctl start firewalld
firewall-cmd --permanent --add-port=22345/tcp  # 允许SSH端口(使用修改后的端口)
firewall-cmd --permanent --add-port=80/tcp     # 允许HTTP端口(根据需要配置)
firewall-cmd --permanent --add-port=443/tcp    # 允许HTTPS端口(根据需要配置)
firewall-cmd --reload

# 4.4 安装入侵检测和防御工具

# 安装Fail2Ban防止暴力破解
# Debian/Ubuntu系统
apt install fail2ban

# CentOS/RHEL系统
yum install epel-release
yum install fail2ban

# 配置Fail2Ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
vi /etc/fail2ban/jail.local

# 启动Fail2Ban
systemctl enable fail2ban
systemctl start fail2ban

# 安装ClamAV防病毒软件
# Debian/Ubuntu系统
apt install clamav clamav-daemon

# CentOS/RHEL系统
yum install epel-release
yum install clamav clamav-update

# 更新病毒库
freshclam

# 扫描系统
clamscan -r --bell -i /

# 4.5 锁定关键目录

# 使用chattr命令锁定关键目录和文件
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
chattr +i /etc/ssh/sshd_config

# 5. 长期防护措施

# 5.1 定期更新和补丁管理

  • 建立定期更新系统和应用程序的计划
  • 关注安全公告,及时应用安全补丁
  • 对于关键系统,在应用补丁前进行测试

# 5.2 定期备份

  • 实施3-2-1备份策略:3份数据副本,2种不同的存储介质,1份异地备份
  • 定期测试备份的可恢复性
  • 确保备份数据的安全性(加密、访问控制)

# 5.3 安全监控

  • 部署集中式日志管理系统
  • 配置关键事件的告警机制
  • 定期审查系统日志和安全事件
# 安装auditd进行系统审计
# Debian/Ubuntu系统
apt install auditd

# CentOS/RHEL系统
yum install audit

# 启用auditd服务
systemctl enable auditd
systemctl start auditd

# 5.4 最小权限原则

  • 仅安装必要的软件包
  • 关闭不需要的服务和端口
  • 为用户分配最小必要的权限
  • 使用非特权用户运行应用程序

# 5.5 定期安全审计

  • 定期进行漏洞扫描
  • 执行安全基线检查
  • 进行渗透测试评估系统安全性
# 使用Lynis进行安全审计
# Debian/Ubuntu系统
apt install lynis

# CentOS/RHEL系统
yum install lynis

# 运行Lynis审计
lynis audit system

# 6. 总结

服务器被挖矿病毒感染后的处理不仅仅是清除病毒,更重要的是找出入侵途径并加以修复,同时加强系统安全防护。对于严重感染的系统,建议在备份重要数据后重装系统,以确保彻底清除所有恶意代码。

安全是一个持续的过程,需要定期的维护、更新和审计。通过实施本文提供的安全加固措施,可以显著降低服务器被挖矿病毒感染的风险。

# 7. 参考资料

上次更新: 2025/6/19 04:01:27