sunucu.com.tr
Kontrol Panelleri

HestiaCP kurulumu: Ubuntu 24.04 ve 26.04'te güvenli kurulum, 1.9.9 güncellemesi ve web terminali açığına karşı önlemler

HestiaCP kurulumu için temiz bir Ubuntu sunucu hazırlayın ve bileşenleri doğru seçin. Sürümünüzün 1.9.9 ile kapatılan açıklara karşı güncel olduğunu doğrulayın, web terminalini kapatıp paneli sertleştirin. Eski sürüm kullandıysanız ele geçirilme belirtilerini de kontrol edin.

sunucu.com.tr Ekibi11 dk okuma

cPanel ya da Plesk lisansı her yıl bütçede daha fazla yer kaplıyorsa ücretsiz bir panel cazip gelir. HestiaCP kurulumu birkaç komutla biter, ama 2026'da yayımlanan güvenlik düzeltmeleri işin kurulumla bitmediğini gösterdi. Bu rehber sistem yöneticileri ve KOBİ sahipleri için hazırlandı: temiz bir Ubuntu sunucuya HestiaCP'yi güvenli kurmayı, 1.9.9 güncellemesini doğrulamayı ve web terminali açığına karşı alınacak önlemleri anlatıyor. HestiaCP'yi zaten kullanıyorsanız ele geçirilme kontrolü bölümüne doğrudan geçebilirsiniz.

HestiaCP nedir, VestaCP yerine neden tercih edilmeli

HestiaCP, açık kaynaklı VestaCP'nin bir çatalı olarak doğdu. Web (Nginx, isteğe bağlı Apache), PHP-FPM, MariaDB ya da PostgreSQL, DNS (Bind), e-posta (Exim, Dovecot), FTP ve Let's Encrypt sertifikalarını tek panelden yönetir. Lisans ücreti yoktur.

VestaCP uzun süredir aktif geliştirilmiyor ve geçmişte ciddi güvenlik olayları yaşadı. Bugün VestaCP ile yeni bir sunucu kurmak, yaması gelmeyecek bir yazılımı internete açmak demek. HestiaCP ise düzenli sürüm çıkarıyor ve her sürümdeki değişiklikleri projenin resmi CHANGELOG dosyasında yayımlıyor.

Artıları ve eksileri şöyle:

  • Artı: Lisans maliyeti yok, kaynak tüketimi düşük, e-posta ve DNS dahil tam bir hosting yığını sunuyor.
  • Artı: Komut satırı araçları (v- ile başlayan betikler) otomasyona uygun.
  • Eksi: Ticari destek hattı yok. Sorun yaşadığınızda forum ve kendi bilginizle ilerlersiniz.
  • Eksi: Güncellemeleri takip etme sorumluluğu tamamen sizde. 2026'daki açıklar bunun neden önemli olduğunu gösterdi.
  • Eksi: cPanel'deki kadar geniş eklenti ekosistemi yok.

Panel seçimi henüz netleşmediyse cPanel, Plesk, HestiaCP, CloudPanel ve diğerlerinin karşılaştırmasına göz atmak kararı kolaylaştırır.

Kurulumdan önce: sürüm, kaynak ve hazırlık

Desteklenen işletim sistemleri

HestiaCP yalnızca Debian ve Ubuntu üzerinde çalışır. Kaynaklara göre 1.9.7 sürümüyle Debian 13 desteği eklendi; Ubuntu 24.04 ve Debian 12 güncel ve yaygın seçeneklerdir.

Ubuntu 26.04 için durum daha temkinli ele alınmalı. Desteğin hangi sürümle ve ne ölçüde geldiğini kurmadan önce resmi Hestia forumundaki duyurulardan ve CHANGELOG'dan kontrol edin. Kurulum betiği desteklemediği bir sürümü algılarsa durur. Bu kontrolü --force ile aşmak önerilmez; üretim sunucusu için şu an en güvenli tercih Ubuntu 24.04 LTS ya da Debian 12'dir.

Kaynak ihtiyacı

