记一次开源网站系统文件一直被篡改的问题及解决思路

admin5个月前 (01-04)网站326

前言

最近有个客户的网站过几天就会把网站系统的首页文件篡改一下,非常烦,客户找我恢复了好几次了,我想是时候要解决一下了

解决思路

他把是一直会篡改那个文件,那我就写一个脚本每5秒去检测一下是否被篡改,如果篡改了就恢复,天才的想法

实现代码

#!/bin/bash

# 定义要监控的文件路径
FILE="/www/wwwroot/www.xxx.cc/index.php"

# 定义存储原始哈希值的文件
HASH_FILE="/www/wwwroot/www.xxx.cc/index.php.original_hash"

# 定义备份文件路径
BACKUP_FILE="/www/wwwroot/www.xxxx.cc/index.php.backup"

# 计算当前文件的哈希值
CURRENT_HASH=$(sha256sum "$FILE" | awk '{print $1}')

# 检查是否已经存在原始哈希值
if [ -f "$HASH_FILE" ]; then
    # 读取原始哈希值
    ORIGINAL_HASH=$(cat "$HASH_FILE")
    
    # 比较当前哈希值与原始哈希值
    if [ "$CURRENT_HASH" != "$ORIGINAL_HASH" ]; then
        echo "警告: $FILE 已被修改!"
        echo "当前文件哈希值: $CURRENT_HASH"
        echo "原始文件哈希值: $ORIGINAL_HASH"
        
        # 恢复备份文件
        if [ -f "$BACKUP_FILE" ]; then
            cp "$BACKUP_FILE" "$FILE"
            echo "已恢复原始文件."
        else
            echo "备份文件不存在,无法恢复."
        fi
        
        # 发送警报(可选)
        # mail -s "文件被修改警报" 598692079@qq.com <<< "$FILE 已被修改并已恢复."
    else
        echo "文件未被修改."
    fi
else
    # 如果原始哈希值文件不存在,则创建并保存当前哈希值
    echo "$CURRENT_HASH" > "$HASH_FILE"
    
    # 创建备份文件
    cp "$FILE" "$BACKUP_FILE"
    
    echo "原始哈希值和备份文件已创建."
    echo "原始文件哈希值: $CURRENT_HASH"
fi


相关文章