Takip et

Neden Özel Droplet ve Bastion Host Kullanmalısınız?

Özel Droplet ve Bastion Host Kurulumu: Bulut Güvenliğini En Üst Düzeye Çıkarma

Bulut altyapınızda güvenliği artırmak için özel bir Droplet ve Bastion Host nasıl kurulur? Bu rehber, bulut güvenlik duvarları ile sağlam ve erişilebilir bir altyapı oluşturmanın adım adım yollarını sunar.

Neden Özel Droplet ve Bastion Host Kullanmalısınız?

Günümüzün dijital dünyasında, işletmelerin ve geliştiricilerin bulut tabanlı altyapılara olan bağımlılığı her geçen gün artmaktadır. Ancak bu kolaylık, beraberinde ciddi güvenlik risklerini de getirmektedir. Bir sunucuyu doğrudan internete açık bırakmak, siber saldırganlar için potansiyel bir hedef haline gelmek demektir. Botlar ve kötü niyetli aktörler sürekli olarak zayıf noktaları tarar, varsayılan kimlik bilgilerini dener ve bilinen güvenlik açıklarını istismar etmeye çalışır. İşte tam da bu noktada, özel Droplet’ler ve bir Bastion Host kullanımı, bulut güvenliğini katmanlı bir yaklaşımla ele alarak kritik bir savunma hattı oluşturur.

Birçok kuruluş, hassas verilerini barındıran veya kritik uygulamalarını çalıştıran sunucularını doğrudan genel internete maruz bırakma hatasına düşer. Bu durum, SSH portunun (genellikle 22) tüm dünyaya açık olmasıyla başlar ve diğer uygulama portlarının da benzer şekilde korunmasız kalmasıyla devam eder. Bu tür bir yapılandırma, sunucularınızın sürekli bir saldırı yüzeyine sahip olmasına neden olur. Bir Bastion Host, bu saldırı yüzeyini önemli ölçüde daraltan merkezi bir erişim noktası görevi görür. Tüm sunucularınıza doğrudan erişimi engellerken, yalnızca Bastion Host üzerinden bağlantı kurulmasına izin verir. Bu sayede, diğer sunucularınızın SSH portları ve diğer uygulama portları, yalnızca Bastion Host’un erişebileceği özel bir ağ içinde kalır, böylece internetten doğrudan erişilemez hale gelirler.

Bu mimari, sadece yetkisiz erişimi engellemekle kalmaz, aynı zamanda güvenlik denetimini de kolaylaştırır. Tüm yönetim trafiği tek bir noktadan geçtiği için, kimin ne zaman ve hangi sunucuya eriştiğini izlemek çok daha basit hale gelir. Ayrıca, herhangi bir güvenlik ihlali durumunda, saldırganın ilk olarak Bastion Host’u ele geçirmesi gerekir ki bu da ekstra bir güvenlik katmanı sağlar. Özel Droplet’ler ise, genel internetten izole edilmiş, kendi özel IP adreslerine sahip sunuculardır. Bu sayede, hassas verilerinizin ve uygulamalarınızın internete doğrudan maruz kalmamasını sağlayarak ek bir koruma katmanı sunarlar. Bu iki kavramın birleşimi, bulut altyapınız için sağlam, dirençli ve yönetilebilir bir güvenlik duruşu oluşturmanın temelini atar. Gerçek dünya senaryolarında, örneğin finansal hizmetler sunan bir şirketin müşteri verilerini barındırdığı veritabanı sunucuları veya sağlık sektöründeki bir uygulamanın hasta bilgilerini işlediği backend sunucuları gibi durumlarda, bu tür bir mimari vazgeçilmezdir. Bu sayede, hassas verilerinizi korurken, yetkili kişilerin güvenli bir şekilde erişimini sürdürebilirsiniz.

Temel Kavramlar: Droplet, Bastion Host ve Bulut Güvenlik Duvarı Nedir?

Bu güvenlik mimarisini kurmadan önce, temel bileşenleri anlamak büyük önem taşır. Her bir kavramın ne anlama geldiğini ve sistemdeki rolünü netleştirmek, kurulum sürecini daha bilinçli bir şekilde ilerletmenizi sağlayacaktır.

Droplet: DigitalOcean’ın sanal özel sunucu (VPS) hizmetine verdiği isimdir. Basitçe söylemek gerekirse, kendi işletim sisteminize sahip, CPU, RAM ve depolama alanı gibi kaynakları olan sanal bir bilgisayardır. Uygulamalarınızı, web sitelerinizi veya veritabanlarınızı barındırmak için kullanılırlar. Droplet’ler, genel internete açık bir IP adresine sahip olabilir veya yalnızca özel bir ağ içinde erişilebilir olacak şekilde yapılandırılabilir. Bu makalede, güvenlik nedenleriyle Droplet’lerimizi özel ağ içinde tutmaya odaklanacağız.

Bastion Host (Jump Server): Bir “kale sunucusu” veya “atlama sunucusu” olarak da bilinen Bastion Host, güvenli ağınızdaki diğer sunuculara erişim için tek, sertleştirilmiş bir giriş noktası görevi görür. Temel amacı, dahili sunucularınızın doğrudan internete açık olmasını engellemektir. Tüm SSH bağlantıları, önce Bastion Host’a yapılır ve oradan özel ağ üzerinden hedef Droplet’e yönlendirilir. Bu, saldırı yüzeyini büyük ölçüde azaltır, çünkü dışarıdan yalnızca Bastion Host’un SSH portu görünür hale gelir. Bastion Host genellikle minimalist bir işletim sistemiyle (örneğin, Ubuntu Server veya Debian) kurulur ve üzerinde yalnızca kesinlikle gerekli olan hizmetler çalıştırılır. Ek güvenlik önlemleri olarak çok faktörlü kimlik doğrulama (MFA) ve sıkı erişim kontrolleri ile donatılır.

