Linux中PHP安全问题怎么解决
小樊
42
2025-12-22 04:09:18
Linux下PHP安全加固与处置清单
一 运行环境与组件加固
- 保持更新:及时升级 PHP、Web 服务器(Nginx/Apache)、数据库与依赖库,修复已知漏洞。
- 精简组件:用 php -m 查看并移除不必要的 PHP 模块,降低攻击面。
- 信息泄露防护:在 php.ini 或 /etc/php.d/security.ini 中设置 expose_php=Off,隐藏 PHP 版本。
- 远程代码执行防护:关闭 allow_url_fopen=Off、allow_url_include=Off,避免远程文件包含与代码注入。
- 错误与日志:生产环境 display_errors=Off、log_errors=On,并配置 error_log 写入专用日志文件。
- 资源限制:设置 max_execution_time、max_input_time、memory_limit,抑制滥用与 DoS。
- 危险函数禁用:在 disable_functions 中禁用 exec、passthru、shell_exec、system、proc_open、popen、curl_exec、curl_multi_exec、parse_ini_file、show_source 等。
- 文件系统访问限制:使用 open_basedir 将 PHP 可访问目录限制在站点根目录(如 /var/www/html)。
- 请求体大小:设置 post_max_size 合理上限,防止超大请求耗尽资源。
- 上传功能:业务无需上传时设 file_uploads=Off;确需上传时仅允许白名单类型、随机化文件名、隔离存储且禁止执行。
二 Web服务器与执行隔离
- 禁止静态资源执行 PHP:在 Nginx 将上述目录的 PHP 解析放在通用 PHP 匹配规则之前,例如:
- location ~ ^/images/.*.(php|php5)$ { deny all; }
- location ~ ^/static/.*.(php|php5)$ { deny all; }
- location ~ ^/data/(attachment|avatar)/.*.(php|php5)$ { deny all; }
- 修正 PATH_INFO 漏洞:在 FastCGI 公共配置顶部加入路径存在性校验,防止伪装后缀执行。
- 进程隔离与权限:以 www-data 等低权用户运行 PHP-FPM/Apache;上传目录仅赋予 www-data 写权限,禁止执行;Web 根目录禁止写入可执行脚本。
- 传输安全:全站启用 HTTPS/TLS,强制跳转,保护凭据与会话。
三 安全编码要点
- SQL 注入:使用 PDO/MySQLi 预处理语句 或 ORM,严禁字符串拼接。
- XSS:输出到页面前使用 htmlspecialchars($s, ENT_QUOTES, ‘UTF-8’) 转义。
- 文件包含:避免动态包含用户输入,采用 白名单 或映射表控制可包含文件。
- 远程代码执行:禁用或避免 eval/assert/preg_replace(e) 等危险用法;必要时严格校验与沙箱化。
- 文件上传:校验 MIME 类型/文件头/扩展名,重命名与隔离存储,上传目录 Nginx/Apache 禁止解析 PHP。
- CSRF:为敏感操作使用 CSRF Token(会话绑定、一次性、强比较)。
- 会话安全:启用 cookie_httponly、cookie_secure、cookie_samesite,登录后 session_regenerate_id。
四 入侵排查与应急响应
- 可疑后门特征搜索:
- grep -r --include=*.php ‘[^a-z]eval($_POST’ .
- grep -r --include=.php 'file_put_contents(.$_POST’ .
- find /data/wwwroot -type f -name “*.php” | xargs grep “eval(”
- 查找近期被修改的 PHP 文件:
- find /data/www -mtime -3 -type f -name “*.php”
- 图片马检测:检查 GIF/JPG/PNG 是否内嵌 PHP 代码或被改名伪装。
- 权限与属性核查:
- 生产代码目录建议 444/555(只读/只执行),对 上传/缓存 等确需写入的目录单独放开;必要时限制 chmod/chown 等可被滥用的函数。
- 取证与恢复:隔离可疑文件、保留 access/error/php_error 日志、从干净备份恢复,修复漏洞后再上线。
五 运维与监控
- 日志集中与审计:集中采集 Nginx access/error、PHP-FPM 慢日志与错误日志,设置告警规则(如异常 4xx/5xx、上传失败激增、可疑 UA)。
- WAF 与防护:部署 ModSecurity 或云 WAF,拦截 SQLi、XSS、RFI、LFI、Webshell 等常见攻击。
- 变更与合规:上线前 代码审计/安全测试(如 OWASP ZAP、Burp Suite),定期 依赖与组件漏洞扫描,严格 变更审批与回滚预案。
- 备份与演练:定期 全量与增量备份,并演练 入侵恢复 流程。