DevOps'ta Güvenlik (DevSecOps)
Güvenlik, DevOps'un önemli bir parçasıdır. Ancak bir ekip, sistemin güvenli olup olmadığını nasıl bilir? Tamamen güvenli bir hizmet sunmak gerçekten mümkün mü?
Ne yazık ki, yanıt hayır. DevSecOps, hem geliştirme hem de BT işlemlerinde herkesin dikkatini gerektiren sürekli ve sürekli bir çabadır. İş hiçbir zaman gerçek anlamda yapılmasa da, ekiplerin ihlalleri önlemek ve işlemek için oluşturduğu uygulamalar mümkün olduğunca güvenli ve dayanıklı sistemler üretmeye yardımcı olabilir.
"Temelde, birisi girmek istiyorsa, içeri giriyorlar... bunu kabul edin. Müşterilere şunu söyleriz: Bir numara, kavgadasınız, öyle olup olmadığını düşünseniz de. İkincisi, neredeyse kesinlikle nüfuzlusunuz." -- Michael Hayden, NSA ve CIA'in eski müdürü.
Güvenlik konuşması
Resmi bir DevSecOps stratejisi olmayan ekiplerin mümkün olan en kısa sürede planlama yapmaya başlaması önerilir. İlk başta, var olan tehditleri tam olarak takdir emeyen ekip üyelerinin direnişi olabilir. Diğerleri, ekibin sorunla karşılaşabilecek donanıma sahip olduğunu ve herhangi bir özel yatırımın nakliye özelliklerinden kaynaklanan dikkat dağıtıcı bir dikkat dağıtıcı olacağını hissetmeyebilir. Ancak risklerin doğası, ekibin bunları nasıl azaltabileceği ve ekibin şu anda sahip olmadığı kaynaklara ihtiyacı olup olmadığı konusunda fikir birliği oluşturmak için konuşmaya başlamak gerekir.
Şüphecilerin aşağıdakiler gibi bazı yaygın bağımsız değişkenleri getirmesini bekleyebilirsiniz:
- Tehdit ne kadar gerçek? Ekipler genellikle korumayla ücretlendirildikleri hizmetlerin ve verilerin potansiyel değerini takdir etmedikleri anlamına gelmez.
- Ekibimiz iyi, değil mi? Bir güvenlik tartışması, ekibin güvenli bir sistem oluşturma özelliğinde şüphe olarak algılanabilir.
- Bunun mümkün olduğunu sanmıyorum. Bu, küçük mühendislerin ortak bir tartışması. Deneyimi olanlar genellikle daha iyi bilir.
- Daha önce hiç ihlal olmadık. Ama sen nereden biliyorsun? Nereden bileceksin ki?
- Değer hakkında sonsuz tartışmalar. DevSecOps, temel özellik çalışmalarından dikkat dağıtıcı olarak algılanan ciddi bir taahhüttür. Güvenlik yatırımının diğer ihtiyaçlarla dengelenmesi gerekirken, göz ardı edilemez.
Zihniyet kayması
DevSecOps kültürü için önemli bir fikir değişikliği gerekir. İhlalleri önlemekle kalmaz, aynı zamanda bunları da varsaymalısınız.
Güvenlik stratejisi bileşenleri
Daha güvenli sistemler arayışında uygulanabilecek birçok teknik vardır.
İhlalleri önleme | İhlallerin kabul edilmesi |
---|---|
Tehdit modelleri | Savaş oyunu alıştırmaları |
Kod incelemeleri | Merkezi güvenlik izleyicileri |
Güvenlik testi | Canlı site sızma testleri |
Güvenlik geliştirme yaşam döngüsü (SDL) |
Her ekibin ihlalleri önlemeye yönelik en azından bazı uygulamaları olmalıdır. Güvenli kod yazmak daha çok varsayılan bir durum haline gelmiştir ve statik analiz ve diğer güvenlik testi özelliklerine yardımcı olmak için birçok ücretsiz ve ticari araç vardır.
Ancak birçok ekipte sistem ihlallerinin kaçınılmaz olduğunu varsayar. İhlal edildiğini kabul etmek, özellikle yönetimle zor konuşmalar yaparken kabul etmek zor olabilir, ancak bu varsayım, güvenlikle ilgili soruları kendi kendinize yanıtlamanıza yardımcı olabilir. Gerçek bir güvenlik acil durumu sırasında her şeyi çözmek istemezsin.
Düşünmesi gereken yaygın sorular şunlardır:
- Bir saldırıyı nasıl algılayacaksınız?
- Bir saldırı veya sızma olduğunda nasıl yanıt vereceksiniz?
- Verilerin sızdırıldığı veya üzerinde oynandığı durumlar gibi bir saldırıdan nasıl kurtulacaksınız?
Önemli DevSecOps uygulamaları
Neredeyse tüm ekipler için geçerli olan birkaç yaygın DevSecOps uygulaması vardır.
İlk olarak ortalama algılama süresini ve ortalama kurtarma süresini geliştirmeye odaklanın. Bu ölçümler, bir ihlali algılamanın ne kadar sürdüğünü ve kurtarmanın ne kadar sürdüğünü gösterir. Bunlar, güvenlik yanıt planlarının sürekli canlı site testi aracılığıyla izlenebilir. Olası ilkeleri değerlendirirken bu ölçümlerin geliştirilmesi önemli bir nokta olmalıdır.
Derinlemesine savunma alıştırması yapın. Bir ihlal oluştuğunda, saldırganlar iç ağlara ve içindeki her şeye erişebilir. Saldırganları bu kadar ileri gitmeden durdurmak ideal olsa da, ihlalleri kabul etme ilkesi ekipleri zaten içeri giren bir saldırganın maruz kalmasını en aza indirmeye iter.
Son olarak, uygulamalarınız ve ortamlarınız için düzenli aralıklarla ihlal sonrası değerlendirmeler gerçekleştirin. Bir ihlal çözüldükten sonra, ekibiniz ilkelerin performansını ve onlara kendi bağlılıklarını değerlendirmelidir. İlkeler, ekipler bunları gerçekten izlediğinde en etkili olanlardır. Gerçek veya uygulamalı her ihlal, geliştirme fırsatı olarak görülmelidir.
Tehditleri azaltma stratejileri
Tümünü listelemek için çok fazla tehdit var. Bazı güvenlik açıkları işletim sistemleri ve kitaplıklar gibi bağımlılıklardaki sorunlara bağlı olduğundan, bunları güncel tutmak kritik önem taşır. Diğerlerinin nedeni, sistem kodunda bulunan ve bulmak ve düzeltmek için dikkatli analiz gerektiren hatalardır. Kötü gizli yönetim, sosyal mühendislik gibi birçok ihlalin nedenidir. Farklı türdeki güvenlik açıklarını ve sistem için anlamlarını düşünmek iyi bir uygulamadır.
Saldırı vektörleri
Saldırganın bir geliştiricinin kimlik bilgilerine erişim elde ettiği bir senaryo düşünün. Ne yapabilir ki?
Privilege | Saldırı |
---|---|
E-posta gönderebilirler mi? | Kimlik avı iş arkadaşları |
Diğer makinelere erişebilirler mi? | Oturum aç, mimikatz, yinele |
Kaynağı değiştirebilirler mi? | Kod ekleme |
Derleme/yayın işlemini değiştirebilir mi? | Kod ekleme, betikleri çalıştırma |
Bir test ortamına erişebilirler mi? | Üretim ortamı test ortamına bağımlılık alıyorsa, bu ortamdan yararlanın |
Üretim ortamına erişebilirler mi? | Çok fazla seçenek var... |
Ekibiniz bu vektörlere karşı nasıl savunma yapabilir?
- Gizli dizileri korumalı kasalarda depolama
- Yerel yönetici hesaplarını kaldırma
- SAMR'i kısıtla
- Credential Guard
- Çift girişli sunucuları kaldırma
- Abonelikleri ayırma
- Çok faktörlü kimlik doğrulaması
- Ayrıcalıklı erişim iş istasyonları
- ATP ile algılama &Bulut için Microsoft Defender
Gizli dizi yönetimi
Tüm gizli diziler korumalı bir kasada depolanmalıdır. Gizli diziler şunlardır:
- Parolalar, anahtarlar ve belirteçler
- Depolama hesabı anahtarları
- Sertifikalar
- Paylaşılan üretim dışı ortamlarda da kullanılan kimlik bilgileri
Gizli dizilerin çoğaltılma işlemini ortadan kaldırmak için bir kasa hiyerarşisi kullanmanız gerekir. Ayrıca gizli dizilere nasıl ve ne zaman erişilir göz önünde bulundurun. Bazıları ortam yapılandırmaları oluşturulurken dağıtım zamanında kullanılırken, bazıları çalışma zamanında erişilir. Dağıtım zamanı gizli dizileri genellikle yeni ayarları almak için yeni bir dağıtım gerektirirken, çalışma zamanı gizli dizilerine gerektiğinde erişilir ve herhangi bir zamanda güncelleştirilebilir.
Platformlar, CI/CD işlem hatlarında ve Azure Key Vault ve GitHub Actions gibi bulut ortamlarında gizli dizileri yönetmek için güvenli depolama özelliklerine sahiptir.
Yararlı araçlar
- Bulut için Microsoft Defender, kötü amaçlı yazılım, şüpheli işlemler vb. gibi genel altyapı uyarıları için mükemmeldir.
- Statik uygulama güvenlik testi (SAST) için kaynak kodu çözümleme araçları .
- Depoların analizi ve izlenmesi için GitHub gelişmiş güvenliği .
- mimikatz , Windows'ta Yerel Güvenlik Yetkilisi Alt Sistem Hizmeti'nin
lsass.exe
belleğinden parolaları, anahtarları, pin kodlarını, biletleri ve daha fazlasını ayıklar. Yalnızca makineye veya hata ayıklama ayrıcalığının etkinleştirildiği bir hesaba yönetici erişimi gerektirir. - BloodHound , Active Directory ortamındaki ilişkilerin grafiğini oluşturur. Hızlı bir şekilde tanımlanması zor olan saldırı vektörlerini kolayca tanımlamak için kırmızı ekip kullanılabilir.
Savaş oyunu alıştırmaları
Microsoft'ta yaygın bir uygulama, savaş oyunu alıştırmalarına katılmaktır. Bunlar, iki ekibin bir sistemin güvenliğini ve ilkelerini test etme görevi aldığı güvenlik testi olaylarıdır.
Kırmızı takım saldırgan rolünü üstlenir. Güvenlik boşluklarını bulmak için gerçek dünya saldırılarını modellemeye çalışırlar. Herhangi bir güvenlik açığından yararlanabiliyorlarsa, ihlallerinin olası etkisini de gösterirler.
Mavi takım DevOps ekibinin rolünü üstlenir. Kırmızı takımın saldırılarını algılama ve yanıtlama yeteneklerini test ederler. Bu, durumsal farkındalığı artırmaya ve DevSecOps stratejisinin hazır ve etkililiğini ölçmeye yardımcı olur.
Savaş oyunları stratejisini geliştirme
Savaş oyunları, kırmızı takımı sorunları bulmaya ve istismar etmeye teşvik ettiği için güvenliği sağlamlaştırmada etkilidir. Muhtemelen erken saatlerde beklenenden çok daha kolay olacak. Kendi sistemlerine etkin bir şekilde saldırmaya çalışmamış olan ekipler genellikle saldırganların kullanabileceği güvenlik açıklarının boyutunu ve miktarının farkında değildir. Mavi takım tekrar tekrar ezileceği için ilk başta demoralize edilebilir. Neyse ki sistem ve uygulamalar zaman içinde gelişmeli ve böylece mavi takım tutarlı bir şekilde kazanmalıdır.
Savaş oyunlarına hazırlanma
Savaş oyunlarına başlamadan önce, takım bir güvenlik kartı aracılığıyla bulabildikleri tüm sorunları ele almalıdır. Bu, saldırı girişiminde bulunmadan önce gerçekleştirilecek harika bir alıştırmadır çünkü ilk açık daha sonra bulunduktan sonra herkesin karşılaştıracağı bir temel deneyim sağlar. El ile kod gözden geçirme ve statik analiz araçları aracılığıyla güvenlik açıklarını tanımlayarak başlayın.
Ekipleri düzenleme
Kırmızı ve mavi takımlar uzmanlık alanıyla düzenlenmelidir. Amaç, mümkün olduğunca etkili bir şekilde yürütmek üzere her taraf için en yetenekli ekipleri oluşturmaktır.
Kırmızı ekip, kod hakkında ayrıntılı bilgi sahibi olan güvenlik odaklı mühendisler ve geliştiriciler içermelidir. Mümkünse ekibi bir sızma testi uzmanıyla büyütmek de yararlıdır. Şirket içinde uzman yoksa, birçok şirket mentorluk ile birlikte bu hizmeti sağlar.
Mavi ekip, mevcut sistemleri ve günlüğe kaydetmeyi derinden anlayan ops-minded mühendislerinden oluşturulmalıdır. Şüpheli davranışları algılamak ve ele almak için en iyi şansa sahiptirler.
Erken savaş oyunları çalıştırın
Kırmızı takımın ilk savaş oyunlarında etkili olmasını bekleyebilirsiniz. Kötü korunan gizli diziler bulma, SQL ekleme ve başarılı kimlik avı kampanyaları gibi oldukça basit saldırılarla başarılı olmaları gerekir. Düzeltmeleri uygulamak ve ilkeler hakkında geri bildirimde bulunmak için turlar arasında bol bol zaman geçirin. Bu, kuruluşa göre farklılık gösterir, ancak herkes bir önceki turun tüm değeri için mayınlı olduğundan emin olana kadar bir sonraki tura başlamak istemezsiniz.
Devam eden savaş oyunları
Birkaç turdan sonra kırmızı takımın siteler arası betik (XSS), seri durumdan çıkarma açıkları ve mühendislik sistemi güvenlik açıkları gibi daha gelişmiş tekniklere güvenmesi gerekir. Active Directory gibi alanlarda dışarıdan güvenlik uzmanlarının getirilmesi, daha belirsiz açıklardan yararlanmaya saldırmak için yararlı olabilir. Bu zamana kadar, mavi ekibin savunmak için sağlamlaştırılmış bir platforma sahip olması değil, aynı zamanda ihlal sonrası adli tıp için kapsamlı, merkezi günlük kaydından da yararlanması gerekir.
"Defender'lar listelerde düşünür. Saldırganlar grafiklerde düşünür. Bu doğru olduğu sürece saldırganlar kazanır." -- John Lambert (MSTIC)
Zamanla, kırmızı takımın hedeflere ulaşması çok daha uzun sürecektir. Bunu yaptıklarında, sınırlı bir etkiye sahip olmak için genellikle birden çok güvenlik açığının bulunması ve zincirlenmesi gerekir. Mavi takım, gerçek zamanlı izleme araçlarını kullanarak denemeleri gerçek zamanlı olarak yakalamaya başlamalıdır.
Yönergeler
Savaş oyunları herkese ücretsiz olmamalı. Hedefin daha etkili bir ekip tarafından çalıştırılan daha etkili bir sistem oluşturmak olduğunu fark etmek önemlidir.
Kullanım kuralları
Microsoft tarafından kullanılan örnek bir kullanım kuralları aşağıda verilmiştir:
- Hem kırmızı hem de mavi takımlar zarar vermeyecektir. Hasara neden olma olasılığı önemliyse, belgelenmeli ve ele alınmalıdır.
- Kırmızı takım, hedef varlıkları yakalamak için gerekenden daha fazlasını tehlikeye atmamalıdır.
- Sağduyu kuralları fiziksel saldırılar için geçerlidir. Kırmızı ekibin sosyal mühendislik gibi teknik olmayan saldırılarda yaratıcı olması teşvik edilse de sahte rozetler, tacizler vb. yazdırmamalıdır.
- Bir sosyal mühendislik saldırısı başarılı olursa, gizliliği tehlikeye giren kişinin adını açıklamayın. Ders, herkesin birlikte çalışmaya devam etmesi gereken bir ekip üyesini dışlamadan veya utandırmadan paylaşılabilir.
Katılım kuralları
Microsoft tarafından kullanılan örnek katılım kuralları şunlardır:
- Herhangi bir sistemin kullanılabilirliğini etkilemez.
- Dış müşteri verilerine erişmeyin.
- Herhangi bir hizmette yerinde güvenlik korumalarını önemli ölçüde zayıflatmayın.
- Herhangi bir kaynağa karşı kasıtlı olarak yıkıcı eylemler gerçekleştirmeyin.
- Kasa guard kimlik bilgileri, güvenlik açıkları ve alınan diğer kritik bilgiler.
Teslim edilebilir öğeler
Alınan güvenlik riskleri veya dersler, onarım öğeleri kapsamında belgelenmelidir. Ekipler, güvenlik risklerinin ne kadar hızlı ele alınacağı konusunda bir hizmet düzeyi sözleşmesi (SLA) tanımlamalıdır. Ciddi riskler en kısa sürede ele alınmalıdır, ancak küçük sorunlar iki sprintli bir son tarihe sahip olabilir.
Öğrenilen derslerin ve güvenlik açıklarının bulunduğu bir rapor tüm kuruluşa sunulmalıdır. Herkes için bir öğrenme fırsatı, bu yüzden en iyi şekilde değerlendirin.
Microsoft'ta öğrenilen dersler
Microsoft düzenli olarak savaş oyunları uygular ve bu arada birçok ders edinmiştir.
- Savaş oyunları DevSecOps kültürünü değiştirmenin ve güvenliğin akılda kalmasını sağlamak için etkili bir yoldur.
- Kimlik avı saldırıları saldırganlar için çok etkilidir ve hafife alınmamalıdır. Etki, üretim erişimini sınırlayarak ve iki öğeli kimlik doğrulaması gerektirerek oluşabilir.
- Mühendislik sisteminin kontrolü her şeyin kontrolüne yol açar. Derleme/yayın aracısı, kuyruğu, havuzu ve tanımına erişimi kesinlikle denetlemeyi unutmayın.
- Saldırganlar için daha zor hale getirmek için derinlemesine savunma alıştırması yapın. İhlal etmek zorunda oldukları her sınır onları yavaşlatır ve yakalamak için başka bir fırsat sunar.
- Sakın güven bölgelerine geçme. Üretim asla testte hiçbir şeye güvenmemelidir.
Sonraki adımlar
Azure'da güvenlik geliştirme yaşam döngüsü ve DevSecOps hakkında daha fazla bilgi edinin.