Yalnızca birkaç web sitesi için 1 GB RAM ile çalışabilir, ancak ClamAV ve SpamAssassin gibi e-posta filtrelerini açacaksanız bellek ihtiyacı belirgin biçimde artar. Gerçekçi bir başlangıç için 2 ile 4 GB RAM ve SSD disk düşünün. Disk tarafında yedeklerin aynı diskte birikeceğini hesaba katın.

Hazırlık listesi

  • Temiz sunucu: HestiaCP mevcut Nginx, Apache, MySQL ya da Postfix kurulumu olan sunucuya kurulmamalı. Yeni kurulmuş, minimal bir işletim sistemi kullanın.
  • Alan adı: Panel için panel.example.com gibi bir alt alan adı belirleyin ve A kaydını sunucunun IP adresine yönlendirin.
  • Ters DNS (PTR): E-posta gönderecekseniz sunucu IP'sinin PTR kaydı panel hostname'i ile eşleşmeli.
  • Saat senkronu: Let's Encrypt, e-posta ve iki adımlı doğrulama doğru saate bağlıdır.
  • Konsol erişimi: Sağlayıcınızın VNC ya da web konsoluna erişebildiğinizden emin olun. Kurulum güvenlik duvarı kuralları yazar; SSH erişiminiz kesilirse tek kurtuluş yolu konsoldur.

Adım adım HestiaCP kurulumu

1. Sunucuyu hazırlama

Aşağıdaki betik Ubuntu 24.04 ve Debian 12 için hazırlandı. Sistemi günceller, hostname'i ayarlar ve saat senkronunu kontrol eder. Tekrar çalıştırıldığında zarar vermez. Geri almak için hostname'i hostnamectl set-hostname ESKI_AD ile eski değerine döndürmeniz yeterli.

bash
#!/usr/bin/env bash
# HestiaCP öncesi hazırlık. Ubuntu 24.04 ve Debian 12 için hazırlandı.
set -euo pipefail

PANEL_HOST="panel.example.com"   # Kendi panel alan adınızla değiştirin

# Paket listesini ve sistemi güncelle
apt-get update
apt-get -y upgrade

# Hostname yalnızca farklıysa değiştirilir
if [ "$(hostname -f 2>/dev/null || hostname)" != "$PANEL_HOST" ]; then
  hostnamectl set-hostname "$PANEL_HOST"
fi

# Saat senkronu: systemd-timesyncd kurulu ve açık olsun
if ! dpkg -s systemd-timesyncd >/dev/null 2>&1; then
  apt-get -y install systemd-timesyncd
fi
timedatectl set-ntp true
timedatectl status | grep -E "synchronized|NTP service"

# Çakışacak servis var mı? Varsa kurulumu durdurun.
for svc in nginx apache2 mysql mariadb postfix; do
  if systemctl list-unit-files | grep -q "^${svc}\.service"; then
    echo "UYARI: ${svc} zaten kurulu. HestiaCP temiz sunucuya kurulmalı."
  fi
done

Çıktıda System clock synchronized: yes görmelisiniz. Herhangi bir UYARI satırı çıktıysa o sunucuya kurulum yapmayın.

2. Kurulum betiğini indirme ve bileşen seçimi

Kurulum betiği hst-install.sh adını taşır. Betiği yalnızca HestiaCP'nin resmi sitesindeki kurulum belgesinde gösterilen adresten indirin ve /root/hst-install.sh olarak kaydedin. Forumlarda ya da üçüncü taraf sitelerde paylaşılan kopyaları kullanmayın; root yetkisiyle çalışacak bir betiğin kaynağı mutlaka resmi olmalı.

Aşağıdaki örnek, betiğin indirildiğini varsayar ve tipik bir web ve e-posta sunucusu için hazırlandı: Nginx ve PHP-FPM, MariaDB, Exim ve Dovecot, fail2ban ve iptables. Apache, ClamAV, SpamAssassin ve web terminali kapalı. Ubuntu 24.04 ve Debian 12 için hazırlandı. Bu kurulumun geri alınması pratikte mümkün değildir; geri dönüş yolu sunucuyu yeniden kurmak ya da kurulum öncesi aldığınız snapshot'a dönmektir. Bu yüzden kurulumdan önce snapshot alın.

