PHP在CentOS中如何实现安全配置
导读: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 用户),并限制 listen 为 Unix 套接字 以便与 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_functions、open_basedir、错误日志与访问日志;对异常与攻击特征进行告警与处置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: PHP在CentOS中如何实现安全配置
本文地址: https://pptw.com/jishu/772091.html
