温馨提示×

debian如何保护laravel

小樊
48
2026-08-17 00:37:09
栏目: 智能运维

在 Debian 上保护 Laravel 应用,通常从 系统层、Web 层、Laravel 层、数据库层、运维层 几个维度来做。下面给你一套实战型安全清单,适合生产环境。


一、系统层安全(Debian)

1. 系统更新

sudo apt update && sudo apt upgrade -y

2. 使用非 root 用户运行

adduser deploy
usermod -aG sudo deploy

3. 禁用 root SSH 登录

编辑:

sudo nano /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
sudo systemctl restart ssh

✅ 使用 SSH Key 登录


二、Web 层安全(Nginx / Apache)

1. Nginx 推荐配置(重点)

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    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;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 禁止访问敏感文件
    location ~ /\.(env|git) {
        deny all;
    }

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

2. 禁止访问 .env

这是最重要的一条

location ~ /\.env {
    deny all;
}

或系统级:

chmod 600 .env

三、Laravel 自身安全

1. 生产环境配置

APP_ENV=production
APP_DEBUG=false
php artisan config:cache
php artisan route:cache

2. 使用 HTTPS

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx

Laravel 中强制 HTTPS:

\URL::forceScheme('https');

3. 关闭不必要服务

php artisan telescope:clear   # 如果用 Telescope
php artisan cache:clear

四、权限安全(非常重要)

1. 正确目录权限

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

✅ 推荐(更安全):

sudo setfacl -R -m u:www-data:rwX storage bootstrap/cache

五、数据库安全

1. MySQL / MariaDB

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

2. 禁止远程 root

bind-address = 127.0.0.1

六、Laravel 代码层安全

1. 防 SQL 注入

✅ 使用 Eloquent / Query Builder
❌ 避免 raw SQL


2. 防 XSS

Blade 默认转义:

{{ $user->name }}

❌ 不要用:

{!! $user->input !!}

3. 防 CSRF

<form method="POST">
    @csrf
</form>

4. 防文件上传漏洞

$request->validate([
    'file' => 'file|mimes:jpg,png,pdf|max:2048',
]);

存储到 storage/app 而不是 public


七、防火墙 & 限流

1. UFW

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable

2. Laravel 限流

Route::middleware(['throttle:60,1'])->group(function () {
    //
});

八、日志 & 监控

sudo apt install fail2ban

Laravel 日志:

LOG_CHANNEL=stack

九、常见致命错误(不要犯)

.env 可访问
APP_DEBUG=true 在生产环境
storage/ 可浏览器访问
❌ 使用 root 运行 PHP-FPM
❌ 数据库用 root 连接 Laravel


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

✅ Debian 更新
✅ SSH Key + 禁用 root
✅ Nginx 禁止 .env
✅ HTTPS
APP_DEBUG=false
✅ 正确文件权限
✅ 数据库最小权限
✅ 防火墙 + fail2ban


如果你愿意,我可以:

  • ✅ 给你 一份生产级 Laravel + Debian 部署模板
  • ✅ 帮你 审计现有服务器安全
  • ✅ 按 API / 后台 / 高并发 场景定制方案

你现在用的是 Nginx 还是 Apache?PHP 几版本?

0