bash
#!/usr/bin/env bash
# HestiaCP kurulumu. Ubuntu 24.04 ve Debian 12 için hazırlandı.
set -euo pipefail

PANEL_HOST="panel.example.com"      # Panel alan adı
ADMIN_EMAIL="[email protected]"     # Yönetici e-posta adresi
PANEL_PORT="8083"                   # Varsayılan panel portu
INSTALLER="/root/hst-install.sh"    # Resmi belgeden indirilen betik

# Daha önce kurulduysa tekrar kurma
if [ -d /usr/local/hestia ]; then
  echo "HestiaCP zaten kurulu, betik sonlandırıldı."
  exit 0
fi

# Betik indirilmemişse dur
if [ ! -s "$INSTALLER" ]; then
  echo "HATA: $INSTALLER bulunamadı. Resmi kurulum belgesinden indirin."
  exit 1
fi

# Parola belirtilmezse betik güçlü bir parola üretir ve sonunda gösterir
bash "$INSTALLER" \
  --hostname "$PANEL_HOST" \
  --email "$ADMIN_EMAIL" \
  --port "$PANEL_PORT" \
  --apache no \
  --phpfpm yes \
  --multiphp no \
  --mysql yes \
  --postgresql no \
  --named yes \
  --exim yes \
  --dovecot yes \
  --clamav no \
  --spamassassin no \
  --iptables yes \
  --fail2ban yes \
  --quota no \
  --api no \
  --webterminal no \
  --interactive no

Seçeneklerin tam listesini bash /root/hst-install.sh --help ile görebilirsiniz. Birkaç not:

  • DNS'i dışarıda tutuyorsanız (alan adı sağlayıcınızın DNS'i ya da Cloudflare) --named no seçin; gereksiz bir servisi internete açmamış olursunuz.
  • E-posta barındırmayacaksanız --exim no --dovecot no ile hem RAM hem saldırı yüzeyi kazanırsınız.
  • --api no ile başlayın. Otomasyon gerekirse sonradan açıp IP kısıtlamasıyla kullanın.

Kurulum birkaç dakika ile yarım saat arasında sürer. Sonunda panel adresi, kullanıcı adı ve parola ekrana yazılır ve e-posta ile gönderilir.

3. İlk giriş

Tarayıcıdan https://panel.example.com:8083 adresine gidin. İlk girişte yapmanız gerekenler:

  1. Yönetici parolasını değiştirin ve iki adımlı doğrulamayı açın.
  2. Yönetici hesabını site barındırmak için kullanmayın; her müşteri ya da proje için ayrı kullanıcı oluşturun.
  3. Panel alan adı için Let's Encrypt sertifikasını doğrulayın.

2026 güvenlik açıkları ve 1.9.9 güncellemesi

2026'da HestiaCP için art arda güvenlik sürümleri çıktı. Kaynaklarda yer alan bilgilere göre:

  • 1.9.7: Birden fazla güvenlik açığını kapatan bir yama olarak yayımlandı ve Debian 13 desteğini getirdi.
  • 1.9.8: Ek düzeltmeler içerdi.
  • 1.9.9: Kritik bir açık için yayımlandı. Açık, belirli koşullarda root yetkisiyle uzaktan komut çalıştırmaya (RCE) imkân veriyordu.

Web terminaliyle ilişkilendirilen açık CVE-2026-43633 olarak kayıtlı. Ayrıntılı etki ve etkilenen sürüm aralığı için projenin resmi CHANGELOG'unu ve CVE kaydının kendisini esas alın; ikinci el haberlerdeki özetler eksik olabilir.

Pratikte varılacak sonuç basit: 1.9.9 ya da daha yeni bir sürümde değilseniz sunucunuz risk altındadır. Web terminali açıksa ve panel internete açıksa risk daha da artar.

Kurulu HestiaCP sürümünü doğrulama ve güvenli güncelleme

HestiaCP kendi apt deposundan güncellenir. Aşağıdaki betik Ubuntu 24.04 ve Debian 12 için hazırlandı. Kurulu sürümü gösterir, güncelleme varsa yalnızca Hestia paketlerini yükseltir. Güncellemeden önce snapshot alın; geri dönüş yolu bu snapshot'tır, çünkü paket düşürme (downgrade) güvenlik açısından önerilmez.

