VPS 被入侵后,需按 “识别入侵迹象→定位入侵路径→清除恶意内容→加固防御” 的核心流程排查,重点从登录日志、进程端口、文件系统、恶意程序等维度切入,同时做好数据备份避免损失。以下是分步骤的详细排查方法:
一、先确认入侵的核心迹象
在正式排查前,先通过基础现象判断入侵程度,避免遗漏关键线索:
-
资源异常:CPU / 内存占用突然飙升(用top/任务管理器查看)、磁盘空间莫名减少、带宽被大量占用(用iftop/流量监控查看);
-
账号异常:新增陌生管理员账号、原有账号权限被篡改、登录提示 “上次登录 IP 非本人常用 IP”;
-
行为异常:VPS 对外发送大量数据包(疑似肉鸡挖矿 / DDOS)、关键文件(如网站源码、系统配置)被篡改、出现不明弹窗或进程;
-
日志异常:登录日志、服务日志中出现大量失败登录记录、陌生 IP 的访问记录。
二、分系统排查关键维度
1. 检查登录日志(定位非授权登录)
Linux 系统
-
核心日志文件:
-
/var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(CentOS/RHEL):记录 SSH 登录、sudo 操作、用户认证信息;
-
/var/log/wtmp:记录所有成功登录的会话(用last命令查看);
-
/var/log/btmp:记录失败的登录尝试(用lastb命令查看)。
-
排查操作:
-
执行grep "Accepted" /var/log/auth.log筛选成功登录记录,检查是否有陌生 IP、非本人账号登录;
-
执行grep "Failed password" /var/log/auth.log | wc -l统计失败登录次数,若数值极大,大概率是暴力破解入侵;
-
执行last -i查看登录 IP 和时间,对比自己的常用 IP 是否匹配。
Windows 系统
-
核心日志位置:
-
打开「事件查看器」→「Windows 日志」→「安全」:事件 ID 4624(成功登录)、4625(失败登录)、4720(新增用户)、4727(新增用户组)。
-
排查操作:
-
筛选事件 ID 4624,查看 “登录 IP 地址”“账户名” 是否为本人操作;
-
筛选事件 ID 4720/4727,检查是否有陌生账号被创建或加入管理员组。
2. 检查进程与端口(定位恶意程序 / 后门)
Linux 系统
-
进程排查:
-
执行ps aux查看所有进程,重点关注:无合理名称的进程、占用 CPU / 内存极高的进程、路径异常的进程(如/tmp目录下的可执行程序);
-
执行top -c实时监控进程,按P排序 CPU 占用、M排序内存占用,定位异常进程;
-
对可疑进程,用ls -l /proc/[进程PID]/exe查看可执行文件路径,用netstat -anp | grep [进程PID]查看其网络连接。
-
端口排查:
-
执行netstat -tulnp(或ss -tulnp)查看所有监听端口,重点关注:非本人配置的端口(如陌生的 8080、3389 外的端口)、境外 IP 的 ESTABLISHED 连接;
-
执行lsof -i查看端口对应的进程,确认是否为合法服务(如 Nginx 对应 80 端口,而非陌生进程)。
Windows 系统
-
进程排查:
-
打开「任务管理器」→「详细信息」,勾选「PID」「命令行」,重点关注:无描述的进程、CPU 占用持续高于 50% 的进程、路径在C:WindowsTemp或C:UsersPublic的进程;
-
对可疑进程,右键「打开文件位置」检查文件合法性,用wmic process where processid=[PID] get commandline查看命令行参数。
-
端口排查:
-
执行netstat -ano查看端口与 PID 对应关系,重点关注状态为ESTABLISHED的陌生端口;
-
打开「资源监视器」→「网络」→「TCP 连接」,查看进程对应的远程 IP,通过 IP 查询工具(如 IP138)判断是否为恶意 IP。
3. 检查文件系统(定位篡改 / 后门文件)
Linux 系统
-
关键文件校验:
-
检查系统配置文件:/etc/passwd(用户列表)、/etc/shadow(密码哈希)、/etc/sudoers(sudo 权限),执行cat /etc/passwd | grep -v nologin查看可登录用户,若有陌生用户则异常;
-
检查 Web 目录(如/var/www/html):用find /var/www -type f -mtime -7查找 7 天内修改的文件,重点看.php/.asp后门文件(如包含eval()的脚本);
-
检查隐藏文件:执行ls -la /tmp/ls -la /root,查看是否有.开头的陌生可执行文件(如.miner挖矿程序)。
-
完整性校验:
-
用rpm -V [软件名](如rpm -V sshd)检查系统关键软件(sshd、nginx、apache)的文件完整性,若出现S(大小变化)、M(权限变化)、5(MD5 变化)则说明文件被篡改。
Windows 系统
-
关键文件校验:
-
检查系统目录:C:WindowsSystem32下的cmd.exe/powershell.exe是否被替换(对比文件大小、修改时间);
-
检查 Web 目录(如C:inetpubwwwroot):按「修改时间」排序,查找近期新增的.asp/.aspx后门文件;
-
检查注册表:打开regedit,查看HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun(开机启动项)、HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun,是否有陌生程序的启动项。
4. 排查恶意程序与后门(定位持久化手段)
Linux 系统
-
定时任务排查:
-
执行crontab -l查看当前用户定时任务,执行ls -l /etc/cron*查看系统级定时任务,重点关注每分钟 / 每小时执行的陌生脚本(如挖矿程序的定时启动);
-
检查/etc/rc.local、/etc/init.d/目录,是否有恶意自启动脚本。
-
Rootkit 排查:
-
安装rkhunter(yum install rkhunter/apt install rkhunter),执行rkhunter --check扫描 Rootkit(隐藏进程 / 文件的恶意程序);
-
安装chkrootkit,执行chkrootkit辅助扫描。
Windows 系统
-
任务计划排查:
-
打开「任务计划程序」,查看「任务计划程序库」,筛选 “触发器” 为 “开机时”“每隔 X 分钟” 的任务,检查操作是否为陌生程序。
-
恶意软件扫描:
-
用 Windows Defender 执行「离线扫描」(设置→更新和安全→Windows 安全中心→病毒和威胁防护→扫描选项→离线扫描);
-
手动检查启动项:执行msconfig→「启动」,禁用陌生的启动程序;执行services.msc,查看是否有陌生服务(如描述为空、启动类型为 “自动” 的服务)。
三、定位入侵路径(避免二次入侵)
排查完恶意内容后,需找到入侵根源,常见路径包括:
-
弱密码攻击:SSH / 远程桌面 / 数据库(MySQL、Redis)的弱密码(如123456、admin)被暴力破解;
-
Web 漏洞攻击:网站存在 SQL 注入、XSS、文件上传漏洞,或 CMS 后台(如 WordPress、DedeCMS)弱口令被攻破;
-
软件漏洞攻击:未打补丁的服务(如 OpenSSH、Log4j、永恒之蓝漏洞)被利用;
-
第三方组件攻击:服务器上的第三方软件(如 PHP 扩展、Java 组件)存在漏洞被劫持。
排查方法:
-
查看 Web 服务日志(Nginx:/var/log/nginx/access.log;Apache:/var/log/apache2/access.log),筛选包含union select(SQL 注入)、../(路径遍历)、eval(代码执行)的请求;
-
检查数据库日志(MySQL:/var/log/mysql/error.log),查看是否有非授权的远程连接记录;
-
对比系统补丁记录(Linux:yum list installed | grep security;Windows:「设置」→「更新和安全」→「Windows 更新历史记录」),确认是否遗漏高危补丁。
四、排查注意事项
-
先备份:排查前先备份重要数据(如网站源码、数据库),避免清理时误删;
-
断外网(可选):若 VPS 非核心业务,可临时断开外网(关闭网卡 / 防火墙拦截所有端口),防止攻击扩散;
-
留证据:保存所有日志文件(如auth.log、access.log),便于后续溯源;
-
不盲目清理:若发现 Rootkit 或复杂后门,建议重装系统(入侵后的环境已不可信),而非手动清理。
五、后续加固措施
排查清除后,需立即加固:
-
改密码:所有账号(SSH、远程桌面、数据库、CMS 后台)改为强密码(字母 + 数字 + 特殊符号,不少于 12 位);
-
关端口:只开放必要端口(如 SSH 用 2222 端口替代 22,禁止 root 直接登录);
-
打补丁:及时更新系统和软件补丁;
-
加防护:部署防火墙(如 iptables、Windows 防火墙)、入侵检测工具(如 Fail2ban 拦截暴力破解)、Web 应用防火墙(WAF)。
|