Takip et

MongoDB’ye Ubuntu 18.04 Üzerinden Uzaktan Erişim Yapılandırması

MongoDB’ye Ubuntu 18.04 Üzerinden Uzaktan Erişim Yapılandırması MongoDB, modern uygulamalar için tasarlanmış popüler, açık kaynaklı bir N

MongoDB’ye Ubuntu 18.04 Üzerinden Uzaktan Erişim Yapılandırması

MongoDB, modern uygulamalar için tasarlanmış popüler, açık kaynaklı bir NoSQL veritabanıdır. Esnek şeması, yüksek performansı ve ölçeklenebilirliği sayesinde geliştiriciler ve kuruluşlar arasında hızla benimsenmiştir. Çoğu durumda, MongoDB sunucusu bir sunucuda çalışırken, bu sunucuya başka makinelerden, örneğin uygulama sunucularından, geliştirme ortamlarından veya yönetim araçlarından erişilmesi gerekir. Bu, “uzaktan erişim” olarak bilinir ve doğru bir şekilde yapılandırılması, hem işlevsellik hem de güvenlik açısından kritik öneme sahiptir.

Bu kapsamlı teknik makalede, Ubuntu 18.04 işletim sistemi üzerinde çalışan bir MongoDB örneğine güvenli uzaktan erişimi adım adım nasıl yapılandıracağınızı anlatacağız. Konfigürasyon sürecinde güvenlik duvarı ayarları, MongoDB yapılandırma dosyası değişiklikleri ve kullanıcı kimlik doğrulamasının etkinleştirilmesi gibi temel adımları ele alacağız. Amacımız, hem geliştirme hem de üretim ortamları için sağlam ve güvenli bir uzaktan erişim çözümü sunmaktır.

Ön Koşullar

Bu makaledeki adımları takip etmeden önce aşağıdaki ön koşulların karşılandığından emin olun:

* Ubuntu 18.04 Sunucusu: MongoDB’nin kurulu olduğu bir Ubuntu 18.04 sunucusu. (Bu makale 18.04 için yazılmış olsa da, genel adımlar Ubuntu’nun diğer LTS sürümleri için de büyük ölçüde geçerlidir.)
* MongoDB Kurulu ve Çalışır Durumda: Sunucunuzda MongoDB’nin kurulu ve arka planda çalışır durumda olması gerekmektedir. Kurulum talimatları için MongoDB’nin resmi belgelerine başvurabilirsiniz. Servisin durumunu sudo systemctl status mongod komutuyla kontrol edebilirsiniz.
* sudo Yetkileri: Yapılandırma dosyalarını düzenlemek ve sistem servislerini yönetmek için sudo yetkilerine sahip bir kullanıcı.
* Temel Linux Komut Satırı Bilgisi: Dosya düzenleme, servis yönetimi ve ağ komutları gibi temel Linux komutlarına aşinalık.
* UFW (Uncomplicated Firewall): Ubuntu’da varsayılan olarak gelen veya kolayca kurulabilen bir güvenlik duvarı aracı.

MongoDB’nin Varsayılan Yapılandırmasını Anlama

MongoDB’nin varsayılan kurulumunda, güvenlik amacıyla yalnızca yerel makineden (localhost veya 127.0.0.1) bağlantıları dinleyecek şekilde yapılandırılmıştır. Bu, mongod.conf dosyasındaki bindIp ayarı ile kontrol edilir. Bu ayar, MongoDB’nin hangi IP adresleri üzerinden gelen bağlantıları kabul edeceğini belirler. Varsayılan olarak, bu ayar genellikle bindIp: 127.0.0.1 veya bindIp: localhost şeklindedir.

Bu varsayılan davranış, sunucunun dış dünyadan gelebilecek potansiyel güvenlik tehditlerine karşı korunmasını sağlar. Ancak, uzaktan erişim sağlamak istediğimizde bu ayarı değiştirmemiz gerekecektir. Yapılandırma dosyası genellikle /etc/mongod.conf konumunda bulunur.

Adım 1: Güvenlik Duvarını Yapılandırma (UFW)

