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

Sunucu ve barındırma güvenliği

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

Kodunuz kusursuz olsa bile sunucu yanlış yapılandırılmışsa site korumasızdır: web kökünde unutulmuş bir veritabanı dökümü, herkesin yazabildiği bir klasör, şifresiz FTP ile gönderilen bir parola ya da ekrana basılan bir hata mesajı, saldırgana kapıyı açmaya yeter. Bu tür sorunların ortak özelliği, bulunmalarının çok kolay olmasıdır; otomatik taramalar bilinen dosya adlarını ve yaygın yapılandırma hatalarını sürekli dener.

Bu rehber paylaşımlı barındırma ve kendi yönettiğiniz sunucu için ortak olan temel önlemleri sıralar. Örnekler Apache ve PHP içindir.

Dört temel alan

  1. Erişim: şifreli bağlantı, ayrı parolalar

    Düz FTP, kullanıcı adını ve parolayı ağda şifresiz gönderir. Dosya aktarımı için SFTP (SSH üzerinden) ya da FTPS (TLS ile şifreli FTP) kullanın; düz FTP'yi mümkünse kapatın. Barındırma paneli, FTP, veritabanı ve yönetim paneli için birbirinden farklı, uzun parolalar belirleyin.

    Karşılaştırma: düz FTP ve ortak parola yanlış; SFTP ya da FTPS, ayrı parolalar ve iki adımlı doğrulama doğru
  2. Dosya izinleri: gereğinden fazlası yok

    Genel öneri dosyalar için 644, klasörler için 755 iznidir. Parola içeren yapılandırma dosyaları daha kısıtlı olmalıdır. 777 izni, sunucudaki herkesin o dosyaya yazabilmesi demektir; bir "çalışmıyor" sorununu çözmek için verilen 777, çoğu zaman bir sonraki güvenlik sorununun başlangıcıdır.

    Şema: dosya izinleri; dosyalar 644, klasörler 755, yapılandırma dosyaları 640 ya da 600, 777 asla
  3. Web kökünde yalnızca yayımlanacak dosyalar

    Web kökündeki her dosya, adresi bilen ya da tahmin eden herkes tarafından istenebilir. Yedekler, veritabanı dökümleri, .git klasörü, .env dosyası, phpinfo sayfası, kurulum betikleri ve editörlerin bıraktığı kopyalar orada durmamalıdır.

    Kontrol listesi: web kökünde bulunmaması gereken dosyalar; yedek arşivi, sql dökümü, .git, .env, phpinfo, kurulum betiği
  4. Bilgi sızdırmayın

    Dizin listeleme açıksa klasör içeriği herkese görünür; hata gösterimi açıksa dosya yolları, sorgular ve yapılandırma ayrıntıları ekrana basılır. İkisini de kapatın; hatalar günlüğe yazılsın.

    Şema: sunucu sıkılaştırma katmanları; şifreli erişim, izinler, temiz web kökü, kapalı listeleme, gizli hatalar, kapalı veritabanı

Belirtiler: yanlış yapılandırma nasıl fark edilir?

  • Tarayıcıda bir klasör adresini açtığınızda dosya listesi görünüyor ("Index of /...").
  • Hatalı bir adres ya da girdi, ekranda dosya yolu ve satır numarası içeren PHP uyarısı gösteriyor.
  • Web kökünde .zip, .sql, .bak, .old uzantılı ya da yedek, kopya, eski adlı dosyalar var.
  • siteniz/.git/, siteniz/.env ya da siteniz/phpinfo.php adresleri "bulunamadı" yerine içerik döndürüyor. Bunu kendi sitenizde deneyin.
  • Dosya yöneticisinde 777 izinli klasörler ya da yazılabilir yapılandırma dosyaları var.
  • FTP programınız bağlanırken "şifresiz bağlantı" uyarısı veriyor.
  • Veritabanı yönetim aracı (ör. phpMyAdmin) herkese açık, tahmin edilebilir bir adreste duruyor.

Erişim hesapları

  • SFTP ya da FTPS: FTP programınızda protokolü açıkça seçin. Sertifika uyarılarını körü körüne onaylamayın.
  • Kişiye özel hesaplar: Ajans, serbest geliştirici ve çalışanlar için ayrı hesaplar açın; iş bitince kapatın. Ortak hesapta kimin ne yaptığını bilemezsiniz.
  • Yetkiyi daraltın: Bir FTP hesabı yalnızca ihtiyaç duyduğu klasörü görsün.
  • İki adımlı doğrulama: Barındırma panelinde ve alan adı kayıt firması hesabınızda açın. Alan adı hesabı ele geçirilirse site ve e-posta başka yere yönlendirilebilir.
  • SSH kullanıyorsanız: Parola yerine anahtarla giriş, root ile doğrudan girişin kapatılması ve güncel bir sistem temel önlemlerdir.
  • Parolaları kaydettiğiniz yer: FTP programlarında düz metin olarak saklanan parolalar, bilgisayarınıza bulaşan zararlı yazılımların hedefidir. Şifre yöneticisi kullanın ve bilgisayarınızı güncel tutun.

