Mục lục

Không có mục lục
Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly

Cách thiết lập cấu hình quyền truy cập từ xa cho MongoDB trên Ubuntu 20.04

Ngày đăng: 8 tháng 3 năm 2023

Ubuntu

Giới thiệu

MongoDB là một cơ sở dữ liệu hướng tài liệu được sử dụng trong nhiều ứng dụng web hiện đại. Theo mặc định, nó chỉ cho phép các kết nối bắt nguồn từ cùng một máy chủ nơi nó được cài đặt. Nếu bạn muốn quản lý MongoDB từ xa hoặc kết nối nó với một máy chủ ứng dụng riêng biệt, bạn cần thực hiện một số thay đổi đối với cấu hình mặc định.

Trong hướng dẫn này, bạn sẽ thiết lập cấu hình cài đặt MongoDB để cho phép truy cập một cách an toàn từ một máy tính từ xa đáng tin cậy. Để làm điều này, bạn sẽ cập nhật các quy tắc tường lửa của mình để cung cấp cho máy từ xa quyền truy cập vào cổng mà MongoDB đang lắng nghe các kết nối, sau đó cập nhật tệp cấu hình của nó để thay đổi cài đặt liên kết IP của nó. Sau đó, ở bước cuối cùng, bạn sẽ kiểm tra xem máy từ xa có thể kết nối thành công với cơ sở dữ liệu của bạn hay không.

Điều kiện tiên quyết

Để hoàn thành hướng dẫn này, bạn sẽ cần:

  • Một máy chủ chạy Ubuntu 20.04. Máy chủ này phải có non-root administrative user và tường lửa được thiết lập cấu hình bằng UFW. Thiết lập điều này bằng cách làm theo hướng dẫn thiết lập máy chủ ban đầu của chúng tôi cho Ubuntu 20.04.
  • MongoDB được cài đặt trên máy chủ của bạn. Hướng dẫn này giả định rằng bạn đã cài đặt MongoDB 4.4 hoặc mới hơn. Bạn có thể cài đặt phiên bản này bằng cách làm theo hướng dẫn của chúng tôi về Cách cài đặt MongoDB trên Ubuntu 20.04.
  • Máy tính thứ hai mà từ đó bạn sẽ truy cập phiên bản MongoDB của mình. Để đơn giản, hướng dẫn này giả định rằng máy này là một máy chủ Ubuntu 20.04 khác, với non-root administrative user và tường lửa UFW được thiết lập cấu hình theo hướng dẫn thiết lập máy chủ ban đầu của chúng tôi cho Ubuntu 20.04. Tuy nhiên, Bước 1 và 2, mô tả quy trình thực tế để kích hoạt kết nối từ xa trên máy chủ cơ sở dữ liệu, sẽ hoạt động bất kể máy từ xa đang chạy hệ điều hành nào.

Lưu ý: Cuối cùng, mặc dù không bắt buộc phải hoàn thành hướng dẫn này, chúng tôi thực sự khuyên bạn nên bảo mật cài đặt MongoDB của mình bằng cách tạo tài khoản người dùng quản trị cho cơ sở dữ liệu và bật xác thực. Để thực hiện việc này, hãy làm theo hướng dẫn của chúng tôi về Cách bảo mật MongoDB trên Ubuntu 20.04.

Ngoài ra, bạn có thể tham khảo các đề xuất chính thức của MongoDB về tăng cường bảo mật cũng như danh sách kiểm tra bảo mật của chúng.

Bước 1 — Điều chỉnh Tường lửa

Giả sử bạn đã làm theo hướng dẫn thiết lập máy chủ ban đầu tiên quyết và bật tường lửa UFW trên máy chủ của mình, cài đặt MongoDB của bạn sẽ không thể truy cập được từ internet. Nếu bạn định chỉ sử dụng MongoDB cục bộ với các ứng dụng đang chạy trên cùng một máy chủ, thì đây là cài đặt an toàn và được đề xuất. Tuy nhiên, nếu bạn muốn có thể kết nối với máy chủ MongoDB của mình từ một vị trí ở xa, bạn phải cho phép các kết nối đến cổng nơi cơ sở dữ liệu đang lắng nghe bằng cách thêm quy tắc UFW mới.

Bắt đầu bằng cách kiểm tra cổng cài đặt MongoDB của bạn đang lắng nghe bằng lệnh lsof. Lệnh này thường trả về một danh sách với mọi tệp đang mở trong hệ thống, nhưng khi được kết hợp với tùy chọn -i, nó chỉ liệt kê các tệp hoặc luồng dữ liệu liên quan đến mạng.

