网页被挂马篡改怎么排查?网页防篡改方案推荐与配置实操 核心要点图解,网页被篡改先断网隔离,再通过文件时间戳与日志定位篡改点。;使用inotify+rsync或AIDE实现文件完整性监控与自动恢复。;加固Web目录权限(如755/644)并禁用危险函数可降低风险。;定期备份与离线存储是篡改后快速恢复的最后防线。
网页被挂马篡改怎么排查?网页防篡改方案推荐与配置实操 · 核心要点一图读懂(AegisX)

核心要点(TL;DR)

  • 网页被篡改先断网隔离,再通过文件时间戳与日志定位篡改点。
  • 使用inotify+rsync或AIDE实现文件完整性监控与自动恢复。
  • 加固Web目录权限(如755/644)并禁用危险函数可降低风险。
  • 定期备份与离线存储是篡改后快速恢复的最后防线。

痛点引入:网站被篡改,分秒必争

凌晨收到监控告警:网站首页被替换成博彩广告,搜索引擎标记为“危险网站”。作为运维或站长,你需要在最短时间内定位篡改点、清除后门并恢复业务。本文提供一套经过实战检验的排查与防篡改方案,包含具体命令和配置步骤,助你快速止损并建立长效防护。

一、紧急响应:隔离与取证

发现篡改后,切勿立即删除文件或重启服务,以免破坏证据。首先将服务器从负载均衡中摘除或修改防火墙规则只允许管理IP访问,然后备份整个网站目录和数据库。

# 备份网站目录(示例)
tar -czf /backup/web_$(date +%F).tar.gz /var/www/html
# 备份数据库
mysqldump -u root -p --all-databases > /backup/db_$(date +%F).sql

同时收集以下信息:Web访问日志、系统登录日志(/var/log/secure)、最近修改的文件列表。这些是后续分析入侵途径的关键。

二、快速排查:定位篡改点与入侵途径

1. 文件时间戳排查

攻击者通常会修改文件内容,通过查找最近被修改的文件可以快速缩小范围:

# 查找24小时内修改过的文件
find /var/www/html -type f -mtime -1 -ls
# 按修改时间排序显示最近修改的10个文件
find /var/www/html -type f -printf '%T@ %p\n' | sort -nr | head -10

重点关注index.php、header.php、footer.php等公共文件,以及上传目录中的可疑脚本。

2. 日志分析

检查Web日志中是否有异常POST请求、可疑User-Agent或高频访问:

# 统计访问量最高的IP
grep -oP '^\d+\.\d+\.\d+\.\d+' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
# 查找包含eval、base64等关键词的请求
grep -iE 'eval|base64|assert' /var/log/nginx/access.log

同时检查系统日志中的异常登录,如/var/log/secure中的Failed password记录。

3. 进程与网络连接检查

使用top、ps aux查看是否有异常进程占用高CPU,使用netstat -antp检查可疑外连。特别留意与Web服务用户(如www-data)相关的进程。

4. 后门查杀

使用clamav或专业工具扫描webshell:

# 安装clamav并更新病毒库
apt install clamav && freshclam
# 扫描网站目录
clamscan -r --bell -i /var/www/html

也可使用grep搜索常见webshell特征:

grep -rE 'eval\(|assert\(|base64_decode\(' /var/www/html --include='*.php'

三、网页防篡改方案推荐与配置实操

方案一:inotify+rsync实时监控与自动恢复(免费)

原理:使用inotifywait监控网站目录的修改事件,一旦发现变更立即从备份目录同步覆盖,并发送告警。

步骤:

  1. 安装inotify-tools:apt install inotify-tools
  2. 创建备份目录并初始化:rsync -a /var/www/html/ /backup/html/
  3. 编写监控脚本/usr/local/bin/web_guard.sh:
#!/bin/bash
WATCH_DIR="/var/www/html"
BACKUP_DIR="/backup/html"
while true; do
  inotifywait -r -e modify,create,delete,move "$WATCH_DIR"
  rsync -a --delete "$BACKUP_DIR/" "$WATCH_DIR/"
  echo "$(date) 检测到篡改,已恢复" >> /var/log/web_guard.log
  # 发送告警,如curl钉钉webhook