Bulut Güvenlik Duvarı (Cloud Firewall): Bulut sağlayıcıları tarafından sunulan, ağ trafiğini belirli kurallara göre filtreleyen sanal güvenlik duvarlarıdır. Gelen (ingress) ve giden (egress) trafiği kontrol ederek, hangi portların hangi IP adreslerinden erişilebilir olduğunu veya hangi uygulamaların dışarıya bağlanabileceğini belirlemenizi sağlar. DigitalOcean Cloud Firewalls, Droplet’lerinize gelen ve giden trafiği yönetmek için güçlü bir araçtır. Bu güvenlik duvarları, Droplet seviyesinde uygulanır ve ağ katmanında çalışarak kötü niyetli trafiği sunucularınıza ulaşmadan engeller. Örneğin, Bastion Host’unuza yalnızca belirli bir IP aralığından SSH erişimine izin verebilir veya uygulama Droplet’inizin yalnızca Bastion Host’tan gelen SSH bağlantılarını kabul etmesini sağlayabilirsiniz. Bu, geleneksel sunucu tabanlı güvenlik duvarlarına (iptables, ufw) ek bir koruma katmanı sunar ve daha merkezi bir yönetim sağlar. Bu üç bileşenin birleşimi, özel Droplet’lerinizi dış tehditlerden izole ederken, güvenli ve denetlenebilir bir yönetim erişimi sağlar.

DigitalOcean Üzerinde Özel Ağ Yapısı Nasıl Oluşturulur?

Güvenli bir altyapı oluşturmanın ilk adımı, sunucularınızın birbirleriyle ve dış dünyayla nasıl iletişim kuracağını belirleyen sağlam bir ağ yapısı kurmaktır. DigitalOcean, bu ihtiyacı karşılamak için Virtual Private Cloud (VPC) veya özel ağ özelliklerini sunar. VPC, bulut ortamınızda mantıksal olarak izole edilmiş özel bir ağ alanı oluşturmanıza olanak tanır. Bu sayede, Droplet’leriniz genel internet yerine bu özel ağ üzerinden birbirleriyle güvenli bir şekilde iletişim kurabilir.

Özel ağ yapısı oluşturmak, Droplet’lerinizin yalnızca özel IP adresleri üzerinden erişilebilir olmasını sağlayarak saldırı yüzeyini önemli ölçüde azaltır. Örneğin, bir veritabanı sunucusu veya bir uygulama sunucusu, doğrudan internete açık olmak yerine, yalnızca aynı özel ağdaki diğer Droplet’ler tarafından erişilebilir hale gelir. Bu, özellikle hassas verilerle çalışan sistemler için kritik bir güvenlik katmanıdır.

Adım Adım Özel Ağ Oluşturma:

1. DigitalOcean Hesabınıza Giriş Yapın: İlk olarak, DigitalOcean kontrol panelinize giriş yapın.
2. VPC Network Oluşturun: Sol menüden “Networking” (Ağ Oluşturma) seçeneğine tıklayın, ardından “VPC Networks” (VPC Ağları) sekmesine gidin. Burada “Create VPC Network” (VPC Ağı Oluştur) düğmesine tıklayın.
3. Ağ Detaylarını Tanımlayın:
* Name (İsim): Ağınıza açıklayıcı bir isim verin (örn: guvenli-ozel-ag).
* Region (Bölge): Droplet’lerinizin bulunacağı bölgeyi seçin. Tüm Droplet’lerinizin aynı VPC ağında olabilmesi için aynı bölgede olması gerektiğini unutmayın.
* IP Range (IP Aralığı): DigitalOcean genellikle varsayılan bir IP aralığı önerir (örn: 10.10.0.0/20). Bu aralık, özel ağınızdaki Droplet’lere atanacak IP adreslerini belirler. Genellikle varsayılanı kullanmak yeterlidir, ancak ağ planlamanıza uygun özel bir aralık da belirleyebilirsiniz.
* Description (Açıklama): İsteğe bağlı olarak ağınız hakkında kısa bir açıklama ekleyebilirsiniz.
4. Ağı Oluşturun: Gerekli bilgileri girdikten sonra “Create VPC Network” düğmesine tıklayarak özel ağınızı oluşturun.

Bu adımları tamamladıktan sonra, artık Droplet’lerinizi oluştururken bu özel ağı seçme seçeneğine sahip olacaksınız. Bir Droplet’i bu özel ağa bağladığınızda, ona hem genel bir IP adresi (isteğe bağlı ve genellikle Bastion Host için kullanılır) hem de özel ağ içinde iletişim kurmak için kullanacağı bir özel IP adresi atanacaktır.

Özel IP Adreslerinin Önemi:
Özel IP adresleri, internet üzerinden doğrudan erişilemez. Sadece aynı VPC ağı içindeki Droplet’ler birbirlerinin özel IP adreslerini kullanarak iletişim kurabilir. Bu, uygulama sunucularınızın veritabanı sunucularınızla veya diğer mikro hizmetlerle güvenli bir şekilde konuşmasını sağlar, ancak bu iletişim dış dünyaya kapalıdır. Örneğin, web sunucunuzun veritabanına bağlanması gerektiğinde, veritabanı sunucusunun özel IP adresini kullanacaktır. Bu, veritabanı sunucusunun genel internete açık bir portu olmaması gerektiği anlamına gelir, bu da onun saldırı yüzeyini neredeyse sıfıra indirir. Bu yapılandırma, bulut altyapınızın temel güvenlik katmanını oluşturur ve sonraki adımlarda Bastion Host ile bu güvenliği daha da pekiştireceğiz.

