Tải bản đầy đủ (.pdf) (15 trang)

Báo cáo An toàn hệ điều hành. ELK Stack

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (680.31 KB, 15 trang )

BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
——————————

BÁO CÁO BÀI TÂP LỚN AN TỒN HỆ ĐIỀU HÀNH
TÌM HIỂU, NGHIÊN CỨU VỀ HỆ THỐNG THU THẬP VÀ GIÁM SÁT LOG

HÀ NỘI, 2020


MỤC LỤC
DANH MỤC HÌNH ẢNH......................................................................................... 3
MỞ ĐẦU ................................................................................................................... 4
NỘI DUNG ............................................................................................................... 5
CHƯƠNG 1. TỔNG QUAN VỀ HỆ THỐNG THU THẬP VÀ GIÁM SÁT
LOG. ....................................................................................................................... 5
1. Tổng quan về log .......................................................................................... 5
2. Các khâu cơ bản của hệ thống phân tích log ................................................ 6
CHƯƠNG 2. NGHUYÊN LÝ, CÁCH THỨC HOẠT ĐỘNG CỦA ELK
STACK ................................................................................................................... 7
1. Tổng quan về Elk stack ................................................................................ 7
2. Nguyên lý hoạt động của Elk stack .............................................................. 7
CHƯƠNG 3. (THỰC NGHIỆM) SỬ DỤNG ELK STACK ĐỂ PHÂN TÍCH,
GIÁM SÁT LOG ................................................................................................. 12
KẾT LUẬN ............................................................................................................. 15


DANH MỤC HÌNH ẢNH
Hình 1. Màn hình Management của Elasticseach. .................................................. 12
Hình 2. Tạo index pattern trên Kibana. ................................................................... 13
Hình 3. Tạo index pattern trên Kibana (bước 2). .................................................... 13


Hình 4. Giao diện hiển thị quan sát các log được ghi lại. ....................................... 14


MỞ ĐẦU
Kinh tế ngày càng phát triển, nhu cầu hội nhập ngày càng cao, thương mại điện
tử là không thể thiếu trong thời kì 4.0 như hiện nay, việc hiện đại hóa giao tiếp và
trao đổi là khơng thể thiếu. Việc hiện đại hóa này giúp cho con người thuận tiện hơn
khi trao đổi tuy nhiên bản thân nó cũng mang lại thách thức lớn. Một trong những
thách thức đó là làm sao chúng ta có thể đảm bảo được thông tin cá nhân cũng như
hệ thống thông tin được an tồn trước thế lực tin tặc đơng đảo và ngày càng tinh vi.
Để giải quyết vấn đề này, nhóm chúng em tiến hành tìm hiểu và nghiên cứu về một
trong số các phương pháp đảm bảo an toàn hệ thống đó là thu thập, phân tích log hệ
thống.
Mục tiêu đề ra khi thực hiện đề tài này là:
1. Tìm hiểu tổng quan về hệ thống thu thập và giám sát log.
2. Nguyên tắc hoạt động của một hệ thống thu thập và giám sát log.
3. Cách thức vận hành của ELK Stack.
4. Thực nghiệm sử dụng ELK Stack để thu thập và phân ticha log.
Qua quá trình thưc hiện, mục tiêu cơ bản đã đạt được, tuy nhiên do quỹ thời
gian hạn hẹp và vốn kiến thức hạn chế nên đề tài cịn nhiều thiếu sót trong cách trình
bày và đề xuất ý kiến. chúng em rất mong nhận được sự góp ý từ phía thầy và các
bạn.
Nhóm sinh viên thực hiện


NỘI DUNG
CHƯƠNG 1. TỔNG QUAN VỀ HỆ THỐNG THU THẬP VÀ GIÁM
SÁT LOG.
1.


Tổng quan về log

