1. Parser.
Parser (bộ phân tích) trong CrowdSec là một file cấu hình được viết dưới định dạng YAML, nó mô tả cách một chuỗi (string) cụ thể nào đó sẽ được phân tích. Chuỗi này có thể là một dòng log hoặc một trường dữ liệu được trích xuất từ một parser trước đó.
Parser có thể sử dụng nhiều phương pháp khác nhau để thực hiện việc phân tích chuỗi, bao gồm:
- Phương pháp GROK: Đây là phương pháp dựa trên việc sử dụng các biểu thức chính quy (regular expression) đặt tên cho các nhóm để trích xuất thông tin từ chuỗi. Ví dụ, bạn có thể sử dụng GROK để trích xuất địa chỉ IP, ngày giờ, tên người dùng, v.v., từ một dòng log.
- Sử dụng biểu thức (expressions): Parser có thể sử dụng biểu thức để phân tích các định dạng dữ liệu cụ thể như JSON. Ví dụ, bạn có thể sử dụng một biểu thức để trích xuất dữ liệu từ một đối tượng JSON trong một dòng log.
- Sử dụng phương pháp bổ sung (enrichment): Parser có thể tham chiếu đến các phương pháp bổ sung bên ngoài để làm phong phú dữ liệu, ví dụ như thêm thông tin địa lý vào một địa chỉ IP.
- Thực hiện danh sách trắng (whitelisting): Parser có thể kiểm tra xem dữ liệu có trùng khớp với danh sách trắng (danh sách các giá trị được phép) hay không. Nếu dữ liệu trùng khớp, nó có thể được chấp nhận; ngược lại, nó có thể bị loại bỏ.
Quá trình làm việc của một parser như sau:
- Các event trong logs thu thập được sẽ được import vào parser.
- Parser sẽ cố gắng phân tích từng dòng logs (log line) theo cách được định nghĩa trong parser.
- Kết quả có thể là thành công (parser thành công phân tích và trích xuất thông tin) hoặc không thành công (parser không thể phân tích đúng chuỗi).
Parser trong CrowdSec đóng vai trò quan trọng trong việc chuyển đổi dữ liệu từ các chuỗi log không cấu trúc thành các sự kiện cấu trúc và sẵn sàng cho việc phân tích tiếp theo bởi các kịch bản (scenarios) để phát hiện các hành vi đe dọa.
2. Stages.
Các parser trong CrowdSec được tổ chức thành các giai đoạn (stages) để cho phép xây dựng các chuỗi xử lý và phân nhánh trong quá trình phân tích. Một sự kiện (event) có thể tiến tới giai đoạn tiếp theo nếu ít nhất một parser trong giai đoạn đã xác định thành công nó, đồng thời được cấu hình với thuộc tính onsuccess
là next_stage
. Nếu không có parser nào trong giai đoạn xác định thành công sự kiện, sự kiện đó sẽ bị xem là chưa được phân tích và sẽ thoát khỏi luồng xử lý (pipeline) và bị loại bỏ:
Mỗi parser có thể thêm, thay đổi hoặc thậm chí xóa dữ liệu từ sự kiện. Tiến trình hiện tại của CrowdSec là:
- Giai đoạn
s00-raw
: Đảm nhận việc xây dựng cấu trúc tổng thể của log (ví dụ: trích xuất các dòng log từ JSON blob, phân tích thông tin giao thức syslog). - Giai đoạn
s01-parse
: Thực hiện phân tích thực tế cho dòng log cụ thể (như log SSH, log Nginx, v.v.). - Giai đoạn
s02-enrich
: Thực hiện một số xử lý sau cùng, chẳng hạn như bổ sung thông tin địa lý (geoip-enrich) hoặc xử lý sau phân tích cho các sự kiện HTTP để cung cấp thêm ngữ cảnh.
Khi một sự kiện đã thành công trong việc thoát khỏi luồng phân tích, nó sẽ sẵn sàng để được so khớp với các kịch bản (scenarios). Như bạn có thể mong đợi, mỗi parser phụ thuộc vào thông tin đã được phân tích trong các giai đoạn trước đó để thực hiện công việc phân tích của nó.
3. Postoverflows.
Postoverflows trong CrowdSec là một phần quan trọng của quá trình xử lý các sự kiện bảo mật sau khi các tình huống cụ thể (gọi là “kịch bản” hoặc “scenario”) đã xảy ra và đưa ra quyết định về mức độ đe dọa.
- Scenario: Đây là một loạt các quy tắc và cấu hình trong CrowdSec để theo dõi và phát hiện các hành vi đáng ngờ hoặc tấn công mạng cụ thể. Ví dụ, có một kịch bản để giám sát các truy cập SSH không hợp lệ vào máy chủ.
- Overflow: Khi có một kịch bản có một số lượng lớn các truy cập không hợp lệ đã kích hoạt và xác định một tình huống đe dọa. Ví dụ, nếu có nhiều đăng nhập không hợp lệ vào máy chủ SSH, kịch bản SSH sẽ xác định đây là một tình huống bị đe dọa.
- Postoverflows: Sau một kịch bản có một số lượng lớn các truy cập không hợp lệ đã kích hoạt và xác định một tình huống đe dọa, CrowdSec cho phép bạn thực hiện một loạt các xử lý bổ sung để tăng cường quyết định về mức độ đe dọa hoặc để thêm thông tin hữu ích. Các xử lý này được thực hiện bởi các “parsers” riêng biệt trong “postoverflows.”
Ví dụ cụ thể:
- Kiểm tra tên miền: Các parsers trong “postoverflows” có thể kiểm tra xem các địa chỉ IP liên quan đến quyết định có xuất phát từ một tên miền cụ thể nào đó không.
- Bổ sung thông tin địa lý: Bạn có thể muốn thêm thông tin về vị trí địa lý của các địa chỉ IP trong quyết định, giúp bạn biết được nguồn tấn công từ đâu.
- Kiểm tra danh sách trắng: Bạn có thể kiểm tra xem địa chỉ IP nào đó có nằm trong danh sách trắng của bạn không, và nếu có, bạn có thể quyết định bỏ qua quyết định về địa chỉ IP đó.
Những xử lý này giúp làm giàu thông tin và quyết định từ các sự kiện bảo mật ban đầu và có thể cung cấp thông tin cần thiết để CrowdSec có thể đưa ra quyết định cuối cùng về việc xử lý mức độ đe dọa hoặc cách ứng phó với các cuộc tấn công mạng.