Bastion Host Droplet’i Adım Adım Nasıl Kurulur?

Bastion Host, güvenli ağınızın tek giriş noktası olacağı için kurulumu ve yapılandırması büyük önem taşır. Bu Droplet’i doğru bir şekilde kurmak, diğer özel Droplet’lerinize giden yolu güvenli hale getirecektir.

1. Droplet Oluşturma:

* Kontrol Paneline Giriş: DigitalOcean kontrol panelinize giriş yapın ve “Create” (Oluştur) menüsünden “Droplets” (Dropletler) seçeneğini seçin.
* Bölge Seçimi: Özel ağınızı oluşturduğunuz aynı bölgeyi seçin. Bu kritik bir adımdır, aksi takdirde Droplet’iniz özel ağınıza bağlanamaz.
* İşletim Sistemi (Image) Seçimi: Güvenlik ve performans açısından minimalist bir Linux dağıtımı tercih edin. Ubuntu 22.04 LTS veya Debian 11/12 genellikle iyi seçeneklerdir. Bunlar geniş topluluk desteğine sahip ve güvenli bir şekilde yapılandırılabilirler.
* Droplet Planı: Bastion Host’un çok fazla kaynak tüketmesi beklenmez. En küçük veya bir sonraki boyut olan “Basic” planlardan birini seçmek genellikle yeterlidir (örn: 1GB RAM, 1vCPU).
* Depolama: Varsayılan depolama boyutu genellikle yeterlidir.
* Kimlik Doğrulama (Authentication): Kesinlikle SSH anahtarlarını kullanın. Parola tabanlı kimlik doğrulamayı devre dışı bırakın. Daha önce bir SSH anahtarı oluşturmadıysanız, “New SSH Key” (Yeni SSH Anahtarı) seçeneğini kullanarak yeni bir anahtar oluşturabilir veya mevcut anahtarınızı yükleyebilirsiniz. Yerel bilgisayarınızda bir SSH anahtarı oluşturmak için şu komutu kullanabilirsiniz:


    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

Bu komut, ~/.ssh/id_rsa (özel anahtar) ve ~/.ssh/id_rsa.pub (genel anahtar) dosyalarını oluşturacaktır. id_rsa.pub dosyasının içeriğini DigitalOcean’a kopyalamanız gerekecektir.
* VPC Network (Özel Ağ): Daha önce oluşturduğunuz özel ağınızı seçin (örn: guvenli-ozel-ag). Bu, Droplet’inizin özel IP adresi almasını sağlayacaktır.
* Ek Seçenekler: “Monitoring” (İzleme) ve “IPv6” gibi seçenekleri etkinleştirebilirsiniz, ancak “User data” (Kullanıcı verisi) veya “Backup” (Yedekleme) şimdilik gerekli değildir.
* Hostname (Ana Bilgisayar Adı): Droplet’inize açıklayıcı bir isim verin (örn: bastion-host).
* Oluştur: “Create Droplet” (Droplet Oluştur) düğmesine tıklayın.

2. İlk Güvenlik Sertleştirmeleri:
Droplet’iniz oluşturulduktan sonra, ilk SSH bağlantınızı kurun ve bazı temel güvenlik adımlarını uygulayın.

* SSH ile Bağlanma: Bastion Host’unuzun genel IP adresini kullanarak SSH ile bağlanın.


    ssh root@
    

* Yeni Bir Kullanıcı Oluşturma: root kullanıcısı yerine, ayrıcalıklı ancak günlük kullanım için yetkisi kısıtlı yeni bir kullanıcı oluşturun.


    adduser 
    usermod -aG sudo 
    

* SSH Anahtarını Yeni Kullanıcıya Kopyalama: Yeni kullanıcınızın da SSH anahtarı ile giriş yapabilmesi için genel anahtarınızı kopyalayın.


    su - 
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    cp /root/.ssh/authorized_keys ~/.ssh/
    chmod 600 ~/.ssh/authorized_keys
    exit
    

* SSH Servisini Yapılandırma (sshd_config): SSH daemon’ının güvenliğini artırın.


    sudo nano /etc/ssh/sshd_config
    

Aşağıdaki satırları bulun ve değerlerini değiştirin (veya ekleyin):
* PermitRootLogin no (root ile doğrudan girişi devre dışı bırakır)
* PasswordAuthentication no (parola ile girişi devre dışı bırakır)
* ChallengeResponseAuthentication no
* UsePAM no (bazı durumlarda parola kimlik doğrulamasını tetikleyebilir)
* AllowUsers (yalnızca belirli kullanıcıların SSH ile bağlanmasına izin verir)
* Port 22 (isteğe bağlı olarak farklı bir port numarası kullanabilirsiniz, ancak bulut güvenlik duvarı bu portu yöneteceğinden 22 genellikle kabul edilebilir)
Değişiklikleri kaydedin ve SSH servisini yeniden başlatın:


    sudo systemctl restart ssh
    

* Firewall Kurulumu (UFW): Sunucu üzerinde yerel bir güvenlik duvarı (UFW) kurmak, DigitalOcean Cloud Firewall’a ek bir koruma katmanı sağlar.


    sudo apt update
    sudo apt install ufw
    sudo ufw allow ssh comment 'Allow SSH from Cloud Firewall'
    sudo ufw enable
    