Để một hệ thống hoạt động tốt gồm nhiều thành phần, hoạt động trên nhiều nền
tảng và môi trường khác nhau như các máy trạm, máy chủ, các thiết bị hạ tầng mạng
(như router, switch), các thiết bị phát hiện và phòng chống xâm nhập (IDS/IPS), các
ứng dụng chạy trên máy chủ và máy trạm.
Log truy nhập hay nhật ký, hoặc vết truy nhập (gọi tắt là log) là một danh sách
các bản ghi mà một hệ thống ghi lại khi xuất hiện các yêu cầu truy nhập các tài
nguyên của hệ thống. Chẳng hạn log truy cập web (gọi tắt là web log) chứa tất cả
các yêu cầu truy nhập các tài nguyên của một website.
Log hệ thống là một thành phần quan trọng trong hệ thống mạng. Log hệ thống
giúp lưu lại một cách chính xác mọi hoạt động của hệ thống; tình trạng hoạt động
của hệ thống; các ứng dụng, các thiết bị đã và đang hoạt động trong hệ thống.
Log hệ thống có ba loại:
- Log access: ghi lại tồn bộ thông tin truy cập của người dùng tới hệ thống,
thông tin truy cập của ứng dụng tới cơ sở dữ liệu.
- Log event: ghi lại chi tiết những sự kiện mà hệ thống đã thực hiện. Log ứng
dụng và log hệ điều hành.
- Log device: ghi lại tình trạng hoạt động của các thiết bị phần cứng, phần mềm
đang được sử dụng (router, switch, IDS, IPS).
Log hệ thống là thành phần cực kì hữu hiệu cho việc giám sát, khắc phục sự cố
trong hệ thống mạng. Tuy nhiên, với những hệ thống lớn, chạy nhiều ứng dụng,
lượng truy cập cao thì việc phân tích log là vơ cùng khó khăn. Chính vì vậy, xây
dựng hệ thống giám sát, thu thập và phân tích log là vơ cùng cần thiết.
Hệ thống thu thập, phân tích và giám sát log thực hiện các chức năng chính sau:
- Phát hiện kịp thời các tấn công mạng xuất phát từ Internet cũng như các tấn
công từ nội bộ.


- Phát hiện kịp thời các điểm yếu, lỗ hổng bảo mật của các thiết bị, ứng dụng

và các dịch vụ của hệ thống.
- Phát hiện kịp thời sự lây nhiễm mã độc trong hệ thống mạng, các máy tính bị
nhiễm mã độc cũng như các máy tính là thành viên của mạng Botnet.
- Giám sát việc tuân thủ chính sách an ninh trong hệ thống.
- Cung cấp bằng chứng số phục vụ công tác điều tra sau sự cố.
2.

Các khâu cơ bản của hệ thống phân tích log

Thu thập, xử lý và phân tích Log truy nhập là các khâu cơ bản của một hệ
thống phân tích log. Các khâu xử lý gồm:
 Collection of log data: các bản ghi log thô từ các nguồn sinh log được thu thập
và chuyển về trung tâm xử lý.
 Cleaning of Data: các bản ghi log thô được làm sạch để giảm bớt dữ liệu nhiễu.
 Convert into Structured form: chuẩn hóa dữ liệu log.
 Analysis of data: là khâu quan trọng nhất trong q trình phân tích log. Đây
là khâu được áp dụng để trích xuất ra các thơng tin quan trọng ứng dụng cho
đảm bảo an tồn thơng tin và các ứng dụng khác.
 Obtained Results: là khâu kết suất kết quả ra giao diện người dùng.


CHƯƠNG 2. NGHUYÊN LÝ, CÁCH THỨC HOẠT ĐỘNG CỦA ELK
STACK
1. Tổng quan về Elk stack
Elk stack là bộ công cụ giám sát tập trung mã nguồn mở mạnh, có thể xử lý
nhiều bài toán quản lý hệ thống mạng nên được nhiều công ty, tổ chức tin dùng. Elk
stack được phát triển từ đầu những năm 2000, phiên bản mới nhất hiện nay là Elk
6.4.
Elk stack có các ưu điểm sau:
- Đây là bộ công cụ mã nguồn mở, không tốn nhiều chi phí khi triển khai.

