保护 Debian 上的 Laravel 应用,需要从 系统层、Web 服务层、Laravel 本身、数据库与权限、运维与监控 多个层面一起做。下面给你一套实战型安全清单,适合生产环境。
sudo apt update && sudo apt upgrade -y
编辑 SSH 配置:
sudo nano /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
sudo systemctl restart ssh
adduser deploy
usermod -aG sudo deploy
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
location ~ /\. {
deny all;
}
location ~ ^/(storage|bootstrap)/ {
deny all;
}
root /var/www/laravel/public;
index index.php;
server_tokens off;
.envcp .env.example .env
php artisan key:generate
✅ 禁止 .env 被访问
location ~ /\.env {
deny all;
}
✅ 权限设置:
chmod 600 .env
APP_DEBUG=false
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
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');
FLUSH PRIVILEGES;
CREATE DATABASE laravel;
CREATE USER 'laravel'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON laravel.* TO 'laravel'@'localhost';
$request->validate([
'email' => 'required|email',
]);
protected $fillable = ['name', 'email'];
// 或
protected $guarded = [];
composer update
composer audit
LOG_LEVEL=error
tail -f storage/logs/laravel.log
# 数据库
mysqldump -u laravel -p laravel > backup.sql
# 代码
tar -czf laravel-backup.tar.gz /var/www/laravel
| 项目 | 是否完成 |
|---|---|
| APP_DEBUG=false | ✅ |
| .env 不可访问 | ✅ |
| HTTPS | ✅ |
| 文件权限正确 | ✅ |
| 数据库专用用户 | ✅ |
| SSH 禁用 root | ✅ |
| 防火墙开启 | ✅ |
如果你愿意,我可以:
告诉我你的 Debian 版本 + Web 服务(Nginx/Apache)+ Laravel 版本 即可。