Professional Documents
Culture Documents
0
1. Khái niệm
WAZUH là một dự án mã nguồn mở với các chức năng security detection,
visibility, và compliance monitoring. Wazuh ban đầu được phát triển dựa trên
OSSEC HIDS và sau đó được tích hợp thêm Elastic Stack cùng với OpenSCAP
để trở thành một giải pháp an ninh toàn diện với các khả năng như
Wazuh tự động thu thập và tổng hợp dữ liệu bảo mật từ các hệ thống chạy
Linux, Windows, macOS, Solaris, AIX và các hệ điều hành khác trong miền
được giám sát, làm cho nó trở thành một giải pháp SIEM cực kỳ toàn diện.
Nhưng quan trọng hơn, Wazuh cũng phân tích và đối chiếu dữ liệu để phát hiện
các điểm bất thường và xâm nhập. Loại thông minh này có nghĩa là có khả năng
phát hiện mối đe dọa sớm trong các môi trường khác nhau.
Phản ứng sự cố là một tính năng rất hữu ích của Wazuh đối với các mối đe dọa
đang hoạt động. Có các phản hồi hoạt động ngoài hộp, có nghĩa là người dùng
không phải làm bất cứ điều gì để thiết lập chúng. Nếu hệ thống phát hiện ra các
mối đe dọa đang hoạt động, các biện pháp đối phó sẽ bắt đầu hành động ngay
lập tức.
Ví dụ, nhiều tin tặc sử dụng các cuộc tấn công brute-force để đoán kết hợp tên
người dùng và mật khẩu. Wazuh sẽ lưu ý mỗi lần xác thực không thành công.
Với đủ lỗi, hệ thống sẽ nhận ra chúng là một phần của cuộc tấn công vũ phu. Vì
một tiêu chí nhất định được đáp ứng (ví dụ: năm lần đăng nhập không thành
công), nó sẽ chặn địa chỉ IP đó khỏi các lần thử tiếp theo. Điều này có nghĩa là
Wazuh không chỉ có thể hứng chịu các cuộc tấn công bạo lực mà còn có thể tắt
chúng
1.2. OpenSCAP
OpenSCAP là trình thông dịch cho chuẩn ngôn ngữ thẩm định OVAL
(Open Vulnerability Assess - ment Language) và định dạng cấu hình an ninh hệ
thống ECCDF (Extensible Configuration Checklist Description Format).
OpenSCAP có được sử dụng để kiểm tra các cấu hình của hệ thống và phát hiện
các ứng dụng có lỗ hổng. Đây là một công cụ được thiết kế với khả năng thẩm
định và gia cố của các hệ thống áp dụng các tiêu chuẩn an ninh công nghiệp cho
môi trường doanh nghiệp.
WAZUH SERVER
Wazuh server thường sẽ được cài đặt trên một máy chủ vật lý hoặc máy ảo riêng
biệt, hay cũng có thể là một máy trên cloud và chạy các agent để tự giám sát
chính nó. Các thành phần chính của Wazuh Server:
Analysis engine: Đây là quá trình thực hiện phân tích dữ liệu. Nó sử dụng
bộ giải mã để xác định loại thông tin đang được xử lý (ví dụ: Windows
events, SSHD logs, web server logs, v.v.) và trích xuất các phần tử dữ liệu
có liên quan từ thông báo nhật ký (ví dụ: ource IP address, event ID,
username, v.v.) . Tiếp theo, bằng cách sử dụng các quy tắc (Rules), nó xác
định các mẫu cụ thể trong các sự kiện được giải mã có thể kích hoạt cảnh
báo và thậm chí có thể gọi các biện pháp đối phó tự động (ví dụ: lệnh cấm
IP trên tường lửa).
Wazuh RESTful API:Dịch vụ này cung cấp giao diện để tương tác với cơ
sở hạ tầng Wazuh. Nó được sử dụng để quản lý các tác nhân và cài đặt cấu
hình máy chủ, để theo dõi trạng thái cơ sở hạ tầng và tình trạng tổng thể,
quản lý và chỉnh sửa các quy tắc (Rule) và bộ giải mã Wazuh cũng như
truy vấn về trạng thái của các điểm cuối được giám sát. Nó cũng được sử
dụng bởi giao diện người dùng web Wazuh, đó là ứng dụng Kibana.
Wazuh cluster daemon: Dịch vụ này được sử dụng để mở rộng các Wazuh
Server theo chiều ngang, triển khai chúng dưới dạng một cụm. Loại cấu
hình này, kết hợp với bộ cân bằng tải mạng, cung cấp tính khả dụng cao
và cân bằng tải. Daemon cụm Wazuh là thứ mà các máy chủ Wazuh sử
dụng để giao tiếp với nhau và giữ đồng bộ hóa.
WAZUH AGENT
Các thành phần chính của Wazuh Agent:
Log collector: Tiến trình này sẽ chịu trách nhiệm đọc log hệ thống và ứng
dụng, bao gồm flat log, các log sự kiện tiêu chuẩn và cả các kênh sự kiện
Windows. Ngoài ra, log collector còn có thể được cấu hình để định kỳ bắt
các output từ một số lệnh nhất định.
Command execution: Agent có thể chạy các lệnh được ủy quyền theo định
kỳ, thu thập kết quả đầu ra của chúng và báo cáo lại cho Wazuh Server để
phân tích thêm. Mô-đun này có thể được sử dụng để đáp ứng các mục
đích khác nhau (ví dụ: theo dõi dung lượng ổ cứng còn lại, nhận danh
sách người dùng đăng nhập lần cuối, v.v.).
File integrity monitoring (FIM): Mô-đun này giám sát hệ thống tệp, báo
cáo khi tệp được tạo, xóa hoặc sửa đổi. Nó theo dõi các thuộc tính tệp,
quyền, quyền sở hữu và nội dung. Khi một sự kiện xảy ra, nó nắm bắt
thông tin chi tiết về ai , cái gì và khi nào trong thời gian thực. Ngoài ra,
mô-đun này xây dựng và duy trì cơ sở dữ liệu với trạng thái của các tệp
được giám sát, cho phép các truy vấn được chạy từ xa
Security configuration assessment (SCA): Thành phần này cung cấp đánh
giá cấu hình liên tục, sử dụng các kiểm tra bên ngoài dựa trên điểm chuẩn
của Trung tâm Bảo mật Internet (CIS). Người dùng cũng có thể tạo kiểm
tra SCA của riêng họ để giám sát và thực thi các chính sách bảo mật của
họ.
System inventory:Thành phần này cung cấp đánh giá cấu hình
liên tục, sử dụng các kiểm tra bên ngoài dựa trên điểm chuẩn của Trung
tâm Bảo mật Internet (CIS). Người dùng cũng có thể tạo kiểm tra SCA
của riêng họ để giám sát và thực thi các chính sách bảo mật của họ
Malware detection: Sử dụng cách tiếp cận không dựa trên chữ ký, thành
phần này có khả năng phát hiện sự bất thường và sự hiện diện có thể có
của rootkit. Giám sát các cuộc gọi hệ thống, nó tìm kiếm các quy trình ẩn,
tệp ẩn và cổng ẩn. • Active response:Mô-đun này chạy các hành động tự
động khi các mối đe dọa được phát hiện. Trong số những thứ khác, nó có
thể chặn kết nối mạng, dừng quá trình đang chạy hoặc xóa tệp độc hại.
Người dùng cũng có thể tạo phản hồi tùy chỉnh khi cần thiết (ví dụ: chạy
tệp nhị phân trong hộp cát, nắm bắt lưu lượng kết nối mạng, quét tệp bằng
phần mềm chống vi-rút, v.v.).
Containers security monitoring:Mô-đun tác nhân này được tích hợp với
API Docker Engine để theo dõi các thay đổi trong môi trường được chứa
trong vùng chứa. Ví dụ: nó phát hiện các thay đổi đối với hình ảnh vùng
chứa, cấu hình mạng hoặc khối lượng dữ liệu. Bên cạnh đó, nó cảnh báo
về các vùng chứa đang chạy ở chế độ đặc quyền và về việc người dùng
thực hiện các lệnh trong vùng chứa đang chạy.
Cloud security monitoring:Thành phần này giám sát các nhà cung cấp
đám mây như Amazon AWS, Microsoft Azure hoặc Google GCP. Nó tự
nhiên giao tiếp với các API của họ. Nó có khả năng phát hiện các thay đổi
đối với cơ sở hạ tầng đám mây (ví dụ: người dùng mới được tạo, nhóm
bảo mật được sửa đổi, phiên bản đám mây bị dừng, v.v.) và thu thập dữ
liệu nhật ký dịch vụ đám mây (ví dụ: AWS Cloudtrail, AWS Macie, AWS
GuardDuty , Azure Active Directory, v.v.)
Elasticsearch: Một công cụ tìm kiếm và phân tích mạnh mẽ với chức
năng full-text search cũng như khả năng mở rộng cao. Elasticsearch được
tổ chức phân phối, nghĩa là dữ liệu (index) sẽ được chia thành các phân
đoạn cơ sở dữ liệu (shard) và mỗi phân đoạn có thể có 0 hoặc nhiều bản
sao.
Kibana: Cung cấp một giao diện web linh hoạt và trực quan cho mining,
phân tích, và trình bày dữ liệu. It runs on top of the content indexed on an
Elasticsearch cluster.
Filebeat: Một công cụ gọn nhẹ để forward log trong mạng, thường được
sử dụng cho Elasticsearch.
Wazuh tích hợp Elastic Stack để lưu trữ và index các log đã được giải mã với
Elasticsearch, và sử dụng như một giao diện console real-time để theo dõi các
alert và phân tích log. Bên cạnh đó, giao diện người dùng của Wazuh (chạy trên
Kibana) cũng có thể được sử dụng để quản lý và giám sát hạ tầng của Wazuh.
Một Elasticsearch index là một tập hợp các văn bản có các đặc trưng tương tự.
Wazuh sử dụng 3 index sau:
wazuh-alerts: các alert được tạo bởi Wazuh server.
wazuh-events: mọi event được gửi đến từ agent.
wazuh-monitoring: các dữ liệu liên quan đến trạng thái của agent. Nó
được sử dụng cho giao diện web của Wazuh để hiển thị các trạng thái của
agent như: “Active”, “Disconnected” hay “Never connected”
Như đã đề cập ở trên, các index của Elasticsearch có thể được chia thành nhiều
phân đoạn (shard) và nhân thành các bản sao. Mỗi thực thể này là một Lucene
index. Vì vậy, có thể coi một Elasticsearch index là một tập các Lucene index.
Khi một yêu cầu tìm kiếm được thực hiện trên một Elasticsearch index, yêu cầu
này sẽ được thực thi song song trên các phân đoạn của index và kết quả sau đó
sẽ được được trộn lại với nhau. Việc chia nhỏ các index của Elasticsearch được
sử dụng trong multiple-node Elasticsearch cluster với mục đích mở rộng tìm
kiếm để đảm bảo tính sẵn sàng. Đối với các single-node Elasticsearch cluster thì
thường mỗiindex sẽ chỉ tồn tại một phân đoạn duy nhất và không có bản sao.
Một Elasticsearch cluster là một tập hợp của một hay nhiều node (server) giao
tiếp với nhau để thực hiện các thao tác đọc và ghi trên các index. Một single-
node Elasticsearch cluster có thể dễ dàng quản lý một hệ thống Wazuh cỡ nhỏ
với khoảng 50 agent đổ lại. Các multi-node Elasticsearch cluster thường được
khuyến cáo khi có một số lượng lớn hệ thống cần giám sát,hay có một lượng dữ
liệu lớn, hoặc những hệ thống có yêu cầu cao về tính sẵn sàng.
Khi mà Wazuh server và Elasticsearch cluster nằm trên các host khác nhau,
Filebeat sẽ chịu trách nhiệm truyền tải các alert hoặc các sự kiện hệ thống đến
các Elasticsearch server bằng giao thức TLS.
Mô hình bên dưới minh họa cách các thành phần của một hệt thống Wazuh.
Trong kiểu triển khai này, các thành phần sẽ được cài đặt trên các Host riêng
biệt. Kibana có thể được cài đặt trên cùng một Host của nút Elasticsearch hoặc
trên một Host riêng biệt. Kiểu triển khai này phù hợp với môi trường sản xuất vì
nó cung cấp tính khả dụng và khả năng mở rộng cao của các dịch vụ.
Elastic Stack, bao gồm Open Distro cho Elasticsearch dưới dạng một cụm
nút đơn(single-node) hoặc dưới dạng cụm nhiều nút(single-node) và
Kibana, bao gồm cả plugin Wazuh Kibana, trên cùng một máy chủ lưu trữ
như nút Elasticsearch hoặc trên một máy chủ riêng biệt.
Đối với các triển khai Wazuh quy mô nhỏ thì chúng ta sẽ cài đặt và cấu hình
Wazuh server và Elastic Stack trên cùng một máy chủ.
WAZUH ALL-IN-ONE DEPLOYMENT
Các thành phần sau sẽ được cài đặt:
Wazuh Server, Wazuh Manager dưới dạng một cụm nút đơn(single-node)
và API Wazuh
Elastic Stack, bao gồm Open Distro cho Elasticsearch dưới dạng một cụm
nút đơn(single-node), Filebeat và Kibana bao gồm cả plugin Wazuh
Kibana
Wazuh Agent liên tục gửi các sự kiện đến máy chủ Wazuh Server để phân
tích và phát hiện mối đe dọa. Để bắt đầu vận chuyển chúng, Agent thiết lập kết
nối với dịch vụ Server để kết nối Agent, dịch vụ này sẽ lắng nghe trên port 1514
(cổng này có thể cấu hình được). Máy chủ Wazuh sau đó giải mã và kiểm tra
rule các sự kiện đã nhận, sử dụng công cụ phân tích. Các sự kiện liên quan đến
quy tắc được tăng cường với dữ liệu cảnh báo như Rule ID và Rule name. Sự
kiện có thể được lưu vào một hoặc cả hai tệp sau, tùy thuộc vào việc quy tắc có
bị chặn hay không:
Alert sẽ bị lặp nếu sử dụng cả 2 file này để tạo các alert. Bên cạnh đó, cả 2 file
này đều chứa các dữ liệu đã được giải mã.
Wazuh message protocol sử dụng mã hóa Blowfish 192-bit với đủ 16-round,
hoặc mã hóa AES 128 bit mỗi block và 256-bit khóa. Có thể đọc thêm bài viết
Benefits of using AES in Wazuh commu - nications để tìm hiểu thêm chi tiết
Filebeat sẽ định dạng các dữ liệu được gửi tới (có thể tùy chọn gắn thêm
thông tin GeoIP) trước khi gửi chúng đến Elasticsearch (port 9200/TCP). Một
khi dữ liệu đã được index tại Elasticsearch , Kibana (port 5601/TCP) sẽ mining
và trình bày dữ liệu ở phía front-end.
Wazuh App chạy trên Kibana sẽ thường xuyên query dữ liệu qua RESTful API
(port 55000/TCP trên Wazuh manager) để hiển thị cấu hình và các thông tin
trạng thái của các server và agent và có thể thực hiện các yêu cầu khởi động lại
agent khi cần thiết. Giao tiếp này sẽ được mã hóa TLS và xác thực với username
và password.