bash
#!/usr/bin/env bash
# HestiaCP sürüm kontrolü ve güncelleme. Ubuntu 24.04 ve Debian 12 için hazırlandı.
set -euo pipefail

echo "Kurulu sürüm:"
dpkg-query -W -f='${Package} ${Version}\n' hestia hestia-nginx hestia-php 2>/dev/null || true

apt-get update

echo "Depodaki aday sürüm:"
apt-cache policy hestia | sed -n '1,4p'

# Yalnızca Hestia paketlerini yükselt; zaten günceldeyse işlem yapmaz
apt-get -y install --only-upgrade hestia hestia-nginx hestia-php

echo "Güncelleme sonrası sürüm:"
dpkg-query -W -f='${Package} ${Version}\n' hestia
systemctl is-active hestia

hestia paketinin sürümü 1.9.9 ya da üzerindeyse bu turu kapattınız. Panelde Server > Updates ekranından da aynı bilgiyi görebilirsiniz.

Kurulum sonrası sertleştirme

Web terminalini kapatma

Web terminali, tarayıcı üzerinden kabuk erişimi sağlar. Kullanışlıdır ama son açık tam da bu bileşeni hedef aldı. Gerçekten ihtiyacınız yoksa kapalı tutun. Panelde Server > Configure altında web terminali seçeneğini kapatabilir ya da komut satırından şunu çalıştırabilirsiniz:

bash
# Web terminalini kapatır. Geri açmak için: v-add-sys-web-terminal
/usr/local/hestia/bin/v-delete-sys-web-terminal

# Servisin durduğunu doğrula
systemctl is-active hestia-web-terminal || echo "Web terminali kapalı"

Sürümünüzde bu komut yoksa önce güncelleme yapın; eski sürümde kalmak zaten asıl sorundur.

Panel portu ve güvenlik duvarı

Kendini kilitleme uyarısı: HestiaCP güvenlik duvarını kendisi yönetir. Panel portunu değiştirmeden ya da yeni kural eklemeden önce SSH portunun (varsayılan 22 ya da değiştirdiyseniz kendi portunuz) izinli olduğunu kontrol edin. SSH kuralı yanlışlıkla silinirse sunucuya erişiminizi kaybedersiniz; bu durumda yalnızca sağlayıcınızın konsolu üzerinden düzeltebilirsiniz. Değişikliğe başlamadan konsolun açıldığını test edin.

Aşağıdaki komutlar Hestia 1.9.x için hazırlandı. Önce mevcut kuralları listeler, sonra panel portunu değiştirir. Geri almak için port komutunu eski port (8083) ile yeniden çalıştırın.

bash
# Mevcut güvenlik duvarı kurallarını listele; SSH kuralının varlığını kontrol edin
/usr/local/hestia/bin/v-list-firewall

# Panel portunu değiştir (2087 yerine kendi seçtiğiniz portu yazın)
/usr/local/hestia/bin/v-change-sys-port 2087

# Paneli yalnızca ofis IP bloğuna açmak isterseniz (örnek belge aralığı):
/usr/local/hestia/bin/v-add-firewall-rule ACCEPT 198.51.100.0/24 2087 TCP "Panel ofis"

Port değiştirmek tek başına güvenlik sağlamaz, otomatik taramaların gürültüsünü azaltır. Asıl koruma, paneli sabit IP'lere kısıtlamak ya da VPN arkasına almaktır.

fail2ban

Kurulumda --fail2ban yes seçtiyseniz panel, SSH, e-posta ve FTP için hazır kurallar gelir. Durumunu fail2ban-client status ile kontrol edin. WordPress sitelerine gelen kaba kuvvet denemeleri için fail2ban nginx ayarı rehberindeki filtreler aynı mantıkla uygulanabilir.

Cloudflare arkasında gerçek IP

Siteler Cloudflare proxy'si arkasındaysa Nginx loglarında ziyaretçi yerine Cloudflare IP'leri görünür. Bu hem fail2ban'ı işe yaramaz hale getirir hem de yanlış IP'lerin engellenmesine yol açar. Önce yapılandırmada gerçek IP ayarının olup olmadığına bakın:

