Dün sitemizden duyurduğumuz MongoDB ransomware saldırısının ardından MongoDB üzerinde nasıl yetkilendirme yapıldığını anlatan bir yazı yazmak istedim.

Yetkilendirme işleminde ilk aşama olarak kullanıcı işlemlerini ayarlama yetkisine sahip bir kullanıcıyı (userAdminAnyDatabase) sistemimiz üzerinde tanımlamamız gerekiyor. Sistemimizi varsayılan ayarlarda "mongod" komutumuz ile çalıştırıyoruz. Biz windows işletim sistemi üzerinde yaptık ancak linux sistemlerde de herhangi bir farklılık bulunmuyor.

mongod --port 27017


DB sunucumuz çalıştıktan sonra herhangi bir mongo istemcisi ile sunucuya bağlanıyoruz. Biz örneklerimizde terminal ekranını kullandık.
mongo --port 27017

Terminalde öncelikle system database'lerimizden biri olan admin db'sine geçiş yapıyoruz.
use admin

Şimdi kullanıcı yetkilendirme işlemlerini yapacak olan kullanıcımızı oluşturuyoruz

db.createUser(
{
user: "userAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)

buraya kadar olan işlemlerimizin ekran görüntüsü



kullanıcı başarı ile oluşturduktan sonra sunucumuzu durduruyor ve authentication mode'unda tekrar başlatıyoruz. Bu aşamadan sonra sunucumuza bağlanan tüm istemciler yetkilendirmeden geçmek zorunda kalacaklar.
MongoDB'yi authentication mode'unda başlatıyoruz, database'imiz artık yetkisiz kullanıcı girişlerine kapanmış durumda ve ransomware ataklarına karşı güvendeyiz. Yalnız database'imizi kullanmamız için kullanıcıları ayarlamamız gerekiyor, bu işlemlere başlıyoruz.

mongod --auth --port 27017


Daha önce bağlandığımız terminal client'ını da yeniden başlatıyoruz

mongo --port 27017


Bağlantı yapıldıktan sonra admin database'imize bağlanıyor ve userAdmin kullanımız ile giriş yapıyoruz.

use admin
db.auth("userAdmin","abc123")

Giriş işlemi başarılı olmuş ise bize "1" cevabı dönecektir.
Şimdi oluşturmayı planladığımız testDB database'i üzerinde işlem yapacak kullanıcı belirliyor ve yetkilendiriyoruz

use testDB
db.createUser(
{
user: "testUser",
pwd: "abc123",
roles: [ { role: "readWrite", db: "testDB" } ]
}
)

Buraya kadar olan işlemlerimizin ekran görüntüsü şu şekilde



Şimdi bu kullanıcımız ile sisteme giriş yaparak bir collection oluşturuyoruz. Client ekranımızdan ctrl+c ile çıkıp tekrar giriş yapalım

mongo --port 27017


Şimdi testUser'imiza geçiş yapıyoruz.

use testDB
db.auth("testUser","abc123)


Giriş yaptıktan sonra bir kayıt oluşturuyor ve koleksiyonlarımızı listeliyoruz.

db.testCollection.insert({first:1})
show collections

Buraya kadar yaptığımız işlemlerin ekran görüntüsü



Yorumlar

Bu kod parçacığına henüz yorum yapılmamış.

Yorum Yaz

Yorum yazabilmek için üye olunuz veya giriş yapınız