Takip et

Ubuntu 16.04 Üzerinde OpenVPN ve Docker ile Güvenli Bir MongoDB Sunucusu Çalıştırmak

Ubuntu 16.04 Üzerinde OpenVPN ve Docker ile Güvenli Bir MongoDB Sunucusu Çalıştırmak Giriş Günümüzün hızla değişen dijital dünyasında

Ubuntu 16.04 Üzerinde OpenVPN ve Docker ile Güvenli Bir MongoDB Sunucusu Çalıştırmak

Giriş

Günümüzün hızla değişen dijital dünyasında, veri güvenliği her zamankinden daha kritik bir öneme sahiptir. İşletmeler ve geliştiriciler, verilerini depolamak ve yönetmek için çeşitli veritabanı çözümlerine yönelirken, bu veritabanlarının güvenliğini sağlamak en büyük önceliklerden biri haline gelmiştir. MongoDB, esnek yapısı ve yüksek performansıyla popüler bir NoSQL veritabanı olsa da, varsayılan kurulumları genellikle yeterince güvenli değildir ve dışarıdan gelebilecek saldırılara açıktır.

Bu makalede, Ubuntu 16.04 işletim sistemi üzerinde, konteynerleştirme için Docker ve güvenli uzaktan erişim için OpenVPN kullanarak nasıl sağlam ve güvenli bir MongoDB sunucusu kurulacağını ayrıntılı olarak ele alacağız. Docker, uygulamaları izole edilmiş ortamlarda çalıştırma yeteneği sayesinde güvenlik ve taşınabilirlik sağlarken, OpenVPN, ağ trafiğini şifreleyerek yetkisiz erişimi engeller ve yalnızca yetkili kullanıcıların veritabanına erişmesini sağlar. Ubuntu 16.04, kararlı yapısıyla bu tür bir sunucu kurulumu için güvenilir bir temel oluşturur.

Bu kılavuz, sunucu hazırlığından başlayarak Docker ve OpenVPN kurulumuna, ardından MongoDB’nin Docker içinde güvenli bir şekilde çalıştırılmasına ve son olarak güvenlik en iyi uygulamalarına kadar tüm adımları kapsayacaktır. Amacımız, verilerinizin gizliliğini ve bütünlüğünü korurken, esnek ve yönetilebilir bir veritabanı altyapısı oluşturmanıza yardımcı olmaktır.

MongoDB İçin Güvenliğin Önemi

MongoDB, varsayılan olarak gelen bağlantılara izin verecek şekilde yapılandırıldığında, internete açık bırakıldığında ciddi güvenlik riskleri taşır. Geçmişte, yanlış yapılandırılmış MongoDB sunucularının fidye yazılımları veya veri ihlalleri gibi saldırılara maruz kaldığı birçok vaka yaşanmıştır. Bu tür ihlaller, finansal kayıplara, itibar zedelenmesine ve yasal yaptırımlara yol açabilir.

Güvenlik, sadece verilerinizi korumakla kalmaz, aynı zamanda yasal düzenlemelere (örneğin GDPR, KVKK) uyum sağlamak için de zorunludur. Kimlik doğrulama, yetkilendirme, ağ izolasyonu ve şifreleme gibi güvenlik önlemleri, bir MongoDB dağıtımının temel taşlarıdır. OpenVPN ile ağ izolasyonu sağlayarak ve Docker ile MongoDB’yi izole bir ortamda çalıştırarak, dış saldırı yüzeyini önemli ölçüde azaltmış olacağız.

Ön Gereksinimler

Bu rehbere başlamadan önce aşağıdaki ön gereksinimlere sahip olduğunuzdan emin olun:

* Ubuntu 16.04 Sunucusu: Tercihen yeni kurulmuş, temiz bir Ubuntu 16.04 LTS sunucusu (VPS, bulut sunucusu veya fiziksel sunucu).
* SSH Erişimi: Sunucuya SSH üzerinden erişim.
* Sudo Yetkileri: Komutları çalıştırmak için sudo yetkilerine sahip bir kullanıcı hesabı.
* Temel Linux Bilgisi: Linux komut satırı ve dosya sistemi hakkında temel bilgi.
* Statik Genel IP Adresi: OpenVPN sunucusunun internet üzerinden erişilebilir olması için statik bir genel IP adresi gereklidir.