DİKKAT: UFW’yi etkinleştirmeden önce SSH erişiminizin olduğundan emin olun, aksi takdirde kendinizi sunucudan kilitleyebilirsiniz. Cloud Firewall’lar daha genel ağ seviyesinde çalıştığı için, bu UFW kuralı daha çok sunucu içinden gelebilecek tehditlere karşı koruma sağlar.

Artık Bastion Host’unuz temel olarak kurulmuş ve sertleştirilmiş durumda. Bundan sonraki adımlarda, bu Bastion Host’u kullanarak diğer özel Droplet’lerinize güvenli bir şekilde erişeceğiz.

Uygulama Droplet’ini Güvenli Bir Şekilde Nasıl Konfigüre Edebiliriz?

Uygulama Droplet’leri, web sunucunuzu, veritabanınızı, API’lerinizi veya diğer kritik hizmetlerinizi barındıracak sunuculardır. Bu Droplet’lerin en yüksek güvenlik seviyesinde yapılandırılması, genel saldırı yüzeyini minimuma indirmek için hayati önem taşır. Temel prensip, bu Droplet’lerin doğrudan internete açık olmaması, yalnızca Bastion Host üzerinden veya özel ağ içindeki diğer yetkili Droplet’ler tarafından erişilebilir olmasıdır.

1. Uygulama Droplet’ini Oluşturma:

* Kontrol Paneline Giriş: DigitalOcean kontrol panelinize gidin ve “Create” (Oluştur) menüsünden “Droplets” (Dropletler) seçeneğini seçin.
* Bölge Seçimi: Bastion Host’unuzu ve özel ağınızı oluşturduğunuz aynı bölgeyi seçin. Bu, Droplet’inizin özel ağa bağlanabilmesi için zorunludur.
* İşletim Sistemi (Image) Seçimi: Uygulamanızın gereksinimlerine uygun bir işletim sistemi seçin (örn: Ubuntu 22.04 LTS, CentOS Stream 9).
* Droplet Planı: Uygulamanızın kaynak ihtiyaçlarına göre uygun bir plan seçin. Web sunucusu için daha büyük bir plan, veritabanı için daha da büyük bir plan gerekebilir.
* Depolama: Uygulamanızın veri depolama gereksinimlerine göre depolama boyutunu ayarlayın.
* Kimlik Doğrulama (Authentication): Yine SSH anahtarlarını kullanın. Bastion Host için kullandığınız aynı SSH anahtarını veya farklı bir anahtar çiftini buraya da ekleyin. Güvenlik en iyi uygulaması olarak, her sunucu için ayrı bir SSH anahtar çifti kullanmak daha iyidir, ancak bu makalenin kapsamı ve basitliği için aynı anahtarı kullanabiliriz.
* VPC Network (Özel Ağ): Bu en kritik adımdır. Daha önce oluşturduğunuz özel ağınızı seçin (örn: guvenli-ozel-ag). Bu sayede Droplet’iniz özel bir IP adresi alacak ve genel internetten izole olacaktır.
* Genel IP Adresi: Uygulama Droplet’inizin genel IP adresi olup olmayacağını dikkatlice değerlendirin.
* Veritabanı sunucuları veya arka uç API’leri gibi doğrudan internete maruz kalmaması gereken sunucular için “Public network” (Genel ağ) seçeneğini işaretlemeyin. Bu, Droplet’inize genel bir IP adresi atanmayacağı ve sadece özel ağınızdan erişilebileceği anlamına gelir. Bu, güvenlik açısından en ideal yaklaşımdır.
* Eğer bir web sunucusu (Nginx, Apache) kuruyorsanız ve bu sunucunun doğrudan internetten erişilmesi gerekiyorsa (örneğin, Bastion Host üzerinden bir ters proxy kurmak yerine), genel IP adresi atayabilirsiniz. Ancak bu durumda, bulut güvenlik duvarları ile bu Droplet’i çok sıkı bir şekilde korumanız gerekecektir. Güvenlik en iyi uygulaması olarak, uygulama Droplet’lerinize genel IP atamaktan kaçının ve tüm dış erişimi Bastion Host üzerinden yönlendirin.
* Hostname (Ana Bilgisayar Adı): Droplet’inize açıklayıcı bir isim verin (örn: web-app-server veya database-server).
* Oluştur: “Create Droplet” (Droplet Oluştur) düğmesine tıklayın.

2. İlk Güvenlik Sertleştirmeleri ve Yapılandırma:
Uygulama Droplet’iniz oluşturulduktan sonra, Bastion Host üzerinden bu Droplet’e bağlanın ve temel güvenlik adımlarını uygulayın.

* Bastion Host Üzerinden Bağlanma: Uygulama Droplet’inizin genel bir IP adresi yoksa, ona yalnızca Bastion Host üzerinden erişebilirsiniz. Bastion Host’a zaten bağlı olduğunuzu varsayarak, uygulama Droplet’inizin özel IP adresini kullanarak bağlanın:


    ssh @
    

Eğer Bastion Host’a henüz bağlı değilseniz, önce Bastion Host’a bağlanın, ardından yukarıdaki komutu kullanın.
* Yeni Bir Kullanıcı Oluşturma ve SSH Yapılandırması: Bastion Host’ta yaptığınız gibi, root kullanıcısı yerine yeni bir kullanıcı oluşturun ve SSH anahtarınızı bu kullanıcıya kopyalayın. sshd_config dosyasında PermitRootLogin no, PasswordAuthentication no gibi ayarları uygulayın.


    sudo adduser 
    sudo usermod -aG sudo 
    # Bastion Host'tan geldiğiniz için, SSH anahtarınız zaten Bastion Host'ta olmalı.
    # Eğer aynı anahtarı kullanıyorsanız, buraya da kopyalamanız gerekecek.
    # Veya DigitalOcean'da Droplet'i oluştururken anahtarı zaten eklediniz.
    sudo nano /etc/ssh/sshd_config
    # ... gerekli değişiklikleri yapın ...
    sudo systemctl restart ssh
    

