Süreçlerinize uygun yazılımı birlikte planlayalım. Demo ve teklif için arayın: +90 546 737 48 29

TR EN DE

Web sitesi yedekleme ve izleme

Web Sitesi Güvenliği · Hazırlayan: BYK Yazılım Destek Ekibi · Güncelleme: 04.10.2026

Önlemler saldırı olasılığını azaltır, sıfırlamaz. Bir gün bir güncelleme siteyi bozabilir, bir hata veriyi silebilir ya da site ele geçirilebilir. O gün iki soru belirleyici olur: Ne kadar çabuk fark ettiniz ve temiz bir kopyaya ne kadar çabuk dönebiliyorsunuz? Birincisinin yanıtı izleme, ikincisinin yanıtı yedektir.

Barındırma firmanızın yedek alması iyi bir başlangıçtır, ancak yeterli değildir: yedeğin ne sıklıkla alındığını, kaç gün saklandığını ve sizin geri yükleyip yükleyemediğinizi bilmiyorsanız yedeğiniz yok sayılır. Bu rehber, küçük ve orta ölçekli bir site için uygulanabilir bir yedekleme ve izleme düzenini anlatır.

Düzenin dört parçası

  1. Dosya ve veritabanını birlikte yedekleyin

    Bir web sitesi iki parçadan oluşur: dosyalar (kod, tema, yüklenen görseller) ve veritabanı (içerik, siparişler, kullanıcılar). Yalnızca birini yedeklemek siteyi geri getirmez. İkisinin aynı zamana ait kopyalarını alın; yapılandırma dosyalarını ve varsa zamanlanmış görev tanımlarını da unutmayın.

    Şema: site yedeğinin parçaları; dosyalar, veritabanı, yapılandırma; sunucu dışında saklanan kopyalar
  2. 3-2-1 kuralını uygulayın

    Üç kopya, iki farklı ortam, bir kopya başka konumda. Web sitesi için bunun anlamı: yedek yalnızca aynı sunucuda durmamalı. Sunucu ele geçirilirse ya da disk arızalanırsa aynı sunucudaki yedek de gider. Kuralın ayrıntısı için Fidye yazılımı ve 3-2-1 yedekleme kuralı rehberine bakın.

    Akış şeması: otomatik yedek, sunucu dışına kopya, saklama süresi, geri yükleme tatbikatı
  3. Geri yüklemeyi deneyin

    Yedeğin işe yaradığını ancak geri yükleyerek öğrenirsiniz. Belirli aralıklarla yedeği boş bir test ortamına kurun: site açılıyor mu, veritabanı eksiksiz mi, ne kadar sürdü? İlk tatbikatta genellikle eksik bir parça ortaya çıkar; bunu sakin bir günde öğrenmek, kriz anında öğrenmekten iyidir.

    Akış şeması: geri yükleme tatbikatı; test ortamı, yedeği kurma, siteyi gezme, süreyi not etme, ortamı kapatma
  4. İzleyin: erken fark edin

    Sitenin açık olup olmadığını, dosyaların değişip değişmediğini ve arama motorunun bir sorun görüp görmediğini otomatik izleyin. Amaç her şeyi izlemek değil, bir sorun olduğunda bunu müşterinizden önce öğrenmektir.

    Şema: izleme katmanları; çalışma süresi, dosya bütünlüğü, günlükler, Search Console, sertifika ve alan adı süresi

Belirtiler: düzeniniz eksikse

  • En son yedeğin ne zaman alındığını ve nerede durduğunu bilmiyorsunuz.
  • Yedekler yalnızca sitenin bulunduğu sunucuda ya da web kökünde duruyor.
  • Bugüne kadar hiç geri yükleme denenmedi.
  • Yalnızca dosyalar ya da yalnızca veritabanı yedekleniyor.
  • Sitenin kapandığını müşteriler haber veriyor.
  • Sunucudaki bir dosyanın ne zaman, kim tarafından değiştirildiğini öğrenmenin yolu yok.
  • Erişim ve hata günlükleri kapalı ya da birkaç gün sonra siliniyor.

