dede织梦目录权限如何安全设置?

99ANYc3cd6
预计阅读时长 27 分钟
位置: 首页 DEDE建站 正文

DedeCMS 织梦目录权限安全设置说明文档

概述:为什么目录权限如此重要?

DedeCMS 是一个基于 PHP + MySQL 开源的内容管理系统,其工作原理是通过 PHP 脚本处理用户请求,读写服务器上的文件和数据库,如果目录权限设置不当,就可能被恶意攻击者利用,进行上传木马、篡改网页、窃取数据等操作。

dede织梦目录权限安全设置说明文档
(图片来源网络,侵删)

核心安全原则:

  • 最小权限原则:只授予程序运行所必需的最小权限,能不写的目录就不给写权限,能不执行的目录就不给执行权限。
  • 职责分离:Web 用户(通常是 www-dataapache)和系统管理员用户的职责应分离,避免使用 root 用户运行 Web 服务。
  • 纵深防御:目录权限是 Web 安全的第一道防线,需结合其他安全措施(如文件校验、SQL注入防护等)共同构建安全体系。

准备工作:确定 Web 运行用户

在设置权限之前,您必须知道您的 Web 服务器是以哪个系统用户身份来运行脚本的,这通常是:

  • Nginx/Apache (Linux): www-data
  • Apache (Linux/CentOS): apache
  • Windows (IIS): IUSR

如何查看? 在 Linux 服务器上,可以创建一个 info.php 文件,内容为 <?php phpinfo(); ?>,然后在浏览器中访问该文件,在 "Loaded Configuration File" 或 "Environment" 变量中查找 USERApache 相关的用户名。

核心目录权限详解与设置建议

以下目录结构基于 DedeCMS 默认安装路径 /dedecms/ 进行说明,请根据您的实际安装路径进行调整。

dede织梦目录权限安全设置说明文档
(图片来源网络,侵删)

1. 根目录 (/var/www/html/dedecms/)

  • 目录作用: 网站主目录,包含所有程序文件。
  • 安全风险: 如果此目录具有可写权限,攻击者可能上传恶意脚本并直接执行。
  • 权限设置:
    • 目录: 755750
    • 文件: 644
    • 执行命令:
      # 设置目录权限
      find /path/to/dedecms/ -type d -exec chmod 755 {} \;
      # 设置文件权限
      find /path/to/dedecms/ -type f -exec chmod 644 {} \;
  • 说明:
    • 755 (rwxr-xr-x): 所有者可读、写、执行;组用户和其他用户可读、执行,这是标准的目录权限。
    • 644 (rw-r--r--): 所有者可读、写;组用户和其他用户只读,这是标准的文件权限。
    • 特别注意: 根目录下的 index.phpinstall 目录(安装完成后)、data 目录等需要特殊处理,详见下文。

2. /data/ 目录

  • 目录作用: 核心敏感目录,存放配置文件 (config.php)、缓存、Session 文件、数据备份等,这是攻击者首要攻击的目标。
  • 安全风险: config.php 可被写入,网站数据库密码等核心信息将完全暴露。
  • 权限设置:
    • 目录: 755
    • 文件:
      • config.php: 644 (仅允许 Web 服务器读取)
      • 其他缓存文件 (如 cache_*, sessions*): 644
    • 执行命令:
      # 设置目录权限
      chmod 755 /path/to/dedecms/data/
      # 设置关键配置文件权限
      chmod 644 /path/to/dedecms/data/config.php
      # 设置其他文件权限
      find /path/to/dedecms/data/ -type f -exec chmod 644 {} \;
  • 最佳实践:
    • 如果您的服务器支持,可以将此目录的所有者修改为 root 或其他非 Web 运行用户,然后通过 ACL (Access Control Lists) 授权给 Web 运行用户只读权限,这能提供最高级别的保护。
    • 定期检查 config.php 文件是否被篡改。

