温馨提示×

Ubuntu PHP安全漏洞如何防范

小樊
32
2025-11-14 22:02:25
栏目: 编程语言

Ubuntu PHP安全漏洞防范清单

一 系统与软件更新

  • 保持系统与PHP处于最新安全补丁状态,优先使用发行版仓库的版本,及时执行更新并重启相关服务。
  • 示例命令:
    • 更新与升级:sudo apt update && sudo apt upgrade -y
    • 重启服务(按实际使用的模块):sudo systemctl restart apache2sudo systemctl restart php7.4-fpm
  • 建议启用无人值守安全更新(如 unattended-upgrades)以减少暴露窗口。

二 PHP运行时关键配置

  • 建议将以下参数加入对应 SAPI 的 php.ini(如 /etc/php/7.4/fpm/php.ini/etc/php/7.4/apache2/php.ini;路径中的版本号按实际替换):
    • 隐藏版本与错误信息:
      • expose_php = Off
      • display_errors = Off
      • log_errors = On
      • error_log = /var/log/php_errors.log
    • 禁用危险函数(按应用需求精简,避免影响功能):
      • disable_functions = eval,exec,passthru,shell_exec,system,popen,curl_exec,proc_open,proc_get_status,show_source,parse_ini_file
    • 限制远程包含与文件访问:
      • allow_url_fopen = Off
      • allow_url_include = Off
      • open_basedir = /var/www:/tmp(仅允许访问应用与临时目录)
    • 文件上传与请求大小(按业务最小化设置):
      • file_uploads = On
      • upload_max_filesize = 2M
      • post_max_size = 8M
    • 资源与执行限制:
      • max_execution_time = 30
      • memory_limit = 128M
    • 会话与Cookie安全(可同时在php.ini与应用层设置):
      • session.cookie_httponly = On
      • session.cookie_secure = On
      • session.gc_maxlifetime = 1440
    • 性能与安全:
      • 启用并正确配置 OPcache(示例):
        • opcache.enable=1
        • opcache.memory_consumption=128
        • opcache.interned_strings_buffer=8
        • opcache.max_accelerated_files=4000
        • opcache.revalidate_freq=60
  • 修改后务必重启对应服务使配置生效。

三 Web服务器与网络层加固

  • Apache
    • 隐藏版本信息:ServerTokens ProdServerSignature Off
    • 启用安全模块:sudo a2enmod security2sudo a2enmod evasive2
    • 仅暴露必要接口,禁用目录浏览,限制请求方法(如仅允许 GET/POST)。
  • Nginx
    • 在 server 配置中限制 PHP 解析与访问敏感文件:
      • 典型 PHP 处理:
        • location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; }
      • 禁止访问 .ht 文件:location ~ /.ht { deny all; }
    • 静态资源与上传目录分离,上传目录禁止执行脚本(见下一节)。
  • 全站加密
    • 使用 Let’s Encrypt 获取免费证书并自动配置 HTTPS:
      • Apache:sudo apt install certbot python3-certbot-apache && sudo certbot --apache -d yourdomain.com
      • Nginx:sudo apt install certbot python3-certbot-nginx && sudo certbot --nginx -d yourdomain.com
  • 边界与访问控制
    • 启用 UFWsudo ufw allow ‘Nginx Full’(或 Apache 对应规则),sudo ufw enable

四 应用与代码层防护

  • 输入与输出安全
    • 对所有用户输入进行校验与过滤,输出到页面前进行HTML转义;启用框架自带的 XSS/CSRF 防护。
  • 数据库安全
    • 使用预处理语句/参数化查询ORM 防止 SQL注入;为数据库账户授予最小权限,禁止远程 root 登录。
  • 会话管理
    • 在应用层设置安全 Cookie:session_start([‘cookie_secure’ => true, ‘cookie_samesite’ => ‘strict’, ‘cookie_httponly’ => true]);
    • 登录后重新生成会话IDsession_regenerate_id(true);
  • 依赖与漏洞管理
    • 使用 Composer 管理依赖并定期更新;使用安全公告检查工具(如 PHP Security Advisories Checker)审计依赖;必要时引入 静态分析/SAST 工具。
  • 文件与上传安全
    • 上传目录禁止执行脚本(Nginx 示例):
      • location /(uploads|assets)/.*.(php|php5|jsp) { deny all; }
    • 校验文件类型、大小与扩展名,重命名上传文件,存储于非Web可直接访问路径,设置最小权限

五 运维与监控

  • 文件与目录权限
    • Web 根目录属主 www-data:www-data,权限 755;上传与缓存目录可 775 并限制执行权限。
  • 日志与告警
    • 集中收集并监控 PHP 错误日志Web 访问日志FPM 慢日志;对异常请求、频繁失败登录等进行告警。
  • 备份与恢复
    • 定期备份代码与数据库,保留离线/异地副本,并进行恢复演练
  • 安全基线巡检
    • 定期审查 php.ini 与 Web 服务器配置,验证 HTTPS禁用函数open_basedir 等关键项;关注 USN/安全公告 并及时修补。

0