Daftar periksa

Check-Block-01: Apakah user/group ownership dari file konfigurasi diset ke root/cinder?

File konfigurasi berisi parameter penting dan informasi yang diperlukan untuk kelancaran komponen. Jika pengguna yang tidak memiliki hak istimewa, baik secara sengaja atau tidak sengaja, memodifikasi atau menghapus salah satu parameter atau file itu sendiri, maka hal itu akan menyebabkan masalah ketersediaan yang parah yang mengakibatkan penolakan layanan kepada pengguna akhir lainnya. Dengan demikian kepemilikan pengguna atas file konfigurasi kritis tersebut harus diatur ke root dan kepemilikan grup harus diatur ke cinder. Selain itu, direktori yang berisi harus memiliki kepemilikan yang sama untuk memastikan bahwa file baru dimiliki dengan benar.

Jalankan perintah berikut:

$ stat -L -c "%U %G" /etc/cinder/cinder.conf | egrep "root cinder"
$ stat -L -c "%U %G" /etc/cinder/api-paste.ini | egrep "root cinder"
$ stat -L -c "%U %G" /etc/cinder/policy.json | egrep "root cinder"
$ stat -L -c "%U %G" /etc/cinder/rootwrap.conf | egrep "root cinder"
$ stat -L -c "%U %G" /etc/cinder | egrep "root cinder"

** Pass:** Jika kepemilikan pengguna dan grup dari semua file konfigurasi ini diset ke root dan cinder. Perintah di atas menunjukkan output dari root cinder.

Fail: Jika perintah di atas tidak mengembalikan output apapun karena kepemilikan pengguna dan grup mungkin telah ditetapkan ke pengguna selain root atau grup selain cinder.

Check-Block-02: Apakah izin ketat diatur untuk file konfigurasi?

Serupa dengan cek sebelumnya, kami menyarankan untuk menetapkan izin akses yang ketat untuk file konfigurasi tersebut.

Jalankan perintah berikut:

$ stat -L -c "%a" /etc/cinder/cinder.conf
$ stat -L -c "%a" /etc/cinder/api-paste.ini
$ stat -L -c "%a" /etc/cinder/policy.json
$ stat -L -c "%a" /etc/cinder/rootwrap.conf
$ stat -L -c "%a" /etc/cinder

Pembatasan yang lebih luas juga dimungkinkan: jika direktori yang berisi diatur ke 750, jaminan dibuat bahwa file yang baru dibuat di dalam direktori ini akan memiliki izin yang diinginkan.

Pass: Jika izin diatur ke 640 atau lebih ketat, atau direktori yang berisi diatur ke 750. Izin 640/750 diterjemahkan ke dalam pemilik r / w, grup r, dan tidak ada hak kepada orang lain yaitu "u = rw , g = r, o = ". Perhatikan bahwa dengan :ref: check_block_01 dan izin diatur ke 640, root memiliki akses baca / tulis dan cinder memiliki akses baca ke file konfigurasi ini. Hak akses juga dapat divalidasi menggunakan perintah berikut. Perintah ini hanya akan tersedia di sistem Anda jika mendukung ACL.

$ getfacl --tabular -a /etc/cinder/cinder.conf
getfacl: Removing leading '/' from absolute path names
# file: etc/cinder/cinder.conf
USER   root  rw-
GROUP  cinder  r--
mask         r--
other        ---

Fail: Jika izin tidak diatur ke setidaknya 640.

Check-Block-03: Apakah keystone digunakan untuk otentikasi?

Catatan

Item ini hanya berlaku untuk rilis OpenStack Rocky dan sebelumnya karena auth_strategy sudah tidak digunakan lagi di Stein.

OpenStack mendukung berbagai strategi otentikasi seperti noauth, keystone dll. Jika strategi 'noauth' digunakan maka pengguna dapat berinteraksi dengan layanan OpenStack tanpa autentikasi apapun. Ini bisa menjadi risiko potensial karena penyerang bisa mendapatkan akses tidak sah ke komponen OpenStack. Dengan demikian, kami sangat menyarankan agar semua layanan harus diotentikasi dengan keystone menggunakan akun layanan mereka.

Pass: Jika nilai parameter auth_strategy di bawah bagian [DEFAULT] di /etc/cinder/cinder.conf diatur ke keystone.

Fail: Jika nilai parameter auth_strategy di bawah bagian `` [DEFAULT] `` diatur ke noauth.

Check-Block-04: Apakah TLS diaktifkan untuk otentikasi?

