温馨提示×

Debian PHP配置中安全设置有哪些

小樊
32
2025-11-29 06:44:46
栏目: 编程语言

Debian PHP安全设置清单

一 基础配置与信息泄露防护

  • 关闭面向用户端的错误显示,开启日志记录:设置display_errors = Offlog_errors = On,并指定日志路径如error_log = /var/log/php_errors.log,防止源码路径、数据库结构等敏感信息外泄。
  • 隐藏PHP版本号:设置expose_php = Off,避免响应头出现X-Powered-By: PHP/x.y.z
  • 禁用危险的全局变量机制:确保register_globals = Off(现代PHP默认已移除,但仍需确认)。
  • 限制脚本可访问目录:使用open_basedir仅允许访问站点目录与临时目录,例如**/var/www:/tmp**,降低越权读取系统文件的风险。
  • 禁止远程文件包含与URL fopen:如无业务需求,设置allow_url_fopen = Offallow_url_include = Off,阻断RFI与通过URL包含恶意脚本的攻击链。
  • 精简加载的扩展:通过php -m查看已启用模块,移除不必要的扩展,减少攻击面。

二 运行与资源限制

  • 禁用高危函数:在disable_functions中禁用exec、passthru、shell_exec、system、eval等,降低命令执行与代码注入风险。
  • 文件上传与请求大小:根据业务最小化设置upload_max_filesize(如2M)、post_max_size(如8M),并配合应用层校验文件类型与内容。
  • 脚本执行与内存:设置max_execution_time(如30秒)、memory_limit(如128M),防止DoS与资源滥用。
  • 会话安全:开启session.cookie_secure = On(仅HTTPS传输)、session.cookie_httponly = On(禁止JS读取)、session.cookie_samesite = Strict/Lax(缓解CSRF)。
  • 数据库安全:禁用本地文件读取mysqli.allow_local_infile = Off,避免通过SQL注入读取敏感文件。

三 PHP-FPM与Web服务器安全

  • 进程与权限隔离:为PHP-FPM使用独立的系统用户与组(如www-data),禁止以root运行;为每个站点使用独立的pool,并限制listenUnix socket(如**/var/run/php/php8.2-fpm.sock**),设置合适的listen.owner/listen.group与权限,避免跨站访问。
  • 请求隔离与访问控制:在pool中配置security.limit_extensions(仅允许**.php等必要后缀),并限制pm.max_children**、pm.max_requests等,缓解慢速攻击与资源耗尽。
  • 最小暴露面:仅开启必要的PHP-FPM与Web服务进程,删除或禁用默认示例站点与页面(如info.php)。
  • 传输安全:为站点启用HTTPS/TLS,并在反向代理/负载均衡正确设置X-Forwarded-Proto等头,确保应用识别安全连接。

四 更新、漏洞扫描与运行时防护

  • 系统与PHP更新:定期执行apt update && apt upgrade,及时获取安全修复;若稳定版仓库版本偏旧,可在评估后启用Debian Backports获取较新的PHP安全版本。
  • 依赖漏洞扫描:使用Composersymfony/security-checker对项目依赖进行CVE检查并升级修复。
  • 入侵防护与协同:部署Fail2banCrowdSec对暴力扫描、恶意UA与异常请求进行自动封禁与协同拦截。
  • 防火墙与端口管控:仅开放80/443/22等必要端口,限制数据库、管理端口对公网暴露,最小化攻击面。

五 快速核查与生效

  • 定位生效的php.ini:使用php --ini确认CLI与FPM加载的配置文件路径,分别修改并保持一致的安全策略。
  • 验证配置生效:创建info.php)或使用php -i检查关键项(如expose_php、disable_functions、open_basedir);修改后重启Apache2php-fpm(如systemctl restart php8.2-fpm)。
  • 日志与告警:定期审计**/var/log/php_errors.log**与Web服务日志,结合监控/告警系统及时发现异常。

0