Thứ ba, 28/02/2017 | 00:00 GMT+7

Cách cài đặt MongoDB trên Debian 8

MongoDB là database tài liệu NoSQL open-souce miễn phí được sử dụng phổ biến trong các ứng dụng web hiện đại. Hướng dẫn này sẽ giúp bạn cài đặt MongoDB trên server của bạn để sử dụng trong môi trường ứng dụng production . Bạn sẽ cài đặt MongoDB và cấu hình các luật firewall để hạn chế quyền truy cập vào MongoDB.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

Bước 1 - Cài đặt MongoDB

MongoDB đã có trong repository của Debian, nhưng kho MongoDB chính thức cung cấp version mới nhất và là cách cài đặt phần mềm được khuyến khích . Trong bước này, ta sẽ thêm repository chính thức này vào server của ta .

Debian đảm bảo tính xác thực của các gói phần mềm bằng cách xác minh chúng được ký bằng các khóa GPG, vì vậy trước tiên ta phải nhập khóa của chúng cho repository MongoDB chính thức.

  • sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

Sau khi nhập khóa thành công, bạn sẽ thấy:

Đầu ra
gpg: Total number processed: 1 gpg:               imported: 1  (RSA: 1) 

Tiếp theo, ta phải thêm chi tiết repository MongoDB để apt biết tải các gói từ đâu.

Đưa ra lệnh sau để tạo file danh sách cho MongoDB.

  • echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Sau khi thêm chi tiết repository , hãy cập nhật danh sách gói:

  • sudo apt-get update

Bây giờ cài đặt gói MongoDB bằng lệnh sau:

  • sudo apt-get install -y mongodb-org

Điều này sẽ cài đặt version MongoDB ổn định mới nhất, cùng với một số công cụ quản lý hữu ích cho server MongoDB.

Sau khi cài đặt xong MongoDB, hãy khởi động dịch vụ và đảm bảo nó khởi động khi server của bạn khởi động lại:

  • sudo systemctl enable mongod.service
  • sudo systemctl start mongod

Sau đó, sử dụng systemctl để kiểm tra xem dịch vụ đã khởi động đúng cách chưa:

  • sudo systemctl status mongod

Bạn sẽ thấy kết quả sau, cho biết rằng dịch vụ đang chạy:

Đầu ra
mongod.service - High-performance, schema-free document-oriented database    Loaded: loaded (/lib/systemd/system/mongod.service; enabled)    Active: active (running) since Tue 2017-02-28 19:51:51 UTC; 7s ago      Docs: https://docs.mongodb.org/manual  Main PID: 8958 (mongod)    CGroup: /system.slice/mongod.service            └─8958 /usr/bin/mongod --quiet --config /etc/mongod.conf  Feb 28 19:51:51 cart-61037 systemd[1]: Started High-performance, schema-free document-oriented database. 

Bây giờ MongoDB đã được cài đặt thành công, hãy bảo mật nó bằng firewall của phần mềm.

Bước 2 - Bảo mật MongoDB bằng Tường lửa

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ữ ứng dụng. Để thực hiện tác vụ này, bạn có thể cho phép truy cập trên cổng mặc định của MongoDB trong khi chỉ định địa chỉ IP của server khác sẽ được phép kết nối một cách rõ ràng. Ta sẽ sử dụng firewall iptables để cài đặt luật này, cũng như một số luật khác để bảo mật hệ thống.

Trước khi ta viết bất kỳ luật nào, hãy cài đặt gói iptables-persistent để bạn có thể lưu các luật bạn tạo. Bằng cách này, các luật sẽ được áp dụng mỗi khi bạn khởi động lại server của bạn . Thực hiện lệnh này:

  • sudo apt-get install iptables-persistent

Lưu ý : Trong khi cài đặt, bạn có thể được hỏi xem bạn có muốn giữ bất kỳ luật hiện có nào không. Bạn có thể hủy các luật hiện có.

Tiếp theo, xóa mọi luật hiện có có thể được áp dụng, đề phòng:

  • sudo iptables -F

