Ağ güvenlik grupları ve uygulama güvenlik grupları

Bu makalede, trafik filtreleme için ağ güvenlik gruplarını (NSG) kullanarak Azure sanal ağlardaki ağ trafiğinin nasıl denetlendiği açıklanır. Ayrıca ağ arabirimlerinin mantıksal gruplandırmalarına yönelik uygulama güvenlik gruplarını (ASG' ler) de kapsar.

Bu makalenin kapsamı

Ağ güvenlik grupları, Azure bir sanal ağdaki kaynaklar için gelen ve giden trafiği filtrelemenize olanak tanır. Uygulama güvenlik grupları, ağ arabirimlerini role göre gruplandırmanıza olanak tanır. Tek tek IP adresleri yerine mantıksal gruplara başvuran NSG kuralları yazın.

Bu makaleye kimin ihtiyacı var?

Aşağıdakiler varsa bu makaleyi okuyun:

  • Azure sanal ağına bağlanan tüm kaynakları dağıtın.
  • Alt ağlar, sanal makineler veya Azure hizmetleri arasında akan trafiği denetlemesi gerekir.
  • VM'lerin sık ölçeklendirildiği veya IP adreslerinin değiştiği ortamlar için kural yönetimini basitleştirmek istiyorsunuz.
  • Yeni bir Azure iş yükü için güvenlik temeli oluşturuyor.

Lift-and-shift yaklaşımı: Uygulamalarınızın halihazırda kullandığı katmanlar arası trafik akışlarını yansıtacak şekilde, şirket içi güvenlik duvarı ve segmentasyon kurallarınızı alt ağlar arasındaki NSG’ler olarak yeniden oluşturun.

Odağı modernleştirin: Kuralları IP adresi yerine iş yükü rolüne göre ifade etmek için uygulama güvenlik gruplarını kullanın ve alt ağ NSG'lerini incelenen çıkışı zorlayan bir merkez güvenlik duvarı ve kullanıcı tanımlı yollar ile eşleştirin.

Bulutlar arası odak: İş yükleri bulutlar arasında hareket ettikçe trafik ilkesinin tutarlı kalması için AWS ve Google Cloud'un güvenlik grubu kurallarını Azure NSG'lere yansıtın.

Azure hizmetleri ve özellikleri

Aşağıdaki tabloda, Azure sanal ağlarda ağ trafiği filtreleme için kullanılan hizmetler ve özellikler açıklanmaktadır.

Hizmet veya özellik Ne sağlar? Ne zaman kullanılır?
Ağ güvenlik grubu (NSG) Alt ağa veya ağ arabirimine uygulanan bir dizi gelen ve giden güvenlik kuralı. Kurallar önceliğe göre değerlendirilir: en düşük sayı kazanır. Alt ağ veya tek tek VM düzeyinde trafiği denetleme. Sanal ağ kullanan her iş yüküne uygulayın.
Uygulama güvenlik grubu (ASG) Ağ arabirimlerinin mantıksal gruplandırma. ASG'leri IP adresleri yerine NSG kurallarında kaynak veya hedef olarak kullanın. Aynı role (web sunucuları, uygulama sunucuları) hizmet veren birden çok VM'niz var ve bunların IP adresleri ölçeklendirme ile değişiyor. Tüm gruplandırılmış NIC'ler aynı sanal ağda olmalıdır.
Hizmet etiketleri Azure hizmetleri için adlandırılmış IP adresi ön ekleri grupları, Microsoft tarafından otomatik olarak yönetilir ve güncelleştirilir. Örnekler: AzureCloud, Storage, AzureLoadBalancer, Sql. NSG kurallarında IP aralıklarını sabit kodlamadan Azure hizmetlerine başvurun. Microsoft temel IP aralıklarını otomatik olarak güncelleştirir. Özel hizmet etiketleri oluşturamazsınız.

Ortak hizmet etiketleri

Aşağıdaki tablo, NSG kurallarında en sık kullanılan hizmet etiketlerini listeler.

Hizmet etiketi Description
Internet Sanal ağınızın dışındaki tüm genel IP adresi alanı. Genel İnternet'ten kaynaklanan veya hedeflenen tüm trafikle eşleşir.
VirtualNetwork Sanal ağ adres alanınız, tüm bağlı adres alanları (eşlenmiş sanal ağlar), VPN/ExpressRoute aracılığıyla bağlanan şirket içi ağlar ve tüm hizmet uç noktaları. Varsayılan yolları içerir.
AzureLoadBalancer Azure altyapı yük dengeleyicisi Azure sistem durumu yoklamalarının geldiği ana bilgisayarın sanal IP'sine çevirir. Sistem durumu yoklama trafiğine izin vermek için gelen kurallarda kullanılır.
Storage Azure Depolama hizmeti IP adres alanı. gibi Storage.WestUS2bölgesel varyantları destekler. Sanal ağın içinden Azure Depolama erişime izin vermek veya erişimi kısıtlamak için kullanın.
AzureCloud Tüm Azure veri merkezi genel IP adresleri. gibi AzureCloud.EastUSbölgesel varyantları destekler. Genel olarak Azure hizmetlerine giden trafiğe izin vermek için kullanışlıdır.
Sql Azure SQL Veritabanı, MySQL için Azure Veritabanı, PostgreSQL için Azure Veri Tabanı, MariaDB için Azure Veritabanı ve Azure Synapse Analytics IP adresi ön ekleri. Bölgesel varyantları destekler.
Artırılmış güvenlik kuralları Tek bir kuralda birden çok IP adresi, IP aralığı ve bağlantı noktası kabul eden genişletilmiş NSG kuralları. Birçok IP veya bağlantı noktası aralığı için trafiğe izin vermeniz veya trafiği reddetmeniz gerektiğinde kural sayısını azaltın. Kural başına birden çok IP'yi ve bağlantı noktası aralığını ve en fazla 10 uygulama güvenlik grubunu destekler, ancak kural başına yalnızca bir hizmet etiketi destekler.

Nasıl seçilir?

Senaryonuz için doğru güvenlik yapısını seçmek için aşağıdaki kılavuzu kullanın.

NSG sınırları ve kotaları

Azure NSG kaynakları için aşağıdaki varsayılan sınırları uygular. Çoğu sınırı artırmak için Azure desteği aracılığıyla bir artış isteyin.

Kaynak Varsayılan limit Maksimum sınır
NSG başına kurallar 2,000 2,000
Abonelik başına NSG'ler 5,000 5,000
Alt ağ başına NSG'ler 1 1
NIC başına NSG'ler 1 1
Abonelik başına ASG 3,000 3,000
ASG başına NIC'ler Aboneliğe göre değişir Destek ekibiyle iletişime geçin
Her kural için kaynak veya hedef olarak başvurulan ASG'ler 10 10

Note

Her NSG için 2.000 kural sınırı hem özel kuralları hem de varsayılan kuralları içerir. Bu sınıra yaklaşırsanız, birden çok IP'yi veya bağlantı noktası aralığını daha az kural halinde birleştirmek için artırılmış güvenlik kurallarını kullanın.

NSG ile ASG karşılaştırması: ne zaman kullanılır?

Senaryonuza uygun güvenlik yapısını belirlemek için aşağıdaki tabloyu kullanın.

Scenario Use Neden?
Alt ağdaki tüm VM'ler için trafiği denetleme Alt ağ düzeyinde NSG Alt ağdaki her kaynak için bir NSG geçerlidir. Tekdüzen ilkeler için yönetimi en kolayıdır.
Belirli bir VM'nin trafiğini alt adan bağımsız olarak denetleme NIC düzeyinde NSG Diğer VM'leri etkilemeden özel durumlara izin verir. Atlama kutuları veya savunma konakları için kullanışlıdır.
Birçok VM aynı role sahiptir ve IP adresleri sık sık değişir ASG Role (web, uygulama, veri) göre bir gruba VM'ler ekleyin. Grup adına göre kurallar yazın. VM'ler ölçeklendirilirken veya yeni IP'ler alırken güncelleştirme gerekmez.
Kaynak veya hedef olarak Azure hizmetlerine (Depolama, SQL, Key Vault) başvurma Hizmet etiketleriyle NSG Microsoft güncelleştirilebilecek IP aralıklarını sabit kodlamaktan kaçının. Hizmet etiketleri otomatik olarak güncel kalır.

Aşağıdaki diyagramda ASG'lerin VM'leri rollerine göre gruplandırmanıza ve tek tek IP adresleri yerine mantıksal gruplar arasında NSG kuralları yazmanıza nasıl izin verdiği gösterilmektedir.

NSG kurallarıyla web'den uygulamaya 443 numaralı bağlantı noktasına ve uygulamadan veri sunucularına 1433 numaralı bağlantı noktasına izin veren vm'leri role göre üç uygulama güvenlik grubuna ayrılmış olarak gösteren diyagram.

Güvenlik duruşu denetim listesi

NSG yapılandırmanızı üretime dağıtmadan önce bu denetim listesine göre doğrulayın.

Requirement Action Reference
Varsayılan olarak reddetme yaklaşımı Varsayılan DenyAllInbound kurala (öncelik 65500) bağlı olduğunuzu onaylayın. Varsayılan engellemeyi aşan, her şeye izin veren geniş kapsamlı kurallar oluşturmayın. Güvenlikle ilgili dikkat edilmesi gerekenler
Yönetici bağlantı noktalarında İnternet erişimi yok SSH (22) ve RDP (3389) üzerinden gelen trafiği 0.0.0.0/0 engelleyin. Yönetim erişimi için Azure Bastion veya VPN kullanın. Güvenlikle ilgili dikkat edilmesi gerekenler
Derin inceleme için Azure Güvenlik Duvarı ile birleştirin NSG'ler yalnızca katman 3/4'te filtrelemektedir. Uygulama katmanı (katman 7) filtreleme, TLS incelemesi ve tehdit bilgileri için Azure Güvenlik Duvarı ekleyin. Azure Güvenlik Duvarı ve ağ segmentasyonu
Tanılama için akış günlüklerini etkinleştirme Güvenlik araştırması ve uyumluluğu için trafik verilerini yakalamak için sanal ağ akış günlüklerini kullanın. Ağ izleme ve tanılama

Kural değerlendirme sırası

NSG kuralları, ilk eşleşmenin geçerli olduğu semantiği kullanır:

  1. Azure kuralları öncelik sırasına göre değerlendirir: önce en düşük sayı (en yüksek öncelik).
  2. Azure, her kuralı şu beşliye göre değerlendirir: kaynak, kaynak bağlantı noktası, hedef, hedef bağlantı noktası ve protokol.
  3. Trafik bir kuralla eşleştiğinde işleme durdurulur. Azure diğer kuralları değerlendirmez.
  4. Hiçbir özel kural eşleşmiyorsa, varsayılan kurallar uygulanır. Varsayılan kuralları silemezsiniz, ancak öncelik numaraları 100 ile 4096 arasında olan özel kurallar oluşturarak bunları geçersiz kılabilirsiniz.

Varsayılan kurallar (toplam altı):

Yönlendirme Kural adı Priority Action
Gelen Ürünler AllowVNetInBound 65000 Allow
Gelen Ürünler Azure Yük Dengeleyiciye Girişe İzin Ver 65001 Allow
Gelen Ürünler DenyAllInbound 65500 Deny
Outbound AllowVnetOutBound 65000 Allow
Outbound İnternet Dışa Yönelik İzin Ver 65001 Allow
Outbound DenyAllOutBound 65500 Deny

ASG kısıtlamaları

Uygulama güvenlik gruplarını kullanırken aşağıdaki kısıtlamalara dikkat edin:

  • ASG'deki tüm ağ arabirimleri, ASG'ye atanan ilk ağ arabirimiyle aynı sanal ağda bulunmalıdır.
  • Bir kuralın hem kaynağında hem de hedefinde ASG'lere başvurursanız, her iki gruptaki ağ arabirimleri aynı sanal ağda olmalıdır.
  • Bir kuralın kaynağında veya hedefinde en fazla 10 ASG'ye başvurabilirsiniz.

Alt ağ düzeyinde ve ağ arabirimi düzeyinde NSG'ler bir arada

Bir NSG'yi hem bir alt ağ hem de bu alt ağ içindeki bir VM'nin ağ arabirimiyle ilişkilendirebilirsiniz. Bunu yaptığınızda, Azure hem NSG'leri değerlendirir hem de trafik her ikisini de geçmelidir. En kısıtlayıcı birleşim kazanır.

Yönlendirme İlk değerlendirme İkinci değerlendirme
Gelen Ürünler Alt ağ NSG NIC NSG
Outbound NIC NSG Alt ağ NSG

İpucu

Daha basit bir sorun giderme için NSG'yi alt ağ veya ağ arabirimiyle ilişkilendirin, ancak ikisini birden ilişkilendirmeyin. Her ikisine de ihtiyacınız varsa, hedeflenen kural etkileşimini net bir şekilde belgeleyebilirsiniz.

Pratik örnek: atlama kutusu içeren web katmanı

İnternet'ten gelen HTTPS'ye (bağlantı noktası 443) izin veren ve diğer her şeyi reddeden alt ağ düzeyinde NSG'ye sahip bir alt ağ düşünün. Bu alt ağdaki atlama kutusu VM'sinde, belirli bir yönetim IP aralığından gelen SSH'ye (bağlantı noktası 22) izin veren ağ arabirimi düzeyinde bir NSG vardır.

  • Web trafiği (bağlantı noktası 443): Alt ağ NSG'si buna izin verir. Web VM'lerindeki ağ arabirimi NSG'sinin 443 için reddetme kuralı yoktur (varsayılan AllowVNetInBound izinler). Trafik akışları.
  • Atlama kutusuna SSH ile bağlanın (yönetim IP’sinden 22 numaralı bağlantı noktası üzerinden): Alt ağ NSG’si, internetten 22 numaralı bağlantı noktasına gelen trafiği engeller. Ağ arabirimi üzerindeki NSG, yönetim aralığından gelen SSH trafiğine izin verse de, bunu önce alt ağdaki NSG engeller. Çözünürlük: Yönetim IP aralığından 22 numaralı bağlantı noktasına izin vermek için alt ağ NSG'sine bir kural ekleyin veya genel İnternet yolunu tamamen atlamak için Azure Bastion kullanın.

Bu örnekte çift NSG'lerin neden karmaşıklık katıyor olduğu gösterilmektedir. Her ikisi de trafiğe bağımsız olarak izin vermelidir.

Aşağıdaki diyagramda hem alt ağ NSG'sini hem de NIC NSG'sini ilişkilendirdiğinizde gelen trafik değerlendirme yolu gösterilmektedir. Trafik her iki NSG'den de geçmelidir. En kısıtlayıcı birleşim kazanır.

alt ağ ve NIC düzeylerinden gelen trafiğe izin vermek veya reddetmek için NSG kuralı değerlendirme akış çizelgesini gösteren diyagram

Azure Sanal Ağ Yöneticisi etkileşimi

Kuruluşunuz Azure Sanal Ağ Yöneticisi (AVNM) güvenlik yöneticisi kuralları kullanıyorsa Azure bu kuralları NSG kuralları öncesinde değerlendirir. Güvenlik yöneticisi kuralları İzin Ver (NSG değerlendirmesine devam et), Her Zaman İzin Ver (NSG'yi atla) veya Reddet (NSG değerlendirmeden önce engelle) olabilir. Merkezi ağ güvenliği yönetimi için bkz. Azure Sanal Ağ Yöneticisi ve merkezi yönetim.

Tasarımla ilgili dikkat edilecek noktalar

Lift-and-shift NSG ve ASG tasarım odağı

  • Şirket içi segmentasyonunuzu alt ağ düzeyinde NSG'lere çevirin: Yalnızca uygulamanızın zaten kullandığı katmandan katmana akışlara (örneğin, web'den uygulamaya ve uygulamadan veritabanına) izin verin ve diğer her şeyi reddedin.
  • Mevcut güvenlik duvarı kural kümenizden başlayın ve geçişten sonra, hangi akışların gerçekten gerekli olduğunu doğrulamak için NSG akış günlüklerini kullanarak kuralları sıkılaştırın.
  • Kolaylık olması için önce alt ağ düzeyinde NSG'leri uygulayın; yalnızca tek tek VM'lerin özel durumlara ihtiyaç duyduğu durumlarda NIC düzeyi kuralları ekleyin.
  • Kuralların geçiş sırasında yeniden adreslenmesine devam edebilmesi için sabit kodlanmış IP adresleri yerine hizmet etiketlerini (ve VirtualNetworkgibiAzureLoadBalancer) kullanın.

NSG ve ASG tasarım odağını modernleştirme

  • Ağ arabirimlerini role (web, uygulama, veri) göre gruplandırmak için uygulama güvenlik gruplarını kullanın; böylece kurallar amacı açıklar ve örnekler ölçeklendirildikçe otomatik olarak uyarlar.
  • Alt ağ NSG'lerini merkez Azure Güvenlik Duvarı birleştirin: NSG'ler katmanlar arasındaki mikro ayrımları işlerken güvenlik duvarı güven sınırlarını aşan trafiği inceler.
  • PaaS hizmetlerine yalnızca özel uç nokta alt ağının erişmesine izin verin ve giden trafiği kullanıcı tanımlı rotalarla merkez güvenlik duvarı üzerinden zorlayın.
  • Azure Sanal Ağ Yöneticisi güvenlik yönetici kurallarını kullanıyorsanız, bu kurallar NSG'lerden önce değerlendirildiğinden, platform genelindeki korumaların iş yükü NSG'leriyle çakışmaması için öncelik sıralamasını planlayın.

Bulutlar arası NSG ve ASG tasarım odağı

  • AWS ve Google Cloud’daki güvenlik grubu kurallarını Azure NSG’lerine yansıtın; böylece eşdeğer katmanlar geçiş sonrası aynı politikayı uygulasın.
  • Yalnızca bulutlar arası uygulama bağımlılıkları için gereken belirli bağlantı noktalarına ve kaynaklara izin verin ve bu trafiği denetlenen IPsec tünelleri aracılığıyla yönlendirin.
  • Operasyon ekiplerinin sorun giderme sırasında eşdeğer iş yüklerini ilişkilendirmesi için uygulama güvenlik grubu adlarını bulutlar arasında standartlaştırabilirsiniz.
  • Bulutlar arası ve şube trafiğinin hem NSG'ler tarafından filtrelenmesi hem de güvenlik duvarı tarafından incelenmesi için NSG'leri güvenli bir Sanal WAN hub güvenlik duvarıyla eşleştirin.

Prerequisites

NSG'leri ve ASG'leri uygulamadan önce şunlara sahip olduğunuzdan emin olun:

  • Alt ağlara sahip bir sanal ağ: NSG'ler bir sanal ağ içindeki alt ağlara veya NIC'lere bağlanır. Planlama yönergeleri için bkz. Sanal ağlar ve alt ağlar .
  • IP adresleme planı: NSG kuralları IP adreslerine ve aralıklara başvurur. IP planı, kesin kurallar yazabilmenizi sağlar. Yönergeler için bkz. IP adresi planlaması .
  • Gerekli trafik akışlarının listesi: Kuralları yazmadan önce hangi kaynakların iletişim kurması, hangi bağlantı noktaları ve hangi yönde iletişim kurması gerektiğini belgele.

Güvenlik konuları

Important

Varsayılan olarak reddetme doğru yaklaşımdır. Azure'daki varsayılan gelen kuralları, açıkça izin verilmeyen tüm İnternet trafiğini reddeder. Geniş izin kuralları oluşturarak bu duruşu zayıflatmayın.

Yönetim bağlantı noktalarında 0.0.0.0/0'a asla izin verme

Caution

SSH (bağlantı noktası 22) veya RDP (bağlantı noktası 3389) gibi yönetim bağlantı noktalarından 0.0.0.0/0 gelen trafiğe (İnternet'teki herhangi bir kaynak) izin veren bir NSG kuralı oluşturmayın. Saldırganlar açık yönetici bağlantı noktaları için sürekli olarak İnternet'i tarar. Bunun yerine sanal makinelere güvenli bir şekilde erişmek için Azure Bastion, VPN veya Azure Özel Bağlantı kullanın.

NSG'leri Azure Güvenlik Duvarı ile birleştirme

NSG'ler 3. ve 4. katmanda (ağ ve aktarım) çalışır. IP adreslerine, bağlantı noktalarına ve protokollere göre filtrelenir ancak paket içeriğini incelemez. Uygulama katmanı filtreleme, tehdit bilgileri veya TLS incelemesi gerektiren iş yükleri için NSG'lerin yanı sıra Azure Güvenlik Duvarı dağıtın. Bkz. Azure Güvenlik Duvarı ve ağ segmentasyonu.

Trafik görünürlüğü için sanal ağ akış günlüklerini kullanma

Note

NSG akış günlükleri 30 Eylül 2027'de kullanımdan kaldırılıyor. 30 Haziran 2025'in ardından yeni NSG akış günlükleri oluşturulamıyor. Sanal ağ düzeyinde aynı özelliklerin yanı sıra trafik analizi sağlayan sanal ağ akış günlüklerine geçiş yapın.

Sanal ağ akış günlükleri, bir sanal ağdaki tüm iş yükleri için akış başına durum ve aktarım hızı verilerini yakalar. Bunları aşağıdakiler için kullanın:

  • Güvenlik araştırması: Beklenmeyen trafik desenlerini belirleyin.
  • Uyumluluk denetimi: Trafik akışlarının belgelenen ilkeyle eşleştiklerini kanıtlayın.
  • Kapasite planlaması: Alt ağlar arasındaki bant genişliği tüketimini anlama.

İzleme ve tanılama yapılandırması için bkz. Ağ izleme ve tanılama.

Kaçınılması gereken yaygın hatalar

Hata Neden sorun var? Daha iyi bir yaklaşım
Tüm trafiğe izin veren gelen kurallar oluşturma (öncelik 100, kaynak *, hedef *) Varsayılan reddetme duruşunu atlar ve tüm kaynakları İnternet trafiğine açar. Yalnızca belirli kaynak/hedef/bağlantı noktası birleşimlerine izin verin. İzin verme kuralları için kullanabileceğiniz en yüksek öncelikli sayıları kullanın.
Varsayılan olarak reddetmenin mevcut olduğunu unutmak Ekipler bilinen trafik için izin kuralları oluşturur, ancak bunun dışındaki her şeyin engellenip engellenmediğini test etmez. İstenmeyen açık bağlantı noktalarının farkında olunmayabiliyor. NSG’leri dağıttıktan sonra, yalnızca beklenen trafiğin aktığını VNet akış günlükleri veya NSG tanılama günlükleriyle doğrulayın. Reddedilen yolları açıkça test edin.
Dinamik iş yükleri için ASG kullanmamak VM'lerin ölçeği genişletildiğinde veya yeni IP'ler alındığında IP tabanlı kurallar kesintiye neden olur. Ekipler, kuralları sürekli güncellemek zorunda kalır. ASG'leri kullanarak VM'leri role göre gruplandırma. ASG’lere başvuran kurallar, VM’ler gruba eklendikçe veya gruptan kaldırıldıkça geçerliliğini korur.
Bir güvenlik olayı yaşanana kadar akış günlüklerini yok sayma Akış günlükleri etkinleştirilmeden, araştırma veya uyumluluk denetimleri için geçmiş trafik verileriniz yoktur. Birinci günden itibaren sanal ağ akış günlüklerini etkinleştirin. Anomalilerle ilgili görselleştirme ve uyarı için Traffic Analytics'i yapılandırın.
Belgeler olmadan hem alt ağ hem de NIC NSG'leri uygulama İkili NSG'ler, trafiğin beklenmedik bir şekilde reddedildiği kafa karıştırıcı etkileşimler oluşturur. Sorun giderme zaman alır. Standart olarak alt ağ düzeyinde veya NIC düzeyinde NSG'leri seçin. Her ikisi de gerekiyorsa, her alt ağ için hedeflenen etkileşimi belgeleyin.

Daha fazla bilgi edinin

Sonraki Adımlar

İpucu

Kendi başınıza mı keşfedersiniz? Özelliğe göre bir sonraki makalenizi bulmak için genel bakış gezginine dönün.

Lift-and-shift yolculuğunuzdaki bir sonraki adım:

Merkez-uç topolojinizi tasarlama: Geçirilen iş yükleriniz arasında DNS, güvenlik duvarı ve VPN Gateway gibi paylaşılan hizmetleri merkezileştirin.

Modernleştirme yolculuğunuzda bir sonraki adım:

Merkez-uç topolojinizi tasarlama: PaaS iş yükleriniz için BT'ye ait merkezler ve uygulama ekibine ait uçlarla çift merkez topolojisi ayarlayın.

Bulutlar arası yolculuğunuzda sonraki adım:

Diğer bulutlarınıza şifreli tüneller ayarlama: Bulutlar arası geçiş için Amazon Web Services (AWS) Sanal Özel Ağ Geçidi ve Google Cloud VPN'e VPN Gateway bağlantıları yapılandırın.