Đừng đợi đến khi hacker đã “dọn nhà” xong mới xem log
Tôi từng thức trắng đêm xử lý một con server staging bị brute-force SSH. Dù đã đổi port và dùng khóa SSH, kẻ tấn công vẫn lách qua được một lỗ hổng thực thi mã từ xa (RCE) trên ứng dụng web cũ. Lúc tôi phát hiện ra thì mọi thứ đã xong xuôi, log hệ thống chỉ còn là những dòng thông báo vô hồn về hậu quả. Bài học rút ra rất rõ ràng: Chỉ giám sát log là không đủ. Bạn cần một công cụ có khả năng quan sát tường tận những gì đang diễn ra trong nhân (Kernel) của Linux ngay tại thời điểm thực thi.
Cilium Tetragon chính là giải pháp đặc hiệu cho vấn đề này. Dựa trên công nghệ eBPF (Extended Berkeley Packet Filter), Tetragon cho phép bạn theo dõi mọi hành vi của tiến trình, file system và network với độ trễ gần như bằng không. Thay vì thụ động đợi log ghi ra file, Tetragon can thiệp trực tiếp vào Kernel để báo động hoặc tiêu diệt ngay lập tức các hành vi xâm nhập trái phép.
Triển khai Tetragon trong 5 phút với Docker
Để trải nghiệm nhanh sức mạnh của Tetragon mà không cần cấu hình phức tạp, bạn có thể chạy nó trực tiếp qua Docker. Cách này rất phù hợp để kiểm thử các tính năng trước khi đưa vào cụm Kubernetes chính thức.
1. Khởi chạy Tetragon Container
Mở terminal và thực thi lệnh sau (lưu ý cần quyền root để eBPF có thể nạp chương trình vào kernel):
docker run --name tetragon --rm \
--privileged -v /sys/kernel/debug:/sys/kernel/debug \
-d quay.io/cilium/tetragon:v1.1.0
2. Quan sát sự kiện hệ thống theo thời gian thực
Hãy mở một cửa sổ terminal mới. Sử dụng công cụ tetra tích hợp sẵn để theo dõi các tiến trình đang vận hành:
docker exec -it tetragon tetra observe --follow
Bây giờ, thử chạy lệnh sudo cat /etc/shadow ở một tab khác. Bạn sẽ thấy Tetragon lập tức hiển thị thông tin chi tiết: lệnh nào đã chạy, user nào thực hiện, và ID của tiến trình đó. Mọi thứ diễn ra minh bạch và tức thì.
Tại sao eBPF lại thay đổi cuộc chơi bảo mật?
Nhiều người thường thấy eBPF khá trừu tượng. Hãy tưởng tượng Linux Kernel là một tòa nhà được bảo vệ nghiêm ngặt. Trước đây, muốn biết ai ra vào, bạn phải đứng ở cổng chính để hỏi (System Calls). Với eBPF, bạn giống như gắn được hệ thống camera cảm biến ở mọi ngóc ngách, từ hành lang đến từng phòng làm việc.
Tetragon sử dụng eBPF để “móc” (hook) vào các hàm quan trọng trong Kernel. Khi một ứng dụng thực hiện hành động như mở file nhạy cảm hoặc kết nối ra ngoài, Tetragon sẽ bắt trọn sự kiện đó.
Ưu thế vượt trội của Tetragon:
- Hiệu năng ấn tượng: Hoạt động trực tiếp trong kernel giúp giảm thiểu overhead. Thực tế cho thấy Tetragon thường chỉ tiêu tốn dưới 1-3% CPU trong điều kiện vận hành bình thường.
- Lọc dữ liệu thông minh: Bạn có thể cấu hình để chỉ quan tâm đến các hành vi rủi ro cao, tránh tình trạng bị ngập lụt dữ liệu log (log fatigue).
- Chặn đứng tức thì (Enforcement): Không chỉ đứng nhìn, Tetragon có thể gửi tín hiệu
SIGKILLđể hạ gục ngay tiến trình vi phạm chính sách bảo mật trước khi nó kịp gây hại.
Thực thi bảo mật chủ động với TracingPolicy
Sức mạnh thực sự của Tetragon nằm ở TracingPolicy. Đây là nơi bạn định nghĩa các quy tắc bảo mật bằng file YAML đơn giản. Ví dụ, chúng ta sẽ tạo một chính sách để giám sát và ngăn chặn việc truy cập trái phép vào file chứa mật khẩu hệ thống.
Ví dụ: Chặn đứng hành vi đọc file nhạy cảm
Tạo file block-shadow-access.yaml với nội dung sau:
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
name: "protect-etc-shadow"
spec:
kprobes:
- call: "sys_openat"
syscall: true
args:
- index: 1
type: "string"
selectors:
- matchArgs:
- index: 1
operator: "Equal"
values:
- "/etc/shadow"
matchActions:
- action: Sigkill
Khi áp dụng chính sách này, bất kỳ ai cố tình thực hiện lệnh cat /etc/shadow sẽ bị hệ thống tự động ngắt kết nối và kết thúc tiến trình ngay lập tức. Đây là cách bảo vệ chủ động thay vì chỉ ngồi chờ cảnh báo.
Kinh nghiệm thực chiến: Những điều cần lưu ý
Triển khai Tetragon trong môi trường production đòi hỏi sự cẩn trọng để tránh ảnh hưởng đến tính ổn định của hệ thống.
1. Kiểm soát lưu lượng log
Đừng cố gắng log lại mọi syscall. Một server bận rộn có thể tạo ra hàng trăm nghìn sự kiện mỗi giây, dễ dàng làm nghẽn hệ thống I/O hoặc làm đầy ổ cứng trong vài phút. Hãy tập trung vào các “điểm nóng” như /etc/passwd, ~/.ssh/authorized_keys hoặc các kết nối mạng ra IP lạ.
2. Xây dựng Dashboard quan sát
Tetragon xuất log định dạng JSON, rất thuận tiện để đẩy vào Loki hoặc Elasticsearch. Kết hợp với Grafana, bạn sẽ có một bức tranh toàn cảnh về các hoạt động bất thường. Việc phát hiện các đỉnh nhọn (spike) trong biểu đồ sẽ giúp bạn truy vết cuộc tấn công nhanh hơn nhiều so với việc đọc log thủ công.
3. Chế độ “Audit” trước khi “Kill”
Trước khi đặt hành động là Sigkill, hãy dùng action Post để ghi log cảnh báo trước. Tôi từng gặp trường hợp đặt policy quá chặt khiến script backup tự động bị kill, gây gián đoạn dịch vụ. Hãy chạy thử nghiệm ít nhất 24-48 giờ trên môi trường Staging để loại bỏ các thông báo giả (False Positives).
4. Phát hiện tấn công chuỗi cung ứng (Supply Chain Attack)
Bạn có thể tích hợp Tetragon vào quy trình CI/CD hoặc môi trường test. Nếu một thư viện mã nguồn mở bạn vừa thêm vào bỗng dưng kết nối đến một IP lạ tại Nga hay Trung Quốc, Tetragon sẽ báo động ngay. Đây là cách cực kỳ hiệu quả để phát hiện mã độc bị cài cắm sâu trong code.
Lời kết
Cilium Tetragon là một bước tiến lớn trong việc bảo mật Linux Runtime. Việc làm chủ eBPF thông qua công cụ này không chỉ giúp hệ thống an toàn hơn mà còn nâng tầm kỹ năng của người làm kỹ thuật. Đừng đợi đến khi sự cố xảy ra mới bắt đầu tìm kiếm giải pháp. Hãy chủ động thiết lập lớp lá chắn vững chắc cho server của bạn ngay hôm nay.
