You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP环境下:谁在修改我的.htaccess文件?

如何监控.htaccess文件的异常修改并定位进程?

完全可以通过系统工具或自定义脚本追踪.htaccess的修改行为,以下是几种实用方案:

1. 用inotify-tools实时监听修改事件

这是Linux下最直接的实时监控方式,先安装inotify-tools(Debian/Ubuntu用apt install inotify-tools,CentOS/RHEL用yum install inotify-tools)。

写一个后台运行的监控脚本:

#!/bin/bash
TARGET_FILE="/path/to/your/.htaccess"
LOG_FILE="/var/log/htaccess_monitor.log"

# 初始化日志文件
touch $LOG_FILE

echo "[$(date '+%Y-%m-%d %H:%M:%S')] 开始监控.htaccess文件" >> $LOG_FILE

while true; do
    # 监听文件修改、权限变更、移动、删除事件
    inotifywait -e modify,attrib,move,delete $TARGET_FILE
    # 记录事件时间
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] .htaccess 文件被修改" >> $LOG_FILE
    # 抓取当前打开该文件的进程信息
    echo "=== 相关进程信息 ===" >> $LOG_FILE
    lsof $TARGET_FILE >> $LOG_FILE 2>&1
    echo "=== 系统高CPU进程快照 ===" >> $LOG_FILE
    ps aux --sort=-%cpu | head -20 >> $LOG_FILE
    echo "-------------------------" >> $LOG_FILE
done

给脚本加执行权限chmod +x monitor_htaccess.sh,用nohup ./monitor_htaccess.sh &后台运行,日志会记录所有修改事件及关联进程。

2. 用auditd系统审计追踪所有写入操作

auditd是Linux自带的审计框架,适合长期精准监控,能记录对目标文件的所有写入、修改细节。

  • 确保auditd服务运行:systemctl start auditd
  • 添加监控规则:
auditctl -w /path/to/your/.htaccess -p wa -k htaccess_modification

(-p wa表示监控写入和权限变更操作,-k是标记方便后续查询)

所有修改行为会被记录到/var/log/audit/audit.log,查询时用:

ausearch -k htaccess_modification

日志包含进程ID、执行用户、命令行参数、操作时间等关键信息,可精准定位修改源。

3. 简易哈希对比脚本(无需额外工具)

如果不想安装工具,可写定时检查脚本,通过MD5哈希对比发现修改并记录系统状态:

#!/bin/bash
TARGET_FILE="/path/to/your/.htaccess"
LOG_FILE="/var/log/htaccess_hash.log"
LAST_HASH=$(md5sum $TARGET_FILE | awk '{print $1}')

while true; do
    CURRENT_HASH=$(md5sum $TARGET_FILE | awk '{print $1}')
    if [ "$CURRENT_HASH" != "$LAST_HASH" ]; then
        echo "[$(date '+%Y-%m-%d %H:%M:%S')] .htaccess 哈希值变更" >> $LOG_FILE
        echo "旧哈希: $LAST_HASH" >> $LOG_FILE
        echo "新哈希: $CURRENT_HASH" >> $LOG_FILE
        echo "当前打开文件的进程:" >> $LOG_FILE
        lsof $TARGET_FILE >> $LOG_FILE 2>&1
        echo "-------------------------" >> $LOG_FILE
        LAST_HASH=$CURRENT_HASH
    fi
    sleep 60  # 每分钟检查一次
done

后台运行即可,适合临时排查场景。

额外排查建议

  • 检查.htaccess权限与所属用户:ls -l /path/to/.htaccess,确认是否有其他用户(如www-data、面板用户)拥有写入权限
  • 排查自动化工具:比如部署脚本、备份工具、服务器控制面板(cPanel/Plesk)的自动配置任务,这类工具可能会重置.htaccess
  • 扫描异常进程:用htop或top查看CPU/内存占用异常的进程,排查是否存在恶意程序

内容的提问来源于stack exchange,提问作者Mephisto123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 21:33:09