it-swarm-tr.com

Bir MongoDB örneği nasıl güvenli hale getirilir?

MongoDB sunucusunun güvenliğini sağlama/sertleştirme konusunda deneyimi olan var mı? Kontrol listeleri veya kılavuzları memnuniyetle karşılanacaktır.

28
AaronS

NoSQL veritabanları nispeten yenidir (tartışmasız eski bir kavram olmasına rağmen), herhangi bir belirli MongoDB sertleştirme kılavuzu görmedim ve her zamanki yerlere baktım ( CISSecurity , satıcı yayınları, Sans vb. Hepsi kısa). Bir kuruluş, üniversite öğrencisi, infosec topluluğunun bir tane yazmasının ve sürdürmesinin iyi bir proje olacağını önerir.

Mongodb.org'da bazı temel bilgiler var. Güvenliğin sağlanması da dahil olmak üzere buradaki tüm adımlar takip edilmelidir. Sitenin kendisi MongoDB'nin sadece çok temel bir güvenlik seviyesine sahip olduğunu belirtiyor. http://www.mongodb.org/display/DOCS/Security+and+Authentication

MongoDB ve diğer NoSQL veritabanları da olgun SQL veritabanlarından çok daha az (özellikle güvenlik) özelliklere sahiptir, bu nedenle ince izinler veya veri şifreleme bulmak pek olası değildir, tohum olarak kullanıcı adıyla parola karma için MD5 kullanır. Her zaman bir risk değerlendirmesi yapmak ve güvenlik ihtiyaçlarınızı ve karşılaştığınız tehditleri çözmek için bir tehdit modeli oluşturmak gibi, 1.9.1 sürümünden önce kırma ile kimlik doğrulamasının bulunmaması gibi sınırlamalar da vardır. Bu çıktıya dayanarak, genel olarak MongoDB veya NoSQL veritabanları ihtiyaçlarınız için uygun olmayabilir veya avantajlarını en üst düzeye çıkaran ve zayıflıklarını en aza indiren farklı bir şekilde kullanmanız gerekebilir (örneğin en hassas bilgileriniz yerine veri özleri için, veya doğrudan web uygulamanıza bağlı olmak yerine bir dizi ağ denetimi arkasında).

Bununla birlikte, güvenlik ilkelerinin teknoloji agnostik olduğuna inanıyorum. En son saldırıları ve datalossdb.org'daki iyi bir listeyi bile analiz ederseniz, kaç tanesinin hala varsayılan şifreler ve eksik yamalar ile ilişkili olduğu şaşırtıcıdır. Derinlemesine savunma ile takip ederseniz aşağıdaki uygulamaların çoğunu korumak için yeterli güvenlik olmalıdır (örneğin, bireysel, ticari) belki askeri değil.

Veritabanı sertleştirme ilkeleri:

  • Kimlik doğrulama - kimlik doğrulaması gerektirir, yönetici veya ayrıcalıklı kullanıcılar mümkünse iki faktöre sahiptir (bunu veritabanı düzeyinde desteklemediğinden platform düzeyinde veya bir ağ cihazı üzerinden yapın). Mümkünse şifreleri önlemek için anahtar tabanlı kimlik doğrulamayı kullanın.
  • Yetkilendirme - gerekli izinlere sahip minimum sayıda gerekli hesap, salt okunur hesaplar desteklenir, bu nedenle bunları kullanın. Ayrıntılı erişim kontrolü olmadığından alternatif araçlar kullanın, örneğin veritabanı önünde, erişim kontrol kuralları veya uygulama içinde iş mantığı içeren bir web hizmeti kullanın. Mongodb'un platformda olduğu gibi çalıştırdığı izinleri en aza indirin; kök olarak çalıştırılmamalıdır.
  • Varsayılan ve sistem hesapları - tüm varsayılan hesapların şifrelerini değiştirin, yapabildiklerinizi kaldırın/kilitleyin/devre dışı bırakın, yapabileceğiniz girişleri devre dışı bırakın.
  • Günlüğe kaydetme ve izleme - günlüğe kaydetme etkinleştirin ve bunları merkezi bir izleme sistemine aktarın. İzleme personeliniz için özel uyarılar ve araştırma prosedürleri tanımlayın
  • Giriş doğrulama - NoSQL veritabanları enjeksiyon saldırılarına karşı hala savunmasızdır, bu yüzden sadece iyi bilinen girdiyi doğrulamak, uygulama çerçevelerinizde paramaterizasyon kullanımı, güvenilir olmayan girdiyi bir veritabanına geçirmek için tüm iyi uygulamalar gereklidir
  • Şifreleme - verinin hassasiyetine bağlı olarak, veritabanı düzeyinde şifreleyemeyeceğiniz için, uygulama katmanında hassas verilerin şifrelenmesi veya hash edilmesi gerekir. Şifrelemeyi ağ katmanı üzerinden de aktarın (örn. VPN).
  • Servisleri en aza indirin ve varsayılan dinleme bağlantı noktasını değiştirin
  • Tüm örnek veya test veritabanlarını kaldırın
  • İlgili tüm güvenlik yamalarını zamanında tanımlamak, değerlendirmek ve yüklemek için bir yama yönetimi sürecine sahip olun
  • Kullanılıyorsa platformu ve sanallaştırma platformunu sertleştirin
  • Uygun ağ denetimlerini yapılandırın ör. güvenlik duvarları, veritabanına erişimi en aza indirgeyen VLAN'lar, yukarı yönlü hizmet reddi filtreleme hizmeti, tam nitelikli DNS, ayrı üretim ve üretim dışı veritabanları
  • Fiziksel olarak güvenli ortam
  • Değişiklik yönetimi sürecine sahip olun
25
Rakkhi

