Debian上LNMP安全如何保障
小樊
45
2025-12-10 20:27:04
Debian 上 LNMP 安全加固清单
一 基础系统与账户安全
- 保持系统与软件为最新安全补丁:执行sudo apt update && sudo apt upgrade,并启用自动安全更新(如 unattended-upgrades)。
- 最小权限与专用账户:创建非 root运维账户并加入sudo组,日常以该账户操作;禁用 root 远程登录。
- 强化密码策略:安装并配置libpam-pwquality,设置长度、复杂度与历史限制。
- 精简自启与暴露面:用systemctl list-units --type service --state running排查,关闭不必要的服务与端口。
- 文件与目录权限:网站根目录建议目录755、文件644;上传目录禁止执行;限制敏感文件(如 .env、.git)访问。
- 日志与审计:集中收集与定期审计**/var/log/,必要时启用auditd**记录关键文件与命令。
二 网络与 SSH 防护
- 边界防火墙:使用ufw仅放行必要流量,推荐仅开放22/80/443;如数据库仅内网访问,限制3306来源 IP。
- 加固 SSH:更改默认端口、禁用 root 登录、禁用密码登录仅用SSH 密钥、限制失败重试与空闲超时。
- 内网服务隔离:数据库(如 3306)、缓存等仅监听127.0.0.1或内网接口,避免公网直连。
- 端口与进程最小化:避免将PHP-FPM 9000等管理端口对公网开放,优先使用Unix Socket并限定权限。
三 Nginx 与 PHP 安全配置
- 隐藏版本信息:在 Nginx 配置中关闭server_tokens。
- 强制 HTTPS:将 HTTP→HTTPS 301 重定向,仅开放 443/ssl。
- SSL/TLS 最佳实践:使用Let’s Encrypt证书(Certbot),启用ECDHE套件、开启HSTS,并使用强DH 参数。
- 安全 Headers:配置X-Frame-Options DENY/SAMEORIGIN、X-Content-Type-Options nosniff、X-XSS-Protection “1; mode=block”、Referrer-Policy、Content-Security-Policy(按站点策略细化)。
- PHP 处理安全:在 Nginx 中仅允许特定后缀解析为 PHP,使用try_files防止非法访问;PHP 侧将cgi.fix_pathinfo=0,禁用危险函数(如 exec、shell_exec、passthru 等),并仅启用必要扩展。
- 资源与进程隔离:为 PHP-FPM 设置pm.max_children/pm.start_servers等资源上限,按站点拆分 pool,以www-data运行并细化目录权限。
四 数据库 MariaDB MySQL 安全
- 安装后执行mysql_secure_installation:设置强 root 密码、移除匿名用户、禁止 root 远程登录、删除测试库。
- 账户与权限最小化:为每个应用创建最小权限专用账户,避免使用 root 远程连接;按业务划分库/表权限。
- 网络与加密:数据库仅监听内网;如跨主机访问,启用TLS/SSL加密连接。
- 备份与恢复演练:定期逻辑/物理备份,并验证可恢复性;保留多份异地副本。
五 监控 防护 与合规
- 入侵防护:部署Fail2ban监控 SSH/Nginx 暴力尝试并自动封禁;结合Logwatch进行日志汇总与告警。
- Web 应用防火墙:在 Nginx 前部署WAF(如 SafeLine)缓解SQL 注入、XSS、文件上传等常见攻击。
- 持续更新与基线巡检:定期更新 Nginx、PHP、MariaDB 与依赖组件;对sshd_config、nginx.conf、php.ini、mariadb.cnf进行变更审计与基线比对。
- 备份与演练:对代码、配置、证书、数据库实施自动化备份与定期恢复演练,确保 RPO/RTO 达标。