Azure IaaS Security Best Practises

By | 31 March 2019

Kuşkusuz Azure üzerinde bir çok müşteri alt yapısını barındırıyor ve yönetiyor. Ya da alt yapısını Azure platform üzerine taşımayı düşünüyor.

Tüm bu işlemler için Azure platform üzerinden bir çok güvenlik bileşenini kullanıcılara sunmaktadır. Bu bölümde IaaS için sunulan bu güvenlik bileşenlerini ve nasıl dizayn edilmelerini gerektiğini ele alacağım.

İlk olarak NSG’ler dizayn edilirken göz önünde bulundurulması gereken önemli durumlardan bahsedelim.

IaaS deployment’ları temel olarak VM ve Virtual Network’lerden oluşurlar. Belli durumlarda VM’lere internet üzerinden erişilmesi gerekebilir. Bu sebeple public IP adresine ihtiyaç duyarlar. Böyle durumlarda Vm’in yada network’ün yetkisiz erişimlere karşı korunması gerekir. Aynı şekilde Bazı VM’lerin internal network üzerinde de belli portlardan,Ip adreslerinden yada belli protokoller kullanılarak yapılan erişimlere karşı korunması gerekebilir.

NSG(Network Security Group) kullanarak VM,network yada subnet için yazılımsal bir koruma katmanı entegre etmiş oluruz. Böylece yapılan istekleri protocol,IP ve port bakımından kısıtlayabiliriz. Bu işlemleri hem gelen hemde giden trafik üzerinde uygulayabiliriz. Yapılan kurallar için izin verme ve bloklama olarak iki aksiyon tanımlayabiliriz.

Eğer NSG bir subnet’e uygulanırsa o subnet içindeki tüm VM’ler ve load balancerlar bu NSG’nin etkisi altına girerler.

NSG’lerin subnet bazında ve interface bazında atanmasındaki önemli nokta şudur. Daha specific kurallar interface üzerine etki eden NSG üzerinde tanımlanırken, daha genel kurallar subnet üzerindeki NSG’te tanımlanır.

NSG’ler dizayn edilirken kaynaklara internet üzerinden erişilip erişilemeyeceği, internal üzerinden kaynaklara erişim olup olmayacağı, loadbalancer-gateway vb. Bileşenlerin kullanılıp kullanılmayacağı belirlenmesi gerekir.

Şimdi NSG dizaynı yapılırken göz önünde bulundurulması gereken konuları ele alalım.

  1. NSG design edilmeden önce her workload ve resource tipi için farklı network subnetlere sahip olunduğundan emin olunmalıdır.
  2. Load Balancer ile virtual network aynı subnet içerisine deploy edilmemelidir.
  3. Deploy edilecek iş yüklerine göre NSG’ler oluşturulmalıdır. Örneğin uygulama ve database sunucuları ayrı subnetlere deploy edilmeli ve bu subnetlere genel NSG’ler uygulanmalıdır.
  4. Genel NSG rule’ları subnet üzerinde atandıktan sonra, specific iş yüküne göre interface’lere özel NSG’ler atanmalıdır.
  5. Burada önemli noktalardan birisi eğer NSG üzerinde bir rule bir port üzerinden gelen trafiğe izin veriyorsa, aynı port üzerinden giden trafiğe de izin verilir.
  6. Eğer kaynak internet üzerinden erişime açıksa bu erişim belirli IP range’inden yapılacak şekilde kısıtlanmalıdır.

Nsg’lerin ardından göz önünde bulundurmamız gereken ikinci önemli kısım da işletim sistemlerine ait firewall’lar. Bu firewall’ları konfigüre ederken NSG’leri ve NSG’ler üzerinde yapılandırılan kuralları da göz önünde bulundurmamız gerekir. Şimdi bunlardan kısaca bahsedelim.

Firewall dizaynı işletim sistemi seviyesinde başlamalıdır. Her işletim sistemi üzerinde yazılımsal firewall gerekli kurallar ile konfigüre edilip etkinleştirilmelidir.

Bu işlemin ardından VM’in bulunduğu network üzerinde hem subnet seviyesinde hem de network interface seviyesinde NSG’ler (Network security group) etkinleştirilmelidir. NSG ve işletim sistemi firewall’undaki kurallar gereksinimlere uygun olarak design edilip bir bireri ile çelişmeyecek şekilde yapılandırılmalıdır. Daha sıkı kurallar işletim sistemi seviyesinde uygulanmalıdır.

Tabi tüm bu işlemlerin yanında göz önünde bulundurulması gereken bazı security gereksinimleri de vardır. Çünkü firewall’lar ve NSG’ler ile erişimleri denetim altına alsanızda işletim sistemi bazında verilen farklı yetkiler ile yada farklı servislerdeki açıklar ile yada security konfigürasyonlarının yanlış yada eksik yapılması ile yine çeşitli riskler oluşacaktır. Bu sebeple aşağıdaki maddelerde belirtilen önlemlerin de alınması tavsiye edilmektedir.

  • Group policy’lerin entegre edilmesi
  • Tüm kullanıcılara ait grup üyeliklerinin belirlenmesi
  • Tüm aktivitelerin loglanması
  • Kullanılmayan servislerin durdurulması
  • Dosya dizinindeki erişim izinlerinin düzenlenmesi
  • Registry değişikliklerinin, servis start-stop işlemlerinin denetim altına alınması
  • Powershell script execuriton policy’sinin “Remote Signed” olarak konfigüre edilmesi
  • Yeni kullanıcı ve grup oluşturma işlemlerinin sınırlandırılması
  • Belirli gruplardan gereksiz kullanıcıların silinmesi
  • Antivirüs yazılımlarının yüklenmesi ve otomatik scan konfigürasyonlarının yapılması
  • Security update’lerinin düzenli olarak yüklenmesi
  • Security compliance tool’larının belirttiği tüm gereksinimlerin karşılanması
  • Azure üzerindeki security center ve Azure monitor ile ortamların izlenmesi
  • Network virtual appliance’ların kullanılması
  • Sensitive data’ların encrypt edilmesi

Bu liste daha da çok madde ekleyerek arttırılabilir tabiki. Ancak önemli olanları yukarıdaki gibi.

Bunlara ek olarak Azure üzerindeki VM’lere bağlanırken genelde VPN kullanılması önerilir. Eğer VPN konfigürasyonu yoksa VM’lere direkt olarak public IP vasıtasıyla bağlanmak yerine “Jump Server” denilen DMZ üzerinde bulunan sunucular ile bağlanılması önerilir.

Jump server’lar RDP isteklerini Kabul eder ve kullanıcıların bu server’a login olduktan sonra diğer server’lara login olabilmelerine olanak sağlar. Bu server’lar üzerinde tüm güvenlik kısıtlamaları yapılandırılmıştır ve diğer VM’lere güvenli bağlantı yapılması sağlanır.

IAAS için güvenlik gereksinimlerini bu şekilde özetlemiş olduk. Bir sonraki bölümde Paas için alınacak güvenlik önlemlerinden bahsedeceğim.

Görüşmek üzere.

Fırat

Leave a Reply