Kontrol listesi

Check-Block-01: Yapılandırma dosyalarının kullanıcı/grup sahipliği root/cinder olarak ayarlandı mı?

Configuration files contain critical parameters and information required for smooth functioning of the component. If an unprivileged user, either intentionally or accidentally, modifies or deletes any of the parameters or the file itself then it would cause severe availability issues resulting in a denial of service to the other end users. Thus user ownership of such critical configuration files must be set to root and group ownership must be set to cinder. Additionally, the containing directory should have the same ownership to ensure that new files are owned correctly.

Aşağıdaki komutları çalıştırın:

$ 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"

Başarılı: Eğer bu yapılandırma dosyaların kullanıcı ve grup sahipliği root ve cinder olarak ayarlandıysa. Yukarıdaki komutlar root cinder çıktısını gösterir.

Başarısız: Kullanıcı ve grup sahibi root ve cinder haricinde bir şeye ayarlandığı için üstteki komutlar herhangi bir çıktı döndürmezse.

Check-Block-02: Yapılandırma dosyaları için sıkı izinler ayarlandı mı?

Önceki kontrole benzer olarak, bu tip yapılandırma dosyaları için de sıkı erişim yetkileri ayarlamanızı öneririz.

Aşağıdaki komutları çalıştırın:

$ 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

A broader restriction is also possible: if the containing directory is set to 750, the guarantee is made that newly created files inside this directory would have the desired permissions.

Pass: If permissions are set to 640 or stricter, or the containing directory is set to 750. The permissions of 640/750 translates into owner r/w, group r, and no rights to others i.e. “u=rw,g=r,o=”. Note that with Check-Block-01: Yapılandırma dosyalarının kullanıcı/grup sahipliği root/cinder olarak ayarlandı mı? and permissions set to 640, root has read/write access and cinder has read access to these configuration files. The access rights can also be validated using the following command. This command will only be available on your system if it supports ACLs.

$ 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        ---

Başarısız: Eğer yetkileri en az 640 değilse.

Check-Block-03: Kimlik doğrulama için keystone kullanıldı mı?

Not

This item only applies to OpenStack releases Rocky and before as auth_strategy was deprecated in Stein.

OpenStack noauth, keystone gibi farklı kimlik doğrulama stratejileri destekler. Eğer ‘noauth’ stratejisi kullanılıyorsa kullanıcılar OpenStack servisleri ile hiçbir kimlik doğrulama olmadan etkileşime geçebilirler. Bu yüzden tüm servislerin, servis hesaplarını kullanırken keystone ile kimlik doğrulanmasını öneriyoruz.

Geç: Eğer /etc/cinder/cinder.conf altında [DEFAULT] bölümünde auth_strategy değeri keystone ise.

Başarısız: Eğer /etc/cinder/cinder.conf altında [DEFAULT] bölümünde auth_strategy değeri noauth ise.

Check-Block-04: Kimlik doğrulama için TLS etkinleştirilidi mi?

OpenStack bileşenleri kendi aralarında çeşitli protokollerde ve hassas / gizli veri içeren bir iletişim yapabilir. Saldırgan, bu hassas bilgileri erişim sağlamak için bu kanalı dinleyebilir. Bu yüzden tüm bileşenler güvenli bir haberleşme protokolü kullanarak haberleşmelidir.

Pass: If value of parameter www_authenticate_uri under [keystone_authtoken] section in /etc/cinder/cinder.conf is set to Identity API endpoint starting with https:// and value of parameter insecure under the same [keystone_authtoken] section in the same /etc/cinder/cinder.conf is set to False.

Fail: If value of parameter www_authenticate_uri under [keystone_authtoken] section in /etc/cinder/cinder.conf is not set to Identity API endpoint starting with https:// or value of parameter insecure under the same [keystone_authtoken] section in the same /etc/cinder/cinder.conf is set to True.

Check-Block-05: Cinder, nova ile TLS üzerinden haberleşiyor mu?

OpenStack bileşenleri kendi aralarında çeşitli protokollerde ve hassas / gizli veri içeren bir iletişim yapabilir. Saldırgan, bu hassas bilgileri erişim sağlamak için bu kanalı dinleyebilir. Bu yüzden tüm bileşenler güvenli bir haberleşme protokolü kullanarak haberleşmelidir.

Başarılı: /etc/cinder/cinder.conf içindeki [DEFAULT] bölümündeki nova_api_insecure parametresinin değeri False ise.

Başarılı: /etc/cinder/cinder.conf içindeki [DEFAULT] bölümündeki nova_api_insecure parametresinin değeri True ise.

Check-Block-06: Cinder, glance ile TLS üzerinden haberleşiyor mu?

Bir önceki kontrole benzer olarak (:ref`check_block_05`), tüm bileşenlerin birbiriyle güvenli bir haberleşme protokolüyle haberleşmesini öneriyoruz.

Başarılı: Eğer``/etc/cinder/cinder.conf`` altında [DEFAULT] bölümünde glance_api_insecure değeri False ise ya da glance_api_servers değeri https:// ile başlamıyorsa.

Başarısız: Eğer``/etc/cinder/cinder.conf`` altında [DEFAULT] bölümünde glance_api_insecure değeri True ise ya da glance_api_servers değeri https:// ile başlamıyorsa.

Check-Block-07: NAS güvenli bir ortamda çalışıyor mu?

