Thứ năm, 08/10/2020 | 00:00 GMT+7

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

MongoDB , còn gọi là Mongo , là một opensource database được sử dụng phổ biến trong các ứ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 server 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 server ứng dụng riêng, có một số thay đổi bạn cần thực hiện đối với cấu hình mặc định.

 

Trong hướng dẫn này, bạn sẽ cấu hình cài đặt MongoDB để cho phép an toàn truy cập từ một máy tính từ xa tin cậy . Để thực hiện việc này, bạn sẽ cập nhật các luật firewall của bạn để cung cấp cho máy tính từ xa quyền truy cập vào cổng mà MongoDB đang lắng nghe các kết nối và sau đó cập nhật file 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ính từ xa của bạn có thể kết nối thành công với database của bạn hay không.

Yêu cầu

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

  • Server chạy Ubuntu 18.04. Server này phải có admin-user không phải root và firewall được cấu hình bằng UFW. Cài đặt điều này theo hướng dẫn cài đặt server ban đầu của ta cho Ubuntu 18.04 .
  • MongoDB được cài đặt trên server của bạn. Hướng dẫn này giả định bạn đã cài đặt MongoDB 4.4 hoặc mới hơn. Bạn có thể cài đặt version này theo hướng dẫn của ta về Cách cài đặt MongoDB trên Ubuntu 18.04 .
  • Một máy tính thứ hai mà bạn sẽ truy cập version MongoDB của bạn . Để đơn giản, hướng dẫn này giả định máy này là một server Ubuntu 18.04 khác, với admin-user không phải root và firewall UFW được cấu hình theo hướng dẫn cài đặt server ban đầu của ta cho Ubuntu 18.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 server database , sẽ hoạt động dù máy từ xa đang chạy hệ điều hành nào.

Cuối cùng, trong khi nó không phải là cần thiết để hoàn thành hướng dẫn này, ta khuyên bạn an toàn cài đặt MongoDB của bạn bằng cách tạo một account user hành chính đối với các database và cho phép xác thực. Để thực hiện việc này, hãy làm theo hướng dẫn của ta về Cách bảo mật MongoDB trên Ubuntu 18.04 .

Bước 1 - Điều chỉnh firewall

Giả sử bạn đã làm theo hướng dẫn cài đặt server ban đầu tiên quyết và bật firewall UFW trên server của bạn , thì 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 local với các ứng dụng chạy trên cùng một server , đây là cài đặt được khuyến khích và bảo mật. Tuy nhiên, nếu bạn muốn có thể kết nối với server MongoDB của bạn từ xa , bạn phải cho phép các kết nối đến cổng nơi database đang lắng nghe bằng cách thêm luật UFW mới.

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

Lệnh sau sẽ chuyển hướng kết quả do lsof -i tạo ra đến một grep tìm kiếm một chuỗi có tên mongo :

  • sudo lsof -i | grep mongo

Đầu ra ví dụ này cho thấy rằng quy trình mongod đ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í tin cậy , chẳng hạn như một server khác lưu trữ một ứng dụng. Một cách để cấu hình điều này là chạy lệnh sau trên server 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 địa chỉ IP của server tin cậy khác.

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

Lưu ý : Nếu kết quả của lệnh trước đó cho thấy cài đặt MongoDB của bạn đang nghe trên một cổng không phải mặc định, hãy sử dụng số cổng đó thay cho 27017 trong lệnh này.

  • sudo ufw allow from trusted_server_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_server_ip .

Bạn có thể kiểm tra thay đổi trong cài đặt firewall với ufw :

  • sudo ufw status

Kết quả kết quả sẽ hiển thị rằng lưu lượng truy cập đến cổng 27017 từ server từ xa hiện đã được phép:

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

Bạn có thể tìm thêm cài đặt firewall nâng cao để 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 khai của server để bạn có thể truy cập nó từ máy tính từ xa của bạn .

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

Đến đây, ngay cả khi cổng đang mở, MongoDB hiện đang bị ràng buộc với 127.0.0.1 , network interface loopback local . Điều này nghĩa là MongoDB chỉ có thể chấp nhận các kết nối bắt nguồn từ server nơi nó được cài đặt.

