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 toà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, chúng ta cùng 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.
Trang 1HÀ NỘI, 2020
BÁO CÁO BÀI TÂP LỚN AN TOÀ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
BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ
——————————
Trang 2MỤ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
Trang 3DANH 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
Trang 4MỞ ĐẦ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 toà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
Trang 5NỘ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 toà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ộ
Trang 6- 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 quá 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 toà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
Trang 7CHƯƠ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
Trang 8Ví 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à:
Trang 9- 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à
Trang 10ngoài UDP thì giờ đây syslog cũng đã sử dụng TCP để đảm bảo an toàn cho quá
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ì hoàn toà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 quá 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
Trang 11Kibana 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 Ngoà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ủ
Ngoà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 hoàn toà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