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.
Sanal Makine oluştur:
$ openstack server create --image cirros-0.3.1-x86_64-disk --flavor m1.tiny TESTVM
Ş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'
Sanal makinede, yeni bağlanmış hacime metin gönder ve onu senkronize et:
# echo "Hello, world (encrypted /dev/vdb)" >> /dev/vdb # sync && sleep 2
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.