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 :
- Một server Debian 8 với user không phải root có quyền sudo . Bạn có thể cài đặt user có các quyền này trong hướng dẫn Cài đặt Server Ban đầu với Debian 8 của ta .
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:
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:
● 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:
# 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:
# 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 .
Các tin liên quan
 