- Elk stack vừa được phát triển gần đây, rất được ưa dùng nên cộng đồng hỗ trợ
đơng đúc, mạnh mẽ.
- Có thể thu thập log từ nhiều nguồn khác nhau: log hệ thống, log ứng dụng,
log thiết bị mạng, log hệ thống API (application programing interface).
- Có khả năng tương thích cao, dễ dàng tích hợp với các hệ thống khác mà
khơng gặp khó khăn.
- Giao diện Kibana trực quan, sinh động.
- Phương tiện cảnh báo đa dạng, tích hợp Email, Sms, các ứng dụng OTP (one
time password) như Telegram, Whatsapp.
- Hiệu năng xử lý cao, có thể chịu tải một lượng lớn dữ liệu đẩy về mà không
cần quá phụ thuộc vào khả năng xử lý của các thiết bị phần cứng.
- Giải quyết được hầu hết các bài toán trong giám sát hệ thống mạng (như giám
sát hạ tầng, giám sát dịch vụ, giám sát an ninh, giám sát người dùng). Đây là
ưu điểm chính giúp Elk stack trong tương lai sẽ được các công ty, tổ chức
triển khi giám sát tập trung trong hệ thống mạng của họ.
Bộ công cụ Elk stack gồm bốn thành phần:
- Elasticseach: tìm kiếm và truy vấn log.
- Logstash: tiếp nhận log từ nhiều nguồn, xử lý và ghi vào cơ sở dữ liệu.
- Kibana: giao diện để quản lý, thống kê log. Đọc thông tin từ Elasticseach.
- Beats: tập công cụ chuyên dụng để thu thập dữ liệu.
2. Nguyên lý hoạt động của Elk stack
Đầu tiên, thông tin cần giám sát sẽ được đưa đến máy chủ Elk thông qua nhiều
con đường.


Ví dụ: server gửi UDP request chứa log tới URL của Logstash, hoặc Beats thu
thập các thông tin từ các bộ công cụ chuyên dụng cài trên các server và gửi lên
Logstash hoặc Elasticsearch.
- Logstash sẽ đọc những log này, thêm những thông tin như thời gian, IP, parse
dữ liệu từ log (server nào, độ nghiêm trọng, nội dung log) ra, sau đó ghi xuống

database là Elasticsearch.
- Khi muốn xem log, người dùng vào URL của Kibana. Kibana sẽ đọc thông
tin log trong Elasticsearch, hiển thị lên giao diện cho người dùng query và xử
lý. Kibana hiển thị thông tin từ log cho người dùng.
Elasticsearch
ElasticSearch là một cơng cụ tìm kiếm cấp doanh nghiệp (enterprise-level
search engine). Mục tiêu của ElasticSearch là tạo ra một công cụ, nền tảng hay kỹ
thuật tìm kiếm và phân tích trong thời gian thực nhanh chóng và chính xác, cũng
như cách để có thể áp dụng hay triển khai một cách dễ dàng vào nhiều nguồn dữ liệu
(data sources) khác nhau. Nguồn dữ liệu nói ở trên trên bao gồm các cơ sở dữ liệu
nổi tiếng như MS SQL, PostgreSQL, MySQL, ...
Một số đặc điểm về ElasticSearch:
- Elasticsearch là một search engine.
- Elasticsearch được xây dựng để hoạt động như một server cloud
- Phát triển bằng ngôn ngữ Java.
- Là phần mềm open-source được phát hành theo giất phép của Apache
License.
- Elasticsearch có thể tích hợp được với tất cả các ứng dụng sử dụng các
loại ngôn ngữ: Java, JavaScript, Groovy, .NET, PHP, Perl, Python, Ruby
Cơ chế hoạt động của ElasticSearch:
- Có khả năng trả về kết quả tìm kiếm một cách nhanh chóng và chính xác
trong một nguồn dữ liệu lớn (big data source).
- Elasticsearch khơng chỉ tìm kiếm được các nguồn cơ sở dữ liệu nổi tiếng
như MySQL, MS SQL, PostgreSQL, mà có thể là văn bản (text), pdf,
doc.
Theo như cách thông thường tìm kiếm trong cơ sở dữ liệu database đều biết thì
có hai cách là:


- Cách 1: Lật từng trang để tìm kiếm (No index).