bash
# Nginx yapılandırmasında Cloudflare gerçek IP tanımları var mı?
grep -rn "set_real_ip_from\|real_ip_header" /etc/nginx/ | head -n 20

Çıktı boşsa, Cloudflare'ın resmi IP aralıkları sayfasındaki adresleri set_real_ip_from satırları olarak ekleyip real_ip_header CF-Connecting-IP; tanımlamanız gerekir. Değişiklikten sonra nginx -t ile sözdizimini kontrol edin, ardından servisi yeniden yükleyin.

Otomatik güncelleme

Panelde Server > Updates ekranından otomatik güncellemeyi açın ya da v-add-cron-hestia-autoupdate komutunu çalıştırın. 2026'daki açıklar, yamanın çıkması ile sunucuya inmesi arasındaki sürenin belirleyici olduğunu gösterdi. Otomatik güncellemeyi açsanız bile CHANGELOG'u ayda bir gözden geçirin.

Eski sürüm kullandıysanız: ele geçirilme belirtilerini kontrol etme

Sunucunuz uzun süre 1.9.9 öncesi bir sürümde ve web terminali açık kaldıysa, güncellemek yeterli değildir. Açık kapanır ama içeri girmiş biri bıraktığı arka kapıyla kalabilir. Aşağıdaki kontroller salt okunurdur, sistemde değişiklik yapmaz; Ubuntu 24.04 ve Debian 12 için hazırlandı.

bash
#!/usr/bin/env bash
# Ele geçirilme belirtisi için hızlı, salt okunur kontrol.

echo "== Hestia kullanıcıları =="
/usr/local/hestia/bin/v-list-users plain | awk '{print $1}'

echo "== root ve sistem zamanlanmış görevleri =="
crontab -l -u root 2>/dev/null
ls -la /etc/cron.d/

echo "== Yetkili SSH anahtarları =="
find /root /home -name authorized_keys -exec ls -l {} \; -exec cat {} \; 2>/dev/null

echo "== Son 7 günde değişmiş çalıştırılabilir dosyalar (geçici dizinler) =="
find /tmp /var/tmp /dev/shm -type f -perm -u+x -mtime -7 -ls 2>/dev/null

echo "== Dinlemedeki portlar =="
ss -tulpn

echo "== Son panel girişleri =="
tail -n 50 /var/log/hestia/auth.log 2>/dev/null

Tanımadığınız bir kullanıcı, SSH anahtarı, cron görevi ya da dinleme yapan bir süreç görürseniz sunucuyu temizlemeye çalışmayın. Root yetkisi ele geçirilmiş bir sistemin tamamen temizlendiğinden emin olmak çok zordur. Doğru yol:

  1. Sunucuyu ağdan yalıtın (konsol erişimi açık kalsın).
  2. Açığın kullanılma tarihinden önceki temiz bir yedeği belirleyin.
  3. Yeni bir sunucuya güncel HestiaCP kurun ve yalnızca site dosyalarını, veritabanlarını ve e-postaları taşıyın.
  4. Tüm panel, veritabanı, FTP ve e-posta parolalarını değiştirin.

Bu senaryo, yedeğin sunucunun kendi diskinde değil ayrı bir yerde durmasının neden şart olduğunu gösteriyor. Saldırgan root olduysa yerel yedeklere de dokunabilir. Sunucu dışı, planlı bir yedekleme çözümü bu riski azaltır.

Sık yapılan kurulum hataları

  • Dolu sunucuya kurulum: Üzerinde Nginx, MySQL ya da başka bir panel olan sunucuya kurulum ya yarıda kalır ya da iki yapılandırmanın birbirini ezdiği, bakımı zor bir sistem çıkar.
  • Sürüm uyuşmazlığı hatası: Betik desteklenmeyen sürümde durur. --force ile aşmak yerine desteklenen bir sürüm kurun.
  • timesyncd eksikliği: Minimal imajlarda saat senkronu eksik olabilir. Saat kaymış sunucuda Let's Encrypt ve iki adımlı doğrulama başarısız olur.
  • Hostname'in DNS'te çözülmemesi: Panel sertifikası alınamaz. Kurulumdan önce A kaydının yayıldığını kontrol edin.
  • Betiği resmi olmayan kaynaktan indirmek: Root yetkisiyle çalışan bir betiğin değiştirilmiş kopyası sunucuyu ilk günden ele geçirtir.
  • Gereksiz bileşen açmak: Kullanmadığınız DNS, FTP ya da API servisi her biri ayrı bir saldırı yüzeyidir.
  • Kurulum sonrası güncellemeyi unutmak: Kurulum betiği güncel sürümü kursa bile, aylar sonra çıkan yamaları siz almazsanız sunucu eskir.

