CrowdSec là một giải pháp mã nguồn mở được thiết kế để bảo vệ máy chủ và ứng dụng của bạn khỏi các cuộc tấn công độc hại. Nó hoạt động dựa trên cơ chế phát hiện và cấm IP dựa trên hành vi độc hại và sau đó chia sẻ các địa chỉ IP đó với cộng đồng để ngăn chặn những kẻ tấn công trên nhiều hệ thống khác nhau.
Về việc sử dụng CrowdSec trên Kubernetes (k8s), dưới đây là một số use-case tiêu biểu:
- Bảo vệ API Server: Kubernetes API Server là một cổng vào quan trọng của cụm Kubernetes. CrowdSec có thể được sử dụng để giám sát và phát hiện các mô hình tấn công dựa trên hành vi đối với API Server và sau đó cấm IP của những kẻ tấn công.
- Bảo vệ các dịch vụ được tiết lộ: Các dịch vụ chạy trên Kubernetes thường được tiết lộ ra ngoài thông qua Load Balancers hoặc Ingress Controllers. CrowdSec có thể được cấu hình để bảo vệ những dịch vụ này khỏi các tấn công như DDoS, tấn công lực đoán mật khẩu hoặc các tấn công khác dựa trên hành vi.
- Bảo vệ Node: Mỗi node trong Kubernetes có thể trở thành mục tiêu cho các kẻ tấn công. Đặc biệt, nếu họ có khả năng truy cập vào node, họ có thể thử khai thác các lỗ hổng bảo mật. CrowdSec có thể được sử dụng để giám sát lưu lượng mạng và hoạt động trên từng node và chặn các kẻ tấn công dựa trên hành vi.
- Giám sát ứng dụng: Ngoài việc giám sát hạ tầng, CrowdSec cũng có thể giám sát các ứng dụng đang chạy trong cụm Kubernetes của bạn để phát hiện các mô hình tấn công.
- Chia sẻ thông tin với cộng đồng: Một trong những đặc điểm nổi bật của CrowdSec là khả năng chia sẻ thông tin về các địa chỉ IP độc hại với cộng đồng. Khi một cụm Kubernetes của bạn phát hiện ra một địa chỉ IP độc hại, thông tin này có thể được chia sẻ với những người khác, giúp tăng cường bảo mật cho cộng đồng.
Tóm lại, CrowdSec có thể được sử dụng trong nhiều tình huống trên Kubernetes, giúp tăng cường bảo mật bằng cách phát hiện và cấm các IP độc hại dựa trên hành vi.
The architecture is as follows :
dưới đây là 1 output để chúng ta hiểu thêm về detecting of crowdsec
/ # cscli metrics INFO[21-09-2021 09:39:50 AM] Buckets Metrics: +-------------------------------------------+---------------+-----------+--------------+--------+---------+ | BUCKET | CURRENT COUNT | OVERFLOWS | INSTANCIATED | POURED | EXPIRED | +-------------------------------------------+---------------+-----------+--------------+--------+---------+ | crowdsecurity/http-bad-user-agent | 3 | 183 | 186 | 369 | - | | crowdsecurity/http-crawl-non_statics | - | 7 | 9 | 351 | 2 | | crowdsecurity/http-path-traversal-probing | - | - | 1 | 2 | 1 | | crowdsecurity/http-probing | 1 | - | 2 | 2 | 1 | | crowdsecurity/http-sensitive-files | - | 3 | 4 | 17 | 1 | +-------------------------------------------+---------------+-----------+--------------+--------+---------+ INFO[21-09-2021 09:39:50 AM] Acquisition Metrics: +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+--------------+----------------+------------------------+ | SOURCE | LINES READ | LINES PARSED | LINES UNPARSED | LINES POURED TO BUCKET | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+--------------+----------------+------------------------+ | file:/var/log/containers/ingress-nginx-controller-fd7bb8d66-llxc9_ingress-nginx_controller-c536915796f13bbf66d1a8ab7159dbd055773dbbf89ab4d9653043591dfaef1f.log | 371 | 371 | - | 741 | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+--------------+----------------+------------------------+ INFO[21-09-2021 09:39:50 AM] Parser Metrics: +--------------------------------+------+--------+----------+ | PARSERS | HITS | PARSED | UNPARSED | +--------------------------------+------+--------+----------+ | child-crowdsecurity/http-logs | 1113 | 738 | 375 | | child-crowdsecurity/nginx-logs | 371 | 371 | - | | crowdsecurity/dateparse-enrich | 371 | 371 | - | | crowdsecurity/docker-logs | 371 | 371 | - | | crowdsecurity/geoip-enrich | 371 | 371 | - | | crowdsecurity/http-logs | 371 | 360 | 11 | | crowdsecurity/nginx-logs | 371 | 371 | - | | crowdsecurity/whitelists | 371 | 371 | - | +--------------------------------+------+--------+----------+
ở phần Buckets Metrics chúng ta sẽ tìm hiều về crowdsecurity/http-bad-user-agent
Trong trường hợp này, crowdsecurity/http-bad-user-agent
là một bucket dành cho việc nhóm các sự kiện liên quan đến các yêu cầu HTTP có “user-agent” đáng ngờ.
Các cột trong bảng có ý nghĩa như sau:
- CURRENT COUNT: Số lượng sự kiện hiện tại trong bucket. Trong trường hợp này, có 3 sự kiện đang được xem xét.
- OVERFLOWS: Số lần mà bucket đã vượt quá ngưỡng cho phép. Điều này có thể xuất phát từ việc có quá nhiều sự kiện được nhận trong một khoảng thời gian ngắn. Ở đây, bucket đã tràn 183 lần.
- INSTANCIATED: Tổng số lần bucket đã được tạo ra hoặc khởi tạo. Trong trường hợp này, bucket đã được khởi tạo 186 lần.
- POURED: Tổng số sự kiện đã được thêm vào bucket. Điều này cho chúng ta biết có bao nhiêu sự kiện liên quan đã được nhận diện. Ở đây, có 369 sự kiện.
- EXPIRED: Số lượng buckets đã hết hạn và không còn được xem xét nữa. Trong trường hợp này, không có bucket nào hết hạn (được đánh dấu bằng “-“).
Thông qua những số liệu này, bạn có thể hiểu được tần suất và mức độ của mô hình tấn công hoặc hành vi độc hại đang diễn ra, cụ thể là những yêu cầu có “user-agent” đáng ngờ trong trường hợp này.
và để hiểu rõ hơn thì bạn cần đọc và thực hành theo 2 bài viết sau đây:
https://www.crowdsec.net/blog/kubernetes-crowdsec-integration
https://www.crowdsec.net/blog/kubernetes-crowdsec-integration-remediation