- Cách 2: Lật tới phần mục lục để tìm kiếm.
ElasticSearch cũng áp dụng giải pháp giống Index. Tuy nhiên về mặt cơ chế xử
lý và tìm kiếm thì có sự khác biệt, Index trong ElasticSearch được gọi là Inverted
Index.kỹ thuật thay vì index theo từng đơn vị row (document) giống như mysql thì
chúng ta sẽ biến thành Index theo đơn vị term. Cụ thể hơn, Inverted Index là một
cấu trúc dữ liệu, nhằm mục đích map giữa term và các document chứa term đó, giúp
gia tăng khả năng tìm kiếm.
Logstash
Logstash là một công cụ thu thập dữ liệu mã nguồn mở với khả năng pipelining
thời gian thực. Logstash có thể tự động thu thập dữ liệu từ nhiều nguồn khác nhau
và chuẩn hóa dữ liệu đó phụ thuộc vào đích đến của dữ liệu.
Logstash có một số lượng plugin đồ sộ (hơn 200) có thể đáp ứng bất kỳ dữ liệu
nào được đưa đến đầu vào. Đơn giản nhất là log, metrics. Với web, logstash có thể
biến các requests HTTP thành các sự kiện để phân tích. Hay có thể làm việc với
NoSQL thông qua giao diện JDBC, cung cấp các cảm biến và IoT,…
Logstash thường sử dụng giao thức Syslog hay SNMP để có thể thu thập log.
Đây là 2 giao thức chính thường được sử dụng trong các hệ thống giám sát nhằm thu
thập các thông tin và đẩy dữ liệu về máy chủ giám sát.
Syslog là một giao thức client/server. Đây là giao thức dùng để chuyển log và
thông điệp đến máy nhận log. Máy nhận log thường được gọi là syslogd, syslog
daemon hoặc syslog server. Syslog có thể gửi qua UDP hoặc TCP. Các dữ liệu được
gửi dạng cleartext. Syslog dùng cổng 514.
Syslog được phát triển năm 1980 bởi Eric Allman, nó là một phần của dự án
Sendmail, và ban đầu chỉ được sử dụng duy nhất cho Sendmail. Nhưng syslog hiện
nay trở thành giải pháp khai thác log tiêu chuẩn trên Unix-Linux cũng như trên hàng
loạt các hệ điều hành khác và thường được tìm thấy trong các thiết bị mạng như
switch, router.
Syslog ban đầu sử dụng UDP, điều này đương nhiên không đảm bảo cho việc
truyền tin. Tuy nhiên sau đó IETF đã ban hành RFC 3195 Reliable Delivery cho
syslog. Nó giúp đảm bảo tin cậy cho syslog và RFC 6587 Transmission of Syslog

Messages over TCP giúp truyền tải thông báo syslog qua TCP. Điều này có nghĩa là


ngồi UDP thì giờ đây syslog cũng đã sử dụng TCP để đảm bảo an tồn cho q
trình truyền tin.
Trong chuẩn syslog, mỗi thông báo đều được dán nhãn và được gán các mức
độ nghiêm trọng khác nhau. Các loại phần mềm sau có thể sinh ra thơng báo: auth,
authPriv, daemon, cron, ftp, dhcp, kern, mail, syslog, user, ... Với các mức độ nghiêm
trọng từ cao nhất trở xuống Emergency, Alert, Critical, Error, Warning, Notice, Info,
and Debug.
SNMP viết tắt của Simple Network Management Protocol, là một giao thức
chuyên được sử dụng trong vấn đề quản lý, giám sát hệ thống mạng. SNMP có những
quy định riêng, những thành phần riêng để các thành phần trong hệ thống mạng có
thể tuân theo, từ đó thu thập được các log trong hệ thống mạng để quản lý, giám sát.
SNMP sử dụng UDP, chạy trên cổng 161 hoặc 162.
Một số các chức năng của các phần mềm sử dụng giao thức SNMP gồm:
- Theo dõi tốc độ đường truyền, lưu lượng truyền và nhận.
- Lấy thông tin về phần cứng của máy chủ (RAM, Chip, Ổ cứng,…).
- Tự động cảnh báo (gửi mail, sms) khi có sự cố.
SNMP được thiết kế chạy trên nền TCP/IP và quản lý các thiết bị có nối
mạng TCP/IP. Nếu thiết bị cần giám sát có nối mạng, sử dụng IP và hỗ trợ SNMP
thì hồn tồn có thể giám sát, quản lý nó từ xa thơng qua SNMP.
Đặc điểm của giao thức SNMP:
- Thiết kế đơn giản hóa q trình quản lý các thành phần trong mạng. Các
phần mềm sử dụng SNMP có thể được phát triển nhanh và tốn ít chi phí.
- Có thể mở rộng các chức năng quản lý, giám sát.
- Có thể thiết kế để hoạt động độc lập với các kiến trúc và cơ chế của các
thiết bị hỗ trợ SNMP.
Kibana
Kibana là một nền tảng phân tích và trực quan mã nguồn mở được thiết kế để