Uzaktan erişimi etkinleştirmenin ilk ve en önemli adımı, sunucunuzun güvenlik duvarını yapılandırmaktır. Güvenlik duvarı, sunucunuza hangi ağ trafiğinin girip çıkabileceğini kontrol eden bir yazılımdır. Ubuntu’da bu genellikle UFW (Uncomplicated Firewall) ile yapılır.

UFW Durumunu Kontrol Etme

Öncelikle UFW’nin etkin olup olmadığını ve mevcut kurallarını kontrol edelim:

sudo ufw status verbose

Eğer UFW etkin değilse, çıktıda “Status: inactive” yazısını göreceksiniz. Eğer etkinse, mevcut kuralları listeleyecektir.

UFW’yi Etkinleştirme (Gerekliyse)

Eğer UFW etkin değilse, öncelikle SSH bağlantınızın kesilmemesi için SSH portunu (varsayılan 22) açarak etkinleştirmeniz önerilir:

sudo ufw allow ssh
sudo ufw enable
sudo ufw status verbose

sudo ufw enable komutunu çalıştırdığınızda bir uyarı alabilirsiniz. Bu uyarı, UFW’nin etkinleştirilmesinin mevcut bağlantıları kesebileceği ve SSH bağlantınızın kopmasına neden olabileceğiyle ilgilidir. sudo ufw allow ssh komutu bu riski minimize eder.

MongoDB Portunu Açma

MongoDB’nin varsayılan portu 27017’dir. Bu porta dışarıdan erişime izin vermek için UFW’ye bir kural eklememiz gerekiyor. Bu kuralı eklerken güvenlik düzeyini göz önünde bulundurmalıyız:

* Tüm IP Adreslerinden İzin Verme (Daha Az Güvenli): Bu yöntem, herhangi bir IP adresinden 27017 portuna erişime izin verir. Yalnızca test ortamları veya özel ağlarda kullanılmalıdır.

sudo ufw allow 27017/tcp

* Belirli Bir IP Adresinden İzin Verme (Daha Güvenli): Bu, yalnızca belirli bir istemci makinesinin IP adresinden MongoDB’ye erişim sağlamak için en güvenli yöntemdir. YOUR_CLIENT_IP yerine istemci makinenizin gerçek IP adresini yazın.

sudo ufw allow from YOUR_CLIENT_IP to any port 27017

* Belirli Bir Alt Ağdan İzin Verme (Orta Düzey Güvenli): Eğer birden fazla istemci makinesi aynı alt ağdaysa, tüm alt ağa erişim izni verebilirsiniz. YOUR_SUBNET yerine alt ağınızı (örneğin, 192.168.1.0/24) yazın.

sudo ufw allow from YOUR_SUBNET to any port 27017

Güvenlik açısından, mümkün olduğunca belirli IP adreslerinden erişime izin vermek her zaman tercih edilmelidir.

UFW Kurallarını Yeniden Yükleme ve Doğrulama

Yeni kuralı ekledikten sonra, UFW’nin kuralları yeniden yüklemesine gerek yoktur, çünkü allow komutları anında uygulanır. Ancak, kuralları doğrulamanız önemlidir:

sudo ufw status verbose

Çıktıda 27017 portuna izin veren kuralı görmelisiniz. Örneğin:

To                         Action      From
--                         ------      ----
27017/tcp                  ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere

Veya belirli bir IP için:

To                         Action      From
--                         ------      ----
27017/tcp                  ALLOW       YOUR_CLIENT_IP
22/tcp                     ALLOW       Anywhere

Adım 2: MongoDB Yapılandırmasını Düzenleme

Güvenlik duvarını yapılandırdıktan sonra, MongoDB’nin dış bağlantıları dinlemesini sağlamak için mongod.conf dosyasını düzenlememiz gerekiyor.

mongod.conf Dosyasını Bulma ve Yedekleme

Yapılandırma dosyasını düzenlemeden önce her zaman bir yedek almak iyi bir uygulamadır:

sudo cp /etc/mongod.conf /etc/mongod.conf.bak

Şimdi dosyayı bir metin düzenleyici ile açın (örneğin nano veya vim):

