温馨提示×

laravel项目centos如何安全防护

小樊
40
2025-12-15 11:21:53
栏目: 智能运维

Laravel 项目在 CentOS 的安全防护清单


一 系统与网络防护

  • 保持系统与软件包为最新,及时修补漏洞;仅启用必要的服务与端口,减少攻击面。
  • 使用 firewalld(CentOS 7/8 默认)进行端口管控,遵循最小权限原则:
    • 启动并持久化:
      • systemctl start firewalld && systemctl enable firewalld
    • 开放 Web 与 SSH:
      • firewall-cmd --zone=public --add-port=80/tcp --permanent
      • firewall-cmd --zone=public --add-port=443/tcp --permanent
      • firewall-cmd --zone=public --add-port=22/tcp --permanent
      • firewall-cmd --reload
    • 如需数据库仅内网访问,不建议对公网开放 3306,或在云上通过安全组限制来源 IP。
  • 加固 SSH:禁用密码登录,使用 SSH 密钥;可结合 fail2ban 防止暴力破解。
  • 云上环境注意“双重防护”:同时正确配置 安全组 与操作系统防火墙,避免误开放端口。

二 Web 服务器与 PHP 安全

  • 通过 Nginx/Apache 仅暴露 public/ 目录,禁止访问敏感路径与隐藏文件:
    • Nginx 示例:
      • root /var/www/laravel/public;
      • try_files $uri $uri/ /index.php?$query_string;
      • 对上传目录禁用脚本执行:location /storage { location ~ .php$ { deny all; } }
      • 隐藏敏感文件:location ~ /.(?!well-known).* { deny all; }
  • 启用 HTTPS/TLS(如 Let’s Encrypt),并配置 HTTP→HTTPS 重定向HSTS
  • 配置安全的 HTTP 响应头(可借助框架或中间件):
    • X-Frame-Options: SAMEORIGIN
    • X-XSS-Protection: 1; mode=block
    • X-Content-Type-Options: nosniff
    • Content-Security-Policy: 按站点策略收紧资源来源
  • PHP 生产参数建议:
    • display_errors = Off,log_errors = On,error_log 指向受限日志文件
    • 限制危险函数:disable_functions = exec,passthru,shell_exec,system,proc_open,popen,eval
    • 上传控制:upload_max_filesize 与 post_max_size 设为业务所需的最小值,启用上传目录隔离与后缀白名单校验

三 Laravel 应用层安全

  • 环境与密钥:
    • .env 加入 .gitignore,禁止提交;生产环境设置 APP_ENV=productionAPP_DEBUG=false
    • 生成应用密钥:php artisan key:generate --force
  • 依赖与漏洞扫描:
    • 定期执行 composer update,移除无用依赖
    • 集成安全扫描:如 enlightn/security-checker 或 roave/security-advisories
  • 输入与防护机制:
    • 使用 Eloquent/查询构造器 防止 SQL 注入;对所有输入进行验证与清理
    • 启用并正确使用 CSRFXSS 防护、表单请求验证、强哈希(bcrypt)
  • 会话与认证:
    • 启用安全会话配置(如仅 HTTPS 传输、HttpOnly、SameSite 等)
    • 实现登录限流与锁定策略,防止暴力破解
  • 权限与访问控制:
    • 基于 Gate/Policy 实现细粒度授权,遵循最小权限原则

四 文件权限与 SELinux

  • Web 服务运行用户与目录属主保持一致(常见为 apache:apachenginx:nginx):
    • chown -R apache:apache storage bootstrap/cache
    • find storage bootstrap/cache -type f -exec chmod 644 {} ;
    • find storage bootstrap/cache -type d -exec chmod 755 {} ;
  • 禁止 Web 访问敏感文件:.env、.git、storage/*.key 等;Nginx 配置中加入对隐藏文件的 deny all。
  • SELinux:
    • 建议保持 SELinux Enforcing,并通过 semanage/fcontext 为 Web 目录设置正确的类型(如 httpd_sys_content_t、httpd_sys_rw_content_t),避免直接关闭 SELinux(如 SELINUX=disabled),以降低系统整体风险。

五 数据库、备份与监控审计

  • 数据库安全:
    • 使用强密码与最小权限账户,避免使用 root 远程连接;仅在内网开放 3306(如必须)
    • 执行 mysql_secure_installation,清理匿名用户与测试库
  • 备份与恢复:
    • 定期备份代码、.env、数据库与存储(含队列、缓存快照);异地/多副本保存,定期演练恢复流程
  • 日志与监控:
    • 启用并轮转 Laravel 与 Web/PHP 日志,集中到安全信息与审计平台
    • 部署 fail2ban 监控 SSH/面板等暴力登录;结合应用性能与安全监控(如异常登录、异常请求、队列堆积告警)

0