MongoDB’niz Yüzünden Şantaj’a (Ransomware) Maruz Kalmayın

MongoDB C++ ile derlenmiş açık kaynak NoSQL veritabanıdır.
2017 yılı başlarında yapılan araştırmaya göre internette konfigürasyon hatası/eksikliği yüzünden MongoDB veritabanlarına ransomware bulaşmakta ve veriler şifrelenmekte ya da silinip ücret talep edilmektedir.
Shodan da yapılan ve sadece shodan`ın listelediği dünya üzerinde 69.600 den fazla sunucuda kullanılmaktadır.

Saldırılar, temelinde veritabanlarının yanlış yapılandırılmış yada ön tanımlı ayarlarda bırakılması yüzünden meydana gelmektedir. Ön tanımlı ayarlarda kullanıcı denetimi bulunmamaktadır.

Saldırılar, “Harak1r1”, “Kraken0″ diye  kendilerini adlandıran iki grubun eriştikleri veritabanlarını cryptolocker zararlısı ile şifreleyip verileri çözmek için talep etmeleriyle başladı ve bir anda popüler bir saldırı yöntemi oldu.

Başlıca gruplar ve detaylı bilgileri için bağlantıyı​ inceleyebilirsiniz.

Örnek senaryoyu ele alırsak;

  • Shodan.io da yaptığımız arama sonucundan gelen IP adreslerinden herhangi birini zafiyetini test etmek amaçlı seçiyoruz.

  • Bilgisayarmızdan bağlantıyı açmak için aşağıdaki MongoDB Client uygulaması kurulabilir.

$ sudo apt-get install mongodb-clients

  • Seçtiğimiz sisteme bağlanmak için komut ile MongoDB kabuğuna düşüyoruz.

$ mongo –shell IP

  • Admin kullanıcısına alttaki komut ile geçiş yapıyoruz.

use admin

 

  • Komutu yardımıyla veritabanlarını listeliyoruz.

show dbs

  • Komutu ile de veritabanlarını çekebilirsiniz.

$ mongodump -d <database name> -o <target directory>

MongoDB Sıkılaştırması;

MongoDB sıkılaştırmasını belli başlı adımlar halinde ele alabiliriz, ama öncelikle sistem sıkılaştırmasına başlamadan önce sistemimizin güncelliğini kontrol etmeli ve değilse güncelleyerek zafiyetlerin önüne geçmeliyiz bu adımlardan sonra konfigürasyon kısmına geçebiliriz.

Ağa Erişimini Sınırlandırma

  • Web uygulamamız ve veritabanımız aynı sunucuda ise MongoDB`nin dışarıyı dinlemesini engelleyebiliriz. /etc/mongodb.conf dosyasını herhangi bir editörle açıp ​ Network Interface ayar satırına gelip:

# network interfaces
net:
port: 27017
bindIp: 127.0.0.1

bindIp parametresine ​ 127.0.0.1 i atayarak veritabanının dışarıyla olan bağlantısını kesebiliriz.

  • Web uygulamamız başka bir sunucuda ise MongoDB’ ye sadece web uygulamasının bulunduğu makineyi dinlemesi için bindIp değerine web uygulama sunucusunun IP’ sini atayabiliriz.
  • MongoDB nin dinlediği öntanımlı 27017 portunu değiştirerek boştaki başka bir porta atayabiliriz. Ayarların geçerli olabilmesi için port parametresini değiştikten sonra MongoDB yi yeniden başlatmayı unutmayın.

Erişim Kontrolü

  • MongoDB’ de ön tanımlı olarak erişim kontrolü bulunmamaktadır, bu da güvenlik zafiyetine neden olmaktadır. Bunun önüne geçmek için güvenliğin genel adımlarından biri olan rol bazlı kullanıcılar oluşturup sadece kullanıcılara gerektiği kadar yetki atayabiliriz. ​ /etc/mongodb.conf dosyasından yetkilendirmeyi açmak için security ayar satırında:

security:
authorization: enabled

yetkilendirmesini aktifleştirmemiz gerekmektedir. Ayarların geçerli olması için MongoDB’yi yeniden başlatmayı unutmayınız.

İletişimin Şifrelenmesi

  • Gelen ve giden tüm trafiği TLS/SSL ile şifreleyebiliriz.

Veritabanı Şifrelenmesi

  • Veritabanını şifreleyerek veri hırsızlığı yaşadığımızda bile şifreli datalarımızın karşı taraf için bir anlam ifade etmeyeceğinden veritabanımızı şifreleyebiliriz.

Sistem Takibi

  • Sistem takibi ile veritabanındaki değişiklikler konfigürasyonda yapılan değişiklikleri takip ederek istemediğimiz hareketleri önleyebiliriz. Log dosyalarının takibini iyi yaparak yapılan değişiklikleri takip edip, sistemdeki kullanıcıları listeleyerek sonradan bilgimiz haricinde eklenen user olup olmadığını kontrol etmeliyiz

MongoDB Atanmış Kullanıcı İle Çalıştırın

  • Sunucuda MongoDB için oluşturduğunuz yetkileri sınırlı kullanıcı ile çalıştırmanız önemlidir. MongoDB İçin kullanıcı oluşturup işlemi onun üzerinden başlatmalıyız.