
核心要点(TL;DR)
- 挂马常通过Webshell上传,WAF是拦截第一道防线。
- 查杀Webshell需结合文件时间、内容特征与进程行为。
- 配置WAF规则可拦截常见上传与命令执行攻击。
- 定期文件完整性监控能快速发现异常变更。
网站被挂马是运维和站长的噩梦:搜索引擎降权、用户数据泄露、服务器沦为肉鸡。本文从实战出发,提供具体的排查命令、WAF拦截配置和清理步骤,帮你快速响应并加固网站防火墙,彻底清除Webshell威胁。
一、挂马与Webshell:原理与危害
挂马通常指攻击者通过漏洞上传Webshell,进而篡改网页、窃取数据或发起进一步攻击。Webshell是一段恶意脚本,常见于PHP、JSP等,具有文件管理、命令执行等功能。危害包括:搜索引擎标记为不安全、流量被劫持、数据库被拖库、服务器被用作跳板。
二、紧急排查:定位Webshell的实战命令
一旦发现异常,立即隔离服务器。使用以下命令快速定位可疑文件:
# 查找最近7天修改的PHP文件
find /var/www -type f -mtime -7 -name "*.php" -ls
# 搜索常见Webshell特征
grep -r -l --include="*.php" -E "eval\(|base64_decode\(|assert\(|system\(|shell_exec\(" /var/www
# 查看异常进程
ps aux | grep -E "(nc|bash|perl|python)"
# 检查网络连接
netstat -antp | grep ESTABLISHED同时检查访问日志中的可疑请求,如频繁POST到特定文件、包含eval等参数的URL。
三、WAF拦截:配置规则与策略
网站防火墙(WAF)是拦截挂马的第一道防线。以ModSecurity为例,添加规则拦截常见攻击:
# 拦截文件上传中的PHP代码
SecRule FILES "@rx \.(php|jsp|asp)$" "id:1001,phase:2,deny,status:403,msg:'禁止上传脚本文件'"
# 拦截命令执行函数
SecRule ARGS "@rx (eval|system|exec|passthru)\(" "id:1002,phase:2,deny,status:403,msg:'检测到危险函数'"同时,限制上传目录不可执行脚本:在Nginx中配置location ~* /uploads/.*\.(php|jsp)$ { deny all; }。定期更新WAF规则库,并监控拦截日志。
四、清理与加固:分步操作指南
- 备份:备份网站文件和数据库,保留证据。
- 清除:删除所有Webshell文件,恢复被篡改的页面。
- 修复:更新CMS、插件和服务器软件,修补漏洞。
- 加固:设置文件权限(目录755,文件644),上传目录禁止执行;启用文件完整性监控,如AIDE或Tripwire。
- 监控:部署AegisX(神盾X)等主机安全工具,实时检测异常进程和文件变更。
五、防护清单:日常运维检查项
| 检查项 | 操作 | 频率 |
|---|---|---|
| 软件更新 | 更新CMS、插件、服务器补丁 | 每周 |
| 文件监控 | 检查近期修改文件 | 每日 |
| WAF日志 | 分析拦截记录 | 每日 |
| 权限审计 | 检查目录权限和用户 | 每月 |
| 备份恢复 | 测试备份可用性 | 每季度 |
遵循以上清单,可大幅降低挂马风险。
六、行动建议:从应急到常态防护
立即执行一次全面排查,使用上述命令定位并清除Webshell。随后配置WAF规则,限制上传目录执行权限,并部署文件完整性监控。考虑引入AegisX(神盾X)的实时防护能力,自动拦截恶意行为。最后,建立定期安全巡检制度,确保网站长治久安。
常见问题(FAQ)
网站被挂马了,第一步应该做什么?
立即隔离服务器或暂停网站访问,防止挂马扩散和用户数据泄露。然后备份当前网站文件和数据库作为证据,接着使用命令排查近期被修改的文件,定位Webshell。最后清除恶意代码并修复漏洞,再恢复访问。
如何快速检测网站是否存在Webshell?
使用find命令查找近期修改的文件,如:find /var/www -type f -mtime -7 -name "*.php"。同时检查异常进程和网络连接,结合grep搜索eval、base64_decode等危险函数。也可使用专业查杀工具如ClamAV或Yara规则扫描。
WAF如何有效拦截网站挂马?
WAF通过规则匹配拦截恶意上传、SQL注入、命令执行等攻击。配置时需开启文件上传检测、禁止危险函数、限制上传目录执行权限。同时定期更新规则库,并监控拦截日志,及时调整策略。
网站防挂马有哪些日常维护措施?
定期更新CMS和插件,删除无用文件;设置目录权限,上传目录禁止执行脚本;部署文件完整性监控;启用WAF并定期检查日志;备份网站数据,确保可快速恢复。这些措施能大幅降低挂马风险。
清除Webshell后,如何防止再次被挂马?
修复入侵漏洞(如弱口令、文件上传漏洞),加固服务器安全配置,更新所有软件补丁。部署WAF并设置严格规则,限制上传目录执行权限。定期进行安全扫描和日志审计,确保无残留后门。