linux

Linux PHP-FPM安全策略有哪些

小樊
42
2025-10-13 22:40:21
栏目: 编程语言

1. 更新系统与PHP-FPM至最新版本
定期执行sudo apt update && sudo apt upgrade,确保Linux内核、PHP核心及PHP-FPM组件修复已知安全漏洞,降低被攻击风险。

2. 以非特权用户身份运行PHP-FPM
修改PHP-FPM池配置文件(如/etc/php/{version}/fpm/pool.d/www.conf),将usergroup设置为非root用户(如www-data),避免进程越权访问系统文件。

3. 优化监听方式(优先使用Unix Socket)
listen指令从默认的127.0.0.1:9000改为Unix Socket(如/run/php/php{version}-fpm.sock),并设置严格的权限:listen.owner = www-datalisten.group = www-datalisten.mode = 0660。Unix Socket仅允许本地进程通信,比TCP端口更安全。

4. 限制进程数量与资源占用
通过pm参数控制进程池规模:pm = dynamic(动态进程模式),并设置pm.max_children(最大子进程数,如50,根据服务器内存调整)、pm.start_servers(启动时的子进程数,如5)、pm.min_spare_servers(最小空闲进程数,如5)、pm.max_spare_servers(最大空闲进程数,如35)。同时,用request_terminate_timeout(如30s)限制单个请求的执行时间,防止单个脚本耗尽服务器资源。

5. 禁用危险PHP函数与功能
php.ini中禁用高危函数(如disable_functions = eval,exec,passthru,shell_exec,system),防止攻击者通过这些函数执行系统命令;关闭错误显示(display_errors = Off),避免泄露敏感信息(如数据库凭证),并开启错误日志(log_errors = Onerror_log = /var/log/php_errors.log)记录错误详情。

6. 配置文件与目录权限
设置Web根目录(如/var/www/html)及PHP文件的权限:chown -R www-data:www-data /var/www/html(所有权归Web用户)、find /var/www/html -type d -exec chmod 755 {} \;(目录权限755)、find /var/www/html -type f -exec chmod 644 {} \;(文件权限644)。上传目录需单独设置,禁止执行权限(如chmod 755 /var/www/html/uploads)。

7. 防火墙限制访问
使用UFW(Uncomplicated Firewall)限制对PHP-FPM的访问:若使用TCP端口(如9000),执行sudo ufw allow 9000/tcp并限制来源IP(如sudo ufw allow from 192.168.1.0/24 to any port 9000);若使用Unix Socket,确保Socket文件权限仅允许Web用户访问(如chmod 750 /run/php)。

8. 使用SELinux或AppArmor增强隔离
若系统支持SELinux,执行sudo setenforce 1开启强制模式,并配置PHP-FPM的SELinux策略;若使用AppArmor,编辑/etc/apparmor.d/usr.sbin.php-fpm文件,限制其对系统资源的访问(如/var/www/html/** rwk,),然后执行sudo aa-enforce /etc/apparmor.d/usr.sbin.php-fpm启用策略。

9. 启用慢日志监控异常请求
在PHP-FPM池配置文件中设置慢日志参数:request_slowlog_timeout = 10s(超过10秒的请求视为慢请求)、slowlog = /var/log/php-fpm/www-slow.log,通过tail -f /var/log/php-fpm/www-slow.log监控慢请求,及时发现潜在的性能瓶颈或恶意扫描。

10. 定期审计与日志分析
定期检查PHP-FPM日志(/var/log/php-fpm/error.log/var/log/php-fpm/www-slow.log)和系统日志,分析异常行为(如频繁的500错误、大量来自陌生IP的请求);使用工具(如Logwatch、ELK Stack)自动化日志分析,提升安全响应效率。

0
看了该问题的人还看了