centos php配置中安全设置有哪些
导读:CentOS 上 PHP 的安全设置清单 一 基础与运行环境 保持系统与 PHP 为最新,及时安装安全补丁(如执行:sudo yum update)。 仅开放必要端口,使用 firewalld 放行 80/443: sudo firewa...
CentOS 上 PHP 的安全设置清单
一 基础与运行环境
- 保持系统与 PHP 为最新,及时安装安全补丁(如执行:sudo yum update)。
- 仅开放必要端口,使用 firewalld 放行 80/443:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload - 启用 SELinux enforcing 模式,并按需配置策略,作为系统层额外防护。
- 使用 HTTPS/TLS(如安装 mod_ssl 并配置证书),避免明文传输敏感数据。
二 php.ini 关键安全选项
- 错误与信息泄露控制
- 关闭对外错误显示:display_errors = Off
- 开启错误日志:log_errors = On,error_log = /var/log/php_errors.log
- 隐藏 PHP 版本:expose_php = Off
- 远程资源与包含
- 禁止远程文件包含:allow_url_fopen = Off,allow_url_include = Off
- 危险函数禁用(按应用需要精简)
- 示例:disable_functions = eval,assert,system,shell_exec,passthru,exec,popen,pcntl_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,phpinfo
- 文件系统访问限制
- 目录白名单:open_basedir = /var/www/html:/tmp(路径按实际站点调整)
- 会话安全
- 仅 HttpOnly 与 Secure:session.cookie_httponly = On,session.cookie_secure = On
- 防 CSRF 与跨站泄露:session.cookie_samesite = Strict
- 上传与请求大小(按业务最小化设置)
- 示例:file_uploads = On,upload_max_filesize = 2M,post_max_size = 8M
- 历史/废弃项说明
- register_globals:PHP 5.3.0 起废弃,5.4.0 移除
- magic_quotes_gpc/runtime/sybase:PHP 5.4.0 移除,不要依赖其“自动转义”来防注入
- safe_mode:已移除,不要依赖,改用其他隔离与控制手段
三 PHP-FPM 与进程安全
- 运行身份与权限
- 进程用户/组:user = apache,group = apache(或对应 Web 服务运行用户)
- 监听与属主:如 listen = /run/php-fpm/www.sock,并设置 listen.owner = apache,listen.group = apache,避免权限错配导致代码被读取/写入
- 并发与超时(按负载调优)
- 示例: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(并重启 httpd 或 nginx)
四 Web 服务器与周边加固
- Apache 示例(目录与索引控制)
- <
Directory “/var/www/html”>
- Options -Indexes +FollowSymLinks
- AllowOverride All
- Require all granted
- <
Directory “/var/www/html”>
- Nginx + PHP-FPM 示例(仅处理合法 PHP,避免解析非脚本)
- location ~ .php$ {
- include snippets/fastcgi-php.conf;
- fastcgi_pass unix:/run/php-fpm/www.sock;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
- location ~ .php$ {
- 入侵防护与账号安全
- 部署 Fail2Ban 监控异常登录并封禁;
- 数据库使用最小权限账户、强口令,限制来源(如仅 localhost)。
五 维护与验证
- 持续更新与备份
- 定期执行系统与软件更新;
- 定期备份站点与数据库(如 rsync 与 mysqldump),并验证可恢复性。
- 日志与监控
- 集中监控 /var/log/php_errors.log 与 Web/FPM 日志,关注异常调用与上传行为;
- 定期复核 disable_functions、open_basedir、session.cookie_* 等关键配置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos php配置中安全设置有哪些
本文地址: https://pptw.com/jishu/763032.html
