Linux PHP-FPM安全防护措施有哪些
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
),将user
和group
设置为非root用户(如www-data
),避免进程越权访问系统文件。
3. 配置安全的监听方式
优先使用Unix套接字替代TCP端口(如listen = /run/php/php{
version}
-fpm.sock
),并设置套接字文件权限为755
、所有者为www-data
(chown www-data:www-data /run/php
)。若必须使用TCP,需通过防火墙限制访问IP。
4. 限制PHP进程资源与数量
通过pm.max_children
(最大子进程数,如50)、pm.start_servers
(启动时进程数,如5)、pm.min_spare_servers
(最小空闲进程数,如5)、pm.max_spare_servers
(最大空闲进程数,如35)参数,避免进程耗尽系统资源;同时限制单个脚本内存使用(memory_limit = 256M
)和上传文件大小(upload_max_filesize = 10M
)。
5. 禁用危险函数与远程文件访问
在php.ini
中通过disable_functions
禁用高危函数(如eval,exec,system,shell_exec,passthru
),防止恶意代码执行;设置allow_url_fopen = Off
、allow_url_include = Off
,禁止远程文件包含,避免攻击者通过URL注入恶意代码。
6. 配置PHP安全选项
启用open_basedir
限制PHP脚本访问目录(如open_basedir = /var/www/html/:/tmp/
),防止跨目录攻击;关闭错误显示(display_errors = Off
),开启错误日志(log_errors = On
、error_log = /var/log/php_errors.log
),避免泄露敏感信息。
7. 强化防火墙与网络访问控制
使用UFW或iptables限制对PHP-FPM端口的访问:若使用Unix套接字,无需额外配置;若使用TCP,仅允许Web服务器IP访问(如sudo ufw allow from 127.0.0.1 to any port 9000
)。
8. 启用慢日志监控性能异常
在进程池配置文件中设置request_slowlog_timeout = 10s
(超时报错时间)和slowlog = /var/log/php-fpm/www-slow.log
,记录执行缓慢的请求,便于排查潜在的性能瓶颈或恶意请求。
9. 使用HTTPS加密传输
通过Let’s Encrypt获取免费SSL证书(sudo certbot --apache -d yourdomain.com
),强制网站使用HTTPS,防止数据在传输过程中被截获或篡改。
10. 定期审计与监控
定期检查PHP-FPM日志(/var/log/php-fpm/www-error.log
、/var/log/php-fpm/www-slow.log
)和系统日志,监控异常进程、错误信息;使用监控工具(如Prometheus+Grafana)跟踪系统性能,及时发现异常行为。
11. 可选:启用Web应用防火墙(WAF)
部署ModSecurity等WAF,过滤恶意请求(如SQL注入、XSS攻击),为PHP-FPM添加额外的安全层。
12. 可选:使用SELinux或AppArmor
若系统支持,启用SELinux(setenforce 1
)或AppArmor(aa-enforce /etc/apparmor.d/usr.sbin/php-fpm
),通过强制访问控制(MAC)限制PHP-FPM的权限,进一步提升安全性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux PHP-FPM安全防护措施有哪些
本文地址: https://pptw.com/jishu/730514.html