Sandstorm ile Meteor Uygulamasını Güvenli Bir Şekilde Çalıştırma (Ubuntu 14.04 Üzerinde)
Bu teknik rehber, eski bir sürüm olmasına rağmen, Ubuntu 14.04 üzerinde bir Meteor uygulamasını Sandstorm platformu ile nasıl güvenli bir şekilde çalıştırabileceğinizi adım adım anlatmaktadır. Sandstorm, uygulamalarınızı izole edilmiş, yetenek tabanlı (capabilities-based) güvenlik modeline sahip “tanecikler” (grains) içinde çalıştırarak eşsiz bir güvenlik katmanı sunar.
Giriş: Sandstorm, Meteor ve Güvenlik
Meteor, hızlı geliştirme için tasarlanmış, tam yığın (full-stack) bir JavaScript çerçevesidir. Gerçek zamanlı web uygulamaları oluşturmak için popüler bir seçimdir. Ancak, her web uygulaması gibi Meteor uygulamaları da güvenlik riskleri taşır. Geleneksel sunucu kurulumlarında, bir uygulamanın güvenlik açığı tüm sunucuyu veya diğer uygulamaları tehlikeye atabilir.
Sandstorm, bu sorunu çözmek için tasarlanmıştır. Her uygulama örneğini (grain) kendi izole ortamında çalıştıran bir platformdur. Bir Meteor uygulamasını Sandstorm üzerinde çalıştırdığınızda, uygulama ve verileri, Sandstorm’un çekirdeği tarafından sıkı bir şekilde kontrol edilen bir “sandbox” içinde bulunur. Bu, uygulamanın diğer sistem kaynaklarına yetkisiz erişimini engeller ve potansiyel güvenlik açıklarının etkisini büyük ölçüde azaltır.
Ubuntu 14.04, bu rehberin yazıldığı tarihte oldukça eski bir işletim sistemi sürümüdür ve güncel güvenlik yamalarından yoksun olabilir. Bu nedenle, üretim ortamlarında daha yeni ve desteklenen bir Ubuntu sürümü (örn. 20.04 LTS veya 22.04 LTS) kullanmanız şiddetle tavsiye edilir. Ancak, talep doğrultusunda, bu rehber Ubuntu 14.04 odağında hazırlanmıştır.
Ön Gereksinimler ve Sandstorm Kurulumu
Sandstorm’u kurmak için temel bir Ubuntu 14.04 sunucusuna ihtiyacınız olacak. Sunucunuzda root erişimine sahip olmanız veya sudo yetkisine sahip bir kullanıcı olmanız gerekmektedir.
Sistem Güncellemesi ve Temel Araçlar
İlk adım olarak, sisteminizi güncelleyelim ve Sandstorm’un ihtiyaç duyacağı bazı temel araçları kuralım:
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y curl git build-essential
DNS Yapılandırması
Sandstorm, uygulamaları izole etmek ve erişimi yönetmek için wildcard (joker karakter) DNS kayıtlarına ihtiyaç duyar. Alan adınız için .sandstorm.example.com gibi bir kayıt oluşturmanız gerekecektir. Örneğin, example.com alan adınız ise, .sandstorm.example.com kaydını Sandstorm sunucunuzun IP adresine yönlendirmelisiniz. Bu, Sandstorm’un her bir uygulama taneciği için benzersiz bir alt alan adı atamasını sağlar (örn. random-string.sandstorm.example.com).
Sandstorm Kurulumu
Sandstorm’u Ubuntu 14.04 üzerine kurmak oldukça basittir. Sandstorm’un resmi kurulum betiğini kullanacağız:
curl https://install.sandstorm.io/ -sSf | bash
Bu komut, Sandstorm’u indirip kuracak ve gerekli servisleri yapılandıracaktır. Kurulum sırasında size bazı sorular sorulabilir (örn. yönetici e-posta adresi, alan adı). Alan adınızı yukarıda yapılandırdığınız wildcard DNS kaydınızla eşleşecek şekilde girin (örn. sandstorm.example.com).
Kurulum tamamlandıktan sonra, Sandstorm kontrol paneline erişmek için tarayıcınızdan https://sandstorm.example.com adresine gidin (kendi alan adınızla değiştirin). Güvenlik sertifikası uyarısı alabilirsiniz, çünkü Sandstorm varsayılan olarak kendi kendine imzalı bir sertifika kullanır. Üretim ortamları için Let’s Encrypt gibi bir hizmetle geçerli bir SSL sertifikası yapılandırmanız önerilir.
Firewall (UFW) Yapılandırması
Güvenlik için UFW (Uncomplicated Firewall) kullanıyorsanız, Sandstorm’un ihtiyaç duyduğu portları açmanız gerekmektedir:
sudo ufw allow 80/tcp # HTTP erişimi için (HTTPS'e yönlendirme)
sudo ufw allow 443/tcp # HTTPS erişimi için
sudo ufw enable
Meteor Uygulamasını Sandstorm İçin Hazırlama
Bir Meteor uygulamasını Sandstorm üzerinde çalıştırmak için, uygulamanızı Sandstorm’un anlayacağı bir SPK (Sandstorm Package) dosyasına dönüştürmeniz gerekir. Bu süreç meteor-spk aracı ile kolaylaştırılmıştır.
meteor-spk Aracının Kurulumu
Öncelikle, Meteor projenizin kök dizininde meteor-spk aracını global olarak kurun:
sudo npm install -g meteor-spk
Not: Ubuntu 14.04’te eski Node.js sürümleri olabilir. nvm (Node Version Manager) kullanarak daha yeni bir Node.js sürümü kurmanız gerekebilir.
Sandstorm Paket Tanımlama Dosyası (sandstorm-pkgdef.capnp)
Meteor projenizin kök dizininde sandstorm-pkgdef.capnp adında bir dosya oluşturmanız gerekmektedir. Bu dosya, uygulamanızın Sandstorm içinde nasıl çalışacağını ve hangi yeteneklere (capabilities) ihtiyaç duyduğunu tanımlar.
Basit bir Meteor uygulaması için örnek bir sandstorm-pkgdef.capnp dosyası şöyle görünebilir:
# sandstorm-pkgdef.capnp
using Sandstorm = import /sandstorm/package.capnp;
const pkgdef :Sandstorm.PackageDefinition = (
id = "YOUR_APP_ID_HERE", # Uygulamanız için benzersiz bir kimlik
apiVersion = 1,
manifest = (
# Uygulamanın ana giriş noktası
actions = [
(
# Uygulamanın çalıştırılacağı komut
command = .command("node", "main.js"),
title = (defaultText = "Meteor Uygulaması"),
description = (defaultText = "Sandstorm üzerinde çalışan bir Meteor uygulaması."),
# Uygulamanın ihtiyaç duyduğu yetenekler
perms = (
# İnternet erişimi (isteğe bağlı, uygulamanız dış API'lere bağlanıyorsa)
# network = true,
# Diske yazma ve okuma yeteneği
system = [
.powerboxRequest("disk"),
.powerboxRequest("grain-storage"),
],
),
),
],
# Uygulamanın HTTP portunu belirtin (Meteor genellikle 3000 kullanır)
appPort = 3000,
# Uygulamanın adını ve açıklamasını belirtin
appTitle = (defaultText = "Meteor Uygulaması"),
appMarketingUrl = "https://your-meteor-app.com",
),
);
* YOUR_APP_ID_HERE: Bu alanı uygulamanız için benzersiz bir kimlikle değiştirin (örn. my-awesome-meteor-app-123).
* command: Meteor uygulamaları genellikle node main.js komutuyla çalışır.
* appPort: Meteor’un varsayılan olarak kullandığı porttur.
* perms: Bu bölüm, uygulamanızın Sandstorm içindeki yeteneklerini tanımlar. system = [.powerboxRequest("grain-storage")] Sandstorm’un dahili depolama mekanizmasını kullanmak için gereklidir. Uygulamanız dışarıdan API çağrıları yapıyorsa network = true eklemeniz gerekebilir.
Önemli Not: Meteor’un varsayılan MongoDB entegrasyonu genellikle uygulamanın kendisi tarafından yönetilir. Sandstorm, uygulamaların verilerini kendi grain-storage mekanizması aracılığıyla depolamasını teşvik eder. meteor-spk aracı genellikle MongoDB’yi uygulamanın bir parçası olarak paketleyerek Sandstorm’un izolasyonunda çalışmasını sağlar. Bu, dış bir MongoDB sunucusu yapılandırmaktan daha basittir.
Uygulamayı Paketleme
sandstorm-pkgdef.capnp dosyasını oluşturduktan sonra, Meteor projenizin kök dizininde aşağıdaki komutu çalıştırarak SPK dosyasını oluşturabilirsiniz:
meteor-spk pack my-meteor-app.spk
Bu komut, Meteor uygulamanızı derleyecek ve my-meteor-app.spk adında bir Sandstorm paket dosyası oluşturacaktır. Bu işlem biraz zaman alabilir.
Uygulamayı Sandstorm’a Dağıtma ve Çalıştırma
SPK dosyanızı oluşturduktan sonra, onu Sandstorm sunucunuza yüklemenin zamanı geldi.
SPK Dosyasını Yükleme
1. Tarayıcınızdan Sandstorm kontrol paneline (örn. https://sandstorm.example.com) gidin ve yönetici hesabınızla oturum açın.
2. Sol üst köşedeki “Upload App” (Uygulama Yükle) düğmesine tıklayın.
3. Oluşturduğunuz my-meteor-app.spk dosyasını seçin ve yükleyin.
Uygulama yüklendikten sonra, Sandstorm size uygulamayı başlatmak isteyip istemediğinizi soracaktır. “Install” (Kur) düğmesine tıklayarak uygulamanın yeni bir “grain”ini başlatın.
Uygulamaya Erişim
Uygulama başarıyla başlatıldığında, Sandstorm sizi yeni oluşturulan uygulama taneciğinin arayüzüne yönlendirecektir. Bu arayüz, Meteor uygulamanızın çalıştığı izole ortamdır. Artık uygulamanızı kullanmaya başlayabilirsiniz. Her yeni “grain” için Sandstorm benzersiz bir URL atayacaktır.
Güvenlik ve En İyi Uygulamalar, Sonuç ve SSS
Sandstorm, uygulamalarınıza önemli bir güvenlik katmanı eklerken, bazı en iyi uygulamaları takip etmek genel güvenliğinizi artıracaktır.
Sandstorm’un Güvenlik Faydaları
* İzolasyon: Her uygulama örneği (grain) tamamen izole bir ortamda çalışır. Bir uygulamanın güvenlik açığı, diğer uygulamaları veya Sandstorm çekirdeğini etkilemez.
* Yetenek Tabanlı Güvenlik: Uygulamalar, Sandstorm’un çekirdeği tarafından sıkı bir şekilde kontrol edilen minimum yeteneklere sahiptir. Bir uygulama, açıkça izin verilmedikçe dosya sistemine, ağa veya diğer sistem kaynaklarına erişemez.
* Minimal Saldırı Yüzeyi: Sandstorm, uygulamaların yalnızca ihtiyaç duydukları kaynaklara erişmesine izin vererek potansiyel saldırı yüzeyini büyük ölçüde azaltır.
* Otomatik Güncellemeler: Sandstorm platformu ve içindeki uygulamalar, Sandstorm tarafından yönetilen bir şekilde güncellenebilir, bu da güvenlik yamalarının hızlı bir şekilde dağıtılmasına yardımcı olur.
Ubuntu 14.04 ve Güvenlik Riskleri
Bu rehber Ubuntu 14.04 üzerinde Sandstorm’u kurmayı anlatsa da, bu işletim sistemi sürümü artık uzun süreli destek (LTS) kapsamında değildir ve güvenlik yamaları almamaktadır. Bu durum, temel işletim sisteminin kendisinin bilinen güvenlik açıklarına karşı savunmasız kalmasına neden olur. Sandstorm uygulamanızı izole etse de, temel işletim sistemindeki bir açık yine de tüm sunucuyu tehlikeye atabilir.
Şiddetle Tavsiye Edilen: Üretim ortamlarında veya hassas verilerle çalışırken, Ubuntu’nun desteklenen en yeni LTS sürümünü (örn. Ubuntu 20.04 LTS veya 22.04 LTS) kullanın.
Genel Güvenlik İpuçları
* Güçlü Parolalar: Sandstorm yönetici hesabınız ve sunucunuz için güçlü, karmaşık parolalar kullanın.
* SSH Anahtarları: Sunucunuza SSH ile bağlanırken parola yerine SSH anahtarları kullanın.
* Maksimum Güvenlik: İhtiyaç duymadığınız tüm servisleri kapatın ve gereksiz portları engelleyin.
* Düzenli Yedeklemeler: Sandstorm’un verilerini ve önemli yapılandırma dosyalarını düzenli olarak yedekleyin.
* Uygulama Güncellemeleri: Meteor uygulamanızın kendisinin ve kullandığı tüm bağımlılıkların güncel olduğundan emin olun.
Sonuç
Sandstorm, Meteor uygulamalarınızı eşsiz bir güvenlik ve izolasyon katmanıyla çalıştırmak için güçlü bir platform sunar. Uygulamalarınızı “tanecikler” içinde izole ederek, potansiyel güvenlik açıklarının etkisini en aza indirir ve yönetim yükünü azaltır. Ubuntu 14.04 gibi eski bir işletim sistemi üzerinde çalışmak tavsiye edilmese de, bu rehber Sandstorm’un temel kurulumunu ve Meteor uygulamalarınız için nasıl güvenli bir ortam oluşturulacağını göstermiştir. Her zaman en güncel ve desteklenen teknolojileri kullanmaya özen gösterin.
Sıkça Sorulan Sorular (SSS)
S: Ubuntu 14.04 yerine hangi işletim sistemini kullanmalıyım?
C: Üretim ortamları için Ubuntu’nun desteklenen en yeni LTS (Uzun Süreli Destek) sürümünü (örn. Ubuntu 20.04 LTS veya 22.04 LTS) kullanmanız şiddetle tavsiye edilir. Bu sürümler güncel güvenlik yamaları ve yazılım desteği sunar.
S: Sandstorm ücretsiz mi?
C: Evet, Sandstorm açık kaynaklı bir projedir ve temel platformu ücretsizdir. Kendi sunucunuzda çalıştırabilirsiniz.
S: Meteor uygulamamın veritabanı (MongoDB) Sandstorm içinde nasıl yönetiliyor?
C: meteor-spk aracı genellikle Meteor uygulamanızın varsayılan MongoDB’sini uygulamanın bir parçası olarak paketler. Sandstorm’un izolasyonu içinde çalışır ve veriler Sandstorm’un dahili grain-storage mekanizması aracılığıyla depolanır. Bu, Sandstorm’un her bir uygulama taneciği için izole bir veri depolama alanı sağladığı anlamına gelir.
S: Sandstorm’un performans üzerinde bir etkisi var mı?
C: Sandstorm, uygulamaları izole edilmiş ortamlarda çalıştırdığı için, geleneksel bir sunucuya kıyasla hafif bir performans yükü olabilir. Ancak, modern donanımlarda bu etki genellikle kabul edilebilir düzeydedir. Güvenlik faydaları genellikle bu küçük performans maliyetini aşar.
S: Sandstorm’daki bir Meteor uygulamasında hata ayıklama (debugging) nasıl yapılır?
C: Sandstorm, uygulamaların izole ortamda çalışması nedeniyle doğrudan sunucu tarafı hata ayıklamayı zorlaştırabilir. Genellikle, uygulamanızı Sandstorm’a dağıtmadan önce yerel ortamda kapsamlı bir şekilde test etmeli ve hata ayıklamalısınız. Sandstorm içindeki loglara erişerek veya uygulamanızın kendi hata raporlama mekanizmalarını kullanarak sorunları tespit edebilirsiniz.