3. /uploads/ 目录及其子目录

  • 目录作用: 用户文件上传目录,如文章附件、图片、会员头像等。
  • 安全风险: 这是最高危的目录,如果权限不当,攻击者可以上传 .php.phtml 等 Web 脚本,并通过浏览器直接访问,从而获取服务器控制权。
  • 权限设置:
    • 目录: 755
    • 文件: 644
    • 执行命令:
      # 设置目录权限
      find /path/to/dedecms/uploads/ -type d -exec chmod 755 {} \;
      # 设置文件权限
      find /path/to/dedecms/uploads/ -type f -exec chmod 644 {} \;
  • 最佳实践:
    1. 禁止执行脚本: 这是至关重要的一步,在 httpd.conf (Apache) 或 nginx.conf (Nginx) 中,针对此目录进行配置,禁止解析 PHP 等脚本。
      • Apache 示例 (在虚拟主机配置中添加):
        <Directory "/path/to/dedecms/uploads">
            php_flag engine off
            # 或者更严格地,禁止所有脚本的执行
            <FilesMatch "\.(php|php3|php4|php5|phtml|pl|py|jsp|asp|sh|cgi)$">
                Order Deny,Allow
                Deny from all
            </FilesMatch>
        </Directory>
      • Nginx 示例 (在 server 块中添加):
        location ~* ^/uploads/.*\.(php|php5|phtml)$ {
            deny all;
        }
        # 或者直接禁用整个目录的PHP执行
        location ~* ^/uploads/ {
            location ~* .*\.(php|php5)?$ {
                deny all;
            }
        }
    2. 定期清理: 定期检查 uploads 目录,删除可疑的非图片、非文档文件。

4. /templets/ 目录

  • 目录作用: 存放网站模板文件(.htm)。
  • 安全风险: 模板文件本身是静态的,但如果目录可写,攻击者可能篡改模板,进行挂马或钓鱼攻击。
  • 权限设置:
    • 目录: 755
    • 文件: 644
    • 执行命令:
      find /path/to/dedecms/templets/ -type d -exec chmod 755 {} \;
      find /path/to/dedecms/templets/ -type f -exec chmod 644 {} \;
  • 说明: DedeCMS 在生成静态页面时需要写入此目录下的缓存文件,因此需要写权限,但如果您的网站是纯动态运行,可以尝试将此目录设为只读。

5. /special/ 目录

  • 目录作用: 存放专题页面,通常是静态 HTML 文件。
  • 安全风险: 与 templets 类似,可写则可能被篡改。
  • 权限设置:
    • 目录: 755
    • 文件: 644
    • 执行命令:
      find /path/to/dedecms/special/ -type d -exec chmod 755 {} \;
      find /path/to/dedecms/special/ -type f -exec chmod 644 {} \;
  • 说明: DedeCMS 在生成专题时会写入此目录,需要写权限,生成完毕后,可以尝试将权限收紧。

6. /a/ 目录

  • 目录作用: 存放生成的文章静态 HTML 文件。
  • 安全风险: 与 special 类似。
  • 权限设置:
    • 目录: 755
    • 文件: 644
    • 执行命令:
      find /path/to/dedecms/a/ -type d -exec chmod 755 {} \;
      find /path/to/dedecms/a/ -type f -exec chmod 644 {} \;
  • 说明: 这是文章内容最终展示的地方,通常不需要写权限,除非您开启了“仅动态”模式,如果网站是静态化运行的,此目录可以设为只读。

7. /include/ 目录

  • 目录作用: 核心功能库目录,包含 .php 类库文件。
  • 安全风险: 包含大量可执行代码,如果被上传恶意文件或直接访问,可能导致核心逻辑被篡改。
  • 权限设置:
    • 目录: 755
    • 文件: 644
    • 执行命令:
      find /path/to/dedecms/include/ -type d -exec chmod 755 {} \;
      find /path/to/dedecms/include/ -type f -exec chmod 644 {} \;
  • 最佳实践:
    • 在服务器配置中,禁止直接访问 include 目录下的非入口文件,但 DedeCMS 的结构使得这一点较难实现,因此保持严格的文件权限(644)是关键。

8. /install/ 目录

  • 目录作用: 安装程序目录。
  • 安全风险: 安装程序是网站的后门,安装完成后必须删除或锁定,否则任何人都可以重新安装并覆盖您的网站。
  • 权限设置:
    • 安装完成后:
      1. 最佳选择: 彻底删除此目录。
      2. 次选方案: 将目录名修改为随机字符串,或将其所有者修改为非 Web 用户,并移除所有用户的执行和写入权限。
  • 说明: 这是最容易被忽视但极其重要的安全步骤。

一键设置脚本 (Linux)

以下是一个 Bash 脚本示例,可以快速应用上述大部分权限设置。请在使用前务必确认您的安装路径,并先备份网站!

