温馨提示×

ubuntu lamp权限设置注意事项

小樊
39
2025-12-20 05:16:06
栏目: 智能运维

Ubuntu LAMP 权限设置注意事项

一 身份与运行用户

  • 确保 Apache 以非特权用户运行,Ubuntu 默认是 www-data:www-data。可在 /etc/apache2/envvars 中确认或设置:
    • 检查:grep -E ‘^export APACHE_RUN_USER|APACHE_RUN_GROUP’ /etc/apache2/envvars
    • 如需调整:export APACHE_RUN_USER=www-data / APACHE_RUN_GROUP=www-data,然后重启 Apache
  • 禁止以 root 身份运行 PHP 或 Web 进程,避免提权风险
  • 开发/运维人员使用 sudo 执行管理任务,不要将网站目录交给 root 所有或给 www-data 赋过大权限

二 文件系统权限与所有权

  • 基本所有权与权限建议(以 /var/www/html 为例):
    • 所有权:将网站目录及内容的所有者设为 www-data:www-data
      • 命令:sudo chown -R www-data:www-data /var/www/html
    • 目录权限:755(rwxr-xr-x),保证可访问与可遍历
      • 命令:find /var/www/html -type d -exec chmod 755 {} ;
    • 文件权限:644(rw-r–r–),避免脚本被随意执行
      • 命令:find /var/www/html -type f -exec chmod 644 {} ;
  • 上传与缓存等需要写入的目录(如 uploads/、cache/、sessions/):
    • 建议所有权仍为 www-data:www-data,权限 755;仅对需要写入的子目录按需放宽
    • 若必须让开发者写入,可将开发者加入 www-data 组,目录组设为 www-data 并使用 775,但务必限制范围,避免全局放宽
  • 禁止在生产环境使用 777,这会破坏最小权限原则
  • 理解 umask:例如 umask 022 时,新文件通常为 644、新目录为 755,有助于保持一致的默认权限

三 数据库与敏感文件权限

  • MySQL/MariaDB 权限
    • 遵循最小权限原则,避免使用 ALL PRIVILEGES
    • 按库/表/主机精确授权,例如仅授予应用库必要权限
    • 示例:CREATE USER ‘app’@‘localhost’ IDENTIFIED BY ‘强密码’; GRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO ‘app’@‘localhost’; FLUSH PRIVILEGES;
  • 配置文件与密钥:
    • wp-config.php、.env、config.inc.php 等含凭据的文件,权限建议 600(仅所有者可读写)
    • 禁止将数据库 root 凭据放在 Web 可访问目录
  • 日志与数据文件:
    • 数据库数据目录与日志文件建议 640,仅属主与同组可读写,其他用户无权限

四 安全模块与访问控制

  • AppArmor:Ubuntu 默认启用,建议保持开启并为 /usr/sbin/apache2 配置最小化策略,限制 Apache 只能访问必要路径
  • SELinux:如系统启用,需为 httpd 配置相应策略;不建议直接禁用,若必须临时关闭仅用于排查
  • 防火墙与端口:
    • 仅开放必要端口,例如 UFW allow ‘Apache Full’,避免暴露数据库端口到公网

五 运维与审计实践

  • 持续审计与加固:
    • 定期检查关键目录权限:ls -lR /var/www/html
    • 定期更新系统与软件包:sudo apt update && sudo apt upgrade
    • 部署 fail2ban 防止暴力破解,使用 lynis 等工具做安全基线扫描
  • 日志与监控:
    • 确保 Apache 访问日志/错误日志 正常记录并定期审查,及时发现异常访问与错误
  • 上传与执行控制:
    • 禁止上传目录执行脚本(如 .php),可通过 php.ini 的 open_basedir 或应用层校验限制可访问路径
    • 对上传文件做类型与内容校验,避免 WebShell 上传风险

0