1. Ubuntu 16.04 Sunucusunu Hazırlama

Güvenli bir sistemin temeli, güncel ve iyi yapılandırılmış bir işletim sistemidir. İlk olarak, sunucunuzu güncelleyeceğiz ve temel güvenlik ayarlarını yapacağız.

1.1 Sistem Güncelleme

Sunucunuzdaki tüm paketleri güncelleyerek olası güvenlik açıklarını kapatın:

sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt autoremove -y

1.2 Güvenlik Duvarı Yapılandırması (UFW)

Ubuntu’nun varsayılan güvenlik duvarı olan UFW (Uncomplicated Firewall) ile yalnızca gerekli portlara erişime izin vererek sunucunuzu koruyacağız. İlk olarak SSH bağlantı noktasını (varsayılan 22) açın, ardından güvenlik duvarını etkinleştirin.

sudo ufw allow OpenSSH
sudo ufw enable

y ile onaylayın. Güvenlik duvarını etkinleştirdikten sonra, SSH bağlantınızın kesilmediğinden emin olun.
Şimdi, OpenVPN için kullanacağımız UDP portunu (varsayılan 1194) ve Docker için daha sonra iç ağda kullanacağımız portları açmak üzere hazırlık yapalım. Şimdilik sadece OpenVPN portunu açacağız.

sudo ufw allow 1194/udp

UFW durumunu kontrol edebilirsiniz:

sudo ufw status verbose

2. Docker Kurulumu

MongoDB’yi izole bir konteyner içinde çalıştırmak için Docker’ı kuracağız. Ubuntu 16.04 için Docker’ın resmi kurulum yöntemini kullanmak en iyisidir.

2.1 Docker Bağımlılıklarını Yükleme

Docker’ın HTTPS üzerinden depoları kullanabilmesi için gerekli paketleri yükleyin:

sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

2.2 Docker GPG Anahtarını Ekleme

Docker’ın resmi GPG anahtarını sisteminize ekleyin:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

2.3 Docker Deposunu Ekleme

Docker deposunu APT kaynaklarınıza ekleyin. Ubuntu 16.04 için xenial kod adını kullanacağız:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable"

2.4 Docker Kurulumu

Depo eklendikten sonra, paket listesini güncelleyin ve Docker CE’yi (Community Edition) yükleyin:

sudo apt update
sudo apt install -y docker-ce

2.5 Docker Kurulumunu Doğrulama

Docker’ın doğru şekilde kurulduğunu ve çalıştığını doğrulamak için hello-world konteynerini çalıştırın:

sudo docker run hello-world

Bu komut, Docker’ın çalıştığını ve konteynerleri doğru bir şekilde başlatabildiğini gösteren bir mesaj çıktısı vermelidir.

2.6 Kullanıcıyı Docker Grubuna Ekleme (İsteğe Bağlı ama Önerilir)

sudo kullanmadan Docker komutlarını çalıştırmak için mevcut kullanıcınızı docker grubuna ekleyebilirsiniz. Bu, geliştirme ortamlarında kolaylık sağlarken, üretim ortamlarında dikkatli kullanılmalıdır.

sudo usermod -aG docker $USER

Değişikliklerin etkili olması için oturumu kapatıp tekrar açmanız veya sunucuyu yeniden başlatmanız gerekebilir.

3. OpenVPN Sunucusunu Kurma

OpenVPN, sunucunuza güvenli bir tünel oluşturarak, yalnızca yetkili istemcilerin MongoDB’ye erişmesini sağlayacaktır. Bu bölümde, OpenVPN sunucusunu Ubuntu 16.04 üzerine kuracak ve yapılandıracağız. OpenVPN’i doğrudan ana bilgisayara kurmak, ağ yapılandırması ve yönlendirme açısından daha esnek ve kararlı bir çözüm sunar.

3.1 OpenVPN ve Easy-RSA Kurulumu

OpenVPN ve sertifikaları yönetmek için Easy-RSA aracını yükleyin:

sudo apt install -y openvpn easy-rsa

3.2 Easy-RSA ile Sertifika Yetkilisi (CA) ve Sertifikaları Oluşturma

