温馨提示×

怎样保护Debian的Laravel

小樊
34
2026-07-06 07:08:24
栏目: 智能运维

保护 Debian 上的 Laravel 应用,需要从 系统层、Web 服务层、Laravel 本身、数据库与权限、运维与监控 多个层面一起做。下面给你一套实战型安全清单,适合生产环境。


一、系统层(Debian 安全)

1. 系统更新

sudo apt update && sudo apt upgrade -y

2. 禁用 root 远程登录

编辑 SSH 配置:

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

3. 使用普通用户 + sudo

adduser deploy
usermod -aG sudo deploy

4. 配置防火墙(UFW)

sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

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

以 Nginx 为例

1. 禁止访问敏感目录

location ~ /\. {
    deny all;
}

location ~ ^/(storage|bootstrap)/ {
    deny all;
}

2. 只允许 public 目录入口

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

3. 关闭 Nginx 版本显示

server_tokens off;

三、Laravel 应用安全(重点)

1. 正确设置 .env

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

禁止 .env 被访问

location ~ /\.env {
    deny all;
}

✅ 权限设置:

chmod 600 .env

2. APP_DEBUG 必须为 false

APP_DEBUG=false

3. 文件与目录权限(非常重要)

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


4. 使用 HTTPS(SSL)

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

四、数据库安全

1. 禁止远程 root 登录

DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');
FLUSH PRIVILEGES;

2. 为 Laravel 创建专用用户

CREATE DATABASE laravel;
CREATE USER 'laravel'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON laravel.* TO 'laravel'@'localhost';

五、Laravel 内部安全实践

1. 使用 Laravel 内置安全机制

  • CSRF 保护 ✅
  • XSS 自动转义 ✅
  • SQL 注入(Eloquent ORM)✅

2. 验证所有输入

$request->validate([
    'email' => 'required|email',
]);

3. 防止批量赋值漏洞

protected $fillable = ['name', 'email'];
// 或
protected $guarded = [];

六、Composer & 依赖安全

1. 定期更新依赖

composer update

2. 检查漏洞

composer audit

七、日志与监控

1. 日志不要记录敏感信息

LOG_LEVEL=error

2. 定期查看日志

tail -f storage/logs/laravel.log

八、备份策略

# 数据库
mysqldump -u laravel -p laravel > backup.sql

# 代码
tar -czf laravel-backup.tar.gz /var/www/laravel

九、进阶安全(可选但推荐)

  • ✅ Fail2ban(防暴力破解)
  • ✅ Laravel Horizon(队列安全)
  • ✅ Redis 设置密码
  • ✅ 使用 Cloudflare / WAF
  • ✅ 定期安全扫描(lynis)

十、安全自检清单 ✅

项目 是否完成
APP_DEBUG=false
.env 不可访问
HTTPS
文件权限正确
数据库专用用户
SSH 禁用 root
防火墙开启

如果你愿意,我可以:

  • ✅ 帮你 直接检查现有服务器配置
  • ✅ 给你一份 生产环境 Laravel 部署完整脚本
  • ✅ 针对 API / 后台 / 高并发 场景单独优化

告诉我你的 Debian 版本 + Web 服务(Nginx/Apache)+ Laravel 版本 即可。

0