Lệnh sau sẽ chuyển hướng đầu ra do lsof -i tạo ra thành lệnh grep tìm kiếm chuỗi có tên mongo:

  1. sudo lsof -i | grep mongo

Đầu ra ví dụ này cho thấy MongoDB đang lắng nghe các kết nối trên cổng mặc định của nó, 27017:

Output
mongod 82221 mongodb 11u IPv4 913411 0t0 TCP localhost:`27017` (LISTEN)

Trong hầu hết các trường hợp, MongoDB chỉ nên được truy cập từ một số vị trí đáng tin cậy nhất định, chẳng hạn như một máy chủ khác đang lưu trữ một ứng dụng hoặc một máy cục bộ được sử dụng để quản lý một phiên bản MongoDB từ xa. Một cách để thiết lập cấu hình điều này là chạy lệnh sau trên máy chủ MongoDB của bạn, lệnh này sẽ mở ra quyền truy cập trên cổng mặc định của MongoDB trong khi chỉ cho phép rõ ràng địa chỉ IP của máy đáng tin cậy khác.

Chạy lệnh sau, đảm bảo thay đổi trust_machine_ip thành địa chỉ IP của máy tính từ xa đáng tin cậy mà bạn sẽ sử dụng để truy cập phiên bản MongoDB của mình.

Lưu ý: Nếu bạn không chắc chắn về địa chỉ IP của máy đáng tin cậy, bạn có thể chạy lệnh curl sau. Thao tác này sẽ truy cập trang web icanhazip.com, trang này sẽ trả về địa chỉ IP của máy mà bạn chạy lệnh:

curl -4 icanhazip.com

Ngoài ra, nếu đầu ra của lệnh trước cho thấy cài đặt MongoDB của bạn đang lắng nghe trên một cổng không mặc định, hãy sử dụng số cổng đó thay cho 27017 trong lệnh này:

  1. sudo ufw allow from trusted_machine_ip to any port 27017

Trong tương lai, nếu bạn muốn truy cập MongoDB từ một máy khác, hãy chạy lại lệnh này với địa chỉ IP của máy mới thay cho trusted_machine_ip.

Bạn có thể xác minh thay đổi trong cài đặt tường lửa bằng ufw:

  1. sudo ufw status

Đầu ra sẽ hiển thị rằng lưu lượng truy cập vào cổng 27017 từ máy chủ từ xa hiện được cho phép:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 27017 ALLOW trusted_machine_ip OpenSSH (v6) ALLOW Anywhere (v6)

Bạn có thể tìm thấy các cài đặt tường lửa nâng cao hơn để hạn chế quyền truy cập vào các dịch vụ trong UFW Essentials: Common Firewall Rules and Commands.

Tiếp theo, bạn sẽ liên kết MongoDB với địa chỉ IP công cộng của máy chủ để bạn có thể truy cập nó từ máy từ xa của mình.

Bước 2 — Cấu hình một bindIP công khai

Tạ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, bản cài đặt 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.

Mở tệp cấu hình MongoDB trong trình soạn thảo văn bản ưa thích của bạn. Ví dụ sau sử dụng nano:

  1. sudo nano /etc/mongod.conf

Tìm phần network interfaces, sau đó tìm giá trị bindIp:

/etc/mongod.conf
. . .
# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1

. . .

Nối một dấu phẩy vào dòng này theo sau là địa chỉ IP công khai của máy chủ MongoDB của bạn:

/etc/mongod.conf
. . .
# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1,mongodb_server_ip

. . .

Xin 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.

Lưu và đóng tập tin. Nếu bạn đã sử dụng nano, hãy làm như vậy bằng cách nhấn CTRL + X, Y, rồi ENTER.

Sau đó, khởi động lại MongoDB để thay đổi này có hiệu lực:

  1. sudo systemctl restart mongod

Sau đó, bản cài đặt MongoDB của bạn sẽ có thể chấp nhận các kết nối từ xa từ bất kỳ máy nào bạn đã cho phép truy cập cổng 27017. Bước cuối cùng, bạn có thể kiểm tra xem máy đáng tin cậy mà bạn đã cho phép thông qua tường lửa ở Bước 1 có thể truy cập phiên bản MongoDB hay không chạy trên máy chủ của bạn.

Bước 3 — Kiểm tra kết nối từ xa

Bây giờ, bạn đã thiết lập cấu hình cài đặt MongoDB của mình để lắng nghe các kết nối bắt nguồn từ địa chỉ IP có thể định tuyến công khai của nó và cấp quyền truy cập cho máy từ xa của bạn thông qua tường lửa của máy chủ tới cổng mặc định của Mongo, bạn có thể kiểm tra xem máy từ xa có thể kết nối hay không.

