首页主机资讯PHP在CentOS中如何实现安全配置

PHP在CentOS中如何实现安全配置

时间2025-12-15 21:38:03发布访客分类主机资讯浏览945
导读:PHP 在 CentOS 的安全配置清单 一 系统与基础防护 保持系统与软件包为最新,及时安装安全补丁:执行 sudo yum update。 仅开放必要端口,使用 firewalld 放行 80/443: sudo yum instal...

PHP 在 CentOS 的安全配置清单

一 系统与基础防护

  • 保持系统与软件包为最新,及时安装安全补丁:执行 sudo yum update
  • 仅开放必要端口,使用 firewalld 放行 80/443
    sudo yum install -y firewalld
    sudo systemctl start firewalld & & sudo systemctl enable firewalld
    sudo firewall-cmd --permanent --add-service=http --add-service=https
    sudo firewall-cmd --reload
  • 启用 SELinux 提供强制访问控制(如未启用可 setenforce 1;生产环境建议保持 enforcing 并按需配置策略)。
  • 全站启用 HTTPS(安装 mod_ssl 或配置 Nginx TLS),避免明文传输敏感数据。

二 PHP 运行时安全配置

  • 编辑 php.ini(或 /etc/php.d/*.ini)进行以下关键设置:
    • 关闭错误显示、开启日志记录:
      display_errors = Off
      log_errors = On
      error_log = /var/log/php_errors.log
    • 限制远程包含与协议:
      allow_url_fopen = Off
      allow_url_include = Off
    • 目录访问隔离:
      open_basedir = /var/www/html:/tmp
    • 上传与请求边界:
      file_uploads = On
      upload_max_filesize = 2M
      post_max_size = 8M
    • 会话安全:
      session.cookie_httponly = On
      session.cookie_secure = On
      session.cookie_samesite = Strict
    • 禁用危险函数(按应用需求精简,避免影响功能):
      disable_functions = eval,assert,system,shell_exec,passthru,exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,stream_socket_server,fsock,phpinfo
    • 资源与性能硬化(OPcache 建议开启,注意共享内存与重启策略):
      opcache.enable=1
      opcache.memory_consumption=128
      opcache.interned_strings_buffer=8
      opcache.max_accelerated_files=4000
      opcache.revalidate_freq=60
      opcache.fast_shutdown=1
  • 重要变更后重启服务:
    sudo systemctl restart php-fpm
    sudo systemctl restart httpd # 或 sudo systemctl restart nginx

三 PHP-FPM 与进程隔离

  • 运行身份与权限:在 /etc/php-fpm.d/www.conf 中设置非 root 用户/组(如 apache 或专用 php-fpm 用户),并限制 listenUnix 套接字 以便与 Web 服务器同机隔离:
    user = apache
    group = apache
    listen = /run/php-fpm/www.sock
    listen.owner = apache
    listen.group = apache
    listen.mode = 0660
  • 进程与超时控制(示例值,按负载调优):
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    request_terminate_timeout = 60s
  • 修改后重启:sudo systemctl restart php-fpm。

四 Web 服务器与请求过滤

  • Apache 示例(目录与执行控制):
    < Directory “/var/www/html”>
    Options -Indexes +FollowSymLinks
    AllowOverride All
    Require all granted
  • Nginx 示例(FastCGI 与路径隔离):
    server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.php index.html;
    location / { try_files $uri $uri/ =404; }
    location ~ .php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/run/php-fpm/www.sock;
    }
    }
  • 建议叠加 WAF(如 ModSecurity)进行请求过滤与规则拦截,作为应用层纵深防御。

五 运维与加固要点

  • 持续更新与备份:定期执行系统与 PHP 更新;制定网站与数据库备份策略(如每日增量、每周全量),并验证可恢复性。
  • 最小权限与文件权限:网站目录避免使用 777;Web 根目录建议 755,仅对需要写入的目录(如上传、缓存)按需赋予 775/770 并归属正确用户组。
  • 安全基线复核:定期审计 disable_functionsopen_basedir、错误日志与访问日志;对异常与攻击特征进行告警与处置。

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


若转载请注明出处: PHP在CentOS中如何实现安全配置
本文地址: https://pptw.com/jishu/772091.html
CentOS上PHP如何实现数据库连接 PHP与CentOS兼容性问题如何解决

游客 回复需填写必要信息