Ubuntu PHP配置中安全性如何保障
小樊
42
2026-01-07 00:39:12
Ubuntu 上保障 PHP 配置安全的实用清单
一 基础与系统层加固
- 保持系统与软件包为最新:执行 sudo apt update && sudo apt upgrade,及时修补安全漏洞。
- 仅启用必要的 PHP 模块与扩展,卸载不使用的扩展,减少攻击面。
- 隐藏版本信息:在 Web 服务器与 PHP 层关闭版本暴露(如 expose_php Off),避免泄露实现细节。
- 配置防火墙:启用 UFW,仅开放必要端口(如 Apache Full 与 OpenSSH)。
- 全站启用 HTTPS/TLS,强制加密传输,保护会话与数据在途安全。
二 php.ini 关键安全参数
- 错误与日志
- 生产环境关闭错误回显:display_errors = Off;开启错误日志:log_errors = On;设置专用日志路径:error_log = /var/log/php_errors.log(确保目录与文件权限安全且可写)。
- 远程包含与文件访问
- 关闭远程文件操作:allow_url_fopen = Off、allow_url_include = Off,降低 RFI/LFI 风险。
- 危险函数
- 禁用高危函数:disable_functions = exec,system,passthru,shell_exec,proc_open,popen,eval,assert,symlink,link,escapeshellarg,escapeshellcmd(按需裁剪,避免影响业务)。
- 资源与上传
- 限制资源使用:max_execution_time = 30、max_input_time = 30、memory_limit = 128M(结合业务调整)。
- 严格上传控制:file_uploads = On(不需要则 Off)、upload_max_filesize = 2M、post_max_size = 8M(post 略大于 upload)。
- 目录访问隔离
- 使用 open_basedir = /var/www/html:/tmp(Linux 以冒号分隔多路径),限制脚本可访问目录,防止越权读取系统文件。
- 会话安全
- 强化会话 Cookie:session.cookie_httponly = 1、session.cookie_secure = 1、session.use_strict_mode = 1;按需设置 session.cookie_samesite = Strict/Lax;通过 session.gc_maxlifetime 控制生命周期。
三 运行模式与 Web 服务器加固
- 选择与隔离 SAPI:CLI 与 PHP-FPM 配置分离,分别编辑对应目录的 php.ini(如 /etc/php/{version}/{sapi}/php.ini),用 php --ini 确认加载文件。
- Apache 侧
- 启用安全模块:mod_security、mod_evasive,防御常见 Web 攻击;按需限制 HTTP 方法;谨慎配置目录权限与符号链接(如 FollowSymLinks)。
- Nginx + PHP-FPM
- 使用 php-fpm 的 pool 隔离站点与用户,设置最小权限运行;通过 listen.owner/listen.group 与 chown/chmod 收紧套接字与目录权限;禁用不必要的 PHP-FPM 环境变量与危险函数。
- 变更生效
- 重启服务:Apache 执行 sudo systemctl restart apache2;PHP-FPM 执行 sudo systemctl restart php{version}-fpm;Nginx 执行 sudo systemctl restart nginx。
四 文件与目录权限及上传安全
- Web 根目录与临时目录
- 将 /var/www/html 及上传临时目录(如 /tmp)的所有者设为 Web 服务运行用户(如 www-data),权限遵循最小权限原则(目录常见为 750,文件 640)。
- 上传处理
- 仅允许白名单扩展名与 MIME 类型;上传目录禁止脚本执行(如 php 后缀禁止解析);将上传文件存储在 open_basedir 允许的路径下并单独分区(可选);处理上传时使用 move_uploaded_file,校验大小、类型、重命名防覆盖。
- 敏感文件
- 禁止 Web 访问 .env、.git、config.php 等敏感文件;在 Apache/Nginx 配置中明确 Deny 规则。
五 运维监控与验证
- 持续更新与补丁:定期 apt update/upgrade,关注 Ubuntu Security Notices 与 PHP 安全公告。
- 日志与告警
- 集中收集并监控 PHP 错误日志、Web 访问日志、PHP-FPM 慢日志;对异常请求、上传失败、命令执行尝试设置告警。
- 安全测试与验证
- 部署前使用 OWASP ZAP、nikto 等做基线扫描;上线后定期自检;使用临时 phpinfo.php 验证关键配置是否生效,验证完成立即删除该文件。