Cinder, geleneksel blok depolama srücülerinden farklı bir şekilde çalışan NFS sürücüsünü destekler. NFS sürücüsü, depolama aygıtına blok seviyesinde erişimine aslında izin vermez. Bunun yerine, dosyalar NFS paylaşımında oluşturulur ve örneklere eşlenir. Cinder, cinder bolümleri oluşturulurken dosya izinlerini kontrol ederek güvenli yapılandırma destekler. Cinder yapılandırması ayrıca dosya işlemlerinin root kullanıcısı ya da OpenStack süreç kullanıcısı ile mi çalıştırılacağını edileceiğini kontrol edebilir.

Başarılı: /etc/cinder/cinder.conf içindeki [DEFAULT] bölümündeki nas_secure_file_permissions parametresinin değeri auto olarak ayarlanırsa. Auto olarak ayarlandığında, mevcut cinder hacimleri olup olmadığına karar vermek için cinder başlangıcı sırasında bir onay yapılır; hiçbir hacim seçeneği True` olarak ayarlamaz ve güvenli dosya izinlerini kullanır. Mevcut birimlerin algılanması seçeneği ``False olarak ayarlar ve dosya izinlerini işleme alan şu andaki güvensiz yöntemini kullanır. /etc/cinder/cinder.conf içindeki [DEFAULT] bölümündeki nas_secure_file_operations parametresinin değeri auto olarak ayarlanırsa. “Auto” olarak ayarlandığında, cinder başlangıcı esnasında mevcut cinder hacimleri olup olmadığına karar vermek için bir kontrol gerçekleştirilir; hiçbir hacim seçeneği True olarak ayarlamaz, güvenli olur ve root kullanıcı olarak çalışmaz. Mevcut birimlerin algılanması seçeneği False olarak ayarlar ve şu anki çalıştırma yöntemini “root” kullanıcısı olarak kullanır. Yeni kurulumlar için “işaretleyici dosya” yazılır, böylece cinder’in daha sonra yeniden başlatılması orijinal tayininin ne olduğunu bilir.

** Başarısız: ** /etc/cinder/cinder.conf içindeki [DEFAULT] bölümündeki nas_secure_file_permissions parametresinin değeri False olarak ayarlanmışsa ve eğer parametrenin değeri /etc/cinder/cinder.conf daki [DEFAULT] bölümündeki nas_secure_file_operations ayarı False olarak ayarlanmıştır.

Check-Block-08: Bir isteğin gövdesinin azami boyutu öntanımlı (114688) olarak ayarlandı mı?

İstek başına maksimum gövde boyutu tanımlanmamışsa, saldırgan, hizmetin çökmesine neden olan ve sonuçta Hizmet Reddine neden olan büyük boyutlu bir osapi isteği oluşturabilir. Maksimum değeri atamak, kötü niyetli büyük boyutlu talebin engellenerek hizmetin devamlılığı sağlanmasını sağlar.

Başarılı: /etc/cinder/cinder.conf içindeki [DEFAULT] bölümündeki osapi_max_request_body_size parametresinin değeri 114688 olarak ayarlanırsa veya parametrenin değeri /etc/cinder/cinder.conf içindeki [oslo_middleware] bölümündeki max_request_body_size, 114688 olarak ayarlandıysa.

Başarısız: /etc/cinder/cinder.conf içindeki [DEFAULT] bölümündeki osapi_max_request_body_size parametresinin değeri 114688 olarak ayarlanmadıysa veya /etc/cinder/cinder.conf içindeki [oslo_middleware] bölümündeki max_request_body_size parametresi 114688 olarak ayarlanmadıysa.

Check-Block-09: Hacim şifreleme özelliği etkin mi?

Unencrypted volume data makes volume-hosting platforms especially high-value targets for attackers, as it allows the attacker to read the data for many different VMs. In addition, the physical storage medium could be stolen, remounted, and accessed from a different machine. Encrypting volume data mitigates these risks and provides defense-in-depth to volume-hosting platforms. Block Storage (cinder) is able to encrypt volume data before it is written to disk, and we recommend that the volume encryption feature is enabled. See the Volume Encryption section of the Openstack Cinder Service Configuration documentation for instructions.

Pass: If 1) the value of parameter backend under the [key_manager] section in /etc/cinder/cinder.conf is set, 2) the value of parameter backend under [key_manager] in /etc/nova/nova.conf is set, and 3) if the instructions in the documentation referenced above are properly followed.

Daha fazla doğrulamak için, hacim şifreleme kurulumunu tamamladıktan ve LUKS için hacim türünü oluşturduktan sonra yukarıda atıfta bulunulan belgelendirmede açıklandığı gibi bu adımları uygulayın.

  1. Sanal Makine oluştur:

    $ openstack server create --image cirros-0.3.1-x86_64-disk --flavor m1.tiny TESTVM
    
  2. Şifrelenmiş hacim oluştur ve sanal makineye bağla:

    $ openstack volume create --size 1 --type LUKS 'encrypted volume'
    $ openstack volume list
    $ openstack server add volume --device /dev/vdb TESTVM 'encrypted volume'
    
  3. Sanal makinede, yeni bağlanmış hacime metin gönder ve onu senkronize et:

    # echo "Hello, world (encrypted /dev/vdb)" >> /dev/vdb
    # sync && sleep 2
    
  4. Cinder hacim servislerini barındıran sistemde, G/Ç önbelliğini temizlemek için senkronize et ve şu dizgenin bulunup bulunmadığını kontrol et:

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

Arama, şifrelenmiş hacime yazılan dizgeyi döndürmez.

Fail: If value of parameter backend under [key_manager] section in /etc/cinder/cinder.conf is not set, or if the value of parameter backend under [key_manager] section in /etc/nova/nova.conf is not set, or if the instructions in the documentation referenced above are not properly followed.