İşte MongoDB güvenliği için bir kontrol listesi

Yetkilendirmeyi etkinleştir - Mongodb sunucularınızı güvenilir bir ağda dağıtmış olsanız bile, yetkilendirmeyi etkinleştirmek iyi bir güvenlik uygulamasıdır. Ağınız tehlikeye girerse size “Derinlemesine Savunma” sağlar. Yetkilendirmeyi etkinleştirmek için mongod yapılandırma dosyanızı düzenleyin

Üretim db'nizi internete maruz bırakmayın - Veritabanınıza fiziksel erişimi kısıtlamak güvenliğin önemli bir yönüdür. Gerekli değilse, üretim veritabanınızı internete maruz bırakmayın. Bir saldırgan MongoDB sunucunuza fiziksel olarak bağlanamazsa, herhangi bir uzlaşma durumunda verileriniz çok daha güvenlidir. AWS'de iseniz, db'lerinizi bir VPC özel alt ağına yerleştirebilirsiniz. Daha fazla bilgi için bir VPC'de MongoDB dağıtma blog gönderisini okuyun.

Güvenlik duvarlarını kullan - Diğer varlıkların mongodb sunucunuza bağlanmasına izin vermek için güvenlik duvarlarını kullanın. En iyi uygulama, yalnızca uygulama sunucularınızın veritabanına erişmesine izin vermektir. AWS'de barındırıyorsanız erişimi kısıtlamak için 'Güvenlik grupları'nı kullanın. Güvenlik duvarı yapılarını desteklemeyen bir sağlayıcıda barındırılıyorsanız, "iptables" ı kullanarak bunu kolayca yapılandırabilirsiniz. Senaryonuz için iptables yapılandırmak için mongodb belgelerine bakın.

Çoğaltma kümesini ayarlamak için anahtar dosyalarını kullanın - Çoğaltma kümesindeki mongodb örnekleriniz arasında iletişimi etkinleştirmek için paylaşılan bir anahtar dosyası belirtin. Bunu etkinleştirmek için yapılandırma dosyasına keyfile parametresini aşağıdaki gibi ekleyin. Dosyanın içeriği tüm makinelerde aynı olmalıdır.

HTTP durum arayüzünü devre dışı bırak Mongodb varsayılan olarak 28017 numaralı bağlantı noktasında varsayılan olarak çalışan ve "ana" durum sayfasını sağlayan bir http arayüzü sağlar. Bu arayüz üretim kullanımı için önerilmez ve en iyi şekilde devre dışı bırakılır. Http arayüzünü devre dışı bırakmak için “nohttpinterface” yapılandırma ayarını kullanın.

REST arabirimini devre dışı bırakın Monogdb REST arabirimi üretim için önerilmez. Herhangi bir kimlik doğrulamayı desteklemez. Varsayılan olarak kapalıdır. “dinlenme” yapılandırma seçeneğini kullanarak üretim sistemleri için kapatmanız gerekir.

Bind_ip'i Yapılandırma Sisteminizde birden çok ağ arabirimi varsa, mongodb sunucunuzu yalnızca ilgili arabirimleri dinleyecek şekilde kısıtlamak için “bind_ip” seçeneğini kullanabilirsiniz. Mongodb varsayılan olarak tüm arayüzlere bağlanır

SSL'yi etkinleştirin - SSL kullanmıyorsanız verileriniz Mongo istemciniz ve Mongo sunucusu arasında şifrelenmemiş olarak seyahat eder ve gizli dinleme, kurcalama ve “ortadaki adam” saldırılarına açıktır. Bu özellikle Mongodb sunucunuza internet gibi güvenli olmayan ağlar üzerinden bağlanıyorsanız önemlidir.

Role dayalı yetkilendirme - MongoDB, her kullanıcı tarafından gerçekleştirilebilecek eylemler üzerinde size ayrıntılı denetim sağlamak için role dayalı kimlik doğrulamayı destekler. Tüm kullanıcılarınızı yönetici yapmak yerine erişimi kısıtlamak için rol tabanlı yapıları kullanın. Daha fazla ayrıntı için rol belgelerine bakın.

Kurumsal mongodb ve Kerberos Kurumsal mongodb, kimlik doğrulama için Kerberos ile entegre olur. Daha fazla bilgi için mongodb belgelerine bakın. Kullanıcı adı/şifre sistemleri doğal olarak güvensizdir - mümkünse kaldırım temelli kimlik doğrulamayı kullanın.

https://scalegrid.io/blog/10-tips-to-improve-your-mongodb-security/

Feragatname: scalegrid.io'nun kurucusuyum

Buna ek olarak, diğer yorumlar belirtildiği gibi dinlenme mongodb verilerinizi şifrelemenizi tavsiye ederim. Birim düzeyinde şifrelemeyi ayarlamak için LUKS (Linux birleşik anahtar kurulumu) kullanabilirsiniz.

2
Dharshan

Hatırlanması gereken birkaç başlangıç ​​noktası:

  • IP Bağlama'yı yalnızca IP'ye (özel veya yerel ana bilgisayar) kaldırın, Bağlantı İsteği almayı beklersiniz
  • Varsayılan Bağlantı Noktası Bağlantılarını değiştirme
  • Yalnızca gerekli izinleri verin (sorgu kullanıcılarını seçmek için güncelleme/silme izni yok gibi)
  • Gerekli master-slave bağlantısı için ssh anahtarlarını ayarlayın, parolaların katılımını kaldırın
  • Uygulamanız ve mongodb arasındaki bağlantı için şifreli bir tünel bile kurabilirsiniz

aslında tüm DataStorage Servislerinde uygulanabilir

PS: çok sınırlı mongodb deneyimi

2
AbhishekKr