MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm thế nào để định cấu hình AppArmor cho Bộ bản sao MongoDB?

Có rất nhiều phần và lớp bảo mật nếu chúng ta đang nói về việc tăng cường cơ sở dữ liệu. Nó bắt đầu từ việc mã hóa đĩa lưu trữ bên dưới, đặc quyền truy cập cơ sở dữ liệu, xác thực, kiểm soát truy cập mạng, truyền dữ liệu bằng SSL / TLS và cũng tự làm cứng hệ điều hành.

Việc cứng lại hệ điều hành cũng có thể có nhiều danh sách kiểm tra, chẳng hạn như vô hiệu hóa hoặc xóa các dịch vụ máy chủ sẽ không được sử dụng và sử dụng, vô hiệu hóa đăng nhập gốc SSH, bật rsyslog, hạn chế truy cập bằng tài khoản root từ bảng điều khiển, cho phép kiểm tra hệ thống và bật SELinux.

Một phần khác của danh sách kiểm tra bảo mật là dịch vụ AppArmor. Apparmor là một hệ thống Kiểm soát Truy cập Bắt buộc (MAC) cho mục đích bảo mật, theo mặc định được bao gồm trên các hệ điều hành dựa trên Ubuntu và Debian, nó cũng tương tự như SELinux trên các hệ điều hành dựa trên Redhat hoặc CentOS. Mục đích của AppArmor là khóa quy trình dễ bị tấn công trong hệ điều hành và hạn chế thiệt hại của các lỗ hổng bảo mật.

Ví dụ:nếu cơ sở dữ liệu MongoDB vô tình được xuất bản lên internet và có một số phần mềm độc hại đã lây nhiễm máy chủ cơ sở dữ liệu và kích hoạt một số mã độc mà MongoDB có ý định thực thi, thì AppArmor sẽ ngăn chặn việc thực thi đó như hồ sơ MongoDB đã được định cấu hình để chỉ đọc, thực thi và ghi trong các tệp MongoDB cụ thể.

Trong blog này, chúng ta sẽ thảo luận về việc triển khai AppArmor cho các bộ bản sao MongoDB.

Triển khai Cơ sở dữ liệu

Nếu bạn đang triển khai bộ bản sao MongoDB, ClusterControl có thể giúp cuộc sống của bạn dễ dàng hơn. Chúng ta chỉ cần xem qua hai trang triển khai và sau đó ClusterControl sẽ sẵn sàng triển khai MongoDB Replica Set. Có các tùy chọn để Tắt SELinux / AppArmor trong quá trình triển khai như bạn có thể thấy bên dưới:

Chúng tôi có thể tắt tùy chọn cho AppArmor / SELinux. Và sau đó điền vào các nút cơ sở dữ liệu Địa chỉ IP, mật khẩu quản trị và phiên bản MongoDB mà chúng tôi muốn triển khai.

Sau khi triển khai Bộ bản sao MongoDB, chúng tôi có thể chuyển đến từng máy chủ nút để cấu hình AppArmor.

Cài đặt AppArmor

Mọi quy trình đều bị hạn chế bởi các cấu hình trong AppArmor. Có hai tùy chọn để chạy hồ sơ, đó là chế độ thực thi và chế độ khiếu nại. Khi chế độ thực thi được sử dụng, nó ngăn ứng dụng thực hiện các hành động bị hạn chế, trong khi đối với chế độ khiếu nại, nó cho phép ứng dụng thực hiện các hành động bị hạn chế và tạo mục nhập nhật ký. Mỗi cấu hình được lưu trữ trong thư mục /etc/apparmor.d

Chúng tôi có thể kiểm tra trạng thái của dịch vụ AppArmor bằng cách chạy lệnh sau:

[email protected]:/etc/apparmor.d# apparmor_status
apparmor module is loaded.
15 profiles are loaded.
15 profiles are in enforce mode.
   /sbin/dhclient
   /usr/bin/lxc-start
   /usr/bin/man
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/NetworkManager/nm-dhcp-helper
   /usr/lib/connman/scripts/dhclient-script
   /usr/lib/snapd/snap-confine
   /usr/lib/snapd/snap-confine//mount-namespace-capture-helper
   /usr/sbin/tcpdump
   lxc-container-default
   lxc-container-default-cgns
   lxc-container-default-with-mounting
   lxc-container-default-with-nesting
   man_filter
   man_groff
0 profiles are in complain mode.
0 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

Nó sẽ cung cấp cho bạn thông tin về danh sách các hồ sơ được tải, bao nhiêu hồ sơ và quy trình trong chế độ khiếu nại và chế độ thực thi. Chúng ta có thể sử dụng lệnh apparmor_parser để tải cấu hình vào hạt nhân:

