Bài 6: Bảo Mật Và Tối Ưu ELK Stack

Giới Thiệu Về Bảo Mật Và Tối Ưu ELK Stack

ELK Stack là một hệ thống mạnh mẽ trong DevOps, nhưng nếu không được bảo mật và tối ưu hóa, nó có thể trở thành điểm yếu, dễ bị tấn công hoặc hoạt động kém hiệu quả. Bảo mật giúp bảo vệ dữ liệu log nhạy cảm, trong khi tối ưu hóa đảm bảo hiệu suất cao và khả năng mở rộng. Ở bài trước, bạn đã học cách giám sát hệ thống với ELK Stack. Bây giờ, chúng ta sẽ tập trung vào cách bảo mật cụm ELK, tối ưu tài nguyên, và mở rộng quy mô để đảm bảo hệ thống vận hành bền vững trong môi trường sản xuất.

Yêu Cầu Trước Khi Bắt Đầu

  • Đã cài đặt và cấu hình ELK Stack (Bài 1), Logstash (Bài 2), Elasticsearch (Bài 3), Kibana (Bài 4), và giám sát hệ thống (Bài 5).
  • Elasticsearch chạy trên localhost:9200, Kibana trên http://your-server-ip:5601.
  • Quyền truy cập terminal với sudo trên Ubuntu 20.04 (hoặc tương tự).

Hướng Dẫn Bảo Mật Và Tối Ưu ELK Stack

Bước 1: Kích Hoạt Bảo Mật Với X-Pack

X-Pack (nay tích hợp sẵn trong Elastic Stack) cung cấp tính năng bảo mật cho ELK Stack.

  1. Kích hoạt X-Pack trong Elasticsearch:

    • Chỉnh file /etc/elasticsearch/elasticsearch.yml:
      xpack.security.enabled: true
    • Tạo mật khẩu cho user mặc định:
      sudo /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto

      Lưu lại mật khẩu của user elastic (VD: elastic:abc123).

  2. Kích hoạt X-Pack trong Kibana:

    • Chỉnh file /etc/kibana/kibana.yml:
      elasticsearch.username: "elastic"
      elasticsearch.password: "abc123"
    • Khởi động lại:
      sudo systemctl restart elasticsearch
      sudo systemctl restart kibana
  3. Đăng nhập Kibana với user elastic và mật khẩu vừa tạo.

