首页主机资讯CentOS上PHP安全设置怎么做

CentOS上PHP安全设置怎么做

时间2025-10-17 21:27:03发布访客分类主机资讯浏览1475
导读:CentOS上PHP安全设置步骤 1. 更新系统和PHP 确保系统和PHP为最新版本,修复已知安全漏洞: sudo yum update -y sudo yum install epel-release -y sudo yum instal...

CentOS上PHP安全设置步骤

1. 更新系统和PHP

确保系统和PHP为最新版本,修复已知安全漏洞:

sudo yum update -y
sudo yum install epel-release -y
sudo yum install php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-xml php-pear php-bcmath -y

2. 配置PHP-FPM(若使用)

编辑PHP-FPM主配置文件(通常为/etc/php-fpm.d/www.conf),调整以下参数:

  • 用户/组权限:避免使用root运行PHP进程,推荐使用apachenginx用户。
    user = apache
    group = apache
    
  • 禁用危险函数:禁止执行系统命令、文件操作等高风险函数。
    disable_functions = eval,assert,system,shell_exec,passthru,exec,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
    
  • 限制进程数量:防止资源耗尽攻击。
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    
  • 请求超时设置:避免长时间运行的脚本占用资源。
    request_terminate_timeout = 60s
    

修改后重启PHP-FPM:

sudo systemctl restart php-fpm

3. 配置PHP.ini核心安全参数

编辑主配置文件/etc/php.ini,重点设置以下安全选项:

  • 错误报告:生产环境关闭详细错误显示,防止敏感信息泄露。
    display_errors = Off
    log_errors = On
    error_log = /var/log/php_errors.log
    
  • 文件上传限制:限制上传文件大小,防止大文件攻击或恶意文件上传。
    file_uploads = On
    upload_max_filesize = 10M
    post_max_size = 10M
    
  • 会话安全:增强会话ID的随机性和Cookie保护,防止会话劫持/CSRF。
    session.cookie_httponly = On  # 禁止JavaScript访问会话Cookie
    session.cookie_secure = On    # 仅通过HTTPS传输Cookie(需开启HTTPS)
    session.cookie_samesite = Strict  # 防止跨站请求伪造(CSRF)
    session.gc_maxlifetime = 1440 # 会话有效期(分钟)
    
  • 密码策略:强制使用强哈希算法(如bcrypt)存储密码。
    password_hash_default = bcrypt
    
  • 禁用危险特性:关闭远程文件包含、动态代码执行等高风险功能。
    allow_url_fopen = Off
    allow_url_include = Off
    
  • 启用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
    

4. 配置Web服务器安全

根据使用的Web服务器(Apache/Nginx)调整配置:

Apache

编辑虚拟主机配置文件(如/etc/httpd/conf.d/your_site.conf),限制目录访问:

<
    Directory "/var/www/html">
    
    Options -Indexes +FollowSymLinks  # 禁止目录列表
    AllowOverride All
    Require all granted
<
    /Directory>

重启Apache:

sudo systemctl restart httpd
Nginx

编辑虚拟主机配置文件(如/etc/nginx/conf.d/your_site.conf),防止恶意文件访问:

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 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 ~ /\.ht {
    
        deny all;
  # 禁止访问.htaccess等隐藏文件
    }

}
    

重启Nginx:

sudo systemctl restart nginx

5. 配置防火墙

使用firewalld限制对Web服务的访问,仅允许HTTP(80)和HTTPS(443)端口:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

6. 使用安全模块增强防护

安装并配置ModSecurity(开源Web应用防火墙),防御SQL注入、XSS等常见攻击:

sudo yum install mod_security -y
sudo systemctl enable mod_security
sudo systemctl start mod_security

7. 定期维护与监控

  • 备份数据:定期备份网站文件和数据库(如使用rsyncmysqldump)。
  • 监控日志:定期检查/var/log/php_errors.log和Web服务器日志,发现异常行为。
  • 更新策略:订阅PHP安全公告,及时升级到最新稳定版本。
  • 文件权限:确保PHP文件权限合理(如755目录、644文件),避免敏感文件(如config.php)被篡改:
    sudo chmod -R 755 /var/www/html
    sudo chown -R apache:apache /var/www/html  # 根据实际用户调整
    

通过以上步骤,可显著提升CentOS上PHP应用的安全性,防范常见攻击(如SQL注入、XSS、文件上传漏洞等)。需根据实际业务场景调整参数(如上传文件大小、会话有效期),并在测试环境验证配置有效性。

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


若转载请注明出处: CentOS上PHP安全设置怎么做
本文地址: https://pptw.com/jishu/729406.html
centos selinux如何自定义策略模块 centos selinux如何启用审计功能

游客 回复需填写必要信息