首页主机资讯centos中php-fpm的安全设置有哪些

centos中php-fpm的安全设置有哪些

时间2025-10-28 11:15:03发布访客分类主机资讯浏览704
导读:CentOS中PHP-FPM的安全设置指南 1. 更新系统与PHP-FPM 确保系统和PHP-FPM为最新版本,修复已知安全漏洞: sudo yum update -y sudo yum install epel-release -y su...

CentOS中PHP-FPM的安全设置指南

1. 更新系统与PHP-FPM

确保系统和PHP-FPM为最新版本,修复已知安全漏洞:

sudo yum update -y
sudo yum install epel-release -y
sudo yum install php-fpm php-cli php-mysqlnd php-gd php-mbstring -y

2. 配置PHP-FPM进程用户/组(最小权限原则)

编辑PHP-FPM进程池配置文件(通常为/etc/php-fpm.d/www.conf),将运行用户/组设置为非root(如apachenginx),并确保监听文件的权限正确:

user = apache
group = apache
listen.owner = apache
listen.group = apache
listen.mode = 0660  # 限制监听文件仅所有者可读写

3. 限制PHP-FPM进程数量

根据服务器资源调整进程池参数,避免过多进程消耗资源或被滥用:

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

4. 禁用危险PHP函数

/etc/php.ini中禁用可能被用于执行系统命令的危险函数,防止代码注入:

disable_functions = eval,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

5. 配置错误处理(防止敏感信息泄露)

关闭错误显示,将错误日志记录到指定文件(避免在网页上暴露服务器路径、数据库信息等):

display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log

6. 加强文件上传安全

限制上传文件的大小和类型,防止恶意文件(如PHP木马)上传:

file_uploads = On
upload_max_filesize = 2M  # 单个文件最大2MB
post_max_size = 8M  # POST数据最大8MB(需大于upload_max_filesize)

7. 增强会话安全

通过会话配置防止会话劫持和固定攻击:

session.cookie_httponly = On  # 禁止JavaScript访问会话cookie
session.cookie_secure = On  # 仅通过HTTPS传输会话cookie(需开启HTTPS)
session.cookie_samesite = Strict  # 限制会话cookie仅在同站点请求中发送
session.use_strict_mode = On  # 防止会话固定攻击
session.gc_maxlifetime = 1440  # 会话有效期(分钟,建议≤30分钟)

8. 限制PHP访问目录(open_basedir)

/etc/php.ini中设置open_basedir,限制PHP脚本只能访问指定目录(如网站根目录和临时目录),防止访问系统敏感文件:

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

9. 配置防火墙限制访问

使用firewalld限制对PHP-FPM监听端口(默认Unix socket或9000端口)的访问,仅允许必要IP:

# 若使用Unix socket(默认),无需额外防火墙规则(仅本地访问)
# 若使用TCP端口(如9000),添加以下规则:
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
sudo firewall-cmd --reload

10. 启用HTTPS(加密传输)

使用certbot申请免费SSL证书,强制网站使用HTTPS,防止数据在传输过程中被窃取:

sudo yum install -y certbot python3-certbot-nginx  # 若使用Nginx
sudo certbot --nginx -d yourdomain.com  # 替换为你的域名
sudo systemctl enable certbot.timer  # 设置证书自动续期

11. 安装Web应用防火墙(WAF)

使用ModSecurity增强PHP应用的安全性,防御SQL注入、XSS等常见攻击:

sudo yum install -y mod_security
sudo systemctl enable mod_security
sudo systemctl start mod_security
# 可选:安装OWASP Core Rule Set(CRS)增强防护

12. 定期审计与监控

  • 检查PHP-FPM日志:定期查看/var/log/php-fpm/error.log/var/log/php_errors.log,发现异常请求(如大量404、500错误)。
  • 监控进程状态:使用systemctl status php-fpm确认PHP-FPM运行正常,避免进程崩溃导致服务中断。
  • 定期更新:订阅PHP和CentOS的安全公告,及时升级到最新稳定版本。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos中php-fpm的安全设置有哪些
本文地址: https://pptw.com/jishu/736581.html
如何升级centos中的php-fpm版本 php-fpm在centos上出现502错误怎么办

游客 回复需填写必要信息