本文目录导读:

针对 PHP 容器(镜像)的安全扫描,通常关注 镜像层漏洞、依赖库风险 以及 运行时配置弱项,以下是几种主流的扫描工具和实践方法:
镜像层漏洞扫描(最常用)
Trivy(推荐,轻量且全面)
# 安装 Trivy # macOS brew install trivy # Linux wget https://github.com/aquasecurity/trivy/releases/download/v0.50.1/trivy_0.50.1_Linux-64bit.deb dpkg -i trivy_0.50.1_Linux-64bit.deb # 扫描 PHP 容器镜像 trivy image your-php-image:latest # 扫描具体 PHP 版本的基础镜像 trivy image php:8.2-apache # 输出为 JSON 格式便于集成 trivy image --format json --output results.json php:8.2-fpm
Docker Scout(官方工具)
# 登录 Docker Hub docker scout login # 分析镜像 docker scout quickview php:8.2-fpm # 获取详细报告 docker scout recommendations php:8.2-fpm
Grype(另一个开源选项)
# 安装 curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin # 扫描 grype php:8.2-fpm
Composer 依赖扫描
PHP 容器内的 composer.lock 文件包含所有依赖版本,可针对性扫描:
使用 Trivy 结合 FS 扫描
# 扫描构建好的容器内 /var/www/html 目录 trivy fs --severity HIGH,CRITICAL /path/to/your/php/app # 或者扫描正在运行的容器 docker cp running-container:/var/www/html/composer.lock ./composer.lock trivy fs ./composer.lock
使用专门工具:Local PHP Security Checker
# 运行容器内检查 docker exec your-php-container \ php /usr/local/bin/local-php-security-checker /var/www/html/composer.lock # 或直接在 CI 中 curl -sS https://get.symfony.com/cli/installer | bash symfony check:security /path/to/app
Dockerfile 静态分析(配置风险)
Hadolint(Dockerfile 最佳实践检查)
# 安装 docker pull hadolint/hadolint # 分析你的 Dockerfile docker run --rm -i hadolint/hadolint < Dockerfile # 示例输出会指出问题: # DL3008: Pin versions in apt get install # DL3045: Use COPY instead of ADD for files
检查配置弱项
- 不要使用 root 运行 PHP-FPM:应在 Dockerfile 中添加
USER www-data - 避免暴露调试端口:确保 Xdebug 等仅在开发环境启用
- 限制环境变量泄露:使用
.dockerignore排除敏感文件
运行时扫描(运行中容器)
Docker Bench Security(通用安全基准)
# 扫描运行中的所有容器 docker run --it --net host --pid host --userns host \ --cap-add audit_control \ -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \ -v /etc:/etc:ro \ -v /usr/bin/docker-containerd:/usr/bin/docker-containerd:ro \ -v /usr/bin/docker-runc:/usr/bin/docker-runc:ro \ -v /usr/lib/systemd:/usr/lib/systemd:ro \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ docker/docker-bench-security
Falco(运行时行为监控)
# 监控 PHP 容器异常行为 docker run --privileged -d --name falco \ -v /var/run/docker.sock:/host/var/run/docker.sock \ -v /proc:/host/proc:ro \ -v /boot:/host/boot:ro \ -v /lib/modules:/host/lib/modules:ro \ -v /usr:/host/usr:ro \ -v /etc:/host/etc:ro \ falcosecurity/falco
关注规则:PHP 进程意外执行系统命令、写 /etc/passwd 等
CI/CD 集成建议
在 GitLab CI / GitHub Actions 中加入扫描步骤:
# GitHub Actions 示例
- name: Scan PHP image with Trivy
uses: aquasecurity/trivy-action@master
with:
image-ref: 'your-php-image:latest'
format: 'sarif'
output: 'trivy-results.sarif'
severity: 'CRITICAL,HIGH'
基准安全配置(PHP 容器专用)
| 检查项 | 验证方法 |
|---|---|
| 禁用危险函数 | docker exec container php -r "echo ini_get('disable_functions');" |
| 文件权限 | docker exec container ls -la /var/www/html 确保不是 777 |
| 开放端口 | docker port container 只暴露 80/443 |
| 挂载卷 | 检查是否挂载了 Docker socket(高危) |
实战建议
- 分层扫描:先扫基础镜像(
php:8.2-fpm),再扫你的应用层镜像 - 建立安全基线:记录首次扫描的 CVE 数量,持续跟踪变化
- 自动修复:配合
docker build --squash和自动更新依赖 - 定期扫描:即使不更新代码,基础镜像的 CVE 数据库也会更新
需要更具体的建议吗?比如针对特定 PHP 框架(Laravel/Symfony)的安全扫描配置,我可以进一步说明。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播