* UFW ile Yerel Güvenlik Duvarı: Uygulama Droplet’inizde de UFW’yi etkinleştirin. Ancak bu sefer, SSH erişimine yalnızca özel ağdan (yani Bastion Host’tan) izin verin. Ayrıca, uygulamanızın ihtiyaç duyduğu portları da yalnızca özel ağdan gelen trafiğe açın.


    sudo apt update
    sudo apt install ufw
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    # SSH erişimine yalnızca özel ağınızdan (örneğin 10.10.0.0/20) izin verin
    sudo ufw allow from  to any port 22 proto tcp comment 'Allow SSH from private network'
    # Uygulama portunuza (örn: 8080) yalnızca özel ağdan gelen trafiğe izin verin
    sudo ufw allow from  to any port 8080 proto tcp comment 'Allow app traffic from private network'
    sudo ufw enable
    

yerine, DigitalOcean VPC ağınızı oluştururken belirlediğiniz IP aralığını (örn: 10.10.0.0/20) kullanın.

Bu adımlarla uygulama Droplet’iniz, genel internetten tamamen izole edilmiş ve yalnızca özel ağınızdan, özellikle de Bastion Host üzerinden erişilebilir hale gelmiş olacaktır. Bu, altyapınızın güvenlik duruşunu önemli ölçüde güçlendirir.

Bulut Güvenlik Duvarları ile Erişim Politikaları Nasıl Tanımlanır?

DigitalOcean Cloud Firewalls, Droplet’lerinizin gelen ve giden trafiğini kontrol etmenizi sağlayan güçlü bir güvenlik aracıdır. Bu güvenlik duvarları, Droplet’lerinize ulaşan veya Droplet’lerinizden çıkan trafiği, belirlediğiniz kurallara göre filtreler. Bu sayede, Bastion Host’unuza sadece belirli IP adreslerinden erişim sağlarken, uygulama Droplet’lerinizin sadece Bastion Host’tan veya özel ağdan erişilebilir olmasını garanti altına alabilirsiniz.

1. Güvenlik Duvarı Oluşturma:

* Kontrol Paneline Giriş: DigitalOcean kontrol panelinize giriş yapın.
* Networking (Ağ Oluşturma): Sol menüden “Networking” seçeneğine tıklayın.
* Firewalls (Güvenlik Duvarları): “Firewalls” sekmesine gidin ve “Create Firewall” (Güvenlik Duvarı Oluştur) düğmesine tıklayın.

2. Bastion Host İçin Güvenlik Duvarı Kuralları:
Bastion Host, dış dünyadan erişilebilir tek Droplet olacağı için, bu Droplet’e uygulayacağımız güvenlik duvarı kuralları son derece sıkı olmalıdır.

* İsim: Güvenlik duvarınıza açıklayıcı bir isim verin (örn: bastion-firewall).
* Gelen Kurallar (Inbound Rules):
* SSH (Port 22): Bu en kritik kuraldır. SSH portuna (22) yalnızca güvendiğiniz IP adreslerinden (eviniz, ofisiniz veya VPN sunucunuzun statik IP adresi) erişime izin verin. “Source” (Kaynak) kısmına “Custom IP” (Özel IP) seçeneğini belirleyerek kendi IP adresinizi veya bir IP aralığını (CIDR formatında, örn: 85.234.123.45/32) ekleyin. “All IPv4” veya “All IPv6” seçeneğini ASLA kullanmayın.
* Protokol: TCP
* Port Range: 22
* Source: Custom IP (kendi IP adresiniz)
* Ping (ICMP): İsteğe bağlı olarak, sunucunuzun erişilebilirliğini kontrol etmek için ICMP (ping) trafiğine izin verebilirsiniz. Ancak güvenlik açısından bu da kısıtlanabilir.
* Protokol: ICMP
* Source: Custom IP (kendi IP adresiniz) veya isteğe bağlı olarak “All IPv4” (daha az güvenli)
* Giden Kurallar (Outbound Rules):
* Bastion Host’un internete erişmesi gerekeceğinden (paket güncellemeleri, DNS sorguları vb. için), genellikle tüm giden trafiğe izin verilir.
* Protokol: All TCP, All UDP, All ICMP
* Destination: All IPv4, All IPv6
* Droplet’lere Uygula: “Apply to Droplets” (Droplet’lere Uygula) bölümünde, Bastion Host Droplet’inizi seçin.

3. Uygulama Droplet’leri İçin Güvenlik Duvarı Kuralları:
Uygulama Droplet’leriniz, genel internetten tamamen izole edilmelidir. Erişim sadece özel ağ üzerinden veya Bastion Host tarafından sağlanmalıdır.