#!/bin/bash
# ==============================================================================
# DedeCMS 安全权限设置脚本
# 使用前请务必修改 DEDE_PATH 为您的实际安装路径
# ==============================================================================
# !!! 重要:请修改为您的 DedeCMS 安装路径 !!!
DEDE_PATH="/var/www/html/dedecms"
# 检查路径是否存在
if [ ! -d "$DEDE_PATH" ]; then
    echo "错误:路径 $DEDE_PATH 不存在!请修改脚本。"
    exit 1
fi
echo "开始为 $DEDE_PATH 设置安全权限..."
# 1. 设置所有目录为 755,所有文件为 644
echo "步骤 1: 设置基本目录和文件权限..."
find "$DEDE_PATH" -type d -exec chmod 755 {} \;
find "$DEDE_PATH" -type f -exec chmod 644 {} \;
# 2. 特殊目录处理
echo "步骤 2: 处理特殊目录..."
# /data/ 目录
echo "  -> 设置 /data/ 目录..."
chmod 755 "$DEDE_PATH/data"
# 将 config.php 设为仅可读
if [ -f "$DEDE_PATH/data/config.php" ]; then
    chmod 644 "$DEDE_PATH/data/config.php"
fi
# /uploads/ 目录
echo "  -> 设置 /uploads/ 目录..."
chmod 755 "$DEDE_PATH/uploads"
# 尝试将上传目录内的所有文件设为不可执行,即使扩展名是.php
# 这是一种额外的保护,但主要依靠 Web 服务器配置
find "$DEDE_PATH/uploads" -type f -name "*.php" -exec chmod 644 {} \;
# /templets/ 目录
echo "  -> 设置 /templets/ 目录..."
chmod 755 "$DEDE_PATH/templets"
# /special/ 目录
echo "  -> 设置 /special/ 目录..."
chmod 755 "$DEDE_PATH/special"
# /a/ 目录 (文章静态目录)
echo "  -> 设置 /a/ 目录..."
chmod 755 "$DEDE_PATH/a"
# /include/ 目录
echo "  -> 设置 /include/ 目录..."
chmod 755 "$DEDE_PATH/include"
# 3. 处理 install 目录
echo "步骤 3: 检查 /install/ 目录..."
if [ -d "$DEDE_PATH/install" ]; then
    echo "  -> 警告: /install/ 目录仍然存在!为了安全,建议您删除它。"
    echo "     您可以执行: rm -rf $DEDE_PATH/install"
else
    echo "  -> /install/ 目录已不存在,安全。"
fi
echo "----------------------------------------------------------------------"
echo "权限设置完成!"
echo "----------------------------------------------------------------------"
echo "重要提醒:"
echo "1. 请确保您已在 Web 服务器配置中禁止了 /uploads/ 目录的 PHP 执行。"
echo "2. 请定期检查网站文件,特别是 /data/config.php 是否被篡改。"
echo "3. 保持 DedeCMS 程序和插件为最新版本。"
echo "----------------------------------------------------------------------"

总结与补充

目录 权限 安全说明
根目录 755 / 644 基础权限,禁止根目录可写
/data/ 755 / 644 核心敏感区config.php 必须不可写
/uploads/ 755 / 644 高危区,必须配合 Web 服务器禁止脚本执行
/templets/ 755 / 644 模板目录,生成静态时需写权限
/special/ 755 / 644 专题目录,生成静态时需写权限
/a/ 755 / 644 文章静态目录,静态化运行时建议只读
/include/ 755 / 644 核心库目录,保持文件不可写
/install/ 删除或锁定 安装完成后必须移除

补充安全建议:

  1. 定期更新: 及时关注 DedeCMS 官方安全公告,升级到最新版本。
  2. 使用安全插件: 安装官方或信誉良好的安全插件,用于文件校验、登录防护等。
  3. 数据库权限: 确保 DedeCMS 连接数据库的用户仅拥有对 dede_ 相关表的 SELECT, INSERT, UPDATE, DELETE 权限,禁止 DROP, CREATE, ALTER 等危险操作。
  4. 服务器安全: 保持操作系统、Web 服务器、PHP、MySQL 等软件为最新版本,并做好防火墙配置。

通过遵循以上设置和建议,可以极大地提高您的 DedeCMS 网站的安全性,有效抵御大部分常见的 Web 攻击。

-- 展开阅读全文 --
头像
dede后台提示用户名不存在怎么办?
« 上一篇 12-07
dede自定义宏标记文件存于哪个文件夹?
下一篇 » 12-07

相关文章

取消
微信二维码
支付宝二维码

目录[+]