
核心要点(TL;DR)
- 彻底清除挂马需先隔离站点,再查杀后门,最后加固系统。
- 使用find、grep、rkhunter等工具可快速定位恶意文件。
- 清除后必须修复漏洞并部署WAF,否则会再次被入侵。
- 定期文件完整性检查与日志审计是防止挂马的关键。
网站突然被搜索引擎标记为“危险”,访问时跳转到博彩页面,或者服务器CPU莫名飙升——这些都是网站被挂马的典型症状。作为运维或站长,你不仅要快速清除木马,还要防止再次被入侵。本文提供一套从查马到加固的完整操作步骤,包含具体命令和检查清单,帮你彻底解决问题。
一、紧急隔离:防止损失扩大
发现挂马后,第一反应不是立即删除文件,而是先隔离站点,避免攻击者继续操作或用户受到伤害。
- 下线网站:将网站切换至维护页面,或直接关闭Web服务(如
systemctl stop nginx)。 - 备份现场:对网站目录、数据库、日志进行完整备份,便于后续分析。命令示例:
tar -czf /backup/site_$(date +%F).tar.gz /var/www/html。 - 修改所有密码:包括服务器SSH、数据库、CMS后台、FTP等,防止攻击者利用已窃取的凭证再次进入。
二、查马:定位恶意文件与后门
挂马通常包含恶意脚本、Webshell后门和数据库注入。以下方法可系统化排查。
1. 按时间与权限查找可疑文件
攻击者上传的文件通常修改时间集中,权限异常。使用find命令:
find /var/www -type f -mtime -7 -name "*.php" -ls
查找最近7天被修改的PHP文件。同时检查权限为777的文件:
find /var/www -type f -perm 0777 -ls
2. 搜索恶意代码特征
常见Webshell会包含eval、assert、base64_decode等函数。使用grep批量搜索:
grep -r --include="*.php" -l -E "eval\(|assert\(|base64_decode\(|system\(|passthru\(" /var/www注意:部分正常程序也可能使用这些函数,需结合上下文判断。
3. 检查日志中的异常请求
分析Web访问日志,寻找可疑的POST请求或异常User-Agent:
awk '{print ,}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20关注频繁访问特定文件(如shell.php)的IP,以及包含base64、eval等参数的URL。
4. 使用专业工具扫描
推荐工具:
- ClamAV:开源杀毒软件,可扫描Web目录:
clamscan -r /var/www。 - rkhunter:检查系统级后门:
rkhunter --check。 - YARA:自定义规则匹配恶意软件。
三、清除:彻底删除木马与后门
找到恶意文件后,不要直接rm,先确认是否影响正常功能。建议将可疑文件移动到隔离区,观察网站运行情况。
- 删除Webshell文件:
rm -f /var/www/html/uploads/shell.php。 - 清理数据库中的恶意代码:检查wp_options、wp_posts等表,删除包含<script>或iframe的记录。
- 检查计划任务:
crontab -l和ls -la /etc/cron.*,删除未知任务。 - 检查系统进程:
ps aux | grep -v grep | grep -E "perl|python|bash",杀死异常进程。
清除后,重启Web服务并测试网站功能。
四、加固:防止再次被挂马
清除木马只是第一步,加固才能避免重蹈覆辙。
1. 修复漏洞与更新软件
及时更新CMS、插件、主题到最新版本。使用composer update或yum update更新系统组件。
2. 严格文件权限
目录权限设为755,文件设为644,避免使用777。命令:
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;3. 部署WAF与安全插件
使用AegisX等WAF可拦截SQL注入、XSS和文件上传攻击。同时安装安全插件(如Wordfence)监控文件变化。
4. 启用日志与监控
配置日志轮转和实时告警。使用auditd监控关键文件修改,或部署OSSEC进行入侵检测。
五、检查清单与行动建议
完成以下清单,确保无遗漏:
| 项目 | 检查内容 |
|---|---|
| 文件 | 是否所有可疑文件已删除?权限是否正确? |
| 数据库 | 是否清理了恶意代码? |
| 账户 | 是否修改了所有密码?是否删除了未知用户? |
| 日志 | 是否分析了入侵途径? |
| 加固 | 是否更新了软件?是否部署了WAF? |
最后,建议定期进行安全扫描和备份,并考虑使用AegisX的网站安全监控服务,实时防护挂马与篡改。只有持续维护,才能让网站远离威胁。
常见问题(FAQ)
网站被挂马后,直接删除恶意文件就能彻底清除吗?
不能。直接删除恶意文件通常无法彻底清除,因为攻击者往往留有多个后门或隐藏账户。必须全面排查所有可疑文件、进程、计划任务和数据库,并修复入侵漏洞,否则很快会被重新上传。建议按本文步骤系统化处理。
如何快速找到网站中的木马文件?
可以使用find命令按时间、权限筛选,例如查找最近修改的php文件:find /var/www -name "*.php" -mtime -7。同时用grep搜索常见恶意代码特征,如eval、base64_decode、assert等。结合日志分析访问来源,能更精准定位。
清除木马后,网站仍然被跳转怎么办?
这通常意味着还有残留后门或数据库中被插入了恶意代码。检查数据库中的wp_options等表是否被篡改,查看.htaccess、nginx配置是否有恶意重定向,并检查是否有计划任务或隐藏进程。使用rkhunter、chkrootkit进行深度扫描。
加固网站防止再次被挂马,最有效的措施是什么?
最有效的措施是修复漏洞、最小化权限、部署WAF和定期监控。及时更新CMS和插件,设置文件权限为644/755,使用AegisX等WAF拦截恶意请求,并开启文件完整性监控,发现异常立即告警。
网站被挂马后,需要重装系统吗?
不一定。如果入侵仅限Web目录,彻底清除后门并加固即可。但如果攻击者获取了root权限或植入了内核级后门,建议备份数据后重装系统,以确保环境干净。评估入侵范围可借助专业安全工具或服务。