Cảnh báo về việc public các server Elasticsearch

Khác với database Redis ở bài trước chỉ chứa những dữ liệu phân mảnh, cache, không cấu trúc và khó tìm kiếm phân loại thì Elasticsearch nguy hiểm hơn ở nhiều cấp độ. Mình có thể tự tin nói rằng hơn 95% dữ liệu được index trong Elasticsearch là dữ liệu quan trọng về người dùng, doanh thu, kháchh hàng, các thiết bị, lượng truy cập, log,… mà bên quản lý sẽ cần để truy xuất và tạo report.


Cũng như lần trước, mình tìm các server Elastic ở Việt Nam cho thân thuộc. Với Elasticsearch, gần như 99% bạn sẽ không gặp một phương thức xác thực nào vì phương thức bảo mật đơn giản nhất là Basic Auth cũng ít được ai để ý, như Redis cũng có xác thực mật khẩu và ít ai dùng vậy 😛

ACwAAAAAAQABAAACADs=

Public server Elasticsearch có hại gì?

Những hệ thống sử dụng Elasticsearch ở Việt Nam rất nhiều, thậm chí lượng dữ liệu rất khủng, vào khoảng hàng chục cho đến hàng trăm gigabyte. Những thông tin được lưu ở đây thường là các log track, log truy cập vào hệ thống, log sử dụng ứng dụng và ngoài ra có rất nhiều hệ thống lưu trữ thông tin người dùng bao gồm tên đăng nhập, địa chỉ email và cá biệt có hệ thống còn lưu trữ mật khẩu người dùng ở dạng plain text.

Cách lọc thông tin từ các server Elasticsearch này rất đơn giản, bạn có thể liệt kê tất cả các indices bằng cách truy cập đường dẫn /_aliases?pretty=true. Từ đó mình có thể tìm theo các indices quan trọng như user, product, access,… để tìm được chủ quản lý của các server này.

Tất cả các server Elasticsearch mà mình có thể tìm được chủ đều đã cố gắng report và tình hình cũng được xử lý nhanh hơn so với các bên cũ vì đều là những tên tuổi lớn. Tuy nhiên thì mình không thấy các trang này thực hiện một bài viết nói về việc hệ thống có vấn đề và dữ liệu người dùng đã bị lộ (từ trước khi mình tìm ra và gửi report). Thây kệ 😁Ngoài ra còn rất rất nhiều server Elasticsearch khác chứa rất nhiều dữ liệu nhạy cảm mà mình không thể tìm được chủ và đành bó tay nếu có ai đó biết và lợi dụng lượng dữ liệu này.


Làm thế nào để an toàn hơn?

Thông thường, các Elasticsearch server nằm đằng sau Kibana và thật sự bạn chỉ cần Kibana là có thể query được rồi. Lí do mà mình nghĩ bên quản lý mở public là để các hệ thống Beats (Filebeat, Winlogbeat,…) có thể gửi dữ liệu về. Từ đó hacker có thể lợi dụng để trích xuất thông tin hay “thâm” hơn là chèn dữ liệu rác vào để hệ thống của bạn xuất sai report và nặng hơn là xóa luôn những dữ liệu này.

Nếu có thể, hãy chạy Elasticsearch ở chế độ localhost và chỉ dùng Kibana để truy xuất dữ liệu. Đối với Kibana, bạn cũng nên đặt nó nằm sau một webserver như Apache hay Nginx để dễ quản lý hơn. Ngoài ra, nếu phải public Elasticsearch để nhận dữ liệu, bạn chỉ nên mở port cho những IP mà bạn có thể tin tưởng được hoặc cài đặt phương thức xác thực tin cậy hơn.

Để lại một trả lời

Địa chỉ email của bạn sẽ không được công bố.