Komponen OpenStack berkomunikasi satu sama lain dengan menggunakan berbagai protokol dan komunikasi mungkin melibatkan data sensitif / rahasia. Penyerang dapat mencoba menguping (eavesdrop) saluran untuk mendapatkan akses ke informasi sensitif. Dengan demikian semua komponen harus saling berkomunikasi menggunakan protokol komunikasi yang aman.

Pass: Jika nilai parameter www_authenticate_uri di bawah `` [keystone_authtoken] `` bagian di /etc/cinder/cinder.conf diatur ke titik akhir API Identitas yang dimulai dengan https:// dan nilai parameter insecure di bawah bagian `` [keystone_authtoken] `` yang sama di /etc/cinder/cinder.conf yang sama diatur ke False.

Fail: Jika nilai parameter `` www_authenticate_uri`` di bawah `` [keystone_authtoken] `` bagian di /etc/cinder/cinder.conf tidak disetel ke Identity API endpoint yang dimulai dengan `` https: // `` atau nilai parameter insecure di bawah bagian `` [keystone_authtoken] `` yang sama `` di /etc/cinder/cinder.conf yang sama diatur ke True.

Check-Block-05: Apakah cinder berkomunikasi dengan nova over TLS?

Komponen OpenStack berkomunikasi satu sama lain dengan menggunakan berbagai protokol dan komunikasi mungkin melibatkan data sensitif / rahasia. Penyerang dapat mencoba menguping (eavesdrop) saluran untuk mendapatkan akses ke informasi sensitif. Dengan demikian semua komponen harus saling berkomunikasi menggunakan protokol komunikasi yang aman.

Pass: Jika nilai parameter nova_api_insecure di bawah bagian [DEFAULT] `` di ``/etc/cinder/cinder.conf diatur ke False.

Fail: Jika nilai parameter nova_api_insecure di bawah bagian [DEFAULT] `` di ``/etc/cinder/cinder.conf disetel ke True.

Check-Block-06: Apakah cinder berkomunikasi dengan melirik (glance over) TLS?

Serupa dengan sebelumnya cek (Check-Block-05: Apakah cinder berkomunikasi dengan nova over TLS?), kami merekomendasikan agar semua komponen berkomunikasi satu sama lain menggunakan protokol komunikasi aman.

Pass: Jika nilai parameter glance_api_insecure di bawah bagian [DEFAULT] di /etc/cinder/cinder.conf disetel ke False dan nilai parameter glance_api_servers disetel ke nilai yang diawali dengan ``https:// ``.

Fail: Jika nilai parameter glance_api_insecure di bawah bagian [DEFAULT] `` di ``/etc/cinder/cinder.conf disetel ke True atau nilai parameter glance_api_servers adalah disetel ke nilai yang tidak dimulai dengan ``https:// ``.

Check-Block-07: Apakah NAS beroperasi di lingkungan yang aman?

Cinder mendukung driver NFS yang bekerja berbeda dari driver penyimpanan blok tradisional. Driver NFS sebenarnya tidak mengizinkan sebuah instance untuk mengakses perangkat penyimpanan di tingkat blok. Sebagai gantinya, file dibuat pada pembagian NFS dan dipetakan ke instance, yang mengemulasi perangkat blokir. Cinder mendukung konfigurasi yang aman untuk file seperti itu dengan mengendalikan hak akses file saat volume cinder dibuat. Konfigurasi cinder juga dapat mengontrol apakah operasi file dijalankan sebagai pengguna root atau pengguna proses OpenStack saat ini.

Pass: Jika nilai parameter nas_secure_file_permissions di bawah bagian [DEFAULT] di /etc/cinder/cinder.conf diatur ke auto. Bila diatur ke auto, sebuah cek dilakukan saat startup cinder untuk menentukan apakah ada volume pengaman yang ada, tidak ada volume yang akan mengatur pilihan ke True, dan menggunakan hak akses file yang aman. Deteksi volume yang ada akan mengatur pilihan ke False, dan gunakan metode penanganan berkas yang tidak aman saat ini. Jika nilai parameter nas_secure_file_operations di bawah bagian [DEFAULT] `` di ``/etc/cinder/cinder.conf diatur ke auto. Bila disetel ke "auto", cek dilakukan saat startup cinder untuk menentukan apakah ada volume cinder yang ada, tidak ada volume yang akan mengatur pilihan ke True, menjadi aman dan TIDAK dijalankan sebagai pengguna root . Deteksi volume yang ada akan mengatur pilihan ke False, dan gunakan metode operasi berjalan saat ini sebagai pengguna root. Untuk instalasi baru, sebuah "marker file" ditulis sehingga restarts cinder berikutnya akan tahu apa tekad semula.