Yedekleme planı

Sıklık

Sıklığı, kaybetmeyi göze alabileceğiniz veri miktarı belirler. Sipariş alan bir sitede veritabanını günde en az bir kez (yoğun sitelerde daha sık), dosyaları günlük ya da haftalık yedeklemek makuldür. İçeriği nadiren değişen bir tanıtım sitesi için haftalık yedek yeterli olabilir. Büyük bir güncellemeden önce ayrıca elle yedek alın.

Saklama süresi

Yalnızca son yedeği tutmak yetmez: bir saldırı haftalar sonra fark edilebilir ve son yedekler de zararlı dosyaları içerebilir. Günlük yedekleri bir-iki hafta, haftalıkları birkaç ay, aylıkları daha uzun saklayan kademeli bir düzen kurun.

Konum ve güvenlik

  • Yedekleri web kökünde tutmayın; adresi tahmin eden herkes indirebilir.
  • En az bir kopya sunucunun dışında olsun (başka bir sunucu, bulut depolama).
  • Uzak depoya yazan hesabın silme yetkisi olmaması, sunucu ele geçirilse bile eski yedekleri korur.
  • Yedekler müşteri verisi içerir; şifreleyin ve erişimi sınırlayın.

Veritabanı yedeği

Barındırma panelinizin yedekleme aracını ya da mysqldump komutunu kullanabilirsiniz. Parolayı komut satırına yazmayın; yalnızca sizin okuyabildiğiniz bir seçenek dosyasında tutun.

# Veritabanı yedeği (parola ~/.my.cnf içinde, izinleri 600)
mysqldump --single-transaction --routines --default-character-set=utf8mb4 \
    ornek_db | gzip > /home/kullanici/yedek/db-$(date +%F).sql.gz

# Dosya yedeği (web kökünün DIŞINA yazılır)
tar -czf /home/kullanici/yedek/dosya-$(date +%F).tar.gz -C /home/kullanici public_html

# 14 günden eski yerel yedekleri sil (uzak kopya ayrıca saklanır)
find /home/kullanici/yedek -name "*.gz" -mtime +14 -delete

Geri yükleme tatbikatı

  1. Boş bir test ortamı hazırlayın (alt alan adı ya da yerel bilgisayar); arama motorlarına ve ziyaretçilere kapalı olsun.
  2. Dosya yedeğini açın, veritabanı yedeğini içe aktarın, yapılandırmayı test ortamına göre düzenleyin.
  3. Siteyi gezin: sayfalar, görseller, giriş, formlar çalışıyor mu? Son kayıtlar yerinde mi?
  4. Süreyi ve karşılaştığınız eksikleri not edin; adımları kısa bir belgeye yazın.
  5. Test ortamını kapatın; müşteri verisi içeren kopyayı ortada bırakmayın.

Tatbikatı yılda en az bir-iki kez ve yedekleme yönteminiz her değiştiğinde yineleyin.

Dosya bütünlüğü izleme

Saldırganlar çoğu zaman mevcut bir dosyayı değiştirir ya da araya yeni bir dosya ekler. Dosyaların özetlerini (hash) bilinen temiz bir anda kaydedip düzenli olarak karşılaştırmak, bu değişiklikleri görünür kılar. Aşağıdaki örnek, PHP dosyalarının SHA-256 özetlerini önceki listeyle karşılaştırır ve fark varsa bildirir.

<?php
// Komut satırından çalıştırılır: php butunluk.php
// Betik ve liste web kökünün DIŞINDA durur.
$kok   = '/home/kullanici/public_html';
$liste = __DIR__ . '/ozetler.json';

$simdiki = [];
$gezgin = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($kok, FilesystemIterator::SKIP_DOTS)
);
foreach ($gezgin as $dosya) {
    if ($dosya->isFile() && preg_match('/\.(php|phtml|js|htaccess)$/i', $dosya->getFilename())) {
        $simdiki[substr($dosya->getPathname(), strlen($kok))] = hash_file('sha256', $dosya->getPathname());
    }
}

