温馨提示×

centos php如何安全

小樊
45
2025-12-13 11:41:30
栏目: 编程语言

CentOS 上加固 PHP 的实用清单

一 系统与基础防护

  • 保持系统与软件包为最新,及时安装安全补丁:执行命令:sudo yum update -y
  • 仅开放必要端口,使用 firewalld 放行 80/443
    sudo yum install -y firewalld
    sudo systemctl start firewalld && sudo systemctl enable firewalld
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload
  • 启用 SELinux(推荐):sudo setenforce 1;如与业务冲突需按策略调整而非直接关闭。
  • 全站启用 HTTPS(安装 mod_ssl 并配置证书),避免明文传输敏感数据。

二 PHP 运行时安全配置

  • 编辑 /etc/php.ini/etc/php.d/*.ini,按以下要点调整(路径与值请结合业务验证):
配置项 建议值 说明
display_errors Off 不在浏览器暴露错误细节
log_errors On 将错误写入日志便于审计
error_log /var/log/php_errors.log 指定错误日志路径
expose_php Off 隐藏 X-Powered-By: PHP/…
allow_url_fopen Off 禁止远程 URL 文件包含/读取
allow_url_include Off 禁止远程文件包含执行
open_basedir /var/www/html:/tmp 限制脚本可访问目录(多站点需分别设置)
disable_functions system,exec,shell_exec,passthru,proc_open,popen,eval,assert,show_source 禁用高危函数(按应用兼容性精简)
file_uploads On/Off 不需要上传则关闭
upload_max_filesize 2M(示例) 结合业务下调
post_max_size 8M(示例) 不小于上传上限
session.cookie_httponly 1 XSS 窃取会话
session.cookie_secure 1 HTTPS 传输会话
session.cookie_samesite Strict/Lax 缓解 CSRF
opcache.enable 1 建议开启以提升性能并减少攻击面(配合安全配置)
  • 注意:safe_mode 已在较新版本 PHP 中移除,不要依赖;如需类似隔离,请使用 open_basedir、容器/沙箱或 SELinux

三 PHP-FPM 与进程隔离

  • 运行身份最小化:编辑 /etc/php-fpm.d/www.conf,设置非 root 用户/组(如 apache 或专用 php-fpm 用户),并确保运行用户仅对网站目录具备必要权限。
  • 进程与超时:合理设置 pm.max_children / pm.start_servers / pm.min_spare_servers / pm.max_spare_servers,并设定 request_terminate_timeout,防止慢速攻击与资源耗尽。
  • 监听方式:优先使用 Unix 套接字(如 /run/php-fpm/www.sock)而非端口,减少网络暴露面。
  • 修改后重启:sudo systemctl restart php-fpm

四 Web 服务器与边界防护

  • Apache 建议:
    • 隐藏版本与禁用 TRACE:设置 ServerTokens ProdServerSignature OffTraceEnable Off
    • 目录与执行控制:在 <Directory “/var/www/html”> 中使用 Options -Indexes +FollowSymLinksAllowOverride AllRequire all granted;必要时禁用不需要的模块(如 mod_cgi、mod_include、mod_userdir、mod_status、mod_info 等)。
  • Nginx 建议:
    • 仅解析合法 .php,并通过 fastcgi_pass unix:/run/php-fpm/www.sock; 转发;确保 SCRIPT_FILENAME 正确指向实际文件,避免任意文件执行。
  • 边界与 WAF:在 firewalld 仅放行 80/443;如条件允许,部署 ModSecurityWAF 组件增强规则拦截能力。

五 运维与持续安全

  • 持续更新与备份:定期执行 yum update;制定网站与数据库备份策略(如每日增量、每周全量),并验证可恢复性。
  • 最小权限与目录加固:网站目录避免使用 777;上传目录禁止脚本执行(如 nginx/php-fpm 配置中限制执行权限);日志文件权限与属主严格控制。
  • 安全审计与监控:集中收集并分析 PHP 错误日志Web 访问日志;对异常请求、上传行为、函数调用失败等进行告警。

0