Fail: Jika nilai parameter nas_secure_file_permissions di bawah bagian [DEFAULT] `` di ``/etc/cinder/cinder.conf diatur ke `` False`` dan jika nilai parameter nas_secure_file_operations di bawah bagian [DEFAULT] di /etc/cinder/cinder.conf diatur ke False.

Check-Block-08: Apakah ukuran maks untuk body permintaan ditetapkan ke default (114688)?

Jika ukuran body maksimum per permintaan tidak ditentukan, penyerang bisa menggunakan permintaan osilator yang sewenang-wenang dengan ukuran besar menyebabkan layanan mogok dan akhirnya mengakibatkan serangan Denial Of Service. Menetapkan nilai maksimum memastikan bahwa permintaan besar yang berbahaya diblokir untuk memastikan ketersediaan layanan lanjutan.

Pass: Jika nilai parameter osapi_max_request_body_size di bawah bagian [DEFAULT] di /etc/cinder/cinder.conf diatur ke 114688 atau jika nilai parameter max_request_body_size di bagian bawah [oslo_middleware] di /etc/cinder/cinder.conf diatur ke 114688.

Fail: Jika nilai parameter osapi_max_request_body_size di bawah bagian [DEFAULT] di /etc/cinder/cinder.conf tidak diatur ke 114688 atau jika nilai parameter max_request_body_size di bawah bagian [oslo_middleware] di /etc/cinder/cinder.conf tidak diatur ke 114688.

Check-Block-09: Apakah fitur encryption volume diaktifkan?

Data volume yang tidak terenkripsi membuat platform volume-hosting terutama target high-value bagi penyerang, karena memungkinkan penyerang untuk membaca data untuk berbagai VM berbeda. Selain itu, media penyimpanan fisik bisa dicuri, di remount, dan diakses dari mesin yang berbeda. Encrypting volume data mengurangi risiko ini dan memberikan defense-in-depth ke platform volume-hosting. Block Storage (cinder) mampu mengenkripsi data volume sebelum ditulis ke disk, dan kami merekomendasikan agar fitur enkripsi volume diaktifkan. Lihat bagian Volume Encryption <https://docs.openstack.org/cinder/latest/configuration/block-storage/volume-encryption.html> __ dari dokumentasi Openstack Cinder Service Configuration untuk mendapatkan petunjuk.

** Pass:** Jika 1) nilai parameter backend di bawah bagian [key_manager] di /etc/cinder/cinder.conf disetel, 2) nilai parameter backend di bawah [key_manager] `` di ``/etc/nova/nova.conf disetel, dan 3) jika petunjuk dalam dokumentasi yang disebutkan di atas diikuti dengan benar.

Untuk memverifikasi lebih lanjut, lakukan langkah-langkah ini setelah menyelesaikan penyiapan enkripsi volume dan buat tipe volume untuk LUKS seperti yang dijelaskan dalam dokumentasi yang disebutkan di atas.

  1. Buat VM:

    $ openstack server create --image cirros-0.3.1-x86_64-disk --flavor m1.tiny TESTVM
    
  2. Buat volume terenkripsi dan tempelkan ke VM Anda:

    $ openstack volume create --size 1 --type LUKS 'encrypted volume'
    $ openstack volume list
    $ openstack server add volume --device /dev/vdb TESTVM 'encrypted volume'
    
  3. Di VM, kirim beberapa teks ke volume yang baru dilampirkan dan sinkronkan:

    # echo "Hello, world (encrypted /dev/vdb)" >> /dev/vdb
    # sync && sleep 2
    
  4. Pada sistem hosting layanan volume cinder, sinkronkan untuk menyiram (flush) cache I/O kemudian menguji untuk melihat apakah string Anda dapat ditemukan:

    # sync && sleep 2
    # strings /dev/stack-volumes/volume-* | grep "Hello"
    

Pencarian seharusnya tidak mengembalikan string yang ditulis ke volume terenkripsi.

Fail: Jika nilai parameter backend di bawah bagian [key_manager] di /etc/cinder/cinder.conf tidak diatur, atau jika nilai parameter backend di bawah bagian [key_manager] di /etc/nova/nova.conf tidak diatur, atau jika petunjuk dalam dokumentasi yang disebutkan di atas tidak diikuti dengan benar.