Ubuntu PHP-FPM如何提升安全性
1. 更新系统与PHP-FPM至最新版本
定期运行sudo apt update &
&
sudo apt upgrade -y
,确保Ubuntu系统、PHP核心及PHP-FPM组件安装最新安全补丁,修复已知漏洞。
2. 以非特权用户/组运行PHP-FPM
修改PHP-FPM进程池配置文件(路径如/etc/php/8.2/fpm/pool.d/www.conf
),将user
和group
设置为非root的低权限用户(通常为www-data
),避免进程越权访问系统文件。
3. 配置安全的监听方式(优先使用Unix Socket)
将listen
指令从默认的127.0.0.1:9000
改为Unix Socket(如/run/php/php8.2-fpm.sock
),并设置正确的权限:
listen = /run/php/php8.2-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
Socket文件仅能被本地进程访问,比TCP端口更安全。
4. 限制进程资源与请求数量
在进程池配置中调整以下参数,防止资源耗尽攻击:
pm.max_children
:根据服务器内存设置(如512MB内存建议设为20-30),限制最大子进程数;pm.max_requests
:每个工作进程处理指定请求数后重启(如pm.max_requests = 500
),避免内存泄漏累积。
5. 禁用危险PHP函数与限制文件访问
- 在
php.ini
中禁用高危函数(如eval
、exec
、system
、passthru
、shell_exec
):disable_functions = eval,exec,passthru,shell_exec,system
- 使用
open_basedir
限制PHP脚本访问范围(如仅允许访问Web根目录):
防止脚本读取敏感系统文件(如open_basedir = /var/www/html/:/tmp/
/etc/passwd
)。
6. 配置防火墙限制访问
使用UFW(Uncomplicated Firewall)仅允许必要流量:
- 允许HTTP(80)、HTTPS(443)流量:
sudo ufw allow 80/tcp; sudo ufw allow 443/tcp
; - 若使用TCP监听,允许9000端口:
sudo ufw allow 9000/tcp
; - 启用防火墙:
sudo ufw enable
。
7. 启用PHP安全日志与监控
- 在
www.conf
中开启慢日志,定位性能瓶颈或恶意脚本:request_slowlog_timeout = 10s slowlog = /var/log/php-fpm/www-slow.log
- 确保
php.ini
中日志记录开启:log_errors = On
,并指定日志路径(如error_log = /var/log/php_errors.log
); - 定期检查日志(如
tail -f /var/log/php-fpm/error.log
),及时发现异常请求。
8. 使用SELinux或AppArmor加强权限控制
- 若系统启用SELinux,设置正确的上下文:
sudo chcon -Rv --type=httpd_sys_content_t /var/www/html
; - 若使用AppArmor,确保
/etc/apparmor.d/usr.sbin.php-fpm
策略允许访问必要目录(如Web根目录、临时目录),并通过sudo aa-enforce /etc/apparmor.d/usr.sbin.php-fpm
启用强制模式。
9. 配置HTTPS加密传输
使用Let’s Encrypt免费获取SSL证书,强制网站使用HTTPS(如Nginx配置中添加listen 443 ssl;
并指定证书路径),防止数据在传输过程中被窃取或篡改。
10. 定期备份与安全审计
- 定期备份网站文件(如
/var/www/html
)和数据库(如MySQL),可使用rsync
或工具如Duplicati
; - 使用工具(如
Lynis
)进行系统安全审计,检测配置漏洞并及时修复。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu PHP-FPM如何提升安全性
本文地址: https://pptw.com/jishu/728314.html