Để cho phép kết nối từ xa, bạn phải chỉnh sửa file cấu hình MongoDB - /etc/mongod.conf - để liên kết thêm MongoDB với địa chỉ IP có thể định tuyến công khai của server của bạn. Bằng cách này, cài đặt MongoDB của bạn có thể lắng nghe các kết nối được thực hiện đến server MongoDB của bạn từ các máy từ xa.

Mở file cấu hình MongoDB trong editor bạn muốn . Ví dụ sau sử dụng nano :

  • sudo nano /etc/mongod.conf

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

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

Thêm dấu phẩy vào dòng này, sau đó là địa chỉ IP công cộng của server MongoDB của bạn:

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

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

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

  • sudo systemctl restart mongod

Sau đó, cài đặt MongoDB của bạn 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 server từ xa tin cậy mà bạn đã cho phép thông qua firewall ở Bước 1 có thể tiếp cận version MongoDB đang chạy trên server của bạn hay không.

Bước 3 - Kiểm tra khả năng kết nối từ xa

Đến đây bạn đã cấu hình cài đặt MongoDB của bạn để 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 và cấp quyền truy cập máy từ xa của bạn thông qua firewall của server vào 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 Yêu cầu , hướng dẫn này giả định máy từ xa của bạn là một server khác chạy Ubuntu 18.04. Quy trình bật kết nối từ xa được nêu trong Bước 1 và 2 sẽ hoạt động dù 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 server từ xa tin cậy của bạn có thể kết nối với cá thể 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 để cài đặt kết nối mạng với TCP hoặc UDP. Nó hữu ích để kiểm tra 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 server tin cậy của bạn bằng SSH:

  • ssh sammy@trusted_server_ip

Sau đó, chạy lệnh nc sau, bao gồm tùy chọn -z . Điều này hạn chế nc chỉ quét một daemon đang lắng nghe trên server đích 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 yêu cầu rằng MongoDB đang chạy dưới dạng daemon dịch vụ, làm cho tùy chọn này 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 độ dài của lệnh, khiến netcat trả về một số kết quả mà nếu không thì nó sẽ không.

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

  • nc -zv mongodb_server_ip 27017

Nếu server tin cậy có thể truy cập daemon MongoDB, kết quả của nó sẽ cho biết 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 version mongo shell tương thích trên server từ xa của bạn , tại thời điểm này, bạn có thể kết nối trực tiếp với version MongoDB được cài đặt trên server lưu trữ.

Một cách để kết nối là với một URI chuỗi kết nối , như sau:

  • 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 18.04 được khuyến nghị, bạn sẽ đóng quyền truy cập vào database của bạn đối với user chưa được xác thực. Trong trường hợp này, bạn cần sử dụng URI chỉ định tên user hợp lệ, như sau:

  • mongo "mongodb://username@mongo_server_ip:27017"

Shell sẽ tự động nhắc bạn nhập password của user .

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

Kết luận

Đến đây bạn có thể truy cập cài đặt MongoDB của bạn từ một server từ xa. Đến đây, bạn có thể quản lý database Mongo của bạn từ xa từ server tin cậy . Ngoài ra, bạn có thể cấu hình ứng dụng để chạy trên server tin cậy và sử dụng database từ xa.

Nếu bạn chưa cấu hình admin-user và cài đặt xác thực , bất kỳ ai có quyền truy cập vào server 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, ta thực sự khuyên bạn nên làm theo hướng dẫn của ta về Cách bảo mật MongoDB trên Ubuntu 18.04 để thêm admin-user và khóa mọi thứ lại.


Tags:

Các tin liên quan

Cách cài đặt mongodb trên ubuntu 18.04 từ trang chủ Mongodb
2020-10-08
Cách bảo mật MongoDB trên Ubuntu 18.04
2020-10-08
Cách cài đặt MongoDB trên Ubuntu 18.04 từ kho APT mặc định
2020-10-08
Làm thế nào để quản lý client OpenSSH trên Ubuntu 18.04
2020-09-30
Cách cài đặt và sử dụng ClickHouse trên Ubuntu 20.04
2020-09-22
Cách cài đặt và cấu hình Mahara trên Ubuntu 18.04
2020-09-21
Cách cài đặt Jitsi Meet trên Ubuntu 20.04
2020-09-18
Cách xử lý sandbox với Systemd trên Ubuntu 20.04
2020-09-16
Cách cài đặt và cấu hình Neo4j trên Ubuntu 20.04
2020-09-15
Cách cài đặt Webmin trên Ubuntu 20.04
2020-08-26