在Linux上配置容器安全工具需要从运行时防护、镜像扫描、网络隔离、审计监控等多个层面进行。以下是分步骤的详细方案,涵盖主流工具和最佳实践:
启用Linux安全模块
# 1.1 确保SELinux或AppArmor启用
sudo setenforce 1 # SELinux强制模式
sudo aa-enforce /etc/apparmor.d/docker # AppArmor策略
# 1.2 安装必要内核模块
sudo modprobe overlay # OverlayFS支持
sudo modprobe br_netfilter # 网络过滤
限制容器权限
# 1.3 修改Docker守护进程配置(/etc/docker/daemon.json)
{
"userns-remap": "default", # 用户命名空间隔离
"no-new-privileges": true, # 禁止提权
"icc": false # 禁用容器间网络通信
}
# 2.1.1 安装Falco
curl -s https://falco.org/repo/falcosecurity-3672BA8F.asc | sudo apt-key add -
echo "deb https://download.falco.org/packages/deb stable main" | sudo tee /etc/apt/sources.list.d/falco.list
sudo apt update && sudo apt install -y falco
# 2.1.2 自定义规则(编辑/etc/falco/falco_rules.yaml)
- rule: "Unexpected Privileged Container"
desc: "Detect privileged containers"
condition: "container and privileged=true"
output: "Privileged container launched (user=%user.name container=%container.id)"
# 2.1.3 启动服务
sudo systemctl enable --now falco
# 2.2.1 安装gVisor
(
set -e
ARCH=$(uname -m)
wget https://storage.googleapis.com/gvisor/releases/release/latest/${ARCH}/runsc
sudo mv runsc /usr/local/bin/
sudo chmod +x /usr/local/bin/runsc
sudo /usr/local/bin/runsc install
)
# 2.2.2 使用gVisor运行容器
docker run --runtime=runsc -d nginx
# 3.1.1 安装Trivy
sudo apt-get install -y wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list
sudo apt-get update && sudo apt-get install trivy
# 3.1.2 扫描镜像
trivy image --severity CRITICAL,HIGH nginx:latest
# 3.2.1 使用Clair via Quay
docker-compose -f https://raw.githubusercontent.com/quay/clair/main/docker-compose.yaml up -d
# 4.1.1 安装Cilium
cilium install --helm-set bpf.masquerade=false
cilium status
# 4.1.2 定义网络策略示例(deny-all.yaml)
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: deny-all
spec:
endpointSelector: {}
ingress: []
# 4.2.1 安装WireGuard
sudo apt install -y wireguard-tools
# 4.2.2 配置容器网络使用WG
docker network create --opt encrypted=1 wg-net
# 5.1.1 监控容器相关操作
echo "-w /var/lib/docker -p wa -k docker" | sudo tee -a /etc/audit/rules.d/docker.rules
sudo service auditd restart
# 5.2.1 评估Docker配置
oscap-docker eval --report scan.html --profile xccdf_org.ssgproject.content_profile_docker \
$(docker inspect --format='{{.Id}}' nginx)
bash
docker run --security-opt seccomp=/path/to/profile.json nginx
bash
sudo apt install -y bpfcc-tools
sudo execsnoop-bpfcc # 监控容器进程创建
# GitHub Actions示例
jobs:
container_scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Scan image with Trivy
run: |
docker pull myapp:latest
trivy image --exit-code 1 --severity CRITICAL myapp:latest
工具 | 用途 | 关键优势 |
---|---|---|
Falco | 运行时入侵检测 | 实时内核级监控 |
gVisor | 沙箱隔离 | 非Linux内核攻击面减少 |
Trivy | 镜像漏洞扫描 | 轻量级、快速扫描 |
Cilium | 网络策略+可视化 | eBPF高性能过滤 |
通过以上组合,可构建覆盖预防-检测-响应全生命周期的容器安全体系。实际部署时需根据业务需求调整策略粒度。