Lưu ý: Như đã đề cập trong phần Điều kiện tiên quyết, hướng dẫn này giả định rằng máy từ xa của bạn là một máy chủ khác chạy Ubuntu 20.04. Quy trình kích hoạt các kết nối từ xa được nêu trong Bước 1 và 2 sẽ hoạt động bất kể máy từ xa của bạn chạy hệ điều hành nào, nhưng các phương pháp kiểm tra được mô tả trong Bước này không hoạt động phổ biến trên các hệ điều hành.

Một cách để kiểm tra xem máy tính đáng tin cậy của bạn có thể kết nối với phiên bản MongoDB hay không là sử dụng lệnh nc. nc, viết tắt của netcat, là một tiện ích được sử dụng để thiết lập kết nối mạng với TCP hoặc UDP. Nó rất hữu ích để thử nghiệm trong những trường hợp như thế này vì nó cho phép bạn chỉ định cả địa chỉ IP và số cổng.

Đầu tiên, đăng nhập vào máy chủ đáng tin cậy của bạn bằng SSH:

  1. ssh sammy@trusted_machine_ip

Sau đó chạy lệnh nc sau, bao gồm tùy chọn -z. Điều này giới hạn nc chỉ quét một daemon đang nghe trên máy chủ mục tiêu mà không gửi bất kỳ dữ liệu nào cho nó. Nhớ lại từ hướng dẫn cài đặt điều kiện tiên quyết rằng MongoDB đang chạy dưới dạng trình nền dịch vụ, làm cho tùy chọn này trở nên hữu ích để kiểm tra kết nối. Nó cũng bao gồm tùy chọn v làm tăng mức độ chi tiết của lệnh, khiến netcat trả về một số đầu ra mà nếu không thì sẽ không.

Chạy lệnh nc sau từ máy chủ từ xa đáng tin cậy của bạn, đảm bảo thay thế mongodb_server_ip bằng địa chỉ IP của máy chủ mà bạn đã cài đặt MongoDB:

  1. nc -zv mongodb_server_ip 27017

Nếu máy chủ đáng tin cậy có thể truy cập trình nền MongoDB, đầu ra của nó sẽ cho biết rằng kết nối đã thành công:

Output
Connection to mongodb_server_ip 27017 port [tcp/*] succeeded!

Giả sử bạn đã cài đặt phiên bản mongo shell tương thích trên máy chủ từ xa, tại thời điểm này, bạn có thể kết nối trực tiếp với phiên bản MongoDB được cài đặt trên máy chủ lưu trữ.

Một cách để kết nối là sử dụng URI chuỗi kết nối, như sau:

  1. mongo "mongodb://mongo_server_ip:27017"

Lưu ý: Nếu bạn đã làm theo hướng dẫn Cách bảo mật MongoDB trên Ubuntu 20.04 được đề xuất, bạn sẽ đóng quyền truy cập vào cơ sở dữ liệu của mình đối với người dùng chưa được xác thực. Trong trường hợp này, bạn cần sử dụng một URI chỉ định tên người dùng hợp lệ, như sau:

  1. mongo "mongodb://username@mongo_server_ip:27017"

Shell sẽ tự động nhắc bạn nhập mật khẩu của người dùng.

Cùng với đó, bạn đã xác nhận rằng máy chủ MongoDB của bạn có thể chấp nhận các kết nối từ máy chủ đáng tin cậy.

Kết luận

Bây giờ bạn có thể truy cập cài đặt MongoDB của mình từ một máy chủ từ xa. Tại thời điểm này, bạn có thể quản lý cơ sở dữ liệu MongoDB của mình từ xa từ máy chủ đáng tin cậy. Ngoài ra, bạn có thể thiết lập cấu hình ứng dụng để chạy trên máy chủ đáng tin cậy và sử dụng cơ sở dữ liệu từ xa.

Nếu bạn chưa thiết lập cấu hình người dùng quản trị và bật xác thực, bất kỳ ai có quyền truy cập vào máy chủ từ xa của bạn cũng có thể truy cập cài đặt MongoDB của bạn. Nếu bạn chưa làm như vậy, chúng tôi thực sự khuyên bạn nên làm theo hướng dẫn của chúng tôi về Cách bảo mật MongoDB trên Ubuntu 20.04 để thêm người dùng quản trị và khóa mọi thứ hơn nữa.

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Chia sẻ

0 câu trả lời