Sau đó, thêm luật cho phép các kết nối đã cài đặt tiếp tục nói chuyện. Bằng cách này, kết nối SSH hiện tại của ta sẽ không bị gián đoạn:

  • sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Tiếp theo, đảm bảo quyền truy cập SSH được cho phép:

  • sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Nếu bạn định kết nối với MongoDB từ server từ xa, hãy thêm các luật này sẽ cho phép truy cập vào cổng mặc định của MongoDB từ server ứng dụng của bạn:

  • sudo iptables -A INPUT -s your_other_server_ip -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
  • sudo iptables -A OUTPUT -d your_other_server_ip -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

Tiếp theo, thêm các luật này cho phép lưu lượng truy cập trên thiết bị lặp local :

  • sudo iptables -A INPUT -i lo -j ACCEPT
  • sudo iptables -A OUTPUT -o lo -j ACCEPT

Cuối cùng, thay đổi policy firewall để loại bỏ tất cả lưu lượng truy cập khác:

  • sudo iptables -P INPUT DROP

Cảnh báo : Thay đổi policy mặc định để giảm lưu lượng truy cập không được xác định rõ ràng trong các luật sẽ nghĩa là mọi thứ đều bị khóa. Nếu bạn muốn cho phép lưu lượng truy cập bổ sung trong tương lai, bạn cần thêm các luật mới.

Ngoài ra, nếu bạn vô tình xóa luật của bạn , bạn sẽ bị khóa khỏi server của bạn . Bạn nên sử dụng sudo iptables -P INPUT ACCEPT để cho phép lưu lượng truy cập thông qua nếu bạn cần điều chỉnh các luật của bạn trong tương lai. Sau đó, bạn có thể sử dụng sudo iptables -P INPUT DROP để khóa mọi thứ sau khi bạn chắc chắn rằng mọi thứ đã được cấu hình lại đúng cách.

Xác minh các luật trông đúng:

  • sudo iptables -S

Bạn sẽ thấy kết quả tương tự như sau:

Output
-P INPUT DROP -P FORWARD ACCEPT -P OUTPUT ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -s your_other_server_ip/32 -p tcp -m tcp --dport 27017 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A OUTPUT -d your_other_server_ip/32 -p tcp -m tcp --sport 27017 -m state --state ESTABLISHED -j ACCEPT -A OUTPUT -o lo -j ACCEPT

Cuối cùng, lưu các luật :

  • netfilter-persistent save

Để tìm hiểu thêm về các luật firewall này, hãy xem Cách cài đặt firewall bằng Iptables trên Ubuntu 14.04 .

Bước 3 - Bật quyền truy cập vào server bên ngoài (Tùy chọn)

Các version hiện tại của MongoDB không chấp nhận các kết nối bên ngoài theo mặc định. Nếu bạn đã hạn chế quyền truy cập vào các địa chỉ IP cụ thể bằng firewall , bạn có thể sửa đổi cấu hình của MongoDB để chấp nhận các kết nối từ xa.

Chỉnh sửa file cấu hình MongoDB:

  • sudo nano /etc/mongod.conf

Tìm phần này:

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

Mongo đang lắng nghe địa chỉ loopback local , vì vậy nó sẽ chỉ chấp nhận các kết nối local . Thay đổi giá trị bindIp để nó bao gồm địa chỉ IP của server MongoDB của bạn:

mongod.conf
# network interfaces net:   port: 27017   bindIp: 127.0.0.1, your_server_ip 

Lưu file và thoát khỏi editor .

Sau đó khởi động lại MongoDB để áp dụng thay đổi:

  • sudo systemctl restart mongod

Máy từ xa của bạn bây giờ có thể kết nối. Tuy nhiên, bạn cũng có thể cần cài đặt xác thực để bảo mật database của bạn hơn nữa.

Kết luận

Bạn có thể tìm thêm hướng dẫn chuyên sâu về cài đặt và cấu hình MongoDB trong các bài viết cộng đồng DigitalOcean này . Đảm bảo backup dữ liệu và khám phá cách mã hóa dữ liệu khi chuyển tiếp .


Tags:

Các tin liên quan