WordPress Güvenliği Neden Her Zamankinden Daha Önemli?
Dünyanın en popüler içerik yönetim sistemi olan WordPress, otomatik ve insan kaynaklı saldırıların ana hedefidir. Her gün binlerce tarayıcı bot, bilinen güvenlik açıklarını bulmak için WordPress sitelerini tarar. Küçük sitenizin saldırıya değmeyeceğini düşünüyorsanız çok yanılıyorsunuz; çoğu otomatik saldırı büyük siteleri değil, savunmasız siteleri arar. Bu makalede, en önemli ve etkili önlemlerden başlayıp teknik ayrıntılara kadar uzanan pratik bir WordPress güvenliği yol haritası sunuyoruz.
Kilit nokta şudur: Güvenlik bir ürün değil, bir süreçtir. Hiçbir eklenti tek başına sitenizi güvenli yapmaz. Doğru alışkanlıklar, hassas ayarlar ve sürekli izlemenin birleşimi, sitenizin güvenlik seviyesini önemli ölçüde artırır. Aşağıda dört ana alanı ele alıyoruz: güncelleme, giriş kısıtlama, dosya izinleri ve WordPress sürümünü gizleme.
Güncelleme; İlk ve En Önemli Savunma Hattı
WordPress sitelerine yapılan başarılı saldırıların çoğu, yeni sürümü yayınlanmış ancak sitelerin güncellemediği bilinen güvenlik açıklarından yararlanır. WordPress çekirdeğini, eklentileri ve temaları düzenli olarak güncellemek, WordPress güvenliği için en basit ve en etkili önlemdir.
Otomatik Güncellemeyi Etkinleştirme
WordPress 5.6 ve sonrası sürümlerde, küçük (minor) sürüm güncellemeleri varsayılan olarak otomatik yapılır. Ancak ana (major) sürümler ve eklentiler için kendiniz karar vermelisiniz. wp-config.php dosyasına aşağıdaki kodu ekleyerek her şey için otomatik güncellemeyi etkinleştirebilirsiniz:
// Her şey için otomatik güncellemeyi etkinleştir
add_filter( 'auto_update_core', '__return_true' );
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );
Daha fazla kontrol sahibi olmayı tercih ediyorsanız, en azından güvenlik güncellemelerini etkinleştirin ve ana sürümler için düzenli bir haftalık veya aylık program belirleyin. Güncellemeleri az ziyaretçi olan saatlerde yapın ve her zaman öncesinde sitenizin yedeğini alın.
Gereksiz Eklentileri ve Temaları Kaldırma
Kurduğunuz her eklenti, sitenizin saldırı yüzeyini artırır. Kullanmadığınız eklentileri devre dışı bırakmak yerine kaldırın. Devre dışı bırakılan dosyalar sunucuda kalmaya devam eder ve güvenlik açıkları içerebilir. Aynı kural temalar için de geçerlidir; yalnızca aktif temayı ve bir varsayılan temayı (Twenty Twenty-Four gibi) saklayın.
WordPress Yönetim Paneline Girişi Kısıtlama
Giriş sayfası (wp-login.php), her WordPress sitesinin en çok saldırıya uğrayan noktalarından biridir. Brute-force (şifre tahmin etme) saldırıları otomatik olarak ve dakikada binlerce denemeyle yapılır. Girişi kısıtlamak, WordPress güvenliğinin temel direklerinden biridir.
Güçlü Şifre ve İki Adımlı Doğrulama Kullanma
Site yöneticisi şifresi en az 16 karakter olmalı ve büyük/küçük harf, rakam ve sembol kombinasyonu içermelidir. Şifrenizi diğer sitelerde tekrar kullanmaktan kesinlikle kaçının. Ek güvenlik katmanı için WP 2FA veya Wordfence gibi bir eklenti kurarak iki adımlı doğrulamayı (2FA) etkinleştirin. 2FA ile şifreniz sızdırılsa bile, saldırgan iki adımlı kod olmadan giriş yapamaz.
Giriş Denemelerini Sınırlama
Limit Login Attempts Reloaded gibi eklentiler başarısız deneme sayısını sınırlar. Önerilen ayar: her 10 dakikada en fazla 3 başarısız deneme ve 30 dakika kilitlenme. Bu, brute-force saldırılarını pratik olarak etkisiz kılar.
Giriş Sayfası Adresini Değiştirme
Varsayılan giriş adresini değiştirerek botların kafasını karıştırırsınız. WPS Hide Login eklentisi, giriş adresini /my-secret-login gibi istediğiniz bir yola değiştirmenize olanak tanır. Bunun mutlak güvenlik sağlamadığını ancak otomatik saldırı sayısını ciddi şekilde azalttığını unutmayın.
IP Tabanlı Giriş Kısıtlama
Sabit bir IP kullanıyorsanız, wp-login.php erişimini yalnızca kendi IP'nize sınırlayabilirsiniz. Bunu (Apache için) .htaccess dosyasında yapabilirsiniz:
<Files wp-login.php>
Require ip YOUR_IP_ADDRESS
</Files>
Nginx kullanıyorsanız, server bloğuna aşağıdaki kodu ekleyin:
location = /wp-login.php {
allow YOUR_IP_ADDRESS;
deny all;
}
Dosya ve Klasör İzinlerini Ayarlama
Yanlış dosya izinleri (permissions), WordPress sitelerine sızmanın başlıca nedenlerinden biridir. Dosyalar herkes tarafından yazılabilir durumdaysa, saldırgan kötü amaçlı kod enjekte edebilir. Doğru izin ayarları, WordPress güvenliğinin kritik bir parçasıdır.
Standart ve Güvenli İzinler
Aşağıdaki izinler altın standart olarak kabul edilir:
- Dosyalar:
644(sahip okuyup yazabilir, diğerleri yalnızca okuyabilir) - Klasörler:
755(sahip okuyup yazabilir ve çalıştırabilir; diğerleri yalnızca okuyup çalıştırabilir) wp-config.phpdosyası:600(yalnızca sahip okuyup yazabilir)
Bu izinleri SSH üzerinden uygulamak için aşağıdaki komutları kullanın:
# Tüm dosyaların iznini 644 yap
find /path/to/wordpress -type f -exec chmod 644 {} \;
# Tüm klasörlerin iznini 755 yap
find /path/to/wordpress -type d -exec chmod 755 {} \;
# wp-config.php için özel izin
chmod 600 /path/to/wordpress/wp-config.php
wp-config.php Dosyasını Koruma
wp-config.php dosyası, veritabanı kullanıcı adı ve şifresi gibi hassas bilgiler içerir. 600 iznine ek olarak, bu dosyayı site kök dizininin üzerindeki bir klasöre taşıyabilirsiniz. WordPress bu dosyayı otomatik olarak üst dizinde arar. Bu, dosyanın web üzerinden erişilemez olmasını sağlar.
Yükleme Klasörlerinde PHP Çalıştırmayı Devre Dışı Bırakma
wp-content/uploads klasörü, kullanıcı dosyalarının yüklendiği yerdir. Saldırgan bu klasöre kötü amaçlı bir PHP dosyası yükleyip çalıştırabilirse, siteniz ciddi risk altındadır. Yükleme klasöründeki .htaccess dosyasına aşağıdaki kodu ekleyerek PHP çalıştırmayı devre dışı bırakın:
<FilesMatch "\.(php|php5|phtml)$">
Require all denied
</FilesMatch>
Nginx için, location bloğuna aşağıdaki kodu ekleyin:
location ~* /wp-content/uploads/.*\.(php|php5|phtml)$ {
deny all;
}
777 yapar. Bu çok tehlikelidir ve saldırganın sunucuya herhangi bir dosya yazmasına olanak tanır. Her zaman standart izinleri kullanın.WordPress Sürümünü Gizleme
Saldırganlar, WordPress, eklenti ve temaların tam sürümünü bilerek o sürümün bilinen güvenlik açıklarını hedefleyebilir. Sürümü gizlemek, saldırganın gözünden değerli bilgileri saklar ve WordPress güvenliğinin bir parçasıdır.
Başlıktan Sürüm Meta Etiketini Kaldırma
WordPress varsayılan olarak site başlığına sürüm içeren bir meta etiket ekler. Bunu kaldırmak için alt tema (child theme) functions.php dosyasına aşağıdaki kodu ekleyin:
remove_action( 'wp_head', 'wp_generator' );
Statik Dosya URL'lerinden Sürümü Kaldırma
WordPress, CSS ve JS dosya adreslerinin sonuna sürümü ekler (style.css?ver=6.4.2 gibi). Bu parametreyi kaldırmak için aşağıdaki kodu ekleyin:
function remove_wp_version_from_assets( $src ) {
if ( strpos( $src, 'ver=' ) ) {
$src = remove_query_arg( 'ver', $src );
}
return $src;
}
add_filter( 'style_loader_src', 'remove_wp_version_from_assets', 9999 );
add_filter( 'script_loader_src', 'remove_wp_version_from_assets', 9999 );
Bilgi Dosyalarına Erişimi Kısıtlama
readme.html ve license.txt gibi dosyalar sürüm bilgisi içerir. Bu dosyaları silin veya .htaccess üzerinden erişimi engelleyin:
<FilesMatch "^(readme\.html|license\.txt|wp-config\.php)$">
Require all denied
</FilesMatch>
XML-RPC Dosyasına Erişimi Kısıtlama
xmlrpc.php dosyası, brute-force ve DDoS saldırıları için bir giriş noktası olarak bilinir. Kullanmıyorsanız (örneğin mobil uygulama bağlantısı için), devre dışı bırakın. .htaccess dosyasına aşağıdaki kodu ekleyerek:
<Files xmlrpc.php>
Require all denied
</Files>
readme.html dosyasını bırakır. Saldırgan, doğrudan /readme.html adresine giderek WordPress'in tam sürümünü görebilir. Sürüm bilgisi içeren tüm kaynakları kapsayın.Özet ve Sonraki Adımlar
WordPress güvenliği sürekli bir süreçtir. Aşağıdaki adımları uygulayarak sitenizin güvenlik seviyesini önemli ölçüde artırabilirsiniz:
- Çekirdek, eklenti ve temaları düzenli güncelleyin
- Güçlü şifre, 2FA ve deneme sınırı ile girişi kısıtlayın
- Dosya izinlerini
644, klasör izinlerini755olarak ayarlayın - WordPress sürümünü tüm kaynaklardan gizleyin
- Düzenli yedek alın ve geri yükleme testi yapın
Yüksek trafikli veya kritik siteler için, güvenliği altyapı düzeyinde sağlayan barındırma hizmetlerinin kullanılması önerilir. ServerNet, hosting ve bulut altyapı sağlayıcısı olarak WordPress için optimize edilmiş güvenlik yapılandırmaları sunar ve bu, güvenlik stratejinizin bir parçası olabilir. Ancak unutmayın, hiçbir hizmet uygulama düzeyindeki güvenlik ilkelerine uymanın yerini tutmaz. Bu rehberi uygulayarak siteniz çoğu yaygın saldırıya karşı dayanıklı olacaktır.