Sahadan Notlar
📌 Bu yazı WordPress güvenlik ve performans serimizin bir parçasıdır.
-
- WordPress Sitesi Neden Yavaş? → grafiqer.com/wordpress-sitesi-neden-yavas/
- WordPress Önbelleği Nasıl Çalışır? → grafiqer.com/wordpress-onbellek-nasil-calisir/
1. Cloudflare WAF: Kural Hiyerarşisi ve Mantığı
İzin Verilenler → Doğrulananlar → Engellenenler
Güvenlik kurallarını rastgele sıralamak ciddi sorunlara yol açar. Arama motorlarını engellemek, ödeme bildirimlerini kesmek veya meşru kullanıcıları kapıda bırakmak bunların başında geliyor.
Tüm sitelerde WAF kurallarını şu mantıksal huni üzerine kurdum:
- 1. Katman — İzin Verilenler (Skip/Allow): Kesinlikle geçmesi gereken trafik. En üst sıraya yerleştirilir.
- 2. Katman — Doğrulananlar (Managed Challenge): Şüpheli ama engellemek istemediğimiz trafik. Captcha ile süzülür.
- 3. Katman — Engellenenler (Block): Kesinlikle istemediğimiz trafik. En alta yerleştirilir.
2. Geo-Fencing: Yurt Dışı Bot Trafiğini Kapıda Kesmek
Problem
Yönettiğim sitelerin büyük çoğunluğu Türkiye’ye hizmet veriyor. Ama saldırıların kaynağına baktığımda Fransa, Hollanda, Rusya, Çin gibi ülkelerin ön sıralarda yer aldığını gördüm.
Bu ülkelerden gelen meşru ziyaretçi oranı sıfıra yakın. Ama sunucuya yükledikleri anlamsız bot trafiği çok yüksekti.
Çözüm ve iş sonucu
Türkiye dışından gelen tüm trafiğe Managed Challenge (doğrulama zorunluluğu) koşulunu getirdim. Gerçek bir insan bu doğrulamayı birkaç saniyede geçer. Bot ise geçemez.
Arama Motoru İstisnası — Kritik Detay
Geo-fencing kuralını koyduktan sonra fark ettim ki Googlebot ve Yandex da yurt dışından geliyor. Bu kuralı istisna olmadan uygulamak SEO’yu doğrudan etkiler.
Çözüm: Geo-fencing kuralına “Known Bots” istisnası ekledim. Cloudflare’in tanıdığı arama motoru botları doğrulama ekranıyla karşılaşmıyor, doğrudan içeri giriyor.
3. WooCommerce Whitelist: Ödeme Bildirimlerini Korumak
WooCommerce kullanan sitelerde güvenlik kuralları beklenmedik bir soruna yol açabiliyor: PayPal ve Stripe gibi ödeme sistemlerinin webhook bildirimleri WAF kurallarına takılıyor.
Sonuç: Ödeme gerçekleşiyor ama site bunu öğrenemiyor. Sipariş durumu güncellenmez, stok düşmez, müşteriye onay maili gitmez.
Çözüm
wc-api parametresi içeren tüm isteklere en üst sıradan Skip (geç) izni tanımladım. Bu istekler hiçbir WAF kuralına takılmadan doğrudan sunucuya ulaşıyor.
4. Yapay Zeka Botu İstisnası
Cloudflare’in AI bot engelleme özelliği varsayılan olarak birçok yapay zeka tarayıcısını blokluyor. Bu kimi zaman istenen bir şey, kimi zaman değil.
Google NotebookLM gibi araçları içerik araştırması için aktif olarak kullanıyorum. Bu botun siteye erişememesi kendi iş akışımı engelliyor.
Cloudflare AI engelleme listesinden belirli botları istisna olarak tanımlamak mümkün. Bu şekilde istemediğin botları engellerken, aktif kullandıklarına izin veriyorsun.
5. Wordfence: Cloudflare’in Geçirdiği Trafiği Süzmek
Neden hem Cloudflare hem Wordfence?
Cloudflare dış katmanda çalışır — sunucuya ulaşmadan trafiği filtreler. Ama her şeyi tutamaz. Meşru görünen ama kötü niyetli istekler içeri girebilir.
Wordfence bu durumda devreye giriyor: WordPress uygulama katmanında, PHP motorundan önce yüklenerek son savunma hattını oluşturuyor.
Rate limiting: 404 taramasına anlık tepki
Kötü niyetli botların en yaygın davranışlarından biri açık tarama — var olmayan URL’lere art arda istek göndererek sistemdeki açıkları tespit etmeye çalışmak.
Wordfence’te şu kuralı tanımladım: Saniyede 1’den fazla 404 hatası üreten IP adresi anında 10 günlük bloğa alınır.
Statik ve dinamik yük ayrımı
Wordfence’in her sayfa yüklemesinde devreye girmesi gereksiz kaynak tüketimine yol açar. Statik sayfalar için bu maliyet anlamsız.
Yapılandırmayı şu şekilde optimize ettim: HTML önbelleği ile statik sayfalar Wordfence’i devre dışı bırakarak servis ediliyor. Wordfence yalnızca form gönderimleri, giriş işlemleri ve dinamik POST isteklerinde devreye giriyor.
Sonuç: Ücretsiz Planda Kurumsal Güvenlik Mümkün
Bu yapıyı kurduğumda elde ettiğim sonuçları somut olarak şöyle özetleyebilirim:
- Yurt dışı kaynaklı bot trafiği neredeyse sıfıra indi.
- Sunucu CPU kullanımı saldırı dönemlerinde bile kontrol altında kaldı.
- Arama motorları kesintisiz içeri girmeye devam etti — SEO etkilenmedi.
- WooCommerce ödeme bildirimleri hiçbir zaman kesilmedi.
- Sayfa yükleme süreleri milisaniye düzeyinde kaldı.
Bütün bunlar Cloudflare ücretsiz planı ile elde edildi. Ücretli bir güvenlik çözümüne gerek kalmadı.
Bir sonraki yazımda bu güvenlik katmanının sunucu tarafındaki tamamlayıcısını anlatacağım: merkezi cron mimarisi, Redis object cache, Nginx ve WP Fastest Cache kombinasyonu ve DNS çıkış IP optimizasyonu.
Birden fazla WordPress sitesinin güvenlik ve performans yönetimini profesyonel olarak devretmek istiyorsanız bize ulaşabilirsiniz.
📋 Kısa Özet: Cloudflare + Wordfence Yapısı
- Kural hiyerarşisi: İzin Verilenler → Doğrulananlar → Engellenenler sırasına uy
- Geo-fencing: Yurt dışı trafiğe Managed Challenge — Known Bots istisnasını unutma
- WooCommerce: wc-api parametresine en üst sıradan Skip izni tanımla
- Wordfence rate limiting: Saniyede 1+ 404 hatası üreten IP’yi anında bloke et
- Statik/dinamik ayrımı: Wordfence’i yalnızca POST işlemlerinde devreye al
Mustafa Ketancı
/ WordPress Dev. & Web Operasyon Yöneticisi | Kurumsal İletişim ve Dijital Medya Direktörü