Bước 2: Cấu Hình TLS Để Mã Hóa Giao Tiếp

  1. Tạo chứng chỉ tự ký (self-signed) cho Elasticsearch:

    sudo /usr/share/elasticsearch/bin/elasticsearch-certutil ca
    sudo /usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
    • Di chuyển file chứng chỉ đến /etc/elasticsearch/:
      sudo mv elastic-stack-ca.p12 elastic-certificates.p12 /etc/elasticsearch/
      sudo chmod 660 /etc/elasticsearch/*.p12
      sudo chown elasticsearch:elasticsearch /etc/elasticsearch/*.p12
  2. Cấu hình TLS trong /etc/elasticsearch/elasticsearch.yml:

    xpack.security.http.ssl:
     enabled: true
     key: /etc/elasticsearch/elastic-certificates.p12
     certificate: /etc/elasticsearch/elastic-certificates.p12
     certificate_authorities: /etc/elasticsearch/elastic-stack-ca.p12
    xpack.security.transport.ssl:
     enabled: true
     key: /etc/elasticsearch/elastic-certificates.p12
     certificate: /etc/elasticsearch/elastic-certificates.p12
     certificate_authorities: /etc/elasticsearch/elastic-stack-ca.p12
  3. Cập nhật Kibana (/etc/kibana/kibana.yml):

    elasticsearch.ssl.verificationMode: none
    elasticsearch.ssl.certificateAuthorities: /etc/elasticsearch/elastic-stack-ca.p12
  4. Khởi động lại dịch vụ:

    sudo systemctl restart elasticsearch
    sudo systemctl restart kibana

Bước 3: Tối Ưu Hiệu Suất Cụm Elasticsearch

  1. Cấu Hình Heap Size:

    • Chỉnh file /etc/elasticsearch/jvm.options:
      -Xms2g
      -Xmx2g
      • Đặt heap size tối đa 50% RAM (VD: 2GB nếu máy có 4GB RAM).
    • Khởi động lại Elasticsearch.
  2. Quản Lý Shard Và Replica:

    • Giới hạn số shard trên mỗi index:
      curl -X PUT "localhost:9200/my-app-log/_settings" -H 'Content-Type: application/json' -u elastic:abc123 -k -d '
      {
      "index.number_of_shards": 1,
      "index.number_of_replicas": 1
      }'
  3. Xóa Dữ Liệu Cũ:

    • Sử dụng Index Lifecycle Management (ILM) để tự động xóa index cũ:
      curl -X PUT "localhost:9200/_ilm/policy/delete_old_logs" -H 'Content-Type: application/json' -u elastic:abc123 -k -d '
      {
      "policy": {
       "phases": {
         "delete": {
           "min_age": "30d",
           "actions": {
             "delete": {}
           }
         }
       }
      }
      }'
    • Áp dụng policy cho index:
      curl -X PUT "localhost:9200/my-app-log/_settings" -H 'Content-Type: application/json' -u elastic:abc123 -k -d '
      {
      "index.lifecycle.name": "delete_old_logs"
      }'

Bước 4: Mở Rộng Quy Mô Cụm

  1. Thêm node mới vào cụm:
    • Cài Elasticsearch trên máy mới, cấu hình /etc/elasticsearch/elasticsearch.yml:
      cluster.name: my-cluster
      node.name: node-2
      discovery.seed_hosts: ["node-1-ip"]
      cluster.initial_master_nodes: ["node-1-ip"]
    • Khởi động node mới và kiểm tra:
      curl -X GET "node-2-ip:9200/_cluster/health?pretty" -u elastic:abc123 -k
  2. Kiểm tra trạng thái cụm:
    • Đảm bảo số node tăng lên (VD: number_of_nodes: 2).

Bảng So Sánh Các Phương Pháp Tối Ưu Hiệu Suất

Phương Pháp Mô Tả Ứng Dụng Ưu Điểm Nhược Điểm
Heap Size Điều chỉnh bộ nhớ JVM Cụm xử lý nhiều truy vấn Tăng hiệu suất Cần RAM lớn
Shard Management Giảm số shard/replica Index lớn Giảm tải tài nguyên Giảm tính dự phòng
ILM Tự động xóa index cũ Log dài hạn Tiết kiệm dung lượng Cần cấu hình chính xác
Thêm Node Mở rộng cụm Tải cao, dữ liệu lớn Tăng khả năng mở rộng Tăng chi phí vận hành

Lợi Ích Khi Bảo Mật Và Tối Ưu ELK Stack

  • Bảo Vệ Dữ Liệu: Ngăn chặn truy cập trái phép vào log nhạy cảm.
  • Hiệu Suất Cao: Giảm thời gian phản hồi, tăng khả năng xử lý.
  • Mở Rộng Linh Hoạt: Đáp ứng nhu cầu tăng trưởng của hệ thống.

Thực Hành

  1. Kích hoạt X-Pack và kiểm tra đăng nhập Kibana với user elastic.
  2. Cấu hình TLS và truy cập Kibana qua HTTPS.
  3. Áp dụng ILM để xóa index cũ sau 7 ngày. Nếu gặp vấn đề, nhắn mình để cùng giải quyết.

Lời Kết Cho Series

Chúc mừng bạn đã hoàn thành series Hành Trình Làm Chủ ELK Stack Cho DevOps! Từ cài đặt (Bài 1), thu thập log với Logstash (Bài 2), tìm kiếm với Elasticsearch (Bài 3), trực quan hóa với Kibana (Bài 4), giám sát hệ thống (Bài 5), đến bảo mật và tối ưu (Bài 6), bạn đã nắm vững ELK Stack. Đây là nền tảng để bạn triển khai giám sát hiệu quả trong DevOps. Nếu muốn học sâu hơn (VD: ELK với Kubernetes, Filebeat nâng cao), cứ bảo mình – mình sẵn sàng mở series mới! Cảm ơn bạn đã đồng hành – chúc bạn thành công!

Điều hướng chuỗi bài viết<< Bài 5: Giám Sát Hệ Thống Với ELK Stack Trong DevOps
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận