# 安全扫描与常见漏洞防护

URL: https://caijiao.org/docker/security/scan-and-hardening
Source: docs/docker/security/scan-and-hardening.md
Description: 本章节介绍 Docker 镜像安全扫描方法和常见漏洞防护策略，包括使用扫描工具、遵循安全最佳实践、定期更新基础镜像和依赖，保障容器运行安全与稳定。

Docker 镜像和容器可能存在安全漏洞，定期扫描和采取防护措施能够降低攻击风险，保证应用安全。

## 1. 镜像安全扫描

- **Docker Scan（官方工具）**：

```bash
docker scan myimage:latest
````

- 检测操作系统及应用依赖漏洞，提供修复建议

- **Trivy（第三方工具）**：

```bash
trivy image myimage:latest
```

- 支持漏洞扫描和配置安全检查

- **CI/CD 集成扫描**：

  - 在 GitHub Actions、GitLab CI 或 Jenkins 中自动扫描镜像

## 2. 常见漏洞类型

- **操作系统漏洞**：基础镜像中的已知安全问题
- **应用依赖漏洞**：第三方库或包存在漏洞
- **未最小化镜像**：包含不必要的工具或文件增加攻击面
- **容器权限过高**：以 root 用户运行或挂载敏感目录
- **暴露敏感信息**：环境变量或配置文件未加密

## 3. 漏洞防护最佳实践

- **最小化镜像**：

  - 使用 Alpine、Debian Slim 等轻量基础镜像
  - 多阶段构建剔除构建工具和临时文件

- **非 root 用户运行**：

```dockerfile
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
```

- **及时更新镜像与依赖**：

```bash
docker pull nginx:latest
docker scan myimage:latest
```

- **敏感信息保护**：

  - 使用 Docker Secret 或加密环境变量
  - 避免将密码写入 Dockerfile

- **容器配置安全**：

  - 限制权限和能力（capabilities）
  - 只读根文件系统
  - 限制资源使用

## 4. 定期审计与监控

- 结合日志和监控系统（Prometheus、ELK）观察异常行为
- 定期扫描和更新镜像
- 建立安全策略和漏洞修复流程

---

通过定期扫描 Docker 镜像并采取漏洞防护措施，可以有效降低安全风险，确保容器化应用在生产环境中的安全和稳定运行。