$onceki = is_file($liste) ? (json_decode((string) file_get_contents($liste), true) ?: []) : [];
$yeni      = array_keys(array_diff_key($simdiki, $onceki));
$silinen   = array_keys(array_diff_key($onceki, $simdiki));
$degisen   = array_keys(array_filter(
    array_intersect_key($simdiki, $onceki),
    fn ($ozet, $yol) => $ozet !== $onceki[$yol],
    ARRAY_FILTER_USE_BOTH
));

if ($onceki !== [] && ($yeni || $silinen || $degisen)) {
    $rapor = "Yeni:\n" . implode("\n", $yeni) . "\n\nDeğişen:\n" . implode("\n", $degisen)
           . "\n\nSilinen:\n" . implode("\n", $silinen) . "\n";
    echo $rapor;
    // Burada raporu e-postayla kendinize gönderin.
}
if ($onceki === [] || in_array('--guncelle', $argv, true)) {
    file_put_contents($liste, json_encode($simdiki, JSON_PRETTY_PRINT));   // temiz durumu kaydet
}
  • Betiği ve özet listesini web kökünün dışında tutun; zamanlanmış görevle (cron) günde bir kez çalıştırın.
  • Kendi yaptığınız güncellemelerden sonra listeyi yenileyin; aksi hâlde her güncelleme uyarı üretir.
  • Yükleme klasörlerinde yeni PHP dosyası hiç beklenmez; bu klasörleri ayrıca izleyin.
  • Sürüm kontrolü kullanıyorsanız, sunucudaki dosyaları depodaki kopyayla karşılaştırmak aynı işi görür.
  • Bütünlük listesi sunucudayken saldırgan onu da değiştirebilir; bir kopyasını sunucu dışında saklayın.

Günlükler

Bir olaydan sonra "ne oldu, nereden girildi" sorusunun yanıtı günlüklerdedir. Günlük yoksa giriş noktası bulunamaz ve aynı açık yeniden kullanılır.

  • Erişim günlüğü: Her isteğin zamanı, adresi, kaynağı ve yanıt kodu. Barındırma panelinden açık olduğunu ve kaç gün saklandığını kontrol edin; mümkünse en az birkaç hafta saklayın.
  • Hata günlüğü: PHP ve sunucu hataları. Art arda gelen olağandışı hatalar bir deneme belirtisi olabilir.
  • Uygulama günlüğü: Başarılı ve başarısız girişler, parola değişiklikleri, yönetici işlemleri (kim, ne zaman, neyi değiştirdi).
  • FTP ve panel günlükleri: Hangi hesapla, nereden bağlanıldı?

Günlüklerde nelere bakılır: tanımadığınız PHP dosyalarına yapılan POST istekleri, kısa sürede çok sayıda 404 ya da 403 yanıtı alan kaynaklar, giriş adresine yoğun istekler, alışılmadık saatlerde yönetici girişleri. Günlüklere parola, kart bilgisi ve gereğinden fazla kişisel veri yazmayın.

<?php
// Güvenlik olayları için basit kayıt: kim, ne, nereden, ne zaman
function olayKaydet(PDO $pdo, string $olay, ?int $kullaniciId = null, string $ayrinti = ''): void
{
    $sorgu = $pdo->prepare(
        'INSERT INTO guvenlik_gunlugu (zaman, olay, kullanici_id, ip, tarayici, ayrinti)
         VALUES (NOW(), ?, ?, ?, ?, ?)'
    );
    $sorgu->execute([
        $olay,
        $kullaniciId,
        $_SERVER['REMOTE_ADDR'] ?? '',
        mb_substr($_SERVER['HTTP_USER_AGENT'] ?? '', 0, 250),
        mb_substr($ayrinti, 0, 500),   // parola ve kart bilgisi ASLA yazılmaz
    ]);
}

// Kullanım
olayKaydet($pdo, 'giris_basarisiz', null, 'eposta: ' . $eposta);
olayKaydet($pdo, 'parola_degisti', $kullaniciId);
olayKaydet($pdo, 'yonetici_eklendi', $kullaniciId, 'yeni yönetici no: ' . $yeniId);