làm việc với Elasticsearch. Kibana để tìm kiếm, xem và tương tác với dữ liệu được
lưu trữ trong Elasticsearch. Từ đó dễ dàng thực hiện phân tích dữ liệu và trực quan
hóa dữ liệu của mình thông qua biểu đồ, bảng.


Kibana giúp nắm bắt nhanh chóng các dữ liệu có khối lượng lớn. Giao diện đơn
giản, dựa vào trình duyệt cho phép nhanh chóng hiển thị các thay đổi khi truy vấn
Elasticsearch trong thời gian thực.
Beats
Beats là một tập hợp các công cụ thu thập thông tin chuyên dụng, được biết đến
như là các Shipper (người vận chuyển) giúp thu thập và gửi dữ liệu từ Client tới máy
chủ ELK. Ngồi ra, các beat này có thể được gửi thẳng trực tiếp lên Elasticsearch
do bản thân các công cụ đã được chuẩn hóa sẵn, việc kết nối các beat đến logstash
thường mang ý nghĩa bảo mật đối với các hệ thống tầm lớn khi họ muốn bảo vệ dịch
vụ elasticsearch.
Trong Beats có rất nhiều các Beat “con”, cụ thể:
- Filebeat: đây là công cụ chuyên dùng để thu thập log và gửi log về cho hệ
thống ELK. Filebeat có một điểm mạnh mà cách thu thập thơng thường khơng
thể có được, chính là khả năng theo dõi tình trạng của ELK và điều chỉnh
lượng log đẩy về. Nếu hệ thống ELK đang gặp tình trạng quá tải về khối lượng
cần xử lý, Filebeat sẽ quan sát và giảm lượng log đổ về bằng cách sử dụng
hàng chờ.
- Metricbeat: đây là công cụ chuyên dùng để thu thập hiệu năng của máy chủ.
Ngồi hiệu năng phần cứng máy chủ, Metricbeat có thể khai thác thông tin
các dịch vụ web (Apache, Nginx) hay của database (MySQL, MongoDB).
- Packetbeat: công cụ này sử dụng để giám sát lưu lượng và băng thông trên
các máy chủ. Packetbeat sẽ thu thập thông tin về lưu lượng gói tin vào và ra
của máy chủ, từ đó tổng kết và gửi về cho hệ thống ELK.
- Winlogbeat: khác với các hệ điều hành mã nguồn mở Linux, Windows có một
cấu trúc hồn tồn khác, và khó can thiệp vào sâu trong hệ thống để thu thập

thông tin. Winlogbeat ra đời nhằm thu thập những sự kiện xảy ra bên trong hệ
điều hành Windows.
- Auditbeat: Winlogbeat dành cho hệ điều hành Windows, thì Auditbeat được
dành riêng cho hệ điều hành linux. Auditbeat giúp quản lý các folder, các tập
tin hệ thống trong hệ điều hành Linux.
- Heartbeat: công vụ Heartbeat được sử dụng nhằm giúp cho hệ thống giám sát
có thể biết được trạng thái dịch vụ đó có cịn hoạt động hay khơng.


