MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana Mengonfigurasi AppArmor untuk Kumpulan Replika MongoDB?

Ada banyak bagian dan lapisan keamanan jika kita berbicara tentang pengerasan basis data. Mulai dari enkripsi disk penyimpanan yang mendasarinya, hak akses database, otentikasi, kontrol akses jaringan, pengiriman data menggunakan SSL/TLS dan juga pengerasan sistem operasi itu sendiri.

Pengerasan sistem operasi juga dapat memiliki banyak daftar periksa, seperti menonaktifkan atau menghapus layanan server yang tidak akan digunakan dan dimanfaatkan, menonaktifkan login root SSH, mengaktifkan rsyslog, membatasi akses menggunakan akun root dari konsol, mengaktifkan audit sistem, dan mengaktifkan SELinux.

Bagian lain dari daftar periksa keamanan adalah layanan AppArmor. Apparmor adalah sistem Mandatory Access Control (MAC) untuk tujuan keamanan yang secara default disertakan pada sistem operasi berbasis Ubuntu dan Debian, juga mirip dengan SELinux pada sistem operasi berbasis Redhat atau CentOS. Tujuan AppArmor adalah untuk mengunci proses rentan dalam sistem operasi dan membatasi kerusakan kerentanan keamanan.

Misalnya, jika database MongoDB secara tidak sengaja dipublikasikan ke internet dan ada beberapa malware yang menginfeksi server database dan memicu beberapa kode berbahaya yang ingin dijalankan oleh MongoDB, AppArmor akan mencegah eksekusi seperti profil MongoDB sudah dikonfigurasi untuk membaca, mengeksekusi, dan menulis hanya dalam file MongoDB tertentu.

 Dalam blog ini, kita akan membahas implementasi AppArmor untuk kumpulan replika MongoDB.

Penerapan Basis Data

Jika Anda menggunakan set replika MongoDB, ClusterControl dapat membuat hidup Anda lebih mudah. Kita hanya perlu melalui dua halaman penerapan dan kemudian ClusterControl akan siap untuk menerapkan Kumpulan Replika MongoDB. Ada opsi untuk Nonaktifkan SELinux/AppArmor selama penerapan seperti yang Anda lihat di bawah:

Kami dapat menonaktifkan opsi untuk AppArmor/SELinux. Kemudian isi database node IP Address, password admin, dan versi MongoDB yang ingin kita deploy.

Setelah MongoDB Replica Set di-deploy, kita dapat melompat ke setiap node server untuk konfigurasi AppArmor.

Setelan AppArmor

Setiap proses dibatasi oleh profil di AppArmor. Ada dua pilihan dimana profil dapat dijalankan, yaitu mode penegakan dan mode pengaduan. Ketika mode penegakan sedang digunakan, ini mencegah aplikasi mengambil tindakan terbatas, sedangkan untuk mode keluhan, memungkinkan aplikasi untuk mengambil tindakan terbatas dan membuat entri log. Setiap profil disimpan di direktori /etc/apparmor.d

Kita dapat memeriksa status layanan AppArmor dengan menjalankan perintah berikut:

[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.

Ini akan memberi Anda informasi tentang daftar profil yang dimuat, berapa banyak profil dan proses dalam mode keluhan dan mode penegakan. Kita dapat menggunakan perintah apparmor_parser untuk memuat profil ke dalam kernel :

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

Dan untuk menonaktifkan profil, kita hanya perlu membuat tautan simbolis ke direktori /etc/apparmor.d/disable.

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

Untuk mengaktifkan kembali profil, cukup hapus tautan simbolis dan muat ulang profil.

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

Mengaktifkan AppArmor untuk Kumpulan Replika MongoDB

Sebelum menggunakan AppArmor pada set replika MongoDB, kita perlu mendefinisikan profil untuk MongoDB, mendaftarkan layanan biner mongodb, direktori data, dan file log, dan mengizinkan beberapa akses jaringan dan sistem operasi. Kami juga dapat menentukan izin untuk setiap direktori, biner, dan file. Di bawah ini adalah contoh profil layanan 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.
}

Kita dapat menempatkan profil MongoDB di atas ke dalam file /etc/apparmor.d/usr.bin.mongod dan kemudian menjalankan apparmor_parser untuk memuat profil.

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

Jika kita cek menggunakan apparmor_status akan memberikan informasi tentang profil MongoDB yang telah dimuat:

[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

Sekarang kita dapat mengulangi langkah-langkah yang diuraikan di atas pada setiap node dari kumpulan replika MongoDB kita untuk membuat proses MongoDB dibatasi dan diamankan oleh AppArmor.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. tambahkan bidang create_at dan updated_at ke skema luwak

  2. MongoDB $asinh

  3. Node.js - Menciptakan Hubungan dengan Luwak

  4. ekspor agregat mongoexport ke file csv

  5. mongodb nodejs - mengubah struktur melingkar