插件窝 干货文章 Laravel如何在Linux实现安全防护

Laravel如何在Linux实现安全防护

Laravel 安全 sudo 配置 206    来源:    2025-05-10

Laravel 在 Linux 环境下的安全防护指南

一、系统层面安全配置

1. 服务器基础安全

  • 保持系统更新:定期执行 sudo apt update && sudo apt upgrade (Ubuntu/Debian) 或 sudo yum update (CentOS/RHEL)
  • 禁用 root 远程登录bash sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config sudo systemctl restart sshd
  • 使用 SSH 密钥认证:禁用密码登录,仅允许密钥认证
  • 配置防火墙bash sudo ufw allow 80 sudo ufw allow 443 sudo ufw allow 22 # 仅限管理IP sudo ufw enable

2. 文件权限设置

  • Laravel 目录推荐权限: bash sudo chown -R www-data:www-data /path/to/laravel sudo find /path/to/laravel -type f -exec chmod 644 {} \; sudo find /path/to/laravel -type d -exec chmod 755 {} \; sudo chmod -R 775 storage/ sudo chmod -R 775 bootstrap/cache/

二、Laravel 应用安全配置

1. 基础安全设置

  • 生产环境配置

    cp .env.example .env
    php artisan key:generate
    

    确保 .envAPP_ENV=productionAPP_DEBUG=false

  • 敏感信息保护

    • 永远不要将 .env 文件提交到版本控制
    • 使用 php artisan config:cache 后确保 .env 权限为 600

2. HTTPS 强制配置

  • App\Providers\AppServiceProvider.phpboot 方法中添加: php if(config('app.env') === 'production') { \URL::forceScheme('https'); }

3. CSRF 保护

  • Laravel 默认启用 CSRF 保护,确保表单中包含: php @csrf

三、数据库安全

1. MySQL 安全配置

  • 为 Laravel 应用创建专用用户: sql CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY '强密码'; GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'localhost'; FLUSH PRIVILEGES;

2. 防止 SQL 注入

  • 使用 Laravel 查询构建器或 Eloquent ORM,它们自动提供参数绑定

四、Web 服务器安全配置

1. Nginx 安全配置

server {
    # 禁用不必要的 HTTP 方法
    if ($request_method !~ ^(GET|HEAD|POST|PUT|DELETE)$ ) {
        return 444;
    }

    # 禁止访问隐藏文件
    location ~ /\. {
        deny all;
    }

    # 禁止访问敏感文件
    location ~* ^/(\.env|composer\.lock|composer\.json|package\.json|webpack\.mix\.js|phpunit\.xml|readme\.md|LICENSE|\.gitignore)$ {
        deny all;
    }
}

2. PHP-FPM 安全配置

; 在 php.ini 中设置
expose_php = Off
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
cgi.fix_pathinfo=0

五、定期维护与监控

1. 日志监控

  • 设置日志轮转: bash sudo nano /etc/logrotate.d/laravel 内容: /path/to/laravel/storage/logs/*.log { daily missingok rotate 14 compress delaycompress notifempty create 640 www-data www-data sharedscripts postrotate kill -USR1 `cat /run/php/php7.4-fpm.pid 2>/dev/null` 2>/dev/null || true endscript }

2. 安全扫描工具

  • 使用 Laravel 安全包: bash composer require beyondcode/laravel-self-diagnosis --dev
  • 使用 Linux 安全扫描工具: bash sudo apt install lynis sudo lynis audit system

六、备份策略

1. 数据库备份

# 每天备份数据库
mysqldump -u laravel_user -p laravel_db > /backups/laravel_db_$(date +\%Y\%m\%d).sql

2. 代码备份

# 使用 tar 打包项目
tar -czvf /backups/laravel_app_$(date +\%Y\%m\%d).tar.gz /path/to/laravel

通过以上多层次的防护措施,可以显著提高 Laravel 应用在 Linux 服务器上的安全性。记得定期审查和更新安全配置,以应对新出现的安全威胁。