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
相关产品推荐
相关产品推荐

