WORDPRESS GÜVENLİK HARDENİNG YAPMAK VE SALDIRI YÜZEYİNİ AZALTMAK
Bir WordPress sitesinin güvenliği, tek bir “eklenti kurmakla” değil; küçük ama tutarlı kararlarla güçlenir. Hardening yaklaşımı tam da bunu hedefler: saldırganın işini zorlaştırmak, hataya açık noktaları azaltmak ve olası bir olayda hızlı toparlanabilmeyi sağlamak.
Web siteleri büyüdükçe kullanıcı sayısı, entegrasyonlar, eklentiler, tema özelleştirmeleri ve içerik üretim hızı artar. Bu hareketlilik, yanlış yapılandırmaların ve unutulan ayarların birikmesine neden olabilir. Sonuçta saldırı yüzeyi genişler; deneme-yanılma ile zayıf noktalar bulunması kolaylaşır.
Bu rehber; BT ekipleri, pazarlama ekipleri ve karar vericiler için uygulanabilir bir yol haritası sunar. Hedef, güvenliği mümkün olduğunca otomatikleştirmek ve insan hatasını azaltmaktır. İhtiyaç duyduğunuzda ekip içi standartları oturtmak için WordPress eğitimi ile süreçleri hızlandırabilirsiniz.

Saldırı yüzeyini anlamak ve riskleri haritalamak
Hardening’e başlamadan önce “neyi koruyorum?” sorusunu somutlaştırın. WordPress tarafında risk, yalnızca site dosyalarıyla sınırlı değildir; alan adı, DNS, CDN, e-posta akışları, ödeme altyapısı, üçüncü taraf script’ler ve kullanıcı hesapları da aynı zincirin parçalarıdır.
Saldırı yüzeyi dediğimiz şey; bir saldırganın erişebileceği veya deneyebileceği tüm giriş noktalarının toplamıdır. Bu noktaları daraltmak için önce görünür hâle getirmek gerekir. Aşağıdaki bileşenleri tek tek listeleyin: tema ve eklentiler, özel endpoint’ler, API erişimleri, yönetim paneli erişimi, dosya yükleme alanları, cron işleri ve sunucu servisleri.
Varlık envanteri çıkarmak ve kritik akışları belirlemek
Hangi eklentiler ne işe yarıyor, hangi sayfalar dönüşüm için kritik, hangi formlar veri topluyor? Bu soruların cevapları, önceliklendirmeyi belirler. Örneğin ödeme sayfası veya teklif formu, içerik sayfalarından daha yüksek koruma gerektirebilir. Ayrıca staging ve prod ortamlarını ayırmak, test amaçlı erişimlerin gerçek siteyi etkilemesini engeller.
Tehdit modeli oluşturmak ve senaryoları yazmak
En yaygın saldırı senaryolarını gerçekçi şekilde yazın: brute force ile yönetici girişi denemek, bilinen bir eklenti açığını kullanmak, XSS ile oturum çalmak, dosya yükleme ile zararlı script sokmak veya API üzerinden veri sızdırmak. Bu liste, kontrol noktalarını seçmenizi sağlar. Tehdit modeliniz yoksa alınan önlemler dağınık kalabilir.
Çekirdek ve eklentileri güncel tutmak
WordPress ekosisteminde açıkların önemli bir bölümü eski sürümlerden kaynaklanır. Güncelleme, hardening’in en yüksek getirili adımıdır. Ancak üretim ortamında “hemen güncelle” yaklaşımı da riskli olabilir; bu yüzden kontrollü bir süreç kurmak gerekir.
Önce düzenli bakım pencereleri tanımlayın. Staging ortamında güncelleme testleri yapın; kritik sayfalar, form akışları ve ödeme adımlarını kontrol edin. Ardından üretime alın. Bu döngüyü yazılı bir kontrol listesiyle standartlaştırmak, ekip değişse bile kaliteyi korur.
Otomatik güncelleme stratejisi kurgulamak ve izlemek
Çekirdek güvenlik güncellemeleri çoğu zaman otomatik gelebilir; fakat tema/eklenti güncellemelerinde ihtiyatlı olmak mantıklıdır. Otomatik güncelleme kullanacaksanız; güncelleme sonrası sağlık kontrolü, hata log takibi ve geri dönüş planını mutlaka ekleyin. Güncelleme = risk azaltma olsa da “kontrolsüz güncelleme” kesinti üretebilir.
Az eklentiyle çalışmak ve bağımlılıkları azaltmak
Her eklenti yeni bir potansiyel giriş noktasıdır. Kullanılmayan eklentileri devre dışı bırakmak yetmez; kaldırmak gerekir. Benzer işlevleri üst üste yapan eklentileri tekleştirin. Eklenti seçerken; güncelleme sıklığı, geliştirici desteği, kullanıcı yorumları ve güvenlik geçmişi gibi sinyalleri takip edin.

