温馨提示×

centos php配置安全如何做

小樊
50
2026-09-08 20:19:38
栏目: 编程语言

在 CentOS 上配置 PHP 安全,通常可以从 系统层面、PHP 本身、Web 服务、代码与运维 几个方面来做。下面是一套比较实用、可落地的方案(适用于 CentOS 7/8、PHP 7.x/8.x)。


一、系统层面安全

1. 使用最小权限账户

  • Web 服务(nginx/apache)使用专用用户(如 nginx、apache)
  • PHP 进程不要使用 root
  • 网站目录属主与运行用户分离
chown -R nginx:nginx /var/www/html
chmod -R 755 /var/www/html

2. 关闭不必要的服务

systemctl disable telnet
systemctl stop telnet

3. 启用 SELinux(强烈建议)

getenforce
setenforce 1

如 Web 目录异常:

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html(/.*)?"
restorecon -Rv /var/www/html

二、PHP 安全配置(php.ini)

路径一般为:

/etc/php.ini
/etc/php.d/*.ini

1. 关闭危险函数

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec,eval

如业务需要,可酌情放开

2. 关闭错误暴露

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

3. 限制文件访问

open_basedir = /var/www/html:/tmp

4. 关闭远程文件

allow_url_fopen = Off
allow_url_include = Off

5. 上传安全

file_uploads = On
upload_max_filesize = 8M
post_max_size = 8M
upload_tmp_dir = /tmp

6. 会话安全

session.cookie_secure = On
session.cookie_httponly = On
session.cookie_samesite = Lax
session.use_strict_mode = 1

三、Web 服务安全配合

Nginx 示例

location ~ \.php$ {
    fastcgi_pass   unix:/run/php-fpm/www.sock;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

# 禁止访问敏感文件
location ~ /\. {
    deny all;
}
location ~* /(config|vendor|storage)/ {
    deny all;
}

Apache 示例

<Files ".env">
    Require all denied
</Files>

<Directory "/var/www/html">
    Options -Indexes
    AllowOverride All
</Directory>

四、PHP-FPM 安全

编辑:

/etc/php-fpm.d/www.conf
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
pm = dynamic

使用 不同站点不同 pool(推荐):

/etc/php-fpm.d/site1.conf
/etc/php-fpm.d/site2.conf

五、代码与依赖安全

1. 使用 Composer 并锁定版本

composer install --no-dev --optimize-autoloader

2. 定期审计依赖

composer audit

3. 敏感文件保护

  • .env
  • config.php
  • vendor/
  • .git/

六、日志与监控

1. PHP 错误日志

/var/log/php_errors.log

2. 系统审计

ausearch -m avc
journalctl -u php-fpm

3. 文件变更监控(可选)

  • auditd
  • inotify

七、定期维护

  • 及时更新系统
yum update -y
  • 更新 PHP
  • 删除测试文件
  • 定期备份

如果你愿意,我可以:

  • ✅ 给你一份 可直接用的 php.ini 安全模板
  • ✅ 针对 CentOS + Nginx + PHP-FPM 出完整配置
  • ✅ 按 Laravel / ThinkPHP / WordPress 专项优化

你用的是哪种环境?

0 踩