[email protected]: cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a

Và để vô hiệu hóa cấu hình, chúng ta chỉ cần tạo một liên kết tượng trưng đến thư mục /etc/apparmor.d/disable.

[email protected]: ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable

Để kích hoạt lại cấu hình, chỉ cần xóa liên kết tượng trưng và tải lại cấu hình.

[email protected]:  rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | apparmor_parser -a

Bật AppArmor cho Bộ bản sao MongoDB

Trước khi chúng tôi sử dụng AppArmor trên bộ bản sao MongoDB của mình, chúng tôi cần xác định cấu hình cho MongoDB, đăng ký dịch vụ nhị phân mongodb, thư mục dữ liệu và tệp nhật ký, đồng thời cho phép một số quyền truy cập mạng và hệ điều hành. Chúng tôi cũng có thể xác định quyền cho từng thư mục, tệp nhị phân và tệp. Dưới đây là hồ sơ mẫu của dịch vụ MongoDB:

#include <tunables/global>

/usr/sbin/mongod {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/user-tmp>
  #include <abstractions/winbind>

# Allow system resource access
  /sys/devices/system/cpu/ r,
  /sys/devices/system/node/ r,
  /sys/devices/system/node/** r,
  /proc/*/status r,
  capability sys_resource,
  capability dac_override,
  capability setuid,
  capability setgid,
  capability sys_nice,

# Allow network access
  network tcp,
  /etc/hosts.allow r,
  /etc/hosts.deny r,

# Allow config access
  /etc/mongod.conf r,

# Allow pid, socket, socket lock file access
  /var/run/mongod.pid rw,

# Allow systemd notify messages
  /{,var/}run/systemd/notify w,


# Allow execution of server binary
  /usr/sbin/mongo mr,
  /usr/sbin/mongod mr,
  /usr/sbin/mongos mr,
  /usr/sbin/mongotop mr,
  /usr/sbin/mongorestore mr,
  /usr/sbin/mongoimport mr,
  /usr/sbin/mongofiles mr,
  /usr/sbin/mongodump mr,

# Allow data files dir access
  /var/lib/mongodb/ r,
  /var/lib/mongodb/** rwk,

# Allow log file access
  /var/log/mongodb/ r,
  /var/log/mongodb/** rw,

# Allow access to openssl config
  /etc/mongo-cluster.key r,

  # Site-specific additions and overrides. See local/README for details.
}

Chúng ta có thể đặt cấu hình MongoDB ở trên vào tệp /etc/apparmor.d/usr.bin.mongod và sau đó chạy apparmor_parser để tải cấu hình.

[email protected]: cat /etc/apparmor.d/usr.bin.mongod | sudo apparmor_parser -a

Nếu chúng tôi kiểm tra bằng apparmor_status, nó sẽ cung cấp thông tin về cấu hình MongoDB đã được tải:

[email protected]:/etc/apparmor.d# apparmor_status
apparmor module is loaded.

57 profiles are loaded.
19 profiles are in enforce mode.
   /sbin/dhclient
   /usr/bin/lxc-start
   /usr/bin/man
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/NetworkManager/nm-dhcp-helper
   /usr/lib/chromium-browser/chromium-browser//browser_java
   /usr/lib/chromium-browser/chromium-browser//browser_openjdk
   /usr/lib/chromium-browser/chromium-browser//sanitized_helper
   /usr/lib/connman/scripts/dhclient-script
   /usr/lib/snapd/snap-confine
   /usr/lib/snapd/snap-confine//mount-namespace-capture-helper
   /usr/sbin/mongod
   /usr/sbin/tcpdump
   lxc-container-default
   lxc-container-default-cgns
   lxc-container-default-with-mounting
   lxc-container-default-with-nesting
   man_filter
   man_groff
38 profiles are in complain mode.
   /usr/bin/mongod
   /usr/lib/chromium-browser/chromium-browser
   /usr/lib/chromium-browser/chromium-browser//chromium_browser_sandbox
   /usr/lib/chromium-browser/chromium-browser//lsb_release
   /usr/lib/chromium-browser/chromium-browser//xdgsettings

Giờ đây, chúng tôi có thể lặp lại các bước được nêu ở trên trên mỗi nút của bộ bản sao MongoDB của chúng tôi để làm cho quy trình MongoDB bị hạn chế và bảo mật bởi AppArmor.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Truy vấn MongoDB / Mongoose vào một ngày cụ thể?

  2. MongoDB và Robomongo:Không thể kết nối (xác thực)

  3. $ bỏ qua và $ giới hạn trong khuôn khổ tổng hợp

  4. Dịch <T> có thể truy vấn trở lại IMongoQuery

  5. MongoDB giải phóng nhiều mảng