* İsim: Güvenlik duvarınıza açıklayıcı bir isim verin (örn: app-firewall).
* Gelen Kurallar (Inbound Rules):
* SSH (Port 22): SSH erişimine yalnızca Bastion Host’unuzun özel IP adresinden izin verin. Kaynak olarak “Droplet” seçeneğini belirleyin ve Bastion Host Droplet’inizi seçin. Bu, DigitalOcean’ın Bastion Host’unuzun özel IP adresini otomatik olarak kaynak olarak kullanmasını sağlar.
* Protokol: TCP
* Port Range: 22
* Source: Droplet (Bastion Host’unuzu seçin)
* Uygulama Portları: Uygulamanızın çalıştığı portlara (örn: 80, 443, 8080, 3306) yalnızca özel ağınızdaki diğer Droplet’lerden veya Bastion Host’tan erişime izin verin.
* Web Sunucusu (HTTP/S – 80, 443): Eğer web sunucunuz (örn: Nginx reverse proxy) internete açık olacaksa, bu portlara “All IPv4” veya “Load Balancer” gibi kaynaklardan izin verebilirsiniz. Ancak bu, Droplet’inizin doğrudan internete açık olacağı anlamına gelir. Daha güvenli bir yaklaşım, bu portlara yalnızca özel ağdaki bir Load Balancer veya diğer uygulama Droplet’lerinden izin vermektir.
* Veritabanı (MySQL – 3306, PostgreSQL – 5432): Bu portlara yalnızca uygulamanızın çalıştığı Droplet’lerin özel IP adreslerinden veya kaynak olarak “VPC Network” (VPC Ağı) seçeneğiyle özel ağınızın tamamından izin verin.
* Protokol: TCP
* Port Range: 3306 (veya uygulamanızın portu)
* Source: Droplet (uygulama sunucusu Droplet’inizi seçin) veya VPC Network (özel ağınız)
* Giden Kurallar (Outbound Rules):
* Uygulama Droplet’lerinizin dışarıya (internet) bağlanması gerekip gerekmediğini değerlendirin. Genellikle, yazılım güncellemeleri, dış API’lere erişim veya e-posta gönderme gibi durumlar için giden trafiğe izin verilir. Ancak, “Principle of Least Privilege” (En Az Ayrıcalık Prensibi) gereği, yalnızca gerekli olan portlara ve hedeflere izin vermek en iyisidir.
* Protokol: All TCP, All UDP, All ICMP (genel olarak izin verilebilir, ancak kısıtlanabilir)
* Destination: All IPv4, All IPv6
* Droplet’lere Uygula: “Apply to Droplets” bölümünde, ilgili uygulama Droplet’lerinizi seçin.

Bu güvenlik duvarı yapılandırmaları, altyapınızın her katmanında sıkı bir erişim kontrolü sağlayarak, yetkisiz erişimi minimuma indirecek ve siber saldırılara karşı önemli bir savunma hattı oluşturacaktır.

Bastion Host Üzerinden Özel Droplet’e Nasıl Bağlanılır?

Bastion Host’un temel amacı, özel ağınızdaki diğer Droplet’lere güvenli ve dolaylı bir erişim sağlamaktır. Doğrudan SSH bağlantılarını engellediğimiz için, Bastion Host üzerinden bir “atlama” yaparak hedef Droplet’imize ulaşmamız gerekir. Bu işlemi gerçekleştirmenin birkaç yolu vardır, ancak en yaygın ve kullanışlı yöntem SSH ProxyCommand veya ProxyJump özelliğini kullanmaktır.

1. SSH ProxyJump Kullanımı (Önerilen Yöntem):
OpenSSH 7.3 ve sonraki sürümleriyle birlikte gelen ProxyJump (veya -J bayrağı), Bastion Host üzerinden atlama yapmayı oldukça basitleştirir.

* Tek Seferlik Bağlantı:
Yerel makinenizden doğrudan uygulama Droplet’inize bağlanmak için aşağıdaki komutu kullanabilirsiniz:


    ssh -J @ @
    

Örnek:


    ssh -J myuser@192.0.2.10 appuser@10.10.0.5
    

Bu komut, önce yerel makinenizden 192.0.2.10 adresindeki Bastion Host’a myuser olarak bağlanır ve ardından bu bağlantı üzerinden 10.10.0.5 adresindeki uygulama Droplet’ine appuser olarak bağlanır.

* SSH Yapılandırma Dosyası (~/.ssh/config) ile Kalıcı Ayar:
Her seferinde uzun komutlar yazmak yerine, SSH yapılandırma dosyanızı kullanarak bu bağlantıyı basitleştirebilirsiniz. ~/.ssh/config dosyanızı açın (veya oluşturun) ve aşağıdaki girdileri ekleyin:


    Host bastion
        Hostname 
        User 
        IdentityFile ~/.ssh/id_rsa # Bastion Host'a bağlanmak için kullandığınız anahtar

    Host app-server
        Hostname 
        User 
        ProxyJump bastion
        IdentityFile ~/.ssh/id_rsa # Uygulama Droplet'ine bağlanmak için kullandığınız anahtar
    

, , , ve ~/.ssh/id_rsa kısımlarını kendi bilgilerinizle değiştirin. Eğer farklı SSH anahtarları kullanıyorsanız, IdentityFile yollarını güncelleyin.

Bu yapılandırmayı yaptıktan sonra, uygulama Droplet’inize bağlanmak için tek yapmanız gereken:


    ssh app-server
    

Bu, SSH istemcinizin otomatik olarak Bastion Host üzerinden atlama yaparak hedef Droplet’e bağlanmasını sağlayacaktır.

2. SSH Agent Forwarding (İleri Düzey Kullanım):
Eğer Bastion Host’a bağlandıktan sonra oradan başka bir sunucuya daha bağlanmanız gerekiyorsa ve her seferinde anahtarınızı Bastion Host’a kopyalamak istemiyorsanız, SSH Agent Forwarding kullanabilirsiniz. Bu, yerel makinenizdeki SSH anahtarının, Bastion Host üzerinden hedef Droplet’e iletilmesini sağlar.