Sık sorulan sorular

HestiaCP gerçekten ücretsiz mi?

Evet, açık kaynaklıdır ve lisans ücreti yoktur. Maliyet, kendi zamanınızdan ve sunucu kaynağından oluşur. Ticari destek olmadığı için güncelleme, yedek ve sorun gidermeyi sizin ya da ekibinizin üstlenmesi gerekir. Bu iş yükü, lisans tasarrufuyla birlikte değerlendirilmeli.

cPanel'den HestiaCP'ye taşınabilir mi?

Evet. HestiaCP, cPanel yedeklerini içe aktarmak için bir betik sunar, ancak her yapılandırma birebir aktarılmaz. Özellikle e-posta filtreleri, cron görevleri ve özel PHP ayarlarını taşıma sonrasında tek tek kontrol edin. DNS'i değiştirmeden önce siteleri hosts dosyası üzerinden test edin.

Ubuntu 26.04'e HestiaCP kurabilir miyim?

Kurulum betiğinin güncel sürümü 26.04'ü destekliyorsa kurulur, desteklemiyorsa betik durur. Durumu kurmadan önce resmi forum ve CHANGELOG üzerinden doğrulayın. Üretim için şu an Ubuntu 24.04 LTS daha az sürprizli bir tercihtir.

HestiaCP kaç site kaldırır?

Sabit bir sayı yoktur. Site sayısını panel değil, sitelerin trafiği, PHP uygulamalarının ağırlığı, veritabanı kullanımı ve e-posta yükü belirler. Az trafikli onlarca statik ya da küçük WordPress sitesi mütevazı bir sunucuda çalışabilir; tek bir yoğun e-ticaret sitesi ise tüm kaynağı tüketebilir.

Web terminalini kapatırsam neyi kaybederim?

Yalnızca tarayıcıdan kabuk erişimini kaybedersiniz. SSH ile aynı işleri yapabilirsiniz. Paneldeki diğer tüm özellikler çalışmaya devam eder.

Sonuç

HestiaCP kurulumu teknik olarak kısa bir iş, ama güvenli bir kurulum üç adımda tamamlanır: temiz sunucuya resmi betikle ve doğru bileşenlerle kurmak, 1.9.9 ya da üzerindeki sürümü doğrulayıp otomatik güncellemeyi açmak, web terminali gibi gerekmeyen bileşenleri kapatıp paneli IP ile kısıtlamak. Eski sürümde uzun süre kaldıysanız güncellemeyle yetinmeyin, ele geçirilme kontrolünü yapın ve şüphe varsa temiz bir sunucuya taşıyın. Temiz bir Ubuntu 24.04 ile başlamak isterseniz bulut sunucu üzerinde aynı adımları uygulayabilirsiniz.

  • #hestiacp
  • #kontrol paneli
  • #ubuntu 24.04
  • #güvenlik açığı
  • #sunucu sertleştirme
  • #fail2ban

Kontrol Panelleri

Hosting kontrol paneli seçimi: cPanel ve Plesk zamlarından sonra HestiaCP, CloudPanel, CyberPanel ve aaPanel karşılaştırması

cPanel ya da Plesk lisansınızın yenilemesi yaklaşıyorsa hangi hosting kontrol paneline geçmelisiniz? HestiaCP, CloudPanel, CyberPanel ve aaPanel'i e-posta, DNS, çoklu kullanıcı, güvenlik ve maliyet açısından karşılaştırdık. Senaryoya göre bir karar tablosu ve geçiş öncesi kontrol listesi de var.