首页主机资讯Linux环境下PHP安全设置有哪些

Linux环境下PHP安全设置有哪些

时间2025-12-08 20:45:04发布访客分类主机资讯浏览580
导读:Linux环境下PHP安全设置清单 一 基础与运行环境 保持系统与PHP为最新稳定版,及时安装安全补丁,减少已知漏洞利用面。 仅安装与业务必需的扩展/模块,禁用不需要的模块以降低攻击面。 运行身份遵循最小权限原则:PHP-FPM 以非 r...

Linux环境下PHP安全设置清单

一 基础与运行环境

  • 保持系统与PHP为最新稳定版,及时安装安全补丁,减少已知漏洞利用面。
  • 仅安装与业务必需的扩展/模块,禁用不需要的模块以降低攻击面。
  • 运行身份遵循最小权限原则:PHP-FPM 以非 root用户(如 www-data)运行;Web 服务器与 FPM 之间使用Unix 套接字并设置0660权限,例如:listen.owner=www-data、listen.group=www-data、listen.mode=0660。
  • Nginx 中仅通过 HTTPS 提供服务,禁止明文访问;正确设置 SCRIPT_FILENAME 并避免将 .php 映射到静态目录。
  • 配置防火墙(如 ufw)仅开放必要端口(如 22/80/443)。

二 php.ini 关键安全参数

  • 禁用危险函数:建议至少禁用 exec、system、passthru、shell_exec、proc_open、popen、eval、assert、symlink、link、escapeshellarg、escapeshellcmd,阻断命令执行与代码注入路径。
  • 错误信息控制:生产环境将 display_errors=Off,开启 log_errors=On 并配置可写的 error_log(如 /var/log/php_errors.log),避免泄露路径与代码细节。
  • 远程包含与URL访问:如无远程包含需求,设置 allow_url_fopen=Off、allow_url_include=Off,降低 RFI/LFI 风险。
  • 目录访问限制:启用 open_basedir 将脚本访问范围限定在业务目录(如 /var/www/html:/tmp),注意 Linux 下分隔符为冒号
  • 资源与执行限制:设置 max_execution_time(如 30 秒)、memory_limit(如 128M)、max_input_time(如 60 秒)、upload_max_filesize(如 2M),并将 post_max_size 设为略大于上传上限,防止滥用与 DoS。
  • 会话安全:开启 session.cookie_httponly=1、session.cookie_secure=1、session.use_strict_mode=1,并根据业务设置 session.gc_maxlifetime,缓解会话劫持与固定攻击。

三 Web 服务器与 FPM 配置

  • PHP-FPM 池配置:使用 Unix 套接字通信,设置 listen.owner/listen.group=www-data、listen.mode=0660;确保进程以最小权限运行。
  • Nginx 站点配置:仅通过 443/ssl 提供服务;在 location ~ .php$ 中正确包含 FastCGI 参数并设置 SCRIPT_FILENAME $document_root$fastcgi_script_name,避免将 .php 解析到非预期目录;可结合 try_files $uri $uri/ =404 减少错误路径被执行的风险。
  • 访问与暴露面控制:禁用目录列表,限制对敏感目录的访问;隐藏 PHP 版本信息,减少针对性攻击线索。

四 文件系统与权限

  • 目录与文件权限:网站根目录(如 /var/www/html)常用 755,文件 644;上传目录禁止脚本执行(如 chmod 750 uploads & & chown www-data:www-data uploads),上传文件存储在隔离目录并定期清理。
  • 上传安全:仅在必要时开启 file_uploads;严格校验文件类型/大小/后缀,重命名上传文件,避免执行权限;必要时将上传目录置于 open_basedir 允许范围之外或单独挂载。
  • 最小权限原则:确保 PHP 进程仅能访问必要文件与目录,避免越权读写系统或日志文件。

五 命令执行与输入验证

  • 尽量避免在代码中调用系统命令;如确需执行,使用白名单校验输入,优先选择内置函数替代,并使用escapeshellarg/escapeshellcmd对参数进行转义。
  • 对外部输入(GET/POST/Header)进行严格校验与过滤,拒绝非常规字符与超长输入,降低命令注入与代码注入风险。

六 加固与运维实践

  • 启用 SELinuxAppArmor 实施强制访问控制(MAC),为 php-fpm 等进程定义细粒度策略,限制其访问范围与系统调用。
  • 开启并集中审计日志(PHP 错误日志、FPM 访问日志、Nginx 访问/错误日志),定期审查异常与失败请求;结合安全扫描工具(如 OWASP ZAP)进行主动检测。
  • 制定备份与恢复策略(代码与数据库定期备份),并进行恢复演练;持续监控更新组件,形成闭环的安全运维流程。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux环境下PHP安全设置有哪些
本文地址: https://pptw.com/jishu/766315.html
Linux服务器上PHP错误日志如何查看 Ubuntu MySQL迁移如何进行

游客 回复需填写必要信息