0
0
Lập trình
Thaycacac
Thaycacac thaycacac

7 Mẹo Tăng Cường An Ninh Docker Trên Máy Chủ Sản Xuất

Đăng vào 6 tháng trước

• 4 phút đọc

Giới thiệu

Docker là công cụ chạy container tiêu chuẩn cho các dịch vụ vi mô hiện đại, nhưng sự tiện lợi của nó có thể ẩn chứa những lỗ hổng về bảo mật. Là một lãnh đạo DevOps, bạn cần một danh sách kiểm tra có thể lặp lại để biến một máy chủ Docker bình thường thành một nền tảng sản xuất cứng cáp. Dưới đây là bảy bước thực tiễn mà bạn có thể áp dụng ngay hôm nay, mỗi bước đều được hỗ trợ bởi các đoạn cấu hình cụ thể.

1. Chỉ Tải Các Ảnh Cơ Sở Được Xác Minh

Bắt đầu với các ảnh chính thức, được kýtối thiểu. Alpine, Distroless hoặc Ubuntu-Slim giúp giảm bề mặt tấn công bằng cách loại bỏ các nhị phân không cần thiết.

  • Sử dụng huy hiệu chính thức của Docker Hub như một bộ lọc đầu tiên.
  • Kích hoạt Docker Content Trust (DCT) để đảm bảo chữ ký ảnh.
bash Copy
# Kích hoạt Docker Content Trust toàn cầu
export DOCKER_CONTENT_TRUST=1
# Tải một ảnh Alpine đã ký
docker pull alpine:3.18

2. Chạy Containers Với Người Dùng Không Phải Là Root

Mặc định, containers chạy với quyền root bên trong không gian tên, điều này có thể được nâng cấp lên máy chủ nếu xảy ra sự cố. Định nghĩa một người dùng không phải là root trong Dockerfile và áp dụng nó tại thời điểm chạy.

dockerfile Copy
FROM alpine:3.18
# Tạo một người dùng có quyền hạn thấp
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
bash Copy
# Ghi đè bất kỳ chỉ thị USER nào không mong muốn
docker run --user 1000:1000 myimage

3. Kích Hoạt Không Gian Tên Người Dùng

Không gian tên người dùng ánh xạ UID gốc của container tới một UID không có quyền trên máy chủ, ngăn chặn quyền root thực sự bị rò rỉ.

json Copy
{
  "userns-remap": "default"
}

Lưu đoạn mã này thành /etc/docker/daemon.json và khởi động lại daemon:

bash Copy
systemctl restart docker

4. Áp Dụng Hồ Sơ Seccomp và AppArmor

Các mô-đun bảo mật Linux có thể hạn chế các syscalls và quyền truy cập tệp. Docker đi kèm với một hồ sơ seccomp mặc định, nhưng bạn có thể thắt chặt nó hơn nữa cho khối lượng công việc của mình.

bash Copy
# Chạy với hồ sơ seccomp tùy chỉnh
docker run --security-opt seccomp=/etc/docker/seccomp-profile.json myimage

Đối với AppArmor, tạo một hồ sơ dưới /etc/apparmor.d/docker-myapp và tải nó:

bash Copy
apparmor_parser -r /etc/apparmor.d/docker-myapp

5. Gắn Kết Hệ Thống Tệp Dưới Dạng Chỉ Đọc

Nếu container không cần ghi vào hệ thống tệp của chính nó, hãy gắn nó ở chế độ chỉ đọc và cung cấp các volume có thể ghi cho nhật ký hoặc dữ liệu tạm thời.

bash Copy
docker run \
  --read-only \
  -v /var/log/myapp:/var/log/myapp:rw \
  myimage

6. Giới Hạn CPU, Bộ Nhớ và Tài Nguyên PID

Quy định tài nguyên ngăn chặn một container đơn lẻ làm cho máy chủ bị thiếu hụt. Sử dụng cờ --cpus, --memory, và --pids-limit của Docker.

bash Copy
docker run \
  --cpus="1.5" \
  --memory="512m" \
  --pids-limit=100 \
  myimage

7. Quét Ảnh và Giữ Cập Nhật Engine

Tích hợp các công cụ quét lỗ hổng (ví dụ: Trivy, Clair) vào quy trình CI của bạn. Lên lịch quét hàng đêm cho bất kỳ ảnh nào nằm trong registry riêng của bạn.

bash Copy
trivy image myregistry.com/project/myimage:latest

Ngoài ra, tự động hóa việc nâng cấp Docker Engine để nhận các bản vá bảo mật mới nhất:

bash Copy
apt-get update && apt-get install -y docker-ce docker-ce-cli

Thêm: Quản Lý Bí Mật An Toàn

Không bao giờ nhúng mật khẩu hoặc khóa API vào ảnh. Sử dụng bí mật Docker (Swarm) hoặc các kho bên ngoài như HashiCorp Vault. Ví dụ với Docker Swarm:

bash Copy
# Tạo một bí mật
printf "super_secret" | docker secret create db_password -
# Sử dụng nó trong một dịch vụ
docker service create \
  --name db \
  --secret db_password \
  mydbimage

Giám Sát và Kiểm Toán

Kích hoạt nhật ký kiểm toán tích hợp của Docker và chuyển tiếp chúng đến một SIEM trung tâm. Một bổ sung tối thiểu cho daemon.json:

json Copy
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "5"
  }
}

Thu thập các nhật ký này với Filebeat hoặc Fluent Bit để nhận cảnh báo theo thời gian thực.

Kết luận

Tăng cường bảo mật Docker không phải là một danh sách kiểm tra một lần; đó là thói quen xây dựng các lớp bảo vệ - hình ảnh đáng tin cậy, thực thi không phải là root, cách ly không gian tên, lọc syscall, hệ thống tệp chỉ đọc, giới hạn tài nguyên, quét liên tục và ghi nhật ký cẩn thận. Áp dụng bảy bước này theo cách lặp đi lặp lại, bạn sẽ giảm thiểu đáng kể nguy cơ bị xâm phạm liên quan đến container.

Để tìm hiểu sâu hơn về các thực tiễn bảo mật container, hãy xem các tài nguyên trên lacidaweb.com.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào