Laravel项目如何在Linux上进行安全加固
导读:Laravel项目在Linux上的安全加固清单 一 系统与网络加固 保持系统与软件为最新安全版本:持续更新 Linux 发行版、PHP、Web 服务器(Nginx/Apache)、数据库 等,及时修补漏洞。 最小化暴露面:仅开放必要端口(...
Laravel项目在Linux上的安全加固清单
一 系统与网络加固
- 保持系统与软件为最新安全版本:持续更新 Linux 发行版、PHP、Web 服务器(Nginx/Apache)、数据库 等,及时修补漏洞。
- 最小化暴露面:仅开放必要端口(如 80/443),使用 firewalld/ufw/iptables 限制入站来源与端口。
- 强化 SSH:禁用 root 登录、改用 SSH 密钥 登录、可更改默认端口、限制可登录用户。
- 禁用不必要的服务与内核模块,减少攻击面。
- 数据库安全:为数据库设置强密码、限制数据库账号最小权限、禁止远程 root 登录(如非必要)。
二 Web 服务器与 PHP 配置
- 启用并正确配置虚拟主机,隐藏版本信息;在 Nginx/Apache 添加安全响应头:
- X-Frame-Options: DENY/SAMEORIGIN
- X-XSS-Protection: 1; mode=block
- X-Content-Type-Options: nosniff
- 建议启用 Content-Security-Policy(CSP) 降低 XSS 风险。
- PHP 安全:
- 仅启用必要扩展(如 BCMath、Ctype、Fileinfo、JSON、Mbstring、OpenSSL、PDO、Tokenizer、XML)。
- 关闭错误显示(生产环境),仅记录到日志;设置合适的 open_basedir(如需要)。
- 文件权限与属主:Laravel 目录建议 storage、bootstrap/cache 可写,其余只读;运行用户与 Web 服务用户(如 www-data) 一致,避免 777。
三 Laravel 应用层安全
- 使用 APP_KEY 并妥善保管;将 APP_URL 配置为 HTTPS。
- 强制 HTTPS(中间件或 Web 服务器 301 跳转),确保所有通信加密。
- 表单与接口启用 CSRF 保护;对所有用户输入进行严格验证与过滤。
- 使用 Eloquent/查询构造器 防止 SQL 注入;在 Blade 中正确转义输出降低 XSS。
- 会话安全:设置 secure、httpOnly、sameSite 等 Cookie 属性,合理超时。
- 文件上传:限制类型/大小,存储到非 Web 可访问目录,必要时对文件进行内容校验与隔离执行。
- 依赖安全:定期执行 composer update,使用 Dependabot/Renovate 自动升级;用 enlightn/security-checker 扫描依赖漏洞。
- 请求频率限制:对登录、注册、找回密码等接口启用 限流 抵御暴力破解与滥用。
四 数据安全与备份恢复
- 敏感信息放入 .env,确保 .env 不纳入版本控制;为密钥、数据库凭证设置严格文件权限。
- 数据库安全:采用强口令、最小权限账户;定期更换密码并审计账号权限。
- 备份策略:定期备份代码、.env、附件存储、数据库;异地/离线保存,定期恢复演练验证可用性。
- 日志与监控:启用 Laravel 日志 与访问日志,集中到 syslog/ELK;结合 Nagios/Zabbix 等监控异常流量、登录失败、磁盘与队列积压。
五 快速实施命令示例
- Debian/Ubuntu(UFW + SSH 加固)
sudo apt update & & sudo apt full-upgrade -y sudo ufw allow 22,80,443/tcp sudo ufw enable sudo sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config sudo systemctl restart ssh - RHEL/CentOS(firewalld + SSH 加固)
sudo dnf update -y sudo firewall-cmd --permanent --add-service=http --add-service=https sudo firewall-cmd --permanent --remove-service=ssh sudo firewall-cmd --permanent --add-port=2222/tcp sudo firewall-cmd --reload sudo sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config sudo systemctl restart sshd - Laravel 安全基线(示例)
php artisan key:generate php artisan config:cache php artisan route:cache composer install --optimize-autoloader --no-dev ./vendor/bin/security-checker security:check - Nginx 安全响应头示例
add_header X-Frame-Options "DENY"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; "; - 文件权限建议
chown -R www-data:www-data /var/www/laravel find /var/www/laravel -type f -exec chmod 644 { } \; find /var/www/laravel -type d -exec chmod 755 { } \; chmod -R 775 /var/www/laravel/storage /var/www/laravel/bootstrap/cache chmod 600 /var/www/laravel/.env
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Laravel项目如何在Linux上进行安全加固
本文地址: https://pptw.com/jishu/755111.html