CHƯƠNG 3. (THỰC NGHIỆM) SỬ DỤNG ELK STACK ĐỂ PHÂN TÍCH,
GIÁM SÁT LOG
Trong phần thực nghiệm của nhóm, chúng em tập trung làm rõ hơn về cách
quan sát và cách hoạt động của bộ phần mềm Elk Stack.
Sau khi cài đặt ELK trên máy .
Truy

cập

vào

Kibana

theo

địa

chỉ

IP


của

ELK,



dụ

http://192.168.1.104:5601, nhấn vào phần Discover, chọn mục Index Management
của Elasticsearch, bạn sẽ thấy các index có tiền tố là filebeat-*, chính là các index
lưu dữ liệu log do Filebeat gửi đến Logstash và Logstash để chuyển lưu tại
Elasticsearch.
Cách cài đặt filebeat-*
sudo apt update
sudo apt upgradewget -qO - |
sudo apt-key add -echo "deb stable
main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.listsudo
apt-get install apt-transport-https
sudo apt updatesudo apt install filebeatsudo filebeat modules enable systemsudo
systemctl start filebeatsudo systemctl enable filebeat
Sau khi cài đặt, cấu hình để nó gửi log đến Logstash như trên
Tương tự nếu muốn dùng metricbeat thì cài đặt yum -y install metricbeat.

Hình 1. Màn hình Management của Elasticseach.


Để truy vấn bằng Kibana ta sẽ tạo các Index patterns, đó là truy vấn thơng tin
các index có tiền tố là filebeat-, nhấn vào Index patterns của Kibana, bấm vào Create
index pattern
Điền filebeat-* vào index pattern, rồi nhấn Next Step


Hình 2. Tạo index pattern trên Kibana.
- Chọn @timestamp ở mục Time Filter field name, rồi nhấn Create Index
Pattern

Hình 3. Tạo index pattern trên Kibana (bước 2).
Cuối cùng, bấm vào Discover, để xem thông tin về các log. Mặc định đang liệt các
log 15 phút cuối


Hình 4. Giao diện hiển thị quan sát các log được ghi lại.
Kịch bản thực nghiệm:
- Bước 1: Cài đặt bộ phần mềm ELK trên 1 máy.
- Bước 2: Vào Kibana để cấu hình chi tiết
- Bước 3: Cài đặt thơng số hiển thị trên Dashbroads
- Bước 4:
Cấu hình: filebeat-*.
Cấu hình: metricbeat.
- Bước 5: Tạo các Index patterns.
Cài đặt Apache : yum install httpd.
Kích hoạt apache : systemctl start http.
Truy cập apache : 192.168.100.10 thử tạo 1 lỗi để ghi lại log.
- Bước 6: Sử dụng Kibana để quan sát log của lỗi đó.
Để thu thập từ các Client khác, chúng ta cài đặt tương tự và nạp các file filebeat-*
để quan sát các log được gửi tới từ Client.


KẾT LUẬN
Hai chương của chuyên đề đã chỉ ra rằng mục tiêu đặt ra khi thực hiện chuyên
đề cơ bản đã đạt được. Cụ thể là:

Chương 1 đã đưa ra được khái niệm về log hệ thống, các loại log hệ thống.
Đồng thời chương nayc cũng đã đề cập đến chức năng chính của hệ thống thu thập,
phân tích và giám sát log cũng như cách thức hoạt động cơ bản.
Chương 2 đã tập trung tìm hiểu về Elk Stack. Cụ thể là:
- Cấu trúc của Elk Stack.
- Cách thức hoạt động của Elk Stack.
Chương 3 đã sử dụng Elk Stack để thực hiện thu thập, phân tích và giám sát
log hệ thống.
Tuy nhiên, như một xu thế tất yếu của ngành Cơng nghệ thơng tin nói riêng và
chun ngành An tồn thơng tin nói chung, ngày càng có nhiều phương thức tấn
công vào hệ thống tinh vi hơn. Hạn chế của chuyên đề là mới chỉ tìm hiểu ở mức cơ
bản về hệ thống thu thập và giám sát log, phạm vi bó hẹp trong một hệ thống nhất
định là Elk Stack. Việc giải quyết các hạn chế này chính là hướng phát triển của đề
tài.



×