Çalışma süresi ve dış izleme

  • Çalışma süresi izleme: Siteyi dışarıdan düzenli aralıklarla kontrol eden ve erişilemediğinde e-posta ya da SMS gönderen bir hizmet kullanın. Yalnızca "yanıt veriyor mu" değil, sayfada beklenen bir metnin bulunup bulunmadığını da denetlemek, sitenin içeriği değiştirildiğinde de uyarı almanızı sağlar.
  • Google Search Console: Sitenizi doğrulayın ve e-posta bildirimlerini açık tutun. "Güvenlik sorunları" raporu, Google sitenizde zararlı içerik ya da ele geçirilme belirtisi gördüğünde sizi uyarır. Dizine eklenen sayfalarda size ait olmayan içerikler de bir işarettir.
  • Sertifika ve alan adı süresi: SSL sertifikasının ve alan adının bitiş tarihlerini izleyin; otomatik yenileme açık olsa bile ödeme ya da doğrulama sorunu yüzünden yenilenmeyebilir.
  • Yedek raporları: Yedekleme işinin başarı ya da hata bildirimini size ulaştırın; sessizce başarısız olan yedek en sık görülen sorundur.
  • Disk alanı: Dolan disk hem siteyi hem yedeklemeyi durdurur.

Kontrol listesi

  • Dosya ve veritabanı yedeği otomatik alınıyor; sıklık veri kaybı toleransına uygun.
  • En az bir kopya sunucu dışında; yedekler web kökünde değil.
  • Kademeli saklama var; yalnızca son yedek tutulmuyor.
  • Geri yükleme en az bir kez denendi ve adımları yazıldı.
  • Yedek işinin sonucu size bildiriliyor.
  • Dosya değişiklikleri izleniyor; özet listesinin sunucu dışında kopyası var.
  • Erişim, hata ve uygulama günlükleri açık ve yeterli süre saklanıyor.
  • Çalışma süresi izleme ve Search Console bildirimleri açık.
  • Sertifika ve alan adı bitiş tarihleri takipte.

Sık sorulan sorular

Barındırma firmam zaten yedek alıyor; ayrıca almam gerekir mi?

Evet. Sağlayıcının yedeği iyi bir katmandır ama sıklığı, saklama süresi ve geri yükleme koşulları sizin ihtiyacınıza uymayabilir; hesap kapanırsa ya da sağlayıcıda sorun olursa yedeğe ulaşamayabilirsiniz. Kendi denetiminizde, sunucu dışında bir kopya bulundurun.

Yedekleme eklentisi kullanmak yeterli mi?

Yedeği sunucu dışına gönderiyorsa, sonucunu bildiriyorsa ve geri yüklemeyi denediyseniz evet. Yedeği yalnızca aynı sunucuda, web kökündeki bir klasöre yazan düzen yeterli değildir.

Hacklenen siteyi yedekten döndürünce sorun biter mi?

Bitmez. Yedekten dönmek zararlı dosyaları kaldırır ama saldırganın girdiği açık yerinde durur. Giriş noktasını bulup kapatmak, yazılımı güncellemek ve parolaları değiştirmek gerekir. Ayrıca yedeğin saldırıdan önceki bir tarihe ait olduğundan emin olun.

Günlükleri ne kadar süre saklamalıyım?

Olayların haftalar sonra fark edilebildiğini düşünerek en az birkaç hafta, mümkünse birkaç ay. Günlüklerde IP adresi gibi kişisel veriler bulunduğundan saklama süresini KVKK kapsamındaki politikanızla uyumlu belirleyin.

BYK Yazılım Destek Ekibi
Bu rehber BYK Yazılım destek ekibi tarafından hazırlanır ve düzenli olarak gözden geçirilir. Son güncelleme: 04.10.2026.

İlgili rehberler

Web sitenizi birlikte gözden geçirelim

BYK Yazılım kurumsal web siteleri geliştirir. Sitenizle ilgili sorularınız için bize yazabilirsiniz.

Bize ulaşın Kurumsal web sitesi hizmetimiz