* ~/.ssh/config Dosyasında:


    Host bastion
        Hostname 
        User 
        IdentityFile ~/.ssh/id_rsa
        ForwardAgent yes # Bu satırı ekleyin

    Host app-server
        Hostname 
        User 
        ProxyJump bastion
        IdentityFile ~/.ssh/id_rsa
    

* Kullanım:
1. Yerel makinenizde SSH agent’ınızı başlatın ve anahtarınızı ekleyin:


        eval "$(ssh-agent -s)"
        ssh-add ~/.ssh/id_rsa
        

2. Ardından ssh app-server komutuyla bağlanın. Bastion Host üzerinden geçerken, yerel anahtarınız otomatik olarak kullanılacaktır.
Dikkat: ForwardAgent kullanmak, Bastion Host’un ele geçirilmesi durumunda yerel anahtarınızın da risk altına girebileceği anlamına gelir. Bu nedenle, Bastion Host’un güvenliğine azami özen gösterilmelidir. Yalnızca kesinlikle gerektiğinde kullanın.

Bu bağlantı yöntemleri, özel Droplet’lerinize güvenli ve denetlenebilir bir şekilde erişim sağlamanın temelini oluşturur. Bu sayede, sunucularınızın doğrudan internete maruz kalmasını engellerken, yönetim ve bakım işlemlerinizi kolayca gerçekleştirebilirsiniz.

Gelişmiş Güvenlik İpuçları ve En İyi Uygulamalar

Temel Bastion Host ve özel Droplet kurulumu, bulut güvenliğiniz için harika bir başlangıç noktasıdır. Ancak siber güvenlik sürekli gelişen bir alan olduğundan, altyapınızı daha da güçlendirmek için ileri düzey ipuçlarını ve en iyi uygulamaları benimsemek kritik öneme sahiptir.

* Ephemeral (Geçici) Bastion Host’lar:
Güvenliği daha da artırmak için, Bastion Host’unuzu yalnızca gerektiğinde başlatıp işiniz bittiğinde kapatmayı düşünebilirsiniz. Bu, saldırı yüzeyini daha da azaltır, çünkü Bastion Host aktif olmadığında internetten erişilemez. DigitalOcean API’leri veya otomasyon araçları (Terraform, Ansible) ile bu süreci otomatik hale getirebilirsiniz. Örneğin, yönetim işlemleri için bir script çalıştırdığınızda Bastion Host’u başlatan, işiniz bitince kapatan bir mekanizma kurabilirsiniz.


    # DigitalOcean CLI ile Droplet'i başlatma
    doctl compute droplet power-on 

    # İşler bitince Droplet'i kapatma
    doctl compute droplet power-off 
    

Bu yaklaşım, maliyetleri de düşürebilir, çünkü Droplet yalnızca kullanımda olduğunda ücretlendirilir.

* Çok Faktörlü Kimlik Doğrulama (MFA):
Bastion Host’unuza SSH ile bağlanırken MFA kullanmak, kimlik bilgileri çalınsa bile yetkisiz erişimi engellemenin en etkili yollarından biridir. Google Authenticator veya benzeri TOTP (Time-based One-Time Password) uygulamaları ile SSH bağlantılarınıza ikinci bir güvenlik katmanı ekleyebilirsiniz. Bu, genellikle PAM (Pluggable Authentication Modules) modülleri aracılığıyla yapılandırılır.


    # Ubuntu'da Google Authenticator kurulumu
    sudo apt install libpam-google-authenticator
    google-authenticator # Kurulum sihirbazını başlatır
    

Ardından sshd_config dosyasında ChallengeResponseAuthentication yes ve /etc/pam.d/sshd dosyasında auth required pam_google_authenticator.so gibi düzenlemeler yapmanız gerekebilir.

* Audit Logging ve İzleme:
Tüm sunucularınızda (özellikle Bastion Host’ta) kapsamlı denetim kayıtları tutun. Kimin ne zaman bağlandığını, hangi komutları çalıştırdığını ve hangi dosyalara eriştiğini izleyin. Syslog, ELK Stack (Elasticsearch, Logstash, Kibana) veya diğer merkezi loglama çözümlerini kullanarak bu logları toplayın ve analiz edin. Anormal aktiviteler için uyarılar ayarlayın. DigitalOcean Monitoring de Droplet’lerinizin kaynak kullanımını izlemek için faydalıdır.

* Düzenli Güvenlik Güncellemeleri:
Tüm Droplet’lerinizdeki işletim sistemlerini ve yüklü yazılımları düzenli olarak güncel tutun. Güvenlik yamalarını zamanında uygulamak, bilinen güvenlik açıklarının istismar edilmesini önler. Otomatik güncelleme araçları (örn: unattended-upgrades Ubuntu’da) kullanmayı düşünebilirsiniz, ancak kritik sistemlerde dikkatli olun ve güncellemeleri test etmeden uygulamayın.


    sudo apt update && sudo apt upgrade -y
    

* En Az Ayrıcalık Prensibi (Principle of Least Privilege):
Kullanıcılara ve hizmetlere yalnızca işlerini yapmak için kesinlikle gerekli olan en düşük ayrıcalıkları verin. root kullanıcısının doğrudan kullanımını kısıtlayın. sudo yetkilerini yalnızca belirli komutlar veya uygulamalar için yapılandırın. Uygulamalarınızı, özel bir kullanıcı altında ve yalnızca ihtiyaç duydukları kaynaklara erişebilecek şekilde çalıştırın.

* Güvenlik Taramaları ve Penetrasyon Testleri:
Altyapınızı düzenli olarak güvenlik taramalarından geçirin ve hatta profesyonel penetrasyon testleri yaptırın. Bu, kendi gözden kaçırdığınız güvenlik açıklarını veya yanlış yapılandırmaları tespit etmenize yardımcı olabilir.

