Ngày nay với sự phát triển chóng mặt của của ngành công nghệ thông tin, nhiều doanh nghiệp bắt đầu chú trọng vào mặt này, áp dung công nghệ thông tin vào kinh doanh, quy trình quản lý. Các hệ thống công nghệ thông tin ngày càng trở nên phức tạp và ngày càng mở rộng, các hệ thống này tạo ra lượng dự liệu khổng lồ phức tạp nhưng lại phân tán không tập trung mà cụ thể ở đây là log. Các log này sinh ra liên tục trong quá trình vận hành hệ thống, và nằm phân tán trong nhiều thiết bị khác nhau, thông thường nhà quản trị phải đăng nhập vào từng thiết bị và kiểm tra phân tích, việc lưu trữ quản lý cũng cực kì khó khăn. Nhằm giải quyết yêu cầu trên chúng ta nên sử dụng bộ ELK để quản lý và phân tích log theo thời gian thực giúp quản lý đăng nhập tập trung, thao tác đơn giản và tăng hiệu quả làm việc đồng thời khai thác tối đa lợi ích từ các tập tin log. Đề tài được đặt ra dưới mục đích lấy được sự kiến thức về một hệ thống lưu trữ và quản lý log tập trung là như thể nào? Triển khai được một ví dụ demo về việc lưu trữ và quản lý log tập trung cho một hệ thống và qua đó phân tích để thấy được mặt lợi hại, tích cực của việc quản lý log tập trung so với cách truyền thống. Sau khi thực hiện xong đề tài có thể làm quen được với cách nguyên cứu, tìm hiểu một công nghệ mới và tìm ra hướng phát triển cho bản thân.Tập tin log là một tập tin được các thiết bị tạo ra liên tục trong quá trình hoạt động, các tập tin này lưu lại nhiều thông tin về các hoạt động của các thiết bị này. Tập tin log chữa rất nhiều thông tin nhạy cảm và rất có giá trị đối với các quản trị viên cũng như các hacker.Mỗi một loại thiết bị sẽ sẽ có 1 cấu trúc ghi log riêng, các thông tin được ghi log lại cũng rất khác nhau. Hơn nữa các tập tin log này cũng nằm riêng lẽ trên từng thiết bị, được biểu hiện dưới dạng văn bản thô, việc lưu trữ, quản lý, và phân tích các file log này thực sự là vấn đề nan giải các các nhà quản trị, đặc biệt là ở các hệ thống lớn như ISP…
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THƠNG ĐỒ ÁN CHUN NGÀNH TÌM HIỂU BỘ CÔNG CỤ ELK Sinh viên thực hiện: Huỳnh Tấn Duy Nguyễn Hoàng Thanh Giảng viên hướng dẫn: Nguyễn Anh Tuấn Ngày 15 tháng năm 2018 Lời cảm ơn! Lời đầu tiên, em xin chân thành cảm ơn đến q thầy khoa Mạng máy tính & truyền thơng tạo điều kiện thuận lợi, đóng góp ý kiến giúp đỡ nhiệt tình để nhóm em có hội tiếp cận thực đề tài Em xin chân thành cảm ơn thầy Nguyễn Anh Tuấn tận tình bảo em suốt trình thực đề tài Để hồn thành đề tài, thầy không tiếc thời gian trợ giúp kiến thức chuyên môn tài liệu tham khảo Một lần em xin chân thành cảm ơn! Nhóm sinh viên thực Huỳnh Tấn Duy Nguyễn Hoàng Thanh *Nhận xét giáo viên hướng dẫn: Tp Hồ Chí Minh, Ngày 15 tháng năm 2018 MỤC LỤC Giới thiệu đề tài: 1.1 Tổng quan: 1.2 Mục tiêu: .6 Lý thuyết tập tin log công cụ ELK .6 2.1 Tìm hiểu tập tin log 2.2 Giới thiệu công cụ ELK (Elasticsearch, Logstash Kibana): 2.2.1 Giới thiệu Elasticsearch .6 2.2.2 Giới thiệu Logstash 2.2.3 Giới thiệu Kibana .7 2.2.4 Hệ sinh thái ELK STACK Triển khai phân tích log công cụ ELK .8 3.1 Cấu hình hệ thống tảng VMware 3.2 Mơ hình triển khai .9 3.3 Cài đặt: 3.3.1 Cài đặt Java .9 3.3.2 Cài đặt cấu hình Elasticsearch .9 3.3.3 Cài đặt cấu hình Kibana với Nginx 11 3.3.4 Cài đặt cấu hình Logstash 13 3.3.5 Cài đặt gói phụ trợ filebeat ELK server 15 3.3.6 Cài đặt cấu hình filebeat Ubuntu desktop 16.04 – client 16 3.4 Phân tích log .18 Kết luận .19 4.1 Kết luận chung kết đạt 19 4.2 Mức độ hoàn thành 19 4.3 Hướng phát triển .19 Giới thiệu đề tài: 1.1 Tổng quan: Ngày với phát triển chóng mặt của ngành cơng nghệ thơng tin, nhiều doanh nghiệp bắt đầu trọng vào mặt này, áp dung cơng nghệ thơng tin vào kinh doanh, quy trình quản lý Các hệ thống công nghệ thông tin ngày trở nên phức tạp ngày mở rộng, hệ thống tạo lượng dự liệu khổng lồ phức tạp lại phân tán không tập trung mà cụ thể log Các log sinh liên tục trình vận hành hệ thống, nằm phân tán nhiều thiết bị khác nhau, thông thường nhà quản trị phải đăng nhập vào thiết bị kiểm tra phân tích, việc lưu trữ quản lý khó khăn Nhằm giải yêu cầu nên sử dụng ELK để quản lý phân tích log theo thời gian thực giúp quản lý đăng nhập tập trung, thao tác đơn giản tăng hiệu làm việc đồng thời khai thác tối đa lợi ích từ tập tin log 1.2 Mục tiêu: Đề tài đặt mục đích lấy kiến thức hệ thống lưu trữ quản lý log tập trung thể nào? Triển khai ví dụ demo việc lưu trữ quản lý log tập trung cho hệ thống qua phân tích để thấy mặt lợi hại, tích cực việc quản lý log tập trung so với cách truyền thống Sau thực xong đề tài làm quen với cách ngun cứu, tìm hiểu cơng nghệ tìm hướng phát triển cho thân Lý thuyết tập tin log cơng cụ ELK 2.1 Tìm hiểu tập tin log Tập tin log tập tin thiết bị tạo liên tục trình hoạt động, tập tin lưu lại nhiều thông tin hoạt động thiết bị Tập tin log chữa nhiều thơng tin nhạy cảm có giá trị quản trị viên hacker Mỗi loại thiết bị sẽ có cấu trúc ghi log riêng, thông tin ghi log lại khác Hơn tập tin log nằm riêng lẽ thiết bị, biểu dạng văn thô, việc lưu trữ, quản lý, phân tích file log thực vấn đề nan giải các nhà quản trị, đặc biệt hệ thống lớn ISP… Tác dụng log: Log ghi lại liên tục thông báo hoạt động hệ thống dịch vụ triển khai hệ thống tập tin tương ứng Log thường tập tin văn thông thường dạng rõ tức bạn dễ dàng đọc nó, dùng công cụ nano, notepad, vim, để đọc Các file log nói cho bạn thứ bạn cần biết, để giải rắc rối mà bạn gặp phải miễn bạn biết ứng dụng nào, tiến trình ghi vào log cụ thể Trong hầu hết hệ thống Linux /var/log nơi lưu lại tất log Như nói trên, tác dụng log vơ to lớn, giúp quản trị viên theo dõi hệ thống tơt hơn, giải vấn đề gặp phải với hệ thống dịch vụ ngầm Điều đặc biệt quan trọng với hệ thống cần phải online 24/24 để phục vụ nhu cầu người dùng 2.2 Giới thiệu công cụ ELK (Elasticsearch, Logstash Kibana): 2.2.1 Giới thiệu Elasticsearch Elasticsearch cơng cụ tìm kiếm phân tích dựa phần mềm Lucene Apache Có khả mở rộng liệu theo chiều ngang, tốc độ tìm kiếm nhanh (gần thời gian thực) Chạy server riêng, giao tiếp thông qua RESTful Đồng thời, Elasticsearch hệ thống phân tán, khả mở rộng tuyệt vời Sử dụng liệu cấu trúc dạng JSON Elasticsearch phát triển Java phát hành dạng nguồn mở theo giấy phép Apache 2.2.2 Giới thiệu Logstash Logstash công cụ sử dụng để thu thập, xử lý log, viết Java, nhiệm vụ logstash thu thập log, phân tích sau lưu trữ vào Elasticsearch dạng json Cơ logstash gồm có: INPUT: Đầu vào lấy từ tập tin, syslog, Microsoft Window Eventlogs, STDIN, TCP/UDP, từ nguồn khác Mặc khác, xuất log từ ứng dụng đẩy tới Logstash FILTER: Là lọc, giúp chỉnh sửa, chuẩn hóa, chuyển đổi event OUTPUT: Logstash hỗ trợ nhiều nhiều dạng đầu TCP/UDP, email, HTTP(S), … Ta tích hợp với cơng cụ cảnh báo, vẽ biểu đồ, hệ thống lưu trữ tùy vào môi trường 2.2.3 Giới thiệu Kibana Kibana giao diện web, sử dụng để tìm kiếm phân tích liệu có Elasticsearch Kibana viết HTML Javascript Nó tận dụng khả tìm kiếm phân tích mạnh mẽ Elasticsearch đê hiển thị giao diện mạnh mẽ đến người dùng Kibana giúp đơn giản hóa q trình tạo chia sẻ báo cáo, biểu đồ 2.2.4 Hệ sinh thái ELK STACK Hình 2.1: Hệ sinh thái ELK stack Quá trình thu thập log diễn sau: Các shipper (filebeat, resyslog, …): đẩy log từ client đến Broker, Broker đưa log vào hàng đợi trước chuyển tiếp đến Logstash, tránh tình trạng mát liệu tình trạng thắt nút cổ chai gây trình truyền liệu Logstash xử lý gói tin log đến lưu trữ dạng Json document đẩy đến Elasticsearch Elasticsearch lưu trữ tìm kiếm tất liệu Kibana tìm kiếm hiển thị liệu lấy từ Elaticsearch Triển khai phân tích log cơng cụ ELK 3.1 Cấu hình hệ thống tảng VMware Cấu hình server: - Phần cứng: Ubuntu server 16.04, RAM 3G, Hostname: elk-master - Phần mềm: Elasticsearch, Logstash, Kibana, Nginx Cấu hình client: - Phần cứng: Ubuntu desktop 16.04, RAM 1G, hostname: ubuntu - Phần mềm: Filebeat 3.2 Mơ hình triển khai Hình 3.1: Mơ hình triển khai 3.3 Cài đặt: 3.3.1 Cài đặt Java $sudo apt-get update $sudo apt-get install -y python-software-properties softwareproperties-common apt-transport-https Thêm Java PPA vào kho lưu trữ cập nhật lại $sudo add-apt-repository ppa:webupd8team/java –y $sudo apt-get update Cài đặt java $sudo apt-get install -y oracle-java8-installer Kiểm tra sau cài đặt $java -version Hình 3.2: Kiểm tra phiên java 3.3.2 Cài đặt cấu hình Elasticsearch Trước cài cần thêm khóa GPG vào kho máy chủ $wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - Thêm Elastic 5.x vào kho $echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list Cập nhật lại kho cài đặt Elasticsearch 5.6 $sudo apt-get update $sudo apt install –y elasticsearch Sau cài đặt, cấu hình Elasticsearch $sudo nano /etc/elasticsearch/elasticsearch.yml Thêm vào cuối tập tin network.host: localhost – chặn truy cập từ bên vào http.port: 9200 Mở tệp tin /etc/elasticsearch/jvm.options $sudo nano /etc/elasticsearch/jvm.options Tìm dòng -Xms Xmx sửa lại để tăng dung lượng RAM vùng heap size lên Giúp elasticsearch chạy ổn định Mẫu: -Xms1g -Xmx2g Lưu thoát Reload cho dịch vụ Elasticsearch khởi động hệ thống $sudo systemctl daemon-reload $sudo systemctl enable elasticsearch $sudo systemctl start elasticsearch Kiểm tra Elasticsearch chạy cổng mở với ‘state’ LISTEN $sudo netstat -plntu Hình 3.3: Kiểm tra Elasticsearch mở cổng 9200 Kiểm tra Elasticsearch chạy truy vấn đơn giản sau $curl localhost:9200 Kết Hình 3.4: Kết kiểm tra chạy Elasticsearch 3.3.3 Cài đặt cấu hình Kibana với Nginx Nginx làm proxy ngược cho Kibana, Kibana lắng nghe cục (localhost), mặc định Kibana cho phép truy cập trực tiếp khơng qua q trình xác thực nguy hiểm Do Nginx xác thực trước làm việc với kibana Cài đặt Kibana $sudo apt-get install -y kibana Cấu hình lại kibana.yml $sudo nano /etc/kibana/kibana.yml Nếu có bỏ comment dòng chứa server.port, server.host elasticsearch.url server.port: 5601 server.host: "localhost" elasticsearch.url: "http://localhost:9200" Lưu Cấu hình cho dịch vụ kibana khởi động hệ thống $sudo systemctl enable kibana $sudo systemctl start kibana Kiểm tra kibana mở cổng 5601 chưa $sudo netstat -plntu Hình 3.5: Kiểm tra kibana mở cổng 5601 Sau chắn kibana chạy, cài đặt Nginx cấu hình làm proxy ngược để xác thực Cài đặt Nginx gói tiện ích apache2 $sudo apt-get install -y nginx apache2-utils Tạo tệp tin kibana thư mục Nginx $sudo nano /etc/nginx/sites-available/kibana Cấu sau server { listen 80; server_name ELKlog.com; Tên miền auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.kibana-user; location / { proxy_pass http://localhost:5601; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } Lưu thoát Tạo xác thực với lệnh htpasswd, với người dùng admin $sudo htpasswd -c /etc/nginx/.kibana-user admin Kích hoạt kibana virtual host cách tạo liên kết mềm từ thưc mục sites-available tới thư mục sites-enable $ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/ Đảm bảo cấu hình chạy lệnh $sudo nginx –t Hình 3.6: Kiểm tra cấu hình nginx Khởi động lại nginx $sudo systemctl restart nginx Kết sau hồn tất Hình 3.7: Xác thực trước làm việc với kibana 3.3.4 Cài đặt cấu hình Logstash Trong bước này, cài đặt cấu hình Logstash để tập trung log từ filebeat, sau lọc chuyển đổi tất liệu vận chuyển đến Elasticsearch Cài đặt Logstash $sudo apt-get install -y logstash Thêm địa server hostname vào tập tin hosts $sudo nano /etc/hosts Như sau: 192.168.10.10 elk-master Tạo chứng SSL để đảm bảo kênh truyền an toàn từ filebeat đến Logstash $cd /etc/logstash $sudo openssl req -subj /CN=elk-master -x509 -days 3650 -batch -nodes -newkey rsa:4096 -keyout logstash.key -out logstash.crt Sau bước chứng lưu thư mục /etc/logstash Bây giờ, tạo tập tin cấu hình cho logstash Chúng ta tạo tập tin filebeatinput.conf để nhận liệu từ filebeat output-elasticsearch.conf để xuất liệu tới Elasticsearch Tạo tập tin filebeat-input.conf $sudo nano /etc/logstash/conf.d/filebeat-input.conf Nhập input { beats { port => 5443 ssl => true ssl_certificate => "/etc/logstash/logstash.crt" ssl_key => "/etc/logstash/logstash.key" } } Lưu thoát Tạo tập tin output-elasticsearch.conf $sudo nano /etc/logstash/conf.d/output-elasticsearch.conf Nhập output { elasticsearch { hosts => ["localhost:9200"] hosts => "localhost:9200" manage_template => false index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } } Lưu Cấu hình cho dịch vụ logstash khởi động hệ thống $sudo systemctl enable logstash $sudo systemctl start logstash Kiểm tra logstash chạy mở cổng 5443 chưa Hình 3.8: Kiểm tra logstash chạy mở cổng 5443 3.3.5 Cài đặt gói phụ trợ filebeat ELK server Cài đặt mẫu mục (Index template) Trong Elasticsearch mẫu mục sử dụng để định nghĩa cài đặt ánh xạ trường nên phân tích Tải filebeat curl -L –O \ https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.5amd64.deb Cài đặt $sudo dpkg -i filebeat-5.6.5-amd64.deb Chạy lệnh sau để nạp mẫu mục $curl -H 'Content-Type: application/json' –XPUT \ 'http://localhost:9200/_template/filebeat' – \ d@/etc/filebeat/filebeat.template.json Tải Index pattern cho kibana Để giúp dễ khám phá filebeat kibana, nhà phát triển tạo mẫu mục filebeat-* Để dùng nó, làm sau: $sudo /usr/share/filebeat/script/import_dashboards \ –only-index Kết Hình 3.9: Mơ tả mẫu mục filebeat-* tải 3.3.6 Cài đặt cấu hình filebeat Ubuntu desktop 16.04 – client Filebeat shipper Được cài đặt dịch vụ chạy ngầm máy cần giám sát, Filebeat giám sát thư mục log tập tin log cụ thể, đưa tệp tin gửi chúng tới Elasticsearch Logstash để lập mục Trên server ELK chép tập tin logstash.crt tới client $sudo scp /etc/logstash/logstash.crt \ nhtcntt@192.168.10.102:/home/nhtcntt/ Cấu hình tập tin hosts $sudo nano /etc/hosts Như sau: 192.168.10.10 elk-master Cài đặt Filebeat $wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add $sudo apt-get install -y apt-transport-https $echo "deb https://artifacts.elastic.co/packages/5.x/apt main" | $sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list $sudo apt-get update $sudo apt-get install -y filebeat stable Cấu hình filebeat cách chỉnh sửa tập tin filebeat.yml $sudo nano /etc/filebeat/filebeat.yml Cấu hình sau cho phép nhận log từ syslog paths: - /var/log/auth.log - /var/log/syslog Cấm filebeat đẩy liệu elasticsearch cách comment dòng sau với dấu # # Elasticsearch output -#output.elasticsearch: # Array of hosts to connect to # hosts: ["localhost:9200"] Cho phép filebeat đẩy liệu tới Logstash cách bỏ comment dòng sau: output.logstash: # The Logstash hosts hosts: ["elk-master:5443"] bulk_max_size: 2048 ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"] template.name: "filebeat" template.path: "filebeat.template.json" template.overwrite: false Lưu Sau chuyển tập tin logstash.crt tới thư mục /etc/filebeat/ $sudo mv ~/logstash.crt /etc/filebeat Cấu hình để dịch vụ filebeat khởi động hệ thống $sudo systemctl start filebeat $sudo systemctl enable filebeat Để kiểm tra dịch vụ chạy sử dụng lệnh $sudo systemctl status filebeat Hình 3.10: Kiểm tra dịch vụ filebeat chạy 3.4 Phân tích log Sau q trình thu thập log Ubuntu Desktop 16.04 ta Hình 3.11: Hiển thị thơng tin log Hình 3.12: Vẽ biểu đồ Kết luận 4.1 Kết luận chung kết đạt Qua trình tìm hiểu, nghiên cứu nội dung đề tài cho thấy tầm quan trọng việc phân tích quản lý log tập trung Nhờ tập trung log lại, người quản trị có nhìn tổng quan, đánh giá hệ thống giúp phát kịp thời mối de dọa tiềm ẩn, từ đưa định giải pháp phù hợp, kịp thời đảm bảo an toàn cho hệ thống người dùng Do thời gian có hạn, điều kiện thực đồ án, việc sưu tầm tài liệu hạn chế với kiến thức hạn hẹp, đồ án thực nhiều thiếu sót, chưa đạt kết mong đợi 4.2 Mức độ hoàn thành Trong q trình làm đồ án, nhóm chúng em hồn thành bước thu thập phân tích liệu chưa tốt lắm, chưa cài X-Pack, chưa tạo kênh cảnh báo tới người quản trị Nhóm phần hiểu việc triển khai hệ thống ELK stack thể nào, chưa thử nghiệm môi trường thực tế 4.3 Hướng phát triển Trong tương lai nhóm phát triển đề tài thêm để tùy chỉnh lại web kibana để thêm số tính khơng quản lý mà phân tích log Kết hợp với số cơng nghệ thiết bị khác để tạo nên hệ thống hoàn thiện Nhóm cố gắng thực việc thử nghiệm ELK stack hệ thống thật chạy realtime