Yetkilendirme ve parola politikası sıkılaştırmak
Birçok olayın başlangıç noktası zayıf kimlik doğrulamadır. Yönetim paneli erişimleri, FTP/SSH erişimleri ve üçüncü taraf entegrasyon token’ları aynı disiplinle ele alınmalıdır. Hedef, “en az ayrıcalık” ilkesini uygulamak ve hesap ele geçirme ihtimalini düşürmektir.
Rol ve izinleri sadeleştirmek ve ayrıştırmak
Her kullanıcıya “yönetici” vermek kısa vadede rahat görünür ama uzun vadede büyük risk yaratır. Editör, yazar, katkıda bulunan gibi rollerin gerçek ihtiyaçlara göre dağıtılması gerekir. İçerik üreten ekip, tema/eklenti kurma yetkisine sahip olmamalı; teknik ekip de günlük içerik akışına gereksiz müdahil olmamalıdır. Böylece bir hesabın ele geçirilmesi, tüm siteyi ele geçirmek anlamına gelmez.
İki faktörlü doğrulama eklemek ve zorunlu kılmak
2FA, brute force ve parola sızıntısı senaryolarında etkili bir bariyerdir. Özellikle yönetici ve editör rollerinde zorunlu kılın. Ayrıca yönetim paneli giriş sayfasında rate limit, IP kısıtları ve CAPTCHA gibi ek önlemler de kullanılabilir. Parola yöneticisi kullanımını teşvik etmek, tekrar eden parolaları azaltır.
Yönetim panelini daraltmak ve erişimi sınırlamak
wp-admin ve wp-login.php, saldırganların en sık yokladığı yerlerdir. Amacınız bu noktaları tamamen gizlemek değil; erişimi mümkün olduğunca azaltmak, denemeleri yavaşlatmak ve anormallikleri görünür kılmaktır.
IP kısıtlamak ve güvenli ağ geçitleri kullanmak
Mümkünse yönetim paneline sadece belirli IP’lerden erişim verin. Değişken IP’ler varsa VPN veya Zero Trust yaklaşımıyla tanımlı cihazlardan erişim sağlayın. Bu yöntem, botların deneme yapmasını büyük ölçüde engeller. Ayrıca wp-admin’e ek bir Basic Auth katmanı koymak da sık kullanılan pratiklerden biridir.
XML-RPC ve gereksiz endpointleri kapatmak
XML-RPC bazı senaryolarda gerekli olsa da çoğu modern kurulumda kullanılmaz ve brute force/reflective saldırılarda istismar edilebilir. Kullanılmıyorsa kapatın. REST API’yi tamamen kapatmak çoğu zaman doğru değildir; bunun yerine yetkisiz istekleri sınırlamak ve hassas endpointleri korumak daha dengeli bir yaklaşımdır.
wp-config ve güvenlik sabitlerini doğru ayarlamak
WordPress’in yapılandırma katmanı, hem uygulama güvenliği hem de operasyonel disiplin için kritiktir. Basit ayarlar bile saldırı yüzeyini azaltır: dosya düzenlemeyi kapatmak, admin panelinde plugin/theme editörünü devre dışı bırakmak ve debug çıktısını üretimde kapalı tutmak gibi.
Dosya düzenlemeyi kapatmak ve anahtarları yenilemek
Aşağıdaki örnek, yaygın güvenlik sabitlerini gösterir. Üretimde debug’u kapalı tutmak ve dosya düzenlemeyi engellemek, ele geçirilmiş bir oturumun daha fazla zarar vermesini zorlaştırır. Ayrıca “authentication keys/salts” değerlerini düzenli aralıklarla yenilemek, sızıntı risklerini azaltır.
// wp-config.php (örnek)
define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', false); // güncellemeleri tamamen kapatmak genelde önerilmez
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);
define('FORCE_SSL_ADMIN', true);
// Çerez güvenliği (HTTPS varsayımıyla)
define('COOKIE_DOMAIN', '');
Veritabanı önekini değiştirmek ve erişimi sınırlamak
Varsayılan tablo öneki tek başına güvenlik sağlamaz, fakat otomatik taramalarda küçük bir engel yaratabilir. Asıl kritik nokta; veritabanı kullanıcısının minimum yetkilere sahip olması, uzaktan erişimin kısıtlanması ve yedeklerin erişilebilir dizinlerde tutulmamasıdır. Ayrıca wp-config.php dosyasının web kökünün bir üstüne taşınması da bazı kurulumlarda ek koruma sağlar.
Dosya izinlerini doğru kurgulamak ve kilitlemek
Yanlış dosya izinleri, saldırganların yükleme dizinlerine script bırakmasını veya yapılandırma dosyalarını okumasını kolaylaştırabilir. İzinleri “en az yetki” mantığıyla ayarlayın: dosyalar genellikle 644, dizinler 755 olacak şekilde yapılandırılır. Yazma izni gereken yerleri (uploads gibi) netleştirip diğerlerini kilitleyin.
Upload dizinini korumak ve script çalıştırmayı engellemek
Medya yükleme dizini, kötüye kullanım için en sık hedeflenen alanlardan biridir. Upload altındaki PHP çalıştırmayı kapatmak, “yükledim ve çalıştırdım” sınıfındaki saldırıları ciddi biçimde azaltır. Sunucu türüne göre farklı yöntemler vardır; aşağıda Apache için .htaccess örneği yer alır.
# /wp-content/uploads/.htaccess (Apache örneği)
<FilesMatch ".(php|phtml|php5|php7)$">
Deny from all
</FilesMatch>
# Bazı durumlarda ek koruma:
Options -Indexes
Yedekleri ve logları erişim dışına taşımak
Yedek dosyalarını public dizinlerde tutmak, “indirilebilir yedek” gibi kritik zafiyetlere yol açabilir. Yedekleri web kökünün dışına alın veya erişim kontrolü olan bir depolama kullanın. Aynı şekilde uygulama logları, hata çıktıları ve debug dosyaları da hassas bilgi içerir; erişim izinlerini sınırlayın ve saklama politikası tanımlayın.

WAF, rate limit ve log izlemek
Uygulama tarafındaki önlemler kadar, ağ ve sunucu katmanı da önemlidir. WAF (Web Application Firewall), bilinen saldırı imzalarını ve anormal istek davranışlarını filtreler. Rate limit ise brute force ve istek bombardımanı gibi durumlarda etkili olur. Buradaki amaç “hiç saldırı olmasın” değil; saldırı olduğunda etkisini azaltmak ve hızlı görünürlük kazanmaktır.
WAF kurallarını uygulamak ve istisnaları yönetmek
Cloud tabanlı WAF kullanıyorsanız (CDN/WAF kombinasyonları gibi), WordPress için hazır kural setlerini etkinleştirip false positive’leri takip edin. Özel formlar veya API istekleri yanlışlıkla engellenebilir; bu durumda kural istisnalarını kontrollü biçimde ekleyin. İstisna yönetimi, “güvenlik deliklerini büyütmeden” çalışmalıdır.
Giriş denemelerini sınırlamak ve anormallikleri yakalamak
wp-login.php üzerinde rate limit, 2FA ve IP reputasyon kontrolü iyi bir kombinasyondur. Sunucu seviyesinde de basit bir Nginx rate limit kurgusu ekleyebilirsiniz. Aşağıdaki örnek, login denemelerini saniyede 1 istek ve kısa burst ile sınırlar.
# Nginx örnek rate limit
limit_req_zone $binary_remote_addr zone=login_zone:10m rate=1r/s;
location = /wp-login.php {
limit_req zone=login_zone burst=5 nodelay;
include fastcgi_params;
# ... PHP-FPM ayarları
}
Güvenlik başlıklarını ve HTTPS yapılandırmak
HTTPS artık temel bir gerekliliktir; sadece SEO veya “kilit ikonu” için değil, oturum güvenliği için de kritik rol oynar. Bunun yanında güvenlik başlıkları (security headers) tarayıcı tarafında bazı saldırı sınıflarını zorlaştırır. Burada denge önemlidir: yanlış CSP (Content-Security-Policy) ayarı, üçüncü taraf script’leri bozabilir.
HSTS ve çerez bayraklarını doğru ayarlamak
HSTS, tarayıcıya “daima HTTPS kullan” talimatı verir. Özellikle oturum çerezlerinde Secure ve HttpOnly bayraklarının etkin olması gerekir. SameSite ayarı da çapraz site isteklerinde koruma sağlar. Bu ayarları yaparken ödeme akışları ve üçüncü taraf entegrasyonların davranışlarını test edin.
CSP ile üçüncü taraf script riskini azaltmak
Reklam, analiz ve etiket yönetimi araçları, güvenlik açısından dikkat ister. CSP ile yalnızca izin verilen kaynaklardan script yüklenmesine izin vererek riskleri azaltabilirsiniz. Aşamalı geçiş önerilir: önce report-only mod ile izleyin, sonra kademeli olarak sıkılaştırın. Tek seferde sert CSP çoğu sitede kesintiye neden olabilir.
Yedekleme ve kurtarma planı hazırlamak
Hardening’in “görünmeyen” ama en hayati parçası kurtarma planıdır. Çünkü sıfır risk yoktur. Olay anında en çok zaman kaybettiren şey; yedeklerin nerede olduğu, nasıl döneceğiniz ve hangi doğrulama adımlarını uygulayacağınızın belirsiz olmasıdır.
RPO ve RTO hedeflerini belirlemek ve test etmek
RPO (kabul edilebilir veri kaybı) ve RTO (kabul edilebilir geri dönüş süresi) hedeflerini iş tarafıyla birlikte belirleyin. Günlük yedek yeterli mi, saatlik mi gerekli? Geri dönüş süresi 1 saat mi, 1 gün mü? Bu hedefler, altyapı maliyetini ve süreç tasarımını belirler. Düzenli geri yükleme testleri yapmadan “yedek alıyoruz” demek yeterli değildir.
Olay sonrası kontrol listesini yazmak ve işletmek
Bir olay yaşandığında; logları toplamak, zararlı dosyaları izole etmek, parola ve anahtarları yenilemek, eklenti/tema bütünlüğünü doğrulamak, kullanıcı hesaplarını gözden geçirmek ve kamuya açık bir iletişim planı uygulamak gerekir. Bu adımlar yazılı bir playbook hâline getirildiğinde panik azalır ve toparlanma hızlanır.
Hardening kontrol listesini standartlaştırmak ve ölçmek
Teknik olarak doğru önlemleri almak kadar, bu önlemleri sürdürülebilir kılmak da önemlidir. Bu yüzden hardening’i bir “proje” gibi değil, bir “süreç” gibi yönetin. Düzenli aralıklarla denetim yapın, bulguları kaydedin ve iyileştirmeleri backlog’a ekleyin.
Kontrol listesini oluşturmak ve bakım ritmi kurmak
Aşağıdaki maddeler, basit ama etkili bir başlangıç listesi olabilir:
- Çekirdek/tema/eklenti güncellemelerini planlamak ve test etmek
- 2FA ve rol tabanlı erişim uygulamak
- wp-config ve debug ayarlarını üretimde kilitlemek
- Dosya izinlerini doğrulamak ve uploads dizinini korumak
- WAF ve rate limit kurallarını izlemek
- Yedekleme geri dönüş testlerini yapmak
- Log ve güvenlik uyarılarını gözden geçirmek
Güvenlik metrikleri seçmek ve raporlamak
Ölçmediğiniz şeyi iyileştirmek zordur. Başlangıç için; başarısız giriş denemeleri, engellenen istek sayısı, kritik eklenti güncelleme gecikmesi, yedek geri yükleme başarı oranı ve olay müdahale süresi gibi metrikleri takip edin. Bu göstergeler, yönetim tarafına somut bir tablo sunar ve bütçe kararlarını kolaylaştırır.
Sonuç olarak WordPress güvenlik hardening, tek bir araç değil; disiplinli bir yapılandırma, düzenli bakım ve görünürlük yaklaşımıdır. Doğru adımlarla saldırı yüzeyini daraltabilir, riskleri yönetilebilir hâle getirebilir ve ekiplerin daha rahat çalışmasını sağlayabilirsiniz. Süreci hızlandırmak ve ekip içi standartları oturtmak için WordPress eğitimi içeriğini de değerlendirebilirsiniz.


