Sitesi hacklenen işletme sahiplerinin ilk tepkisi genelde aynı oluyor: “Biz kimseye bir şey yapmadık, niye bizi seçtiler?” Cevap, kimsenin sizi seçmediğidir.
İnternette sürekli çalışan otomatik tarayıcılar var. Bilinen bir açığı — mesela belli bir eklentinin eski bir sürümünü — tarayıp buldukları her siteye aynı saldırıyı deniyorlar. Site küçük ya da büyük olması fark etmiyor; kapının açık olması yetiyor.
İyi haber şu: bu tür saldırılara karşı korunmanın büyük kısmı olağanüstü bir güvenlik uzmanlığı değil, düzenli bakımdır.
Temel: bağlantı ve alan adı
1. HTTPS her sayfada zorunlu
SSL/TLS sertifikası, ziyaretçi ile sunucu arasındaki trafiği şifreler. Sertifikasız site tarayıcıda “Güvenli değil” uyarısı alır; iletişim formu dolduran kimse kalmaz. Google da HTTPS’i uzun süredir bir sıralama sinyali olarak sayıyor.
Sertifika bugün ücret gerektirmiyor — Let’s Encrypt üzerinden otomatik yenilenebiliyor. Dikkat edilecek iki şey:
- Tam yönlendirme:
http://ile gelen her adreshttps://sürümüne yönlensin. - Karışık içerik yok: HTTPS sayfa içinde
http://ile çağrılan görsel veya script kalmasın, yoksa tarayıcı yine uyarır.
2. HSTS başlığı
Strict-Transport-Security başlığı tarayıcıya “bu siteye bir daha asla şifresiz bağlanma” der. Bir kez ziyaret edildikten sonra araya girme saldırılarının bir kısmını baştan keser.
3. Alan adı sizin adınıza kayıtlı olmalı
Güvenliğin en çok atlanan maddesi teknik bile değil. Alan adı sizi yapan ajansın hesabında duruyorsa, bir anlaşmazlıkta siteniz de e-postanız da rehin kalır. Kayıt sahibi (registrant) şirketinizin adına olmalı, panel erişimi sizde durmalı.
Bunun yanında: alan adına kayıt kilidi (registrar lock) koyun ve otomatik yenilemeyi açın. Süresi dolduğu için kaybedilen alan adı, hacklenmekten daha sık yaşanıyor.
Yazılım tarafı
4. Güncellemeleri geciktirmeyin
Bir eklentinin güvenlik güncellemesi yayımlandığı an, o açık artık herkese açıktır — yayımlanan yama, aynı zamanda saldırganlar için tarif niteliğindedir. Güncelleme ile saldırı arasındaki süre bazen saatlerle ölçülüyor.
Kural: çekirdek yazılım, tema ve eklentiler otomatik güncellensin; büyük sürüm atlamaları önce test kopyasında denensin.
5. Kullanmadığınız eklenti ve temayı silin
Pasif duran eklenti de sunucuda dosya olarak durur ve açığı istismar edilebilir. “Belki lazım olur” diye bırakılan eklentiler, en sık kullanılan giriş yollarından biridir. Devre dışı bırakmak yetmez — silin.
6. Yönetici sayısını sınırlayın
Herkese yönetici yetkisi vermeyin. İçerik girecek kişi editör yetkisiyle çalışabiliyorsa yönetici olmasın. İşten ayrılan veya iş biten kişilerin hesaplarını kapatın; ajans değiştirdiğinizde eski ajansın erişimini kaldırın.
7. Yönetim panelini gizleyin ve sınırlayın
Standart giriş adresleri (/wp-admin, /administrator) botların ilk denediği yerlerdir. Yapılabilecekler: giriş adresini değiştirmek, başarısız deneme sayısını sınırlamak, mümkünse panele yalnızca belli IP’lerden erişime izin vermek.
Kimlik ve erişim
8. Parolalar benzersiz olsun
En sık görülen senaryo şu: aynı parola hem hostingde hem e-postada hem de başka bir sitede kullanılmış; o başka site sızmış ve parola listesi dolaşıma girmiş. Saldırgan sizin siteye girmedi, sadece elindeki parolayı denedi.
Her hesap için ayrı, uzun parola. Bunu akılda tutmanın yolu bir parola yöneticisi kullanmaktır; ekipte ortak kullanılan hesaplar için de paylaşımlı kasa mantığı işler.
9. İki adımlı doğrulama (2FA)
Hosting paneli, alan adı paneli, site yönetim paneli, e-posta ve Google İşletme Profili — hepsinde açık olmalı. Parola sızsa bile ikinci adım olmadan giriş yapılamaz. Bu, listedeki en yüksek getirili maddedir.
10. Google İşletme Profilinizi de koruyun
Yerel işletmeler için sitenin kendisi kadar kritik bir varlık Google İşletme Profili. Ele geçirilen profilde telefon numarası, web adresi ve hatta işletme adı değiştirilebilir; müşteri sizi arıyor sanıp başkasına ulaşır. Profil sahipliği şirket hesabında olsun, yönetici erişimleri düzenli gözden geçirilsin, hesapta 2FA açık olsun.
Süreklilik
11. Yedek: otomatik, dışarıda ve test edilmiş
Üç şart birlikte sağlanmalı:
- Otomatik: elle alınan yedek, ihtiyaç duyulduğunda hep birkaç ay eskidir.
- Dışarıda: yedek sitenin durduğu sunucuda olmasın. Sunucu ele geçtiğinde ya da sağlayıcı çöktüğünde yedek de gider.
- Test edilmiş: yılda en az bir kez yedekten geri dönmeyi deneyin. Bozuk yedek, yedek yokluğundan daha tehlikelidir çünkü yanlış bir güven verir.
12. Sunucu ve PHP sürümü desteklenen sürümde olsun
Destek dışı kalmış bir PHP veya veritabanı sürümü artık güvenlik yaması almaz. Hosting panelinizden sürümü kontrol edin; eski sürümde kaldıysanız güncellemeden önce siteyi test kopyasında deneyin.
13. Güvenlik başlıkları
Sunucu tarafında eklenen birkaç HTTP başlığı, bütün bir saldırı sınıfını ucuza kapatır:
| Başlık | Ne yapar |
|---|---|
Content-Security-Policy |
Sayfada hangi kaynaktan kod çalışabileceğini sınırlar |
X-Content-Type-Options: nosniff |
Tarayıcının dosya türünü tahmin etmesini engeller |
Referrer-Policy |
Dışarı çıkan bağlantılarda adres bilgisinin sızmasını sınırlar |
Strict-Transport-Security |
Şifresiz bağlantıyı baştan reddettirir |
14. Form ve dosya yükleme noktalarını kapatın
İletişim ve teklif formları, spam botlarının ve enjeksiyon denemelerinin ilk uğradığı yerdir. Sunucu tarafında doğrulama yapın, dosya yükleme varsa yalnızca beklenen türlere izin verin ve yüklenen dosyaların çalıştırılabildiği bir dizine düşmediğinden emin olun.
KVKK tarafı: güvenlik sadece teknik değil
Türkiye’de kişisel veri işleyen her web sitesinin — iletişim formu bile olsa — yerine getirmesi gereken yükümlülükler var:
- Aydınlatma metni: Hangi verinin hangi amaçla işlendiği, ne kadar saklandığı, kime aktarıldığı açıkça yazılmalı.
- Açık rıza: Pazarlama izni ile hizmet için gereken veri işleme ayrı ayrı ele alınmalı; tek bir kutucukla her şeye onay alınmamalı.
- Çerez yönetimi: Zorunlu olmayan çerezler ziyaretçi onay vermeden çalışmamalı.
- Veri minimizasyonu: Formda gerçekten gerekmeyen alanı istemeyin. Toplanmayan veri sızmaz.
- Yurt dışı aktarım: Sunucu, analitik veya form servisi yurt dışındaysa aktarım şartlarının sağlanması gerekir.
- VERBİS: Kayıt yükümlülüğü kapsamındaysanız kaydınızı yaptırın.
Bir veri ihlali yaşandığında Kurul’a ve ilgili kişilere bildirim yükümlülüğü doğar. Bu yüzden güvenlik, IT işi olmanın ötesinde bir uyum meselesidir.
Aylık 15 dakikalık rutin
Karmaşık bir güvenlik programına gerek yok. Ayda bir şunlara bakmak, riskin büyük kısmını kapatır:
- Güncellemeler yapıldı mı, bekleyen var mı?
- Son yedek ne zaman alındı, dışarıda mı duruyor?
- Yönetici listesinde tanımadığınız hesap var mı?
- SSL sertifikası ne zaman yenilenecek, alan adı ne zaman bitiyor?
- Search Console’da güvenlik uyarısı var mı?
- Sitede kullanılmayan eklenti birikti mi?
Kurumsal web sitesi projelerimizde bu maddelerin çoğu mimari kararla baştan çözülüyor: site statik olarak üretildiği için sunucuda çalışan bir yönetim paneli veya veritabanı saldırı yüzeyi bırakmıyor, güncelleme bekleyen eklenti listesi oluşmuyor. Bakım anlaşması olan projelerde bu rutini biz yürütüyoruz; olmayanlarda listeyi teslimde veriyoruz ki kendiniz takip edebilesiniz.