Dosya izinleri ve sahiplik

İzin rakamları sırasıyla dosya sahibi, grup ve diğer kullanıcıların haklarını gösterir (4 okuma, 2 yazma, 1 çalıştırma).

  • Dosyalar 644: Sahibi okur ve yazar, diğerleri yalnızca okur.
  • Klasörler 755: Sahibi yazar; diğerleri içine girip okuyabilir.
  • Yapılandırma dosyaları: Veritabanı parolası içeren dosyalar için 640 ya da 600. Hangisinin çalıştığı, PHP'nin hangi kullanıcıyla çalıştığına bağlıdır; barındırma sağlayıcınızın önerisine bakın.
  • Yazılabilir klasörler: Yalnızca yükleme ve önbellek gibi gerçekten yazılması gereken klasörler yazılabilir olsun; bu klasörlerde betik çalıştırmayı kapatın. Bkz. Dosya yükleme güvenliği.

SSH erişiminiz varsa izinleri toplu düzeltmek için:

# Web kökünde çalıştırın: klasörler 755, dosyalar 644
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

# Parola içeren yapılandırma dosyası daha kısıtlı
chmod 640 ayarlar.php

Dizin listeleme ve hassas dosyalar

Aşağıdaki blok dizin listelemeyi kapatır, nokta ile başlayan dosya ve klasörlere (.env, .git, .htpasswd) ve yaygın yedek uzantılarına erişimi engeller.

# Dizin listelemeyi kapat
Options -Indexes

# Nokta ile başlayan dosyalar (.env, .htpasswd, .user.ini ...)
<FilesMatch "^\.">
    Require all denied
</FilesMatch>

# Nokta ile başlayan klasörler (.git, .svn ...); .well-known hariç
RedirectMatch 404 "/\.(?!well-known/)"

# Yedek, döküm ve editör kopyaları
<FilesMatch "(?i)(\.(sql|bak|old|orig|save|swp|log|ini|sh|dist)|~)$">
    Require all denied
</FilesMatch>

Bu kurallar ikinci katmandır; asıl çözüm bu dosyaları web kökünde hiç bulundurmamaktır:

  • Yedekler: Web kökünün dışında ve mümkünse sunucunun da dışında saklayın.
  • .git klasörü: Kaynak kodun tamamını ve geçmişini içerir. Canlıya yalnızca yayımlanacak dosyaları aktarın.
  • .env ve yapılandırma dosyaları: Mümkünse web kökünün bir üst klasöründe tutun.
  • phpinfo sayfaları ve kurulum betikleri: İşiniz bitince silin.
  • Editör kopyaları: config.php.bak, config.php~, config.php.save gibi dosyalar PHP olarak çalışmaz, düz metin olarak indirilebilir ve içindeki parolalar okunur.
  • Veritabanı yönetim araçları: Sürekli açık bırakmayın; gerekiyorsa IP kısıtı ve ek parola ile koruyun.

PHP ayarları

Canlı ortamda hatalar ekrana basılmamalı, günlüğe yazılmalıdır. Ayarlar php.ini, FPM kullanan barındırmalarda web kökündeki .user.ini ya da barındırma panelindeki PHP seçenekleri üzerinden yapılır.

; Canlı ortam
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /home/kullanici/logs/php-hata.log
expose_php = Off
allow_url_include = Off
session.cookie_secure = 1
session.cookie_httponly = 1
session.cookie_samesite = Lax
session.use_strict_mode = 1
  • Hata günlüğü web kökünün dışında olmalı ya da dışarıdan erişime kapatılmalıdır.
  • allow_url_include kapalı kalmalıdır.
  • Kullanmadığınız PHP eklentilerini ve tehlikeli işlevleri kapatmak ek bir katmandır; uygulamanızın neye ihtiyaç duyduğunu bilerek yapın.

Yapılandırma dosyasını web kökünün dışına almak için:

<?php
// public_html/index.php  ->  ayarlar bir üst klasörde, web'den erişilemez
$ayarlar = require dirname(__DIR__) . '/gizli/ayarlar.php';

$pdo = new PDO(
    'mysql:host=localhost;dbname=' . $ayarlar['db_ad'] . ';charset=utf8mb4',
    $ayarlar['db_kullanici'],
    $ayarlar['db_parola'],
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false]
);

