CIS benchmark
CIS benchmark là gì tra Google thì thấy. Còn hiểu nhanh là nó là bộ quy chuẩn bảo mật cho đủ loại từ Cloud (AWS, Azure) đến OS như Linux, Ubuntu, Centos , Windows. Ví dụ, server của anh sử dụng centos thì thì CIS sẽ cung cấp cho anh một bản pdf ghi rõ những rule security cần phải làm cho OS của anh. Ví dụ filesystems thì phải làm sao, firewall config thế nào. Tóm lại là một list dài dằng dặc, có giời mới nhớ nổi
Các hệ thống hiện nay đều cần phải thỏa mãn tiêu chuẩn của CIS benchmark, nếu không phải thực hiện remediation.
Một số nền tảng cloud như AWS cũng đã tích hợp luôn CIS benchmark trong AWS Security Hub, tự động scan luôn infra để tạo Security Reports dựa trên CIS benchmark
Dựa vào reports, SRE team cần thực hiện remediation, được hiểu là quá trình sửa chữa, phục hồi, vá lỗ hổng bảo mật
Ví dụ về Security Reports

Nhiều hệ thống microservice ngày nay được deploy trên k8s , nên CIS cũng cung cấp bộ security benchmark cho k8s . Thật sự thì khi đọc bản benchmark này đảm bảo tẩu hỏa nhập ma vì có quá nhiều thông tin, mà nó hợp với những hệ thống k8s on-premise hơn do có nhiều security config phải thực hiện trên master và node, api-server. Aquasecurity có cung cấp một tool cho phép scan k8s cluster against CIS bench-mark cũng khá hay là kube-bench
Cài đặt cũng dễ dàng, cứ theo guide trên github là xong
$ kubectl apply -f job.yamljob.batch/kube-bench created$ kubectl get podsNAME READY STATUS RESTARTS AGEkube-bench-j76s9 0/1 ContainerCreating 0 3s
# Wait for a few seconds for the job to complete
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
kube-bench-j76s9 0/1 Completed 0 11s
# The results are held in the pod's logs
kubectl logs kube-bench-j76s9
[INFO] 1 Master Node Security Configuration
[INFO] 1.1 API Server
...
Nhìn chung CIS benchmark nhiều như vậy nhưng cũng không cần phải cố nhớ hết. Vì muốn nhớ được thì não phải to bằng quả dưa hấu hoặc phải chơi tool như bánh mỳ giúp trí nhớ của Doremon. Thực tế là công cụ scan hệ thống theo CIS bench-mark rất nhiều Ví dụ như k8s thì kube-bench, Linux là open-scap scanner, còn nền tàng cloud như AWS thì tích hợp sẵn trong Security Hub, dùng cũng ok
Docker image security
Mô hình deploy application lên server truyền thống nay dần dần chuyển thành đóng gói ứng dụng thành docker image rồi deploy lên container orchestration như ECS, K8s, dẫn tới các nguy cơ hacker tấn công qua docker container. Ví dụ một số docker image cho phép run dưới quyền root hacker có thể lợi dụng để xâm nhập vào hệ thống host
Ví dụ Docker file vô tình để user run as root thì dễ security leak, báo đài nói suốt rồi. Nhưng cụ thể nó như thế nào, hãy xem ví dụ cụ thể sau
Giả sử trên host system, bạn có một file secrets chứa thông tin nhậy cảm “JAV ” lưu ở /root/secrets.txt, file này chỉ có quyền root mới xem được
giaosucan@giaosucan:/root$ sudo ls -la secrets.txt
-rw------- 1 root root 4 Thg 9 25 10:17 secrets.txt
Còn nếu view bằng user thông thường sẽ bị access denied
giaosucan@giaosucan:/root$ cat secrets.txtcat: secrets.txt: Permission denied
Giả sử 1 anh dev tạo 1 docker file ,
FROM debian:stretchCMD ["cat", "/tmp/secrets.txt"]
Build thành image docker
Anh hacker giờ chỉ cần run bằng user account trên host để mount file secrets từ root vào container là xem được thông tin bí mật. Thì ra a dev hay xem JAV lưu toàn tên diễn viên JAV nổi tiếng
giaosucan@giaosucan:~/Study$ docker run --name test-container -v /root/secrets.txt:/tmp/secrets.txt --rm -i -t d2453fa30c20 bashroot@b5f1016c52a5:/# lsbin dev home lib64 mnt proc run srv tmp varboot etc lib media opt root sbin sys usr
root@b5f1016c52a5:/# cd tmp/root@b5f1016c52a5:/tmp# lssecrets.txtroot@b5f1016c52a5:/tmp# cat secrets.txt
Yuu Hatano Yuu Mikami Emi fukadaroot@b5f1016c52a5:/tmp#
Tại sao lại như vậy, trong docker file nếu không định nghĩa user thì mặc định docker sẽ set uid user là 0 root . Khi start container, Linux sẽ sinh ra một process run container đó và process này chạy ở quyền root
ps -aux | grep 1c154c497835
root 18582 0.0 0.0 713216 8232 ? Sl 10:35 0:00 /snap/docker/1779/bin/containerd-shim-runc-v2 -namespace moby -id 1c154c4978357217d58a725072f585e87a913b58f44372dc9fc78d512e7a7240 -address /run/snap.docker/containerd/containerd.sockgiaosuc+ 21979 0.0 0.0 15980 1016 pts/2 S+ 10:40 0:00 grep --color=auto 1c154c497835
Đồng nghĩa là root user này có đầy đủ quyền như root trên host machine nên hacker dễ dàng chiếm quyền điều khiển host machine
Đó là một ví dụ về security trên docker file. CIS Benchmark cũng có 1 bản dài như tờ sớ về bảo mật docker file. Ai đọc nhớ hết các rule được thì trùm. Còn không đơn giản thì cứ nắm được docker security best practice cũng khá ổn
Nhưng giờ thì cũng nhiều tool chuyên scan docker image để detect security dựa trên bộ CIS , hệ thống lớn thì chơi tool xịn commercial , nhỏ nhỏ ít tiền thì dùng một số open source cũng tạm đủ dùng.
Share list vài tool để a e dùng thử , cũng ổn
GitHub – hadolint/hadolint: Dockerfile linter, validate inline bash, written in Haskell
2 Nhận xét
Mình rất quan tâm series này của giaosucan nhưng mong giaosucan có thể add các command của ví dụ rõ ràng hơn được không ạ. Dịch thì vẫn dịch được được nhưng hơi mất thời gian =.= Xin cảm ơn
Trả lờiXóaCommand clear ròi mà
Xóa