İçeriğe geç
Soner KESER

Altyapı·3 dk okuma

Kendi hosting panelimizi neden yazdık: Kalkan

Yönettiğimiz sitelerde tekrar eden güvenlik ve bakım sorunları bizi kendi panelimizi yazmaya götürdü. Kalkan'ın mimarisi, güvenlik katmanları ve kendi kendini onarma yaklaşımı.

Soner KESERFull-Stack Yazılım Geliştirici
Paylaş

İşletmeler için yönettiğimiz sitelerin çoğu Plesk üzerinde çalışıyor. Plesk olgun ve yetenekli bir panel; ama yıllar içinde aynı türden sorunlarla tekrar tekrar karşılaştık. Bir noktada bu sorunları tek tek çözmek yerine, onları baştan imkânsız kılan bir panel tasarlamaya karar verdik: Kalkan. Bu yazıda neden böyle bir işe giriştiğimizi ve Kalkan'ın nasıl çalıştığını anlatıyorum.

Karşılaştığımız sorunlar

Aşağıdakilerin hepsi yönettiğimiz sitelerde gerçekten yaşandı:

  • Yanlış belge kökü: Node.js uygulamalarında belge kökü uygulama klasörüyle aynı bırakıldığında sunucu dosyaları web'den indirilebilir hâle gelebiliyor. Birden fazla canlı sitede bu durumu yakalayıp kapattık.
  • Web kökünde unutulan yedekler: taşıma sırasında oluşturulan yedek arşivleri ve kurulum betikleri, kimse fark etmeden aylarca herkese açık durabiliyor; içlerinde veritabanı parolası bile olabiliyor.
  • Sessizce şifresizleşen dosya aktarımı: sertifika adı uyuşmadığında hata vermek yerine düz FTP'ye geçen betikler parolayı açık metin olarak gönderiyor.
  • Kendini engelleyen denetimler: sitelere toplu güvenlik taraması yapan bir betik, sunucunun saldırı korumasına takılıp kendi IP adresimizi engelletebiliyor.

Bu sorunların ortak noktası: hepsi yanlış yapılandırmanın mümkün, hatta kolay olmasından kaynaklanıyor.

Tasarım ilkeleri

  • Güvenli varsayılanlar: doğru yapılandırma ek bir ayar değil, tek seçenek olmalı.
  • En az yetki: her bileşen yalnızca işine yetecek yetkiyle çalışmalı.
  • Kendi kendini onarma: panel sorunu kullanıcıdan önce fark edip çözmeye çalışmalı.
  • Kolay kurulum: tek dosya, tek komut.

Mimari: tek dosya, üç süreç

Kalkan, Go ile yazılmış tek bir çalıştırılabilir dosya. Bu dosyadan üç ayrı süreç doğuyor: yetkisiz çalışan web paneli, yalnızca tipli ve kabuk kullanmayan işlemleri kabul eden yetkili bir ajan ve yönetim arayüzü dışarıya kapalı, gömülü Caddy tabanlı bir kenar sunucusu. Panel sunucuda rastgele komut çalıştıramıyor; yalnızca önceden tanımlanmış ve parametreleri doğrulanan işlemleri ajana iletebiliyor. Dosya işlemleri de ilgili sitenin kullanıcısının yetkisine düşürülerek yapılıyor. Arayüz React, TypeScript ve Tailwind CSS ile yazıldı.

Güvenlik katmanları

nftables tabanlı güvenlik duvarı, web uygulaması güvenlik duvarı (WAF), saldırı girişimlerini izleyen bir tehdit radarı ve geçiş anahtarıyla (passkey) giriş. Lisans doğrulaması ayrı bir sunucu (Kalkan HQ) üzerinden yapılıyor; ancak lisans tarafındaki bir sorun hiçbir koşulda siteleri durdurmuyor.

Otonomi: sorunu kullanıcıdan önce görmek

Bildirim merkezi, çalışma süresi izleme ve herkese açık durum sayfası; sorunları teşhis edip onaran bir "doktor"; yedeklerin gerçekten geri yüklenebildiğini doğrulayan kontroller; imzalı güncellemeler ve sorun çıkarsa otomatik geri dönüş. Hedef, yöneticinin sabah bir sorunun haberini değil, çözüldüğünün kaydını görmesi.

Göç merkezi

Yeni bir panelin önündeki en büyük engel taşımadır. Kalkan'ın göç merkezi, başka panellerdeki siteleri SSH üzerinden keşfediyor; dosyaları, veritabanlarını, zamanlanmış görevleri ve DNS kayıtlarını taşıyıp sonucu doğruluyor. HestiaCP, CloudPanel ve Plesk düzenindeki sunucularla denendi; Passenger üzerinde çalışan Node.js ve SQLite uygulamaları da verileriyle birlikte taşınabiliyor.

DNS, e-posta ve Windows

Gömülü DNS sunucusu ve DNSSEC, Cloudflare entegrasyonu, e-posta yapılandırmasını denetleyen bir merkez ve DMARC raporlarının okunması da panelin parçası. Windows tarafında IIS ve klasik ASP.NET, SQL Server Express, MariaDB, PHP, NTFS izinleri ve uzak masaüstü (RDP) koruması destekleniyor.

5651 ve KVKK

Türkiye'de yer sağlayıcıların 5651 sayılı Kanun'a uygun trafik kaydı tutması gerekiyor. Kalkan web, SFTP ve e-posta trafiğine ait kayıtları mühürlü ve zaman damgalı olarak saklıyor; kişisel veri envanteri, aydınlatma metni ve ilgili kişi başvurularında kayıt arama gibi KVKK araçları da sunuyor.

Bugün neredeyiz?

Yol haritasındaki dokuz fazın tamamı bitti; API belirteçleri, müşteri ve bayi portalı, beyaz etiket, WHMCS entegrasyonu ve çoklu sunucu yönetimi de bu fazların içindeydi. Sürekli entegrasyon hattı her değişiklikte Linux ve Windows üzerinde uçtan uca kurulum testleri çalıştırıyor. Barındırma altyapınızla ilgili bir ihtiyacınız varsa sunucu ve DevOps sayfama göz atabilir ya da yazabilirsiniz.

#Kalkan#Hosting#Go#Güvenlik#Plesk#DevOps

Soner KESER — Full-Stack Yazılım Geliştirici. Mobil, masaüstü ve web uygulamaları geliştiriyor; sanal gerçeklik destekli eğitim üzerine çalışıyor. Hakkımda

İlgili yazılar

İletişim

Projenizi birlikte hayata geçirelim

Yeni bir ürün fikri, mevcut bir sistemin yenilenmesi ya da teknik bir danışmanlık ihtiyacı… Kısaca anlatın, en kısa sürede dönüş yapayım.

İletişime geçin