sudo nano /etc/mongod.conf

bindIp Ayarını Değiştirme

mongod.conf dosyasında net: bölümünü bulun. Bu bölümün altında bindIp ayarını arayın. Varsayılan olarak şöyle görünebilir:

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1  # Listen to local interface only, comment out to listen on all interfaces.

Uzaktan erişime izin vermek için bu ayarı değiştirmemiz gerekiyor:

* Tüm Ağ Arayüzlerinden Dinleme (Önerilen Yöntem – Güvenlik Duvarı ile Birlikte):
bindIp değerini 0.0.0.0 olarak değiştirmek, MongoDB’nin sunucudaki tüm mevcut ağ arayüzlerinden gelen bağlantıları dinlemesini sağlar. Bu, en yaygın ve esnek yaklaşımdır. Ancak, bu ayarı kullanırken mutlaka güvenlik duvarınızın (UFW) doğru şekilde yapılandırıldığından emin olmalısınız. Aksi takdirde, veritabanınız internete tamamen açık kalabilir.

# network interfaces
    net:
      port: 27017
      bindIp: 0.0.0.0

Alternatif olarak, bindIp satırını tamamen yorum satırı haline getirebilirsiniz. MongoDB’nin çoğu sürümünde bu da tüm arayüzlerden dinlemesini sağlar, ancak 0.0.0.0 açıkça belirtmek daha anlaşılırdır.

* Belirli IP Adreslerinden Dinleme (Daha Kısıtlı):
Eğer MongoDB’nin yalnızca belirli IP adreslerinden (örneğin, yerel IP ve belirli bir istemci IP’si) bağlantıları dinlemesini istiyorsanız, bu IP adreslerini virgülle ayırarak listeleyebilirsiniz. Örneğin, sunucunuzun dahili IP adresi 192.168.1.100 ise ve istemci IP’si 192.168.1.200 ise:

# network interfaces
    net:
      port: 27017
      bindIp: 127.0.0.1,192.168.1.100,192.168.1.200

Bu yöntem, hem bindIp hem de UFW kuralları aracılığıyla iki katmanlı bir güvenlik sağlar. Ancak, 0.0.0.0 ile UFW’yi kullanmak genellikle daha pratiktir, çünkü istemci IP’leri değiştiğinde yalnızca UFW kurallarını güncellemeniz yeterli olur.

Bu makalede, güvenlik duvarı kuralları ile birlikte bindIp: 0.0.0.0 kullanımını temel alacağız, çünkü bu en yaygın ve yönetilebilir yaklaşımdır.

Değişiklikleri Kaydetme ve Çıkma

Nano kullanıyorsanız, Ctrl+O tuşlarına basarak değişiklikleri kaydedin, ardından Enter tuşuna basın ve Ctrl+X ile çıkın.

MongoDB Servisini Yeniden Başlatma

Yapılandırma dosyasında yapılan değişikliklerin etkili olması için MongoDB servisini yeniden başlatmanız gerekir:

sudo systemctl restart mongod

MongoDB Servisinin Durumunu Kontrol Etme

Servisin başarıyla yeniden başlatıldığından ve yeni yapılandırmayı kullandığından emin olmak için durumunu kontrol edin:

sudo systemctl status mongod

Ayrıca, MongoDB’nin artık doğru IP adreslerini dinlediğini netstat komutuyla doğrulayabilirsiniz:

sudo netstat -tulnp | grep mongod

Çıktıda 27017 portunun 0.0.0.0 veya belirttiğiniz IP adresleri üzerinde dinlendiğini görmelisiniz. Örneğin:

tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      12345/mongod

Adım 3: MongoDB Kullanıcı Kimlik Doğrulamasını Etkinleştirme ve Yönetme

MongoDB’ye uzaktan erişimi etkinleştirmek, veritabanınızı potansiyel güvenlik risklerine maruz bırakır. Bu riski en aza indirgemek için kimlik doğrulamasını etkinleştirmek ve kullanıcılar oluşturmak kesinlikle zorunludur. Kimlik doğrulaması olmadan, MongoDB sunucunuzdaki herhangi bir kişi, doğru IP adresinden bağlanarak tüm verilerinize tam erişim sağlayabilir.

