![]() Article ID: 1109
Cập nhật gần nhất: 18 Th11, 2024
MongoDB là gì?MongoDB là một cơ sở dữ liệu được sử dụng trong nhiều ứng dụng, web,… Nó là cơ sở dữ liệu NoSQL vì không dựa trên cấu trúc cơ sở dữ liệu quan hệ dựa trên bảng truyền thống. Thay vào đó, nó sử dụng các tài liệu giống JSON với các lược đồ động. Theo mặc định MongoDB không bật xác thực theo mặc định, có nghĩa là bất kỳ người dùng nào có quyền truy cập vào máy chủ cơ sở dữ liệu được cài đặt đều có thể thêm và xóa dữ liệu mà không bị hạn chế. Để bảo mật lỗ hổng này, hướng dẫn này sẽ hướng dẫn bạn cách tạo người dùng quản trị và kích hoạt xác thực. 1. Cấu hình chỉ cho phép user quản trị truy vấn MongodbBước 1: Tạo User quản trị Để tạo user quản trị, đăng nhập vào MongoDB shell, hãy chạy lệnh sau bên dưới. Tại đây, bạn có thể xem toàn bộ các database hiện có trên hệ thống với lênh: Kết quả trả về: admin 0.000GB User quản trị sẽ được khởi tạo trong database admin, bạn thực hiện tiếp lệnh khởi tạo như sau:
Trong đó:
Như vậy, bạn đã khởi tạo xong user quản trị và bạn có thể lấy thông tin này để tiến hành cấu hình xác thực. Bước 2: Bật Authentication Để có thể bật Authentication chúng ta cần sửa file mongod.conf Chuyển đến dòng #security, bỏ comment # và thêm authorization: enabled Khởi động lại mongod
Bước 3: Kiểm tra Tiến hành truy cập lại mongoDB shell và thực hiện truy vấn một lệnh bất kỳ. Ở bài viết này sẽ sử dụng lệnh hiển thị tất cả các bản có trong hệ thống.
Khi này bạn nhận được thông báo: MongoServerError[Unauthorized]: Command listDatabases requires authentication Như vậy, Authentication đã được bật thành công. Tiếp đến ta truy cập mongoDB shell với tài khoản đã khởi tạo trước đó. Hệ thống sẽ yêu cầu bạn nhập mật khẩu:
Từ đây chúng ta có thể thoải mái thực thi các câu lệnh truy vấn dữ liệu mà không lo gì về xác thực nữa. 2. Thay đổi port mặc định mongoDBCũng giống như bất kỳ cơ sở dữ liệu khác, theo mặc định, MongoDB sẽ lắng nghe các kết nối trên một cổng đó là 27017. Chúng ta có thể sử dụng lệnh bên dưới để kiểm tra cỗng mà MongoDB đang lắng nghe. Để thay đổi cổng mặc định của mongoDB, chúng ta tuỳ chỉnh phần net trong file /etc/mongod.conf: Chúng ta có thể thay đổi sang port khác phù hợp theo nhu cầu của cá nhân. Sau đó lưu lại file và khởi động lại mongoDB để cấu hình đươc cập nhật. 3. Cấu hình MongoDB để truy cập từ xaTại thời điểm này, mặc dù cổng đang mở, MongoDB hiện đang bị ràng buộc với 127.0.0.1, giao diện mạng vòng lặp cục bộ. Điều này có nghĩa là MongoDB chỉ có thể chấp nhận các kết nối bắt nguồn từ máy chủ nơi nó được cài đặt. Để cho phép kết nối từ xa, bạn phải chỉnh sửa tệp cấu hình MongoDB /etc/mongod.conf để liên kết thêm MongoDB với một địa chỉ IP mà máy tính từ xa đáng tin cậy của bạn có thể truy cập được. Bằng cách này, MongoDB của bạn sẽ có thể lắng nghe các kết nối được tạo tới máy chủ MongoDB của bạn từ các máy từ xa. Bạn mở file /etc/mongod.conf, tìm đến bindIP và thêm địa chỉ IP.
Lưu ý rằng đây phải là địa chỉ IP của máy chủ mà bạn đã cài đặt MongoDB, không phải địa chỉ IP của máy từ xa đáng tin cậy của bạn. Cuối cùng lưu file và khởi động lại mongoDB để cấu hình đươc cập nhật. Nếu UFW (tường lửa của máy chủ) đang được bật, hãy chạy lệnh sau để cho phép các kết nối đến từ máy từ xa.
Reload lại UFW
Kiểm tra kết nối: Có một số cách để truy cập shell MongoDB từ xa. Bạn có thể sử dụng tiện ích Netcat để bắt đầu kết nối TCP tới cổng 27017, cổng mặc định mà MongoDB lắng nghe. Trên máy khách, hãy cài đặt Netcat như sau. Tiếp theo, để thiết lập kết nối với máy chủ MongoDB qua cổng 27017, hãy chạy lệnh sau: Ngoài ra, bạn có thể đăng nhập bằng Mongo Shell như sau. 4. Sử dụng xác thực X.509Cấu hình xác thực TLS của máy chủ cho phép kết nối của client để xác minh danh tính của máy chủ. Trước tiên, chúng ta cần lấy chứng chỉ TLS mà máy chủ của chúng ta sẽ hiển thị cho client và chứng chỉ CA mà client sẽ sử dụng để xác minh rằng chứng chỉ đã xuất trình được ký bởi một cơ quan đáng tin cậy. Chúng ta có thể sử dụng certbot để nhận chứng chỉ TLS miễn phí từ Let’s Encrypt hoặc chỉ cần tạo CA và ký chứng chỉ cục bộ bằng lệnh Tiến hành tạo CA tự ký bằng cách thực hiện lệnh sau: Tiếp theo tạo CSR của máy chủ bằng cách thực thi lệnh bên dưới: Ký chứng chỉ máy chủ: Đối với các cụm nhiều node, hãy ký một chứng chỉ cho mỗi node. MongoDB yêu cầu chứng chỉ và khóa phải nằm trong cùng một file, vì vậy hãy đặt chúng lại với nhau trong một file PEM: Bây giờ chúng ta có thể cập nhật cấu hình máy chủ để bật TLS. Chúng ta cũng nên tắt các phiên bản TLS cũ và buộc client sử dụng TLS 1.3, bằng cách cấu hình file /etc/mongod.conf tại phần net: 4. Cho phép truy cập và ghi logĐể kiểm tra chi tiết là một phần không thể thiếu trong quá trình tăng cường bảo mật của bất kỳ hệ thống. MongoDB không cung cấp khả năng ghi nhật ký kiểm tra tích hợp trong phiên bản mã nguồn mở của nó. Chúng ta có thể bật tính năng ghi log. Hệ thống ghi log của MongoDB dựa trên thành phần:
Tiến hành bật trong cấu hình của mongoDB tại /etc/mongod.conf tại phần systemLog:
Chúc các bạn thành công!
Article ID: 1109
Cập nhật gần nhất: 18 Th11, 2024
Lần sửa đổi: 1
Lượt xem: 0
|