Cách cấu hình quyền truy cập từ xa cho MongoDB trên CentOS 8
MongoDB , còn gọi là Mongo , là một opensource database đượ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 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 Mongo để 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 CentOS 8.  Server  này phải có  admin-user  không phải root và firewall  được cấu hình bằng firewalld. Cài đặt điều này theo hướng dẫn cài đặt server ban đầu của ta cho CentOS 8 .
- 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 CentOS 8 .
- 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  CentOS 8 khác. Giống như  server  MongoDB của bạn, máy này phải có  admin-user  không phải root và firewall  được  cấu hình  với firewalldnhư được mô tả trong hướng dẫn cài đặt server ban đầu của ta cho CentOS 8 . 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 CentOS 8 .
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à  cài đặt  firewalld 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  firewall  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 netstat . netstat là một tiện ích dòng lệnh hiển thị thông tin về các kết nối mạng TCP đang hoạt động.
Lệnh sau sẽ chuyển hướng  kết quả  được tạo ra bởi sudo netstat -plunt đến một grep tìm kiếm bất kỳ dòng nào chứa chuỗi mongo :
- sudo netstat -plunt | grep mongo
Đầu ra ví dụ này  cho biết  MongoDB đang lắng nghe các kết nối tới 127.0.0.1 , một địa chỉ lặp lại đặc biệt đại diện cho localhost , trên cổng mặc định của nó, 27017 :
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      15918/mongod     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 với firewalld là chạy lệnh firewall-cmd 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 một  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 biết  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 firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="trusted_server_ip" port protocol="tcp" port="27017" accept'
Lệnh này vĩnh viễn thêm một  luật  phong phú vào vùng public của firewall . Các  luật  phong phú là các tính năng trong firewalld cho phép bạn kiểm soát chi tiết hơn những ai có quyền truy cập vào  server  của bạn thông qua việc sử dụng một số tùy chọn.  Luật  được cung cấp trong lệnh này chỉ định rằng chỉ địa chỉ trusted_server_ip mới được phép tạo kết nối xuyên tường. Nó cũng chỉ định rằng nó chỉ  có thể thực hiện bằng cách  sử dụng giao thức TCP để kết nối với cổng 27017 .
Nếu  luật  được thêm thành công, lệnh sẽ trả về success trong  kết quả :
success Cập nhật firewall để luật mới có hiệu lực:
- sudo firewall-cmd --reload
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  bằng cách chạy firewall-cmd với tùy chọn --list-all :
- sudo firewall-cmd --list-all
Đầu ra sẽ bao gồm  luật  phong phú mới cho phép lưu lượng truy cập đến cổng 27017 từ  server  từ xa:
public (active) . . .   rich rules:      rule family="ipv4" source address="157.230.58.94" port port="27017" protocol="tcp" accept Bạn có thể tìm hiểu thêm về firewalld trong Cách  cài đặt  firewall  bằng firewalld trên CentOS 8 .
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 :
. . . # 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:
. . . # 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 đang chạy CentOS 8. Quy trình cho phép 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 thử nghiệm các phương pháp đượ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.
Đầu tiên, đăng nhập vào server tin cậy của bạn bằng SSH:
- ssh sammy@trusted_server_ip
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.
Nếu bạn chưa có, bạn có thể cần cài đặt nc . Phiên bản từ repository  CentOS chính thức thực sự là một bản triển khai có tên ncat , được viết bởi Dự án Nmap dưới dạng bản cập nhật cho netcat.
Cài đặt ncat bằng lệnh :
- sudo dnf install nc
Nhấn y rồi nhấn ENTER khi  được yêu cầu   xác nhận  bạn muốn cài đặt gói.
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 ncat 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 nó đã tạo kết nối:
Ncat: Version 7.70 ( https://nmap.org/ncat ) Ncat: Connected to mongodb_server_ip:27017. Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds. 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 CentOS 8 đượ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 khuyên bạn nên làm theo hướng dẫn của ta về Làm thế nào để an toàn MongoDB trên CentOS 8 để thêm một user và khóa hành chính điều xuống thấp hơn nữa.
Các tin liên quan
Cách bảo mật MongoDB trên CentOS 82020-10-07
Cách cài đặt MongoDB trên CentOS 8
2020-10-07
Cách cấu hình ghi log HAProxy với Rsyslog trên CentOS 8 [Quickstart]
2020-09-22
Cách cài đặt Git trên CentOS 8
2020-04-12
Cách thiết lập và cấu hình Tổ chức phát hành chứng chỉ (CA) trên CentOS 8
2020-04-06
Cách cài đặt MariaDB trên CentOS 8
2020-04-03
Cách thêm và xóa người dùng trên CentOS 8
2020-04-03
Cách thiết lập firewall bằng firewalld trên CentOS 8
2020-04-03
Cách cài đặt Node.js trên CentOS 8
2020-04-01
Cách tạo người dùng mới hỗ trợ Sudo trên CentOS 8 [Khởi động nhanh]
2020-03-30
 