Kimlik Doğrulamanın Önemi

Kimlik doğrulama, yalnızca yetkili kullanıcıların veritabanına erişmesine izin veren bir güvenlik mekanizmasıdır. MongoDB’de bu, kullanıcı adı ve parola tabanlı bir sistemle sağlanır. Kimlik doğrulaması etkinleştirildiğinde, veritabanına bağlanmaya çalışan her istemcinin geçerli bir kullanıcı adı ve parola sağlaması gerekir.

mongod.conf Dosyasında Kimlik Doğrulamayı Etkinleştirme

Tekrar mongod.conf dosyasını açın:

sudo nano /etc/mongod.conf

security: bölümünü bulun. Eğer yoksa, dosyanın sonuna ekleyebilirsiniz. authorization: enabled satırını etkinleştirin (veya ekleyin):

# security:
security:
  authorization: enabled

security: satırının yorum satırı olmadığını ve authorization: enabled satırının doğru girintilendiğini kontrol edin.

MongoDB Servisini Yeniden Başlatma

Yapılandırma değişikliğinin etkili olması için MongoDB servisini tekrar yeniden başlatın:

sudo systemctl restart mongod

Bu noktadan sonra, MongoDB’ye kimlik bilgileri olmadan bağlanmaya çalışırsanız erişim reddedilecektir.

Yönetici Kullanıcı Oluşturma

Kimlik doğrulama etkinleştirildiğinde, henüz hiçbir kullanıcı oluşturulmadığı için MongoDB’ye bağlanmak mümkün olmayacaktır. Bu durum, MongoDB’nin yerel host’tan (127.0.0.1) bağlanıldığında geçici olarak kimlik doğrulaması yapmadan yönetici kullanıcı oluşturmaya izin veren özel bir modda çalışmasını sağlar.

Sunucuya SSH ile bağlanın ve yerel olarak MongoDB kabuğuna girin:

mongo

Bu komut sizi kimlik doğrulaması olmadan yerel olarak bağlamalıdır. Şimdi admin veritabanına geçin ve bir yönetici kullanıcısı oluşturun:

use admin
db.createUser(
  {
    user: "adminUser",
    pwd: "your_very_strong_password",
    roles: [
      { role: "userAdminAnyDatabase", db: "admin" },
      { role: "readWriteAnyDatabase", db: "admin" }
    ]
  }
)

ÖNEMLİ: your_very_strong_password yerine güçlü ve tahmin edilemez bir parola kullanın.

* userAdminAnyDatabase rolü, admin veritabanındaki kullanıcıları yönetme yetkisi verir.
* readWriteAnyDatabase rolü, tüm veritabanlarında okuma ve yazma yetkisi verir. Bu roller, yönetici kullanıcı için uygun yetkilerdir.

Kullanıcıyı oluşturduktan sonra exit komutuyla MongoDB kabuğundan çıkın.

Oluşturulan Yönetici Kullanıcı ile Kimlik Doğrulama

Şimdi oluşturduğunuz yönetici kullanıcısıyla kimlik doğrulaması yaparak MongoDB’ye bağlanmayı deneyin:

mongo -u adminUser -p --authenticationDatabase admin

Parola istendiğinde, az önce oluşturduğunuz parolayı girin. Başarılı bir şekilde bağlanırsanız, MongoDB kabuğuna gireceksiniz. Bağlantı kurduktan sonra show dbs komutunu çalıştırarak veritabanlarını listeleyebilirsiniz.

Diğer Veritabanları İçin Kullanıcı Oluşturma

Uygulama veya diğer hizmetler için, yönetici kullanıcısından farklı ve daha kısıtlı yetkilere sahip kullanıcılar oluşturmanız önerilir (least privilege principle – en az ayrıcalık prensibi). Örneğin, myApplicationDB adlı bir veritabanına yalnızca okuma/yazma erişimi olan bir kullanıcı oluşturalım:

Önce yönetici kullanıcınızla bağlanın:

mongo -u adminUser -p --authenticationDatabase admin

Parolayı girin. Ardından, myApplicationDB veritabanına geçin ve bir kullanıcı oluşturun:

use myApplicationDB
db.createUser(
  {
    user: "appUser",
    pwd: "another_very_strong_password",
    roles: [ { role: "readWrite", db: "myApplicationDB" } ]
  }
)

Bu appUser kullanıcısı, yalnızca myApplicationDB veritabanında okuma ve yazma işlemlerini gerçekleştirebilir. Diğer veritabanlarına erişimi yoktur. Bu, güvenlik için çok önemlidir.

Adım 4: Uzaktan Bağlantıyı Test Etme

Tüm yapılandırmaları tamamladıktan sonra, bir istemci makinesinden MongoDB sunucunuza uzaktan bağlanmayı test etme zamanı.

MongoDB Shell ile Uzaktan Bağlantı

İstemci makinenizde (MongoDB Shell’in kurulu olduğu bir makine), aşağıdaki komutu kullanarak bağlanmayı deneyin:

mongo --host YOUR_SERVER_IP --port 27017 -u adminUser -p --authenticationDatabase admin

* YOUR_SERVER_IP: MongoDB sunucunuzun genel veya özel IP adresi.
* adminUser: Oluşturduğunuz yönetici kullanıcı adı.
* --authenticationDatabase admin: Kullanıcının admin veritabanında tanımlandığını belirtir.

Parola istendiğinde yönetici parolanızı girin. Başarılı bir şekilde bağlanırsanız, uzaktan erişim yapılandırmanız doğru çalışıyor demektir.

Uygulama kullanıcısı ile bağlanmak için:

mongo --host YOUR_SERVER_IP --port 27017 -u appUser -p --authenticationDatabase myApplicationDB

Burada myApplicationDB yerine uygulamanızın kullanacağı veritabanı adını yazın.

Programatik Olarak Bağlantı (Örnek Python)

Çoğu zaman, bir uygulama sunucusundan veya geliştirme ortamından programatik olarak bağlanmanız gerekecektir. İşte Python’ın pymongo sürücüsü ile basit bir örnek:

Önce pymongo‘yu yükleyin (eğer yüklü değilse):

pip install pymongo

Ardından, Python kodunuzda aşağıdaki gibi bağlanabilirsiniz:

from pymongo import MongoClient
from pymongo.errors import ConnectionFailure, OperationFailure

MongoDB sunucunuzun IP adresi ve portu

MONGO_HOST = 'YOUR_SERVER_IP' MONGO_PORT = 27017

Yönetici kullanıcısı ile bağlantı örneği

ADMIN_USER = 'adminUser' ADMIN_PASS = 'your_very_strong_password' ADMIN_AUTH_DB = 'admin'

Uygulama kullanıcısı ile bağlantı örneği

APP_USER = 'appUser' APP_PASS = 'another_very_strong_password' APP_DB_NAME = 'myApplicationDB' # Bağlanmak istediğiniz veritabanı APP_AUTH_DB = 'myApplicationDB' # Kullanıcının tanımlandığı veritabanı (genellikle aynıdır) try: # Yönetici kullanıcısı ile bağlanma print(f"Admin kullanıcısı ile {MONGO_HOST}:{MONGO_PORT} adresine bağlanılıyor...") client_admin = MongoClient( host=MONGO_HOST, port=MONGO_PORT, username=ADMIN_USER, password=ADMIN_PASS, authSource=ADMIN_AUTH_DB # Kullanıcının tanımlandığı veritabanı ) # Bağlantıyı test et client_admin.admin.command('ping') print("Admin bağlantısı başarılı!") # Veritabanlarını listele (yetkili olduğu için) print("Mevcut veritabanları:", client_admin.list_database_names()) client_admin.close() print(f"\nUygulama kullanıcısı ile {APP_DB_NAME} veritabanına bağlanılıyor...") # Uygulama kullanıcısı ile belirli bir veritabanına bağlanma client_app = MongoClient( host=MONGO_HOST, port=MONGO_PORT, username=APP_USER, password=APP_PASS, authSource=APP_AUTH_DB # Kullanıcının tanımlandığı veritabanı ) # Belirli veritabanına erişim db = client_app[APP_DB_NAME] # Koleksiyonları listele (yetkili olduğu için) print(f"{APP_DB_NAME} veritabanındaki koleksiyonlar:", db.list_collection_names()) client_app.close() print("\nTüm bağlantı testleri başarılı.") except ConnectionFailure as e: print(f"Bağlantı hatası: {e}") print("Lütfen IP adresini, portu ve güvenlik duvarı ayarlarını kontrol edin.") except OperationFailure as e: print(f"Kimlik doğrulama veya işlem hatası: {e}") print("Lütfen kullanıcı adı, parola ve yetkilendirme veritabanı bilgilerini kontrol edin.") except Exception as e: print(f"Beklenmeyen bir hata oluştu: {e}")

Bu örnek, hem yönetici hem de uygulama kullanıcısı ile nasıl bağlantı kurulacağını gösterir. authSource parametresi, kullanıcının hangi veritabanında tanımlandığını belirtmek için önemlidir.

Güvenlik Önemleri ve En İyi Uygulamalar

MongoDB’ye uzaktan erişimi yapılandırırken güvenliği her zaman ön planda tutmak çok önemlidir. Aşağıdaki en iyi uygulamaları takip etmek, veritabanınızı olası tehditlere karşı korumanıza yardımcı olacaktır:

Güçlü Parolalar Kullanın

Tüm MongoDB kullanıcıları için karmaşık, benzersiz ve uzun parolalar kullanın. Parolalar büyük/küçük harf, rakam ve özel karakterler içermelidir. Asla varsayılan veya kolay tahmin edilebilir parolalar kullanmayın.

En Az Ayrıcalık Prensibi (Least Privilege Principle)

Her kullanıcıya veya uygulamaya yalnızca işlerini yapmak için kesinlikle ihtiyaç duydukları minimum yetkileri verin. Örneğin, bir uygulamanın yalnızca belirli bir veritabanında okuma ve yazma erişimine ihtiyacı varsa, ona yalnızca bu yetkileri veren bir rol atayın. Asla bir uygulamaya gereksiz yere yönetici yetkileri vermeyin.

Ağ Güvenliği (Firewall)

* Sadece Gerekli IP’lere Erişim İzni Verin: Güvenlik duvarınızı (UFW) yalnızca MongoDB’ye erişmesi gereken belirli IP adreslerinden veya IP aralıklarından gelen bağlantılara izin verecek şekilde yapılandırın. 0.0.0.0 kullanmaktan kaçının, eğer yapabiliyorsanız. Eğer 0.0.0.0 kullanıyorsanız, UFW kurallarınızın son derece kısıtlayıcı olduğundan emin olun.
* VPN veya SSH Tünelleme Kullanmayı Düşünün: Daha yüksek güvenlik gerektiren ortamlar için, MongoDB’ye doğrudan erişmek yerine bir VPN (Virtual Private Network) veya SSH tünelleme üzerinden bağlanmayı düşünebilirsiniz. Bu, tüm trafiği şifreler ve yalnızca VPN veya SSH tüneli üzerinden gelen bağlantılara izin verir.

TLS/SSL Şifrelemesi

Veritabanı sunucusu ile istemci arasındaki tüm veri iletişimini şifrelemek için TLS/SSL kullanın. Bu, ağdaki verilerin dinlenmesini veya değiştirilmesini önler. MongoDB, TLS/SSL’yi destekler ve üretim ortamlarında kullanılması şiddetle tavsiye edilir. Bu makalenin kapsamı dışında olsa da, güvenli bir dağıtım için araştırılması gereken kritik bir konudur.

Düzenli Güncellemeler

MongoDB sunucunuzu ve Ubuntu işletim sisteminizi düzenli olarak güncelleyin. Yazılım güncellemeleri genellikle güvenlik açıklarını kapatan yamalar içerir.

sudo apt update
sudo apt upgrade

Log Kayıtlarını İzleme

MongoDB’nin log dosyalarını (/var/log/mongodb/mongod.log) düzenli olarak izleyin. Anormal bağlantı girişimleri, kimlik doğrulama hataları veya diğer şüpheli aktiviteler güvenlik sorunlarının erken göstergeleri olabilir.

Yedekleme Stratejisi

Verilerinizin güvenliğini sağlamak için düzenli ve güvenilir bir yedekleme stratejisi uygulayın. mongodump gibi araçları kullanarak veritabanınızın yedeklerini alın ve bu yedekleri güvenli bir yerde saklayın.

Sorun Giderme (Troubleshooting)

Uzaktan erişim yapılandırılırken karşılaşılabilecek yaygın sorunlar ve çözümleri:

Bağlantı Reddedildi (Connection Refused)

* Güvenlik Duvarı (UFW): İstemci makinenizin IP adresinin veya tüm 27017 portunun UFW tarafından engellenmediğinden emin olun. sudo ufw status verbose komutuyla kontrol edin ve gerekirse kural ekleyin.
* bindIp Ayarı: mongod.conf dosyasındaki bindIp ayarının 0.0.0.0 veya istemci IP’sini içerecek şekilde doğru yapılandırıldığından emin olun.
* MongoDB Servisi Çalışıyor mu?: sudo systemctl status mongod komutuyla MongoDB servisinin çalışıp çalışmadığını kontrol edin. Çalışmıyorsa, sudo systemctl start mongod ile başlatın.
* Yanlış Port: İstemcinizin doğru porta (varsayılan 27017) bağlandığından emin olun.

Kimlik Doğrulama Hatası (Authentication Failed)

* Kullanıcı Adı/Parola: Kullanıcı adının ve parolanın doğru olduğundan emin olun. Parolalar büyük/küçük harfe duyarlıdır.
* authenticationDatabase: mongo kabuğu veya uygulama sürücüsü ile bağlanırken --authenticationDatabase parametresinin doğru veritabanını işaret ettiğinden emin olun (yani, kullanıcının oluşturulduğu veritabanı).
* Kullanıcının Rolleri: Kullanıcının bağlanmaya çalıştığı veritabanı için gerekli rollere sahip olduğundan emin olun. Örneğin, bir veritabanına yazmak istiyorsa readWrite rolüne sahip olmalıdır.
* Kimlik Doğrulama Etkinleştirildi mi?: mongod.conf dosyasında authorization: enabled ayarının doğru yapıldığından emin olun.

mongod Servisi Başlamıyor

* mongod.conf Dosyasında Syntax Hatası: sudo systemctl status mongod veya sudo journalctl -xe komutlarını kullanarak MongoDB loglarını kontrol edin. Yapılandırma dosyasında bir yazım hatası veya yanlış girinti olabilir. Özellikle YAML formatının girintilemeye duyarlı olduğunu unutmayın.
* Log Dosyalarını Kontrol Edin: MongoDB’nin log dosyası (/var/log/mongodb/mongod.log) başlatma sorunları hakkında ayrıntılı bilgi sağlayacaktır.

Sonuç

Bu makalede, Ubuntu 18.04 üzerinde çalışan bir MongoDB sunucusuna güvenli uzaktan erişimi adım adım nasıl yapılandıracağınızı öğrendiniz. Güvenlik duvarı kurallarını ayarlayarak, MongoDB yapılandırma dosyasını düzenleyerek ve en önemlisi kullanıcı kimlik doğrulamasını etkinleştirerek, veritabanınıza dışarıdan güvenli bir şekilde erişim sağlayabilirsiniz.

Unutmayın ki güvenlik, sürekli bir süreçtir. Veritabanı sisteminizi düzenli olarak izlemeli, güncellemeleri uygulamalı ve güvenlik en iyi uygulamalarını takip etmelisiniz. Bu adımları dikkatlice uygulayarak ve güvenlik önlemlerini göz ardı etmeyerek, MongoDB veritabanınızı uzaktan erişime açarken verilerinizin güvenliğini sağlayabilirsiniz. Bu yapılandırma, geliştirme, test ve hatta üretim ortamlarında sağlam bir temel oluşturacaktır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version