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 Socket)
将listen
指令从默认的127.0.0.1:9000
改为Unix Socket(如/run/php/php{
version}
-fpm.sock
),并设置严格的权限:listen.owner = www-data
、listen.group = www-data
、listen.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 = On
,error_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)自动化日志分析,提升安全响应效率。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux PHP-FPM安全策略有哪些
本文地址: https://pptw.com/jishu/725941.html