先关掉不必要的暴露面
NoSQL 安全基线从三件事开始:服务只监听内网地址、开启认证、给应用分配最小权限账号。再补传输加密、审计日志、备份加密与补丁管理。自建数据库监听所有地址又没有认证,是被扫描后植入挖矿或勒索的最常见起点。
四类基线项
| 网络 | 绑定内网地址,防火墙只放行应用网段;不要让实例监听全部网卡 |
|---|---|
| 账号 | 按应用与角色拆分账号,只授予需要的库、集合与操作;默认高权账号不直连业务 |
| 传输 | 开启 TLS,证书过期纳入监控;密码与 Token 走密钥管理而不是明文配置 |
| 审计 | 开启审计日志并配置保留周期;权限变更、账号创建这类操作必须留痕 |
配置片段
配置片段
# mongod.conf 关键项
security:
authorization: enabled
net:
bindIp: 127.0.0.1,10.0.0.12
tls:
mode: requireTLS
# Elasticsearch:启用安全模块
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
# Redis ACL:为报表应用创建只读账号
ACL SETUSER report on >StrongPass ~report:* +get +mget
ACL LIST为什么先把监听地址改掉
认证配置需要逐个系统调通,见效最慢;而监听地址与防火墙规则改一条就能立刻切断外部扫描面。先做网络收敛,再逐步开启认证与 TLS,既能马上降低风险,也不会因为一次改动太多导致业务中断。
落地检查顺序
- 确认监听地址与防火墙规则,先切断公网可达
- 为每个应用创建独立账号并验证权限边界
- 开启认证,把管理员口令换成密钥管理中的强凭据
- 开启 TLS 并确认客户端连接串已带证书参数
- 打开审计日志,确认权限变更与慢操作能追溯到账号
备份文件同样包含敏感数据:备份介质要加密、访问权限要收紧,恢复演练放在隔离环境里做,避免演练本身造成泄露。
开启认证前先确认客户端连接串已经带上凭据与证书参数再重启服务,否则表现为服务一重启业务侧就集中报连接失败。