温馨提示×

怎么保护Debian的Laravel

小樊
41
2026-08-28 00:26:15
栏目: 智能运维

保护 Debian 上的 Laravel 应用,需要从 系统层、Web 服务层、Laravel 应用层、数据库、运维与监控 多个层面一起做。下面给你一套比较完整、实战向的安全加固方案。


一、系统层安全(Debian)

1. 更新系统

sudo apt update && sudo apt upgrade -y

2. 使用非 root 用户运行 Laravel

adduser deploy
usermod -aG www-data deploy

3. 配置 SSH

# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no

使用 SSH Key 登录,禁用密码登录。

4. 防火墙

apt install ufw
ufw allow 22
ufw allow 80
ufw allow 443
ufw enable

5. Fail2ban(防暴力破解)

apt install fail2ban

二、Web 服务安全(Nginx / Apache)

1. Nginx 推荐安全配置

server {
    listen 443 ssl;
    server_name example.com;

    root /var/www/laravel/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

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

    location ~ ^/(\.env|composer\.json|artisan) {
        deny all;
    }
}

2. PHP-FPM 安全

; /etc/php/8.2/fpm/php.ini
expose_php = Off
disable_functions = exec,passthru,shell_exec,system,proc_open

三、Laravel 应用层安全(重点)

1. .env 文件必须禁止访问 ✅

确保:

chmod 600 .env

并且 Nginx 已禁止访问 .env


2. APP_KEY 与加密

php artisan key:generate

不要提交 .env 到 Git。


3. 关闭调试模式(生产环境)

APP_ENV=production
APP_DEBUG=false

4. HTTPS(SSL / TLS)

  • 使用 Let’s Encrypt
apt install certbot python3-certbot-nginx
certbot --nginx

5. CSRF、XSS、SQL 注入

Laravel 已默认防护,但注意:

  • 所有表单必须加:
@csrf
  • 输出数据用:
{{ $value }}
  • 不用原生 SQL:
// ❌
DB::raw("SELECT * FROM users WHERE id = $id");

// ✅
DB::table('users')->where('id', $id)->get();

6. 权限控制

  • 使用 Gate / Policy
$this->authorize('view', $post);
  • 路由加中间件:
Route::middleware(['auth', 'can:admin'])->group(function () {});

四、数据库安全

1. MySQL / MariaDB

DROP USER 'root'@'%';
CREATE USER 'laravel'@'localhost' IDENTIFIED BY '强密码';
GRANT SELECT,INSERT,UPDATE,DELETE ON laravel.* TO 'laravel'@'localhost';

2. 不用 root 连接 Laravel

DB_USERNAME=laravel
DB_PASSWORD=***

五、文件与目录权限(非常重要)

Laravel 推荐权限

sudo chown -R www-data:www-data /var/www/laravel
sudo chmod -R 755 /var/www/laravel
sudo chmod -R 775 storage bootstrap/cache

禁止目录 777


六、Laravel 安全中间件 & 包

1. 强制 HTTPS

\Illuminate\Routing\Middleware\SubstituteBindings::class

或使用中间件:

if (!request()->secure()) {
    return redirect()->secure(request()->getRequestUri());
}

2. 安全 Headers

composer require beakerboy/blade-security-header

或手动 Nginx:

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";

七、备份与审计

1. 数据库备份

mysqldump -u laravel -p laravel > backup.sql

2. 日志

tail -f storage/logs/laravel.log

3. 审计包(可选)

composer require owen-it/laravel-auditing

八、Laravel 常见安全错误 ❌

错误 正确做法
.env 可访问 Nginx 禁止
APP_DEBUG=true 生产必须 false
777 权限 使用 www-data
使用 root 运行 普通用户
明文密码 bcrypt / Hash

九、安全清单(快速检查)

✅ Debian 更新
✅ SSH Key 登录
✅ HTTPS
.env 不可访问
✅ 关闭 debug
✅ 非 root 运行
✅ 数据库最小权限
✅ CSRF / XSS 防护
✅ 日志监控


如果你愿意,我可以根据你的 具体环境(Nginx / Apache、PHP 版本、Laravel 版本、是否公网)给你一份 定制化安全配置方案

0