* Yedeklemeler:
Herhangi bir güvenlik ihlali veya sistem arızası durumunda verilerinizi kurtarabilmek için düzenli yedeklemeler alın. DigitalOcean’ın kendi yedekleme hizmetlerini kullanabilir veya Droplet anlık görüntüleri (snapshots) oluşturabilirsiniz.

Bu gelişmiş ipuçları ve en iyi uygulamalar, bulut altyapınızın genel güvenlik duruşunu önemli ölçüde artıracak ve olası tehditlere karşı daha dirençli hale getirecektir. Güvenlik, tek seferlik bir kurulum değil, sürekli bir süreçtir ve bu prensipleri benimsemek uzun vadede size büyük faydalar sağlayacaktır.

Sonuç ve Sıkça Sorulan Sorular

Bu makalede, DigitalOcean platformunda özel Droplet’ler ve bir Bastion Host kullanarak bulut altyapınızı nasıl daha güvenli hale getirebileceğinizi adım adım inceledik. Temel kavramlardan başlayarak, özel ağ yapılandırması, Bastion Host ve uygulama Droplet’lerinin kurulumu, bulut güvenlik duvarlarının etkin kullanımı ve son olarak Bastion Host üzerinden güvenli erişim yöntemlerini detaylandırdık. Bu mimari, sunucularınızın doğrudan internete maruz kalmasını engelleyerek saldırı yüzeyini önemli ölçüde azaltır ve yetkisiz erişime karşı güçlü bir savunma hattı oluşturur.

Özel ağlar, Bastion Host’lar ve bulut güvenlik duvarları gibi katmanlı güvenlik yaklaşımlarını benimsemek, günümüzün siber tehdit ortamında kritik öneme sahiptir. Bu sadece veri ihlallerini önlemekle kalmaz, aynı zamanda mevzuat uyumluluğunu sağlamanıza ve işletmenizin itibarını korumanıza da yardımcı olur. Unutmayın ki güvenlik, sürekli bir çaba gerektiren dinamik bir süreçtir. Kurulumdan sonra bile düzenli güncellemeler, izleme ve en iyi uygulamaların takibi, altyapınızın uzun vadeli güvenliğini sağlamak için vazgeçilmezdir. Bu rehber, güvenli bulut yolculuğunuzda size sağlam bir başlangıç noktası sunmayı amaçlamıştır.

Sıkça Sorulan Sorular

  • Bastion Host kullanmak performansımı etkiler mi?

    Genellikle hayır. SSH bağlantıları hafif olduğu için Bastion Host üzerinden yapılan bağlantılar performansı önemli ölçüde etkilemez. Ancak, çok sayıda eşzamanlı bağlantı veya yüksek bant genişliği gerektiren işlemler için Bastion Host’un kaynaklarını (CPU, RAM) göz önünde bulundurmanız gerekebilir. Çoğu yönetim senaryosu için en küçük Droplet planı yeterlidir.

  • Bastion Host’um ele geçirilirse ne olur?

    Bastion Host’unuz ele geçirilirse, saldırgan özel ağınıza erişim kazanabilir. Bu nedenle Bastion Host’un güvenliği hayati önem taşır. Sıkı güvenlik duvarı kuralları, SSH anahtar tabanlı kimlik doğrulama, MFA, root erişimini devre dışı bırakma ve düzenli güncellemeler gibi önlemlerle Bastion Host’u mümkün olduğunca sertleştirmeniz gerekir. Ayrıca, loglama ve izleme ile şüpheli aktiviteleri hızlıca tespit edip müdahale edebilmelisiniz.

  • Uygulama Droplet’ime genel IP adresi atarsam ne olur?

    Uygulama Droplet’inize genel IP adresi atamak, onu doğrudan internete maruz bırakır. Bu durumda, DigitalOcean Cloud Firewalls ile çok sıkı kurallar uygulayarak sadece belirli portlara (örn: 80 ve 443 web trafiği için) ve belirli kaynaklara (örn: DigitalOcean Load Balancer veya CDN) erişime izin vermeniz gerekir. Ancak, veritabanı sunucuları veya arka uç API’leri gibi kritik hizmetler için genel IP adresi atamaktan kesinlikle kaçınılmalıdır. En güvenli yaklaşım, uygulama Droplet’lerinizi genel IP’siz tutmaktır.

  • Birden fazla Bastion Host kurmalı mıyım?

    Tek bir Bastion Host genellikle yeterlidir. Ancak yüksek erişilebilirlik (HA) veya felaket kurtarma (DR) senaryoları için birden fazla Bastion Host kurmayı düşünebilirsiniz. Bu durumda, Bastion Host’lar arasında bir yük dengeleyici (Load Balancer) kullanmak veya farklı bölgelerde yedekli Bastion Host’lar bulundurmak seçenekler arasındadır. Bu, daha karmaşık bir yapılandırma gerektirir.

  • SSH anahtarlarımı nasıl güvende tutarım?

    SSH özel anahtarlarınız, sunucularınıza erişiminizin anahtarıdır ve son derece gizli tutulmalıdır. Özel anahtar dosyanızı (örn: id_rsa) kesinlikle kimseyle paylaşmayın. Dosya izinlerinin chmod 400 ~/.ssh/id_rsa olduğundan emin olun. Anahtarınıza güçlü bir parola (passphrase) atayın. Ayrıca, anahtarınızı bir donanım güvenlik anahtarında (örn: YubiKey) saklamak, ek bir güvenlik katmanı sağlar.

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

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.