linux

Linux PHP-FPM安全配置指南

小樊
40
2025-10-09 19:36:37
栏目: 编程语言

Linux下PHP-FPM安全配置指南
PHP-FPM(FastCGI Process Manager)是Linux环境下PHP应用的关键组件,其安全配置直接影响服务器整体安全性。以下是分步骤的安全加固措施:

1. 更新系统与PHP-FPM至最新版本

定期更新系统和PHP-FPM是修复已知安全漏洞的首要步骤。使用包管理器(如apt)执行:

sudo apt update && sudo apt upgrade php-fpm php-cli

确保所有依赖包同步更新,避免因旧版本漏洞引发风险。

2. 以非特权用户运行PHP-FPM

避免PHP-FPM以root身份运行,降低权限滥用风险。编辑PHP-FPM进程池配置文件(通常位于/etc/php/{版本号}/fpm/pool.d/www.conf),修改以下参数:

user = www-data
group = www-data

修改后重启服务使变更生效:

sudo systemctl restart php{版本号}-fpm
```。  


### **3. 选择安全的监听方式(Unix Socket优先)**  
- **Unix Socket**:相比TCP端口,Unix Socket仅限本地访问,更安全。修改配置文件中的`listen`指令:  
  ```ini
  listen = /run/php/php{版本号}-fpm.sock

确保Socket文件权限正确(属主为www-data,权限为755):

sudo chown www-data:www-data /run/php
sudo chmod 755 /run/php

4. 限制PHP-FPM进程资源

通过进程池参数控制PHP-FPM的资源消耗,防止资源耗尽攻击:

pm = dynamic  # 动态进程管理模式
pm.max_children = 50  # 最大子进程数(根据服务器内存调整,如2GB内存建议30-40)
pm.start_servers = 5  # 启动时的子进程数
pm.min_spare_servers = 5  # 最小空闲进程数
pm.max_spare_servers = 35  # 最大空闲进程数

合理配置可平衡性能与安全性。

5. 禁用危险PHP函数与功能

6. 限制PHP脚本访问范围(open_basedir)

通过open_basedir限制PHP脚本只能访问指定目录,防止非法访问系统文件:

open_basedir = /var/www/html/:/tmp/

多个目录用冒号分隔,确保包含网站根目录(如/var/www/html)和临时目录(如/tmp)。

7. 配置防火墙限制访问

使用ufw(Uncomplicated Firewall)限制对PHP-FPM的访问:

同时,限制SSH(22/tcp)、HTTP(80/tcp)、HTTPS(443/tcp)等必要服务的访问。

8. 启用慢日志监控性能与异常

开启慢日志可识别执行缓慢的脚本(可能被恶意利用),在进程池配置文件中添加:

request_slowlog_timeout = 10s  # 超过10秒的请求视为慢请求
slowlog = /var/log/php-fpm/www-slow.log

定期检查慢日志,优化性能或排查异常。

9. 使用安全模块增强防护

根据实际需求调整策略。

10. 定期审计与备份

通过以上步骤,可显著提升Linux环境下PHP-FPM的安全性,降低被攻击的风险。配置完成后,重启PHP-FPM服务使变更生效:

sudo systemctl restart php{版本号}-fpm

0
看了该问题的人还看了