done
  1. 使用systemd或nohup后台运行脚本。

注意:此方案会覆盖正常更新,建议在发布新版本时暂停监控或使用版本控制。

方案二:AIDE文件完整性检查(免费)

AIDE通过定期比对文件哈希发现篡改,适合对实时性要求不高的场景。

配置步骤:

  1. 安装AIDE:apt install aide
  2. 编辑/etc/aide/aide.conf,添加监控目录:/var/www/html Full
  3. 初始化数据库:aideinit
  4. 定期检查:aide --check,输出报告。

可将检查加入cron,每日执行并邮件通知。

方案三:商业防篡改系统(如AegisX)

对于中大型企业,推荐使用AegisX网页防篡改模块,它基于内核级文件监控,支持自动备份与一键恢复,并能与WAF联动阻断攻击。配置时只需在控制台添加防护目录,设置白名单规则即可,无需编写脚本。其优势在于实时性高、误报率低,且提供集中管理界面。

四、加固与预防:降低再次被篡改的风险

1. 权限最小化:Web目录所有者设为root,Web服务用户仅读权限;上传目录禁止执行PHP。

chown -R root:root /var/www/html
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
# 上传目录禁止执行
chmod 755 /var/www/html/uploads
php_admin_flag engine off

2. 禁用危险函数:在php.ini中设置disable_functions = eval,assert,passthru,exec,system等。

3. 定期更新与备份:保持CMS、插件最新,备份采用异地离线存储。

4. 部署WAF:拦截常见注入和webshell上传。

五、检查清单与行动建议

检查项操作完成标记
隔离网站修改防火墙或负载均衡□
备份取证打包网站和数据库□
定位篡改文件find按时间排序□
查杀后门clamscan或grep□
部署防篡改inotify+rsync或AIDE□
权限加固chmod/chown□
修改密码所有系统账号□

行动建议:立即按照上述步骤排查当前状态,并至少部署一种防篡改监控。对于业务关键站点,建议采用AegisX等商业方案实现自动恢复与集中管理。安全是一个持续过程,定期审计与备份同样重要。

常见问题(FAQ)

网站首页突然被跳转到博彩页面,怎么快速找到被篡改的文件?

首先立即备份当前网站目录并断开外网访问,然后使用find命令按修改时间排序查找最近变动的文件,例如find /var/www -type f -mtime -1 -ls。重点检查index.php、header.php等公共文件,同时比对备份文件差异。结合Web访问日志(如/var/log/nginx/access.log)中异常POST请求或可疑IP,通常能定位到被插入恶意代码的文件。

有没有免费的网页防篡改方案?Linux下如何配置?

有,Linux下可使用inotify-tools配合rsync实现实时监控与自动恢复。安装inotify-tools后,编写脚本使用inotifywait监控网站目录的modify事件,一旦检测到变更立即从备份目录rsync覆盖并发送告警。也可使用AIDE定期生成文件哈希基线,通过aide --check发现篡改。免费方案需自行维护脚本和告警通道,适合中小站点。

网页防篡改系统能防住webshell吗?

网页防篡改系统主要防止文件被非法修改,对webshell的防御有限。webshell是攻击者上传的恶意脚本,防篡改系统若未监控新增文件则无法阻止。因此需结合文件上传目录监控、禁用危险函数(如eval、assert)以及Web应用防火墙(WAF)来综合防御。防篡改应作为整体安全策略的一环,而非唯一手段。

网站被篡改后,如何确保清理干净并防止再次发生?

彻底清理需从备份恢复或重装系统,并更新所有插件、主题和核心文件到最新版。检查并删除可疑账号、计划任务和启动项,使用clamav等工具全盘扫描。防止再发需修改所有密码、启用双因素认证、限制目录权限(上传目录不可执行)、部署防篡改监控和WAF,并定期进行安全审计。建议参考AegisX的防篡改与入侵检测联动方案。