Güvenli bir OpenVPN bağlantısı için bir Sertifika Yetkilisi (CA) oluşturmalı, sunucu ve istemci sertifikalarını imzalamalıyız.

3.2.1 Easy-RSA Dizini Oluşturma

Easy-RSA için bir çalışma dizini oluşturun ve gerekli dosyaları kopyalayın:

mkdir ~/easy-rsa
cp -r /usr/share/easy-rsa/* ~/easy-rsa/
chmod 700 ~/easy-rsa
3.2.2 PKI Ortamını Başlatma

Easy-RSA dizinine geçin ve PKI (Public Key Infrastructure) ortamını başlatın:

cd ~/easy-rsa
./easyrsa init-pki
3.2.3 CA Oluşturma

Yeni bir Sertifika Yetkilisi (CA) oluşturun. Bir parola belirlemeniz istenecektir; bu parolayı güvenli bir yerde saklayın.

./easyrsa build-ca nopass

Eğer parola istemiyorsanız 'nopass' kullanın, ancak parola kullanmak daha güvenlidir.

./easyrsa build-ca

Ortak Ad (Common Name) sorulduğunda, istediğiniz bir adı girebilirsiniz (örn. MyOpenVPN-CA).

3.2.4 Sunucu Sertifikası ve Özel Anahtar Oluşturma

OpenVPN sunucusu için bir sertifika ve özel anahtar oluşturun:

./easyrsa gen-req server nopass

Ortak Ad sorulduğunda 'server' yazın.

Ardından, sunucu sertifikasını CA ile imzalayın:

./easyrsa sign-req server server

Onaylamak için 'yes' yazın.

3.2.5 Diffie-Hellman Anahtarı Oluşturma

Diffie-Hellman anahtar değişimi için bir dosya oluşturun. Bu işlem biraz zaman alabilir:

./easyrsa gen-dh
3.2.6 HMAC Anahtarı Oluşturma

Ekstra bir güvenlik katmanı için HMAC (Hash-based Message Authentication Code) anahtarı oluşturun:

openvpn --genkey --secret ta.key

3.3 OpenVPN Sunucu Yapılandırması

Şimdi OpenVPN sunucusunu yapılandıracağız. Örnek bir yapılandırma dosyasını kopyalayıp düzenleyeceğiz.

3.3.1 Yapılandırma Dosyalarını Kopyalama

Gerekli sertifika ve anahtar dosyalarını OpenVPN yapılandırma dizinine kopyalayın:

sudo cp pki/ca.crt /etc/openvpn/
sudo cp pki/issued/server.crt /etc/openvpn/
sudo cp pki/private/server.key /etc/openvpn/
sudo cp ta.key /etc/openvpn/
sudo cp pki/dh.pem /etc/openvpn/
3.3.2 Sunucu Yapılandırma Dosyası Oluşturma

Örnek OpenVPN yapılandırma dosyasını kopyalayın ve düzenleyin:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz
sudo nano /etc/openvpn/server.conf

Aşağıdaki satırları bulup düzenleyin veya ekleyin (mevcut server.conf dosyasında bazıları zaten olabilir):

port 1194
proto udp
dev tun

ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0 # This is needed on the server
key-direction 0

server 10.8.0.0 255.255.255.0 # OpenVPN client IP range
ifconfig-pool-persist ipp.txt

push "redirect-gateway def1 bypass-dhcp" # Push all client traffic through VPN
push "dhcp-option DNS 8.8.8.8" # Google DNS, you can use any DNS server
push "dhcp-option DNS 8.8.4.4"

keepalive 10 120

cipher AES-256-CBC
auth SHA256

user nobody
group nogroup

persist-key
persist-tun

status openvpn-status.log
verb 3
explicit-exit-notify 1

Docker network için route ekleme

Docker'ın varsayılan köprü ağı genellikle 172.17.0.0/16'dır.

Eğer özel bir Docker ağı kullanıyorsanız (ki kullanacağız), o ağın subnet'ini buraya ekleyin.

Örn: Docker ağınızın subnet'i 172.18.0.0/16 ise:

push "route 172.18.0.0 255.255.0.0"

Dosyayı kaydedin ve kapatın (Ctrl+O, Enter, Ctrl+X).

3.4 IP Yönlendirmeyi Etkinleştirme

Sunucunun VPN istemcilerinden gelen trafiği yönlendirebilmesi için IP yönlendirmeyi etkinleştirmeniz gerekir.

sudo nano /etc/sysctl.conf

Dosyanın içinde şu satırı bulun ve yorum işaretini (#) kaldırın (veya ekleyin):

net.ipv4.ip_forward=1

Dosyayı kaydedin ve kapatın. Değişiklikleri uygulamak için:

sudo sysctl -p

3.5 UFW Kurallarını Güncelleme

OpenVPN trafiğinin geçişine izin vermek için UFW kurallarını güncelleyeceğiz. Ayrıca NAT (Network Address Translation) kuralları eklememiz gerekecek.

sudo nano /etc/default/ufw

DEFAULT_FORWARD_POLICY="DROP" satırını DEFAULT_FORWARD_POLICY="ACCEPT" olarak değiştirin.

Şimdi UFW’nin NAT kurallarını eklemek için /etc/ufw/before.rules dosyasını düzenleyin:

sudo nano /etc/ufw/before.rules

Dosyanın en başına, *nat ve -A POSTROUTING satırlarını ekleyin. eth0 yerine sunucunuzun ana ağ arayüzünün adını kullanmalısınız (genellikle eth0 veya ens3). Bunu ip a komutuyla kontrol edebilirsiniz.

#

rules.before

# Rules that should be run before the ufw command line rules. Custom

rules should be added to the end of this file, but can also be

inserted into the middle of the chain.

# START OPENVPN RULES

NAT table rules

*nat :POSTROUTING ACCEPT [0:0]

Allow traffic from OpenVPN client to eth0 (change to your main interface)

-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT

END OPENVPN RULES

Don't delete these required lines, otherwise ufw will stop working.

*filter :ufw-before-input - [0:0] :ufw-before-output - [0:0] :ufw-before-forward - [0:0] :ufw-user-input - [0:0] :ufw-user-output - [0:0] :ufw-user-forward - [0:0]

... (rest of the file)

Dosyayı kaydedin ve kapatın.

Son olarak, OpenVPN’in kullandığı tun arayüzüne izin veren bir UFW kuralı ekleyin:

sudo ufw allow in on tun0 from any to any
sudo ufw reload

3.6 OpenVPN Servisini Başlatma

Tüm yapılandırmalar tamamlandıktan sonra OpenVPN servisini başlatın ve sistem başlangıcında otomatik başlamasını sağlayın:

sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
sudo systemctl status openvpn@server

Durumun active (running) olduğunu doğrulayın.

3.7 İstemci Yapılandırması

İstemcilerin VPN sunucusuna bağlanabilmesi için istemci sertifikaları ve bir yapılandırma dosyası oluşturmamız gerekiyor.

3.7.1 İstemci Sertifikası ve Özel Anahtar Oluşturma

Her istemci için ayrı bir sertifika ve anahtar oluşturmak en iyi güvenlik uygulamasıdır. Örnek olarak client1 adında bir istemci oluşturalım:

cd ~/easy-rsa
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1
3.7.2 İstemci Yapılandırma Dosyası Oluşturma

İstemci için bir .ovpn yapılandırma dosyası oluşturun. Bu dosyayı istemci makinenize kopyalayacaksınız.

mkdir -p ~/client-configs/files
chmod 700 ~/client-configs/files

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Şimdi ~/client-configs/base.conf dosyasını düzenleyin:

nano ~/client-configs/base.conf

Aşağıdaki değişiklikleri yapın:

client
dev tun
proto udp

remote YOUR_SERVER_IP 1194 # YOUR_SERVER_IP yerine sunucunuzun genel IP adresini yazın

resolv-retry infinite
nobind

persist-key
persist-tun

remote-cert-tls server

cipher AES-256-CBC
auth SHA256

key-direction 1

comp-lzo # veya lz4-v2 eğer sunucuda da etkinse

verb 3

Bu satırları yorum satırı yapın veya silin, çünkü sertifikaları dosyaya dahil edeceğiz

ca ca.crt

cert client.crt

key client.key

Dosyayı kaydedin. Şimdi, tüm gerekli dosyaları tek bir .ovpn dosyasına birleştiren bir komut dosyası oluşturalım:

nano ~/client-configs/make_config.sh

İçine aşağıdaki içeriği yapıştırın:

#!/bin/bash

First argument: Client identifier

KEY_DIR=~/easy-rsa/pki OUTPUT_DIR=~/client-configs/files BASE_CONFIG=~/client-configs/base.conf cat ${BASE_CONFIG} \ ') \ ${KEY_DIR}/ca.crt \ \n') \ ${KEY_DIR}/issued/$1.crt \ \n') \ ${KEY_DIR}/private/$1.key \ \n') \ ~/ta.key \ ') \ > ${OUTPUT_DIR}/$1.ovpn

Komut dosyasını yürütülebilir yapın:

chmod 700 ~/client-configs/make_config.sh

Şimdi client1 için .ovpn dosyasını oluşturun:

~/client-configs/make_config.sh client1

Bu, ~/client-configs/files/client1.ovpn dosyasını oluşturacaktır. Bu dosyayı güvenli bir şekilde istemci makinenize kopyalayın (örneğin scp veya sftp kullanarak).

scp ~/client-configs/files/client1.ovpn your_local_user@your_local_ip:/path/to/save/client1.ovpn

İstemci tarafında OpenVPN yazılımını kurun ve bu .ovpn dosyasını kullanarak VPN’e bağlanın. Bağlantı başarılı olduğunda, artık sunucunuzun dahili ağına güvenli bir şekilde erişebileceksiniz.

4. Docker İçinde MongoDB Çalıştırma

OpenVPN tüneli kurulduktan sonra, MongoDB’yi Docker içinde güvenli bir şekilde çalıştırabiliriz. MongoDB’nin sadece Docker iç ağına bağlı olmasını sağlayacağız, böylece dışarıdan doğrudan erişilemez olacak.

4.1 Özel Bir Docker Ağı Oluşturma

MongoDB konteynerini diğer konteynerlerden ve ana bilgisayarın genel ağından izole etmek için özel bir Docker ağı oluşturalım. Bu ağ, OpenVPN istemcilerinin erişebileceği bir alt ağa sahip olacak.

sudo docker network create --subnet=172.18.0.0/16 mongodb-net

Bu komut, 172.18.0.0/16 alt ağına sahip mongodb-net adında bir Docker ağı oluşturur. OpenVPN sunucusu yapılandırmasında bu alt ağı istemcilere yönlendirmeyi unutmayın (yukarıdaki push "route 172.18.0.0 255.255.0.0" satırı).

4.2 MongoDB Verileri İçin Kalıcı Bir Birim Oluşturma

Konteynerler geçicidir. Verilerinizi kaybetmemek için bir Docker birimi (volume) kullanmalıyız.

sudo docker volume create mongodb_data

4.3 MongoDB Konteynerini Çalıştırma

Şimdi MongoDB konteynerini oluşturup çalıştıracağız. Güvenlik için, MongoDB’yi kimlik doğrulamayı etkinleştirerek ve yalnızca Docker ağına bağlayarak başlatacağız.

sudo docker run -d \
  --name mongodb \
  --network mongodb-net \
  -p 127.0.0.1:27017:27017 \
  -v mongodb_data:/data/db \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=your_strong_admin_password \
  mongo:4.0 --auth --bind_ip 0.0.0.0

Bu komutu açıklayalım:
* -d: Konteyneri arka planda çalıştırır.
* --name mongodb: Konteynerin adını mongodb olarak ayarlar.
* --network mongodb-net: Konteyneri az önce oluşturduğumuz mongodb-net ağına bağlar.
-p 127.0.0.1:27017:27017: MongoDB’nin 27017 portunu, ana bilgisayarın yalnızca localhost (127.0.0.1)* arayüzündeki 27017 portuna eşler. Bu, MongoDB’nin doğrudan dışarıdan erişilememesini sağlar. OpenVPN istemcisi bağlanırken bu localhost portunu kullanmayacak, doğrudan Docker ağındaki MongoDB IP’sine erişecektir. Bu port eşlemesi, eğer OpenVPN bağlantısı kurulamazsa veya test amacıyla ana sunucu üzerinden bağlantı kurmak isterseniz faydalı olabilir, ancak dışarıya açık değildir.
* -v mongodb_data:/data/db: Kalıcı veriler için mongodb_data birimini /data/db dizinine bağlar.
* -e MONGO_INITDB_ROOT_USERNAME=admin: Başlangıçta bir admin kullanıcısı oluşturur.
* -e MONGO_INITDB_ROOT_PASSWORD=your_strong_admin_password: admin kullanıcısı için güçlü bir parola belirler. Bu parolayı kendi güvenli parolanızla değiştirin!
* mongo:4.0: Resmi MongoDB 4.0 Docker görüntüsünü kullanır. İhtiyaçlarınıza göre farklı bir sürüm seçebilirsiniz.
* --auth: MongoDB’de kimlik doğrulamasını etkinleştirir. Bu çok önemlidir.
* --bind_ip 0.0.0.0: MongoDB’nin konteyner içindeki tüm arayüzlere bağlanmasını sağlar. Ancak -p bayrağı sayesinde bu sadece Docker iç ağıyla sınırlı kalır.

Konteynerin çalıştığını doğrulayın:

sudo docker ps

mongodb konteynerinin Up durumda olduğunu görmelisiniz.

4.4 MongoDB’ye Bağlantı ve Kullanıcı Yönetimi

Artık MongoDB konteynerimiz çalışıyor ve kimlik doğrulaması etkin. OpenVPN istemcinizden bağlanmadan önce, konteynerin iç IP adresini bulmanız gerekebilir.

sudo docker inspect mongodb | grep "IPAddress"

Bu, 172.18.0.x gibi bir IP adresi döndürecektir. Bu IP, OpenVPN istemcinizden bağlanırken kullanacağınız adrestir.

OpenVPN istemcinizden bağlanmadan önce, MongoDB’ye bağlanıp admin kullanıcısının oluşturulduğunu ve kimlik doğrulamanın çalıştığını test edebiliriz. Bunu ana sunucu üzerinden, Docker içindeki mongo kabuğunu kullanarak yapabiliriz.

sudo docker exec -it mongodb mongo admin -u admin -p your_strong_admin_password --authenticationDatabase admin

Başarılı bir şekilde bağlanırsanız, admin kabuğuna düşeceksiniz. Buradan ek kullanıcılar oluşturabilir ve yetkilendirmeleri yönetebilirsiniz. Örneğin, mydb veritabanı için bir uygulama kullanıcısı oluşturalım:

use mydb
db.createUser(
   {
     user: "appuser",
     pwd: "your_app_password",
     roles: [ { role: "readWrite", db: "mydb" } ]
   }
)
exit

your_app_password yerine güçlü bir parola kullanın.

5. MongoDB’ye Güvenli Bağlantı

Tüm kurulum tamamlandığında, OpenVPN istemcinizden MongoDB sunucunuza güvenli bir şekilde bağlanabilirsiniz.

5.1 OpenVPN İstemcisinden Bağlantı

1. OpenVPN Bağlantısı: İstemci makinenizde client1.ovpn dosyasını kullanarak OpenVPN bağlantısını kurun. Bağlantının başarılı olduğundan emin olun.
2. MongoDB IP Adresi: OpenVPN bağlantısı kurulduktan sonra, istemci makineniz, MongoDB konteynerinin 172.18.0.x IP adresine doğrudan erişebilir olmalıdır (OpenVPN sunucusunun bu alt ağ için rotayı istemcilere ilettiğini varsayarak).
3. MongoDB’ye Bağlanma: mongo kabuğu veya tercih ettiğiniz MongoDB istemci sürücüsünü kullanarak bağlanın:

mongo --host 172.18.0.x --port 27017 -u appuser -p your_app_password --authenticationDatabase mydb

172.18.0.x yerine MongoDB konteynerinizin gerçek IP adresini, appuser ve your_app_password yerine oluşturduğunuz uygulama kullanıcısının bilgilerini kullanın. mydb yerine ise kullanıcının yetkili olduğu veritabanının adını yazın.

Bu bağlantı, OpenVPN tüneli üzerinden şifrelenmiş ve kimlik doğrulamalı bir şekilde gerçekleşecektir.

6. Sorun Giderme ve En İyi Uygulamalar

6.1 Sorun Giderme

* OpenVPN Bağlantı Sorunları:
* Sunucu güvenlik duvarını (UFW) kontrol edin: sudo ufw status. 1194/udp portunun açık olduğundan emin olun.
* OpenVPN sunucu günlüklerini kontrol edin: sudo journalctl -u openvpn@server.
* IP yönlendirmeyi kontrol edin: cat /proc/sys/net/ipv4/ip_forward. Değer 1 olmalı.
* ufw before.rules dosyasındaki NAT kurallarının doğru arayüz ve IP aralığı için ayarlandığından emin olun.
* MongoDB Bağlantı Sorunları:
* Docker konteynerinin çalıştığından emin olun: sudo docker ps.
* MongoDB konteyner günlüklerini kontrol edin: sudo docker logs mongodb.
* MongoDB’nin --auth ve --bind_ip 0.0.0.0 ile başlatıldığından emin olun.
* OpenVPN istemcinizin MongoDB konteynerinin IP adresine ping atabildiğinden emin olun.
* Kullanıcı adı, parola ve kimlik doğrulama veritabanının doğru olduğundan emin olun.

6.2 En İyi Uygulamalar

* Güçlü Parolalar: Tüm kullanıcılar için güçlü, karmaşık parolalar kullanın ve düzenli olarak değiştirin.
* En Az Yetki Prensibi: Her kullanıcıya yalnızca işlerini yapmak için ihtiyaç duydukları en düşük ayrıcalıkları verin. admin kullanıcısını yalnızca yönetim görevleri için kullanın.
* Düzenli Güncellemeler: Ubuntu, Docker, OpenVPN ve MongoDB’yi düzenli olarak güncel tutun. sudo apt update && sudo apt upgrade -y ve sudo docker pull mongo:latest gibi komutları periyodik olarak çalıştırın.
* Yedeklemeler: MongoDB verilerinizin düzenli yedeklerini alın ve bu yedekleri güvenli, ayrı bir konumda saklayın. Docker birimleri için yedekleme stratejileri geliştirin.
* İzleme ve Günlük Kaydı: Sunucu ve MongoDB günlüklerini düzenli olarak izleyin. Anormal etkinlikler için uyarılar ayarlayın.
* Kaynak Sınırlamaları: Docker konteynerleri için CPU ve bellek sınırları belirleyerek (örneğin --cpus ve --memory bayrakları ile), diğer hizmetleri veya ana bilgisayarı etkilemesini engelleyin.
* Ek Güvenlik Katmanları: Gerekirse, Docker konteynerleri arasında TLS/SSL şifrelemesi gibi ek güvenlik katmanları düşünebilirsiniz. Ancak OpenVPN tüneli, istemci ve sunucu arasındaki trafiği zaten şifrelemektedir.
* Güvenlik Denetimleri: Periyodik olarak güvenlik denetimleri yaparak zayıf noktaları tespit edin ve giderin.

Sonuç

Bu makalede, Ubuntu 16.04 üzerinde OpenVPN ve Docker kullanarak güvenli bir MongoDB sunucusu çalıştırmanın kapsamlı adımlarını ele aldık. Sunucuyu hazırlamaktan başlayarak, Docker’ı kurmaya, OpenVPN ile güvenli bir erişim tüneli oluşturmaya ve son olarak MongoDB’yi Docker içinde kimlik doğrulama ve ağ izolasyonu ile yapılandırmaya kadar tüm süreci detaylandırdık.

Bu yapılandırma, MongoDB veritabanınıza yalnızca yetkili kullanıcıların OpenVPN tüneli üzerinden erişmesini sağlayarak, dışarıdan gelebilecek birçok yaygın saldırıya karşı güçlü bir koruma katmanı sunar. Docker’ın konteynerleştirme yetenekleri sayesinde, MongoDB uygulamanız izole ve yönetilebilir bir ortamda çalışırken, OpenVPN ise tüm ağ trafiğini şifreleyerek veri gizliliğini ve bütünlüğünü sağlar.

Unutmayın ki güvenlik sürekli bir süreçtir. Sistemlerinizi düzenli olarak güncellemeli, güçlü parolalar kullanmalı, en az yetki prensibini uygulamalı ve yedekleme stratejilerinizi gözden geçirmelisiniz. Bu rehberde belirtilen adımları uygulayarak, verileriniz için sağlam bir güvenlik temeli oluşturmuş olacaksınız.

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