# 服务器安全加固清单

> 适用于宝塔面板 + Nginx + Node.js 的单机部署场景。按顺序执行，每项都标注了宝塔面板中的操作路径。

## 一、SSH 与登录入口

- [ ] **改掉 SSH 默认端口 22** — 宝塔「安全」→ SSH 管理 → 端口，改为 20000 以上高位端口
- [ ] **禁用 root 密码直登**，改用密钥登录 — 宝塔「安全」→ SSH 管理 → 密钥登录
- [ ] **开启登录失败封禁** — 宝塔「安全」→ 添加防爆破规则，5 次失败封 IP 1 小时
- [ ] **确认面板端口不是默认的 8888** — 宝塔「面板设置」→ 面板端口

## 二、防火墙

- [ ] **只放行必要端口**：22（或自定义 SSH 端口）、80、443、面板端口
- [ ] **数据库端口一律不对外开放** — MySQL 3306 / Redis 6379 只监听 127.0.0.1
- [ ] **确认云厂商安全组与系统防火墙策略一致**，避免只改了一边

## 三、权限收敛

- [ ] **站点目录属主不要用 root**，建议单独建 www 用户
- [ ] **uploads 目录禁止执行权限**：`chmod -R 0644`，目录 `0755`
- [ ] **Nginx 配置中为上传目录显式 deny 脚本扩展名**（见 Nginx 模板）
- [ ] **数据库文件权限 0600**，仅服务进程可读写

## 四、应用层

- [ ] **后台强制 HTTPS**，Cookie 设置 `HttpOnly` + `SameSite=Lax`
- [ ] **登录接口限流**，同一 IP 连续失败锁定
- [ ] **所有写操作校验 CSRF Token**
- [ ] **上传文件类型白名单**，拒绝 php/jsp/asp 等可执行扩展名
- [ ] **默认密码首次登录必须修改**

## 五、日志与监控

- [ ] **Nginx 访问日志保留 30 天**，宝塔「网站」→ 日志
- [ ] **开启宝塔「监控」报表**，关注 CPU / 内存 / 磁盘突增
- [ ] **配置磁盘告警**，剩余低于 15% 时通知

## 六、备份

- [ ] **数据库每日自动备份**，保留 14 天（见配套脚本）
- [ ] **每月至少做一次异地备份**，不要把备份只放在同一台机器
- [ ] **定期演练恢复流程**，只备份不验证等于没有备份