Veritabanı erişimi

  • Dışa kapalı: Veritabanı sunucusu yalnızca yerel bağlantıları (localhost) kabul etmelidir. Uzaktan erişim gerekiyorsa yalnızca belirli IP adreslerine ve mümkünse şifreli tünel üzerinden açın.
  • Site başına ayrı kullanıcı: Her site kendi veritabanını ve kendi kullanıcısını kullansın; biri ele geçirildiğinde diğerleri etkilenmesin.
  • En az yetki: Uygulama kullanıcısına yalnızca gereken yetkileri verin. Bkz. SQL enjeksiyonu rehberi.
  • Parola: Veritabanı parolası başka hiçbir yerde kullanılmasın; kaynak kod deposuna yazılmasın.

Aynı hesaptaki diğer siteler

Aynı barındırma hesabında birden fazla site varsa, genellikle birbirlerinin dosyalarına erişebilirler. En zayıf site ele geçirildiğinde diğerleri de etkilenir. Unutulmuş deneme siteleri, eski kampanya sayfaları ve kullanılmayan alt alan adları en sık görülen giriş noktalarıdır.

  • Kullanılmayan siteleri ve alt alan adlarını kaldırın.
  • Önemli siteleri ayrı hesaplarda barındırın.
  • Bir site temizlenirken aynı hesaptaki tüm siteler birlikte incelenmelidir.

Barındırma hizmeti seçerken sorulacak sorular

Sunucu güvenliğinin bir bölümü sizin değil, sağlayıcınızın elindedir. Hizmet alırken ya da mevcut hizmetinizi değerlendirirken şu soruların yanıtını öğrenin:

  • Hesaplar birbirinden yalıtılmış mı? Aynı sunucudaki başka bir müşterinin sitesi ele geçirilirse sizin dosyalarınıza erişilebilir mi?
  • Hangi PHP sürümleri sunuluyor; desteği biten sürümler ne zaman kaldırılıyor?
  • SFTP ya da FTPS ve SSH erişimi var mı? Düz FTP kapatılabiliyor mu?
  • Panelde iki adımlı doğrulama var mı?
  • Yedek ne sıklıkla alınıyor, kaç gün saklanıyor, geri yüklemeyi kendiniz yapabiliyor musunuz?
  • Ücretsiz SSL sertifikası (ör. Let's Encrypt) otomatik kurulup yenileniyor mu?
  • Erişim ve hata günlüklerine ulaşabiliyor musunuz; kaç gün saklanıyor?
  • DDoS koruması ve web uygulama güvenlik duvarı sunuluyor mu?
  • Bir güvenlik olayı olduğunda destek ekibine hangi kanaldan, hangi saatlerde ulaşılıyor?

Fiyat tek ölçüt olmamalıdır; yalıtım, yedek ve destek, bir olay anında aradaki farkı belirler.

Kontrol listesi

  • Dosya aktarımı SFTP ya da FTPS ile; düz FTP kullanılmıyor.
  • Panel, FTP, veritabanı ve yönetici parolaları birbirinden farklı; panelde iki adımlı doğrulama açık.
  • Her kişi kendi hesabını kullanıyor; eski hesaplar kapatıldı.
  • Dosyalar 644, klasörler 755; 777 izinli öğe yok; yapılandırma dosyaları kısıtlı.
  • Dizin listeleme kapalı.
  • Web kökünde yedek, döküm, .git, .env, phpinfo, kurulum betiği ve editör kopyası yok.
  • display_errors kapalı, log_errors açık; günlük dışarıdan erişilemiyor.
  • Veritabanı dışarıdan erişime kapalı; her site ayrı kullanıcıyla bağlanıyor.
  • Kullanılmayan siteler ve alt alan adları kaldırıldı.

Sık sorulan sorular

SFTP ile FTPS arasındaki fark nedir?

İkisi de bağlantıyı şifreler ama farklı protokollerdir. SFTP, SSH üzerinden çalışır (genellikle 22 numaralı bağlantı noktası). FTPS, klasik FTP'nin TLS ile şifrelenmiş hâlidir. Barındırma sağlayıcınız hangisini sunuyorsa onu kullanın; ikisi de düz FTP'den güvenlidir.

Bir eklenti klasöre 777 izni istiyor; ne yapmalıyım?

Vermeyin. Sorun genellikle dosya sahipliğinden kaynaklanır; 755 ile çalışması gerekir. Çalışmıyorsa barındırma sağlayıcınıza dosya sahipliğini ve PHP'nin hangi kullanıcıyla çalıştığını sorun.

Paylaşımlı barındırmada bunların hangisi benim elimde?

Parolalar, FTP hesapları, dosya izinleri, web kökündeki dosyalar, .htaccess kuralları ve PHP sürümü ile temel PHP ayarları genellikle sizdedir. İşletim sistemi, web sunucusu ve veritabanı sunucusunun güncelliği sağlayıcıdadır.

Yedek dosyasını tahmin edilemez bir adla web kökünde tutsam olur mu?

Önerilmez. Dosya adları günlüklerden, dizin listelemeden ya da otomatik denemelerle öğrenilebilir. Yedekleri web kökünün dışında tutun.

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