İnternet üzerindeki web sitelerinin önemli bir kısmı WordPress altyapısını kullanmaktadır. Açık kaynak kodlu yapısı, zengin eklenti ve tema ekosistemi platformu popüler kılarken, aynı zamanda kötü niyetli aktörlerin birincil hedeflerinden biri haline getirmektedir. Varsayılan kurulum ayarlarıyla bırakılan bir WordPress sitesi; kaba kuvvet saldırıları, dosya enjeksiyonları ve yetkisiz erişim gibi tehditlere açık kalır. Doğru adımlar atıldığında WordPress güvenliği büyük oranda güçlendirilebilir ve olası sızıntıların önüne geçilebilir.
Kullanıcı Hesapları ve Giriş Mekanizmasının Korunması
Saldırganların en sık başvurduğu yöntemlerin başında kaba kuvvet (brute-force) saldırıları gelir. Bu yöntemde botlar, sitenizin giriş paneline binlerce kullanıcı adı ve parola kombinasyonunu otomatik olarak dener.
Güvenli Kullanıcı Adı ve Parola Seçimi
WordPress kurulumu sırasında veya sonrasında varsayılan “admin” kullanıcı adının terk edilmesi şarttır. Tahmin edilmesi kolay kullanıcı adları, saldırganın işini yarı yarıya kolaylaştırır.
- Yönetici hesabınız için tahmin edilemez, adınız veya site adınızla doğrudan ilişkili olmayan bir kullanıcı adı belirleyin.
- Parolalarınız en az 16 karakterden oluşmalı; büyük harf, küçük harf, rakam ve özel karakterler içermelidir.
- Sitede içerik yayımlarken yönetici (admin) rolündeki hesap yerine yalnızca “Yazar” veya “Editör” yetkisine sahip ikincil bir hesap kullanın. Bu sayede genel ziyaretçiler yönetici kullanıcı adınızı göremez.
Giriş Denemelerini Sınırlandırma ve İki Faktörlü Doğrulama
Varsayılan WordPress mimarisinde hatalı parola deneme limiti bulunmaz. Bu durum botların sınırsız deneme yapmasına olanak tanır. Güvenlik eklentileri veya sunucu seviyesinde modüller kullanarak başarısız giriş denemelerini sınırlandırmalısınız. Belirli sayıda hatalı deneme yapan IP adresleri geçici veya kalıcı olarak engellenmelidir.
Ayrıca sisteme İki Faktörlü Doğrulama (2FA) entegre edilmelidir. 2FA aktif edildiğinde parola ele geçirilse bile saldırganın cep telefonunuza gelen tek kullanımlık koda veya doğrulama uygulamasına erişimi olmadan panele girmesi engellenir.
wp-config.php Dosyasının Sertleştirilmesi
WordPress’in kalbi sayılan wp-config.php dosyası; veritabanı bağlantı bilgilerini, güvenlik anahtarlarını ve sistem yapılandırmalarını içerir. Bu dosyanın doğru yapılandırılması hayati önem taşır.
Güvenlik Anahtarlarının (Salt Keys) Güncellenmesi
WordPress, kullanıcı oturumlarını yönetmek ve tanımlama bilgilerini (cookies) şifrelemek için gizli anahtarlar kullanır. Bu anahtarlar kurulum sırasında tanımlanır, ancak şüphe durumunda veya periyodik olarak değiştirilmelidir.
Anahtarlar wp-config.php dosyasında şu yapıdadır:
define('AUTH_KEY', 'buraya-rastgele-uzun-karakter-dizisi');
define('SECURE_AUTH_KEY', 'buraya-rastgele-uzun-karakter-dizisi');
define('LOGGED_IN_KEY', 'buraya-rastgele-uzun-karakter-dizisi');
define('NONCE_KEY', 'buraya-rastgele-uzun-karakter-dizisi');
define('AUTH_SALT', 'buraya-rastgele-uzun-karakter-dizisi');
define('SECURE_AUTH_SALT', 'buraya-rastgele-uzun-karakter-dizisi');
define('LOGGED_IN_SALT', 'buraya-rastgele-uzun-karakter-dizisi');
define('NONCE_SALT', 'buraya-rastgele-uzun-karakter-dizisi');
Bu anahtarlar değiştirildiğinde aktif olan tüm kullanıcı oturumları anında sonlandırılır. Hesabı ele geçirilmiş bir kullanıcının erişimini kesmek için son derece etkili bir yöntemdir.
Dosya Düzenleme Özelliğini Kapatma
WordPress paneli içindeki tema ve eklenti düzenleyicisi, yönetici hesabı ele geçirildiğinde saldırganın sunucuya zararlı PHP kodları enjekte etmesine imkan tanır. Bu paneli devre dışı bırakmak için wp-config.php dosyasına aşağıdaki satır eklenmelidir:
define('DISALLOW_FILE_EDIT', true);
Bu komut, yönetim panelindeki dahili kod düzenleyicisini tamamen gizler ve olası bir sızıntıda kod çalıştırılmasını zorlaştırır.
Hata Ayıklama Modunu Güvenli Hale Getirme
Geliştirme aşamasında kullanılan hata ayıklama modu, canlı sitelerde açık bırakıldığında sunucu yollarını ve hassas veritabanı hatalarını saldırganlara ifşa edebilir. Canlı sistemlerde şu ayarlar uygulanmalıdır:
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', false);
Bu tanımlamalar, sistem hatalarının web sayfalarında ziyaretçilere ve dolayısıyla saldırganlara gösterilmesini engeller.
.htaccess ile Sunucu Düzeyinde Güvenlik Önlemleri
Apache veya LiteSpeed sunucularda çalışan WordPress sitelerinde ana dizindeki .htaccess dosyası, istekler uygulamaya ulaşmadan önce filtreleme yapmanızı sağlar.
wp-config.php Dosyasına Doğrudan Erişimi Engelleme
Dışarıdan gelen kullanıcıların wp-config.php dosyasını doğrudan tarayıcı üzerinden okumasını engellemek için ana .htaccess dosyanızın en üstüne şu kuralları ekleyin:
<files wp-config.php>
order allow,deny
deny from all
</files>
Bu kural, web üzerinden bu dosyaya yapılacak tüm doğrudan istekleri 403 Forbidden hatası ile reddeder.
Dizin Listelemeyi (Directory Browsing) Kapatma
Bir ziyaretçi sitenizde indeks dosyası (index.php veya index.html) bulunmayan bir klasöre girdiğinde, sunucu varsayılan olarak klasörün içindeki tüm dosyaları listeleyebilir. Bu durum eklenti ve tema dosyalarınızın açıkça incelenmesine yol açar. Engellemek için .htaccess dosyasına şu satır eklenmelidir:
Options -Indexes
Yüklemeler (Uploads) Klasöründe PHP Çalıştırılmasını Engelleme
WordPress sitelerine dosya yükleme açıkları kullanılarak sıklıkla zararlı PHP betikleri yüklenir. “wp-content/uploads” klasörünün tek amacı medya dosyalarını saklamaktır; burada hiçbir koşulda PHP dosyası çalışmamalıdır.
Bunu sağlamak için “wp-content/uploads” klasörünün içine yeni bir .htaccess dosyası oluşturun ve içerisine şu satırları yazın:
<Files *.php>
deny from all
</Files>
Bu yapılandırma, sisteme sızdırılan bir zararlı yazılım olsa dahi onun sunucu tarafından çalıştırılmasını kesin olarak engeller.
XML-RPC Protokolünü Devre Dışı Bırakma
XML-RPC, WordPress sitenize harici uygulamaların bağlanmasını sağlayan eski bir protokoldür. Günümüzde genellikle DDoS saldırılarında yükseltici olarak veya kaba kuvvet denemelerinde kullanılır. Mobil uygulama veya uzaktan içerik yayınlama araçları kullanmıyorsanız bu dosyaya erişimi kapatmalısınız.
Ana .htaccess dosyasına şu satırları ekleyerek XML-RPC isteklerini engelleyebilirsiniz:
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
Dosya İzinleri ve Güncelleme Disiplini
Sistemin işletim sistemi seviyesindeki güvenliği, dosya ve dizin izinlerinin doğru dağıtılmasıyla başlar. Yanlış izinler (örneğin 777), sunucudaki herhangi bir kullanıcının dosyalarınızı değiştirmesine izin verir.
Linux tabanlı sunucularda geçerli olması gereken standart izinler şunlardır:
- Tüm dizinler için izin değeri 755 (drwxr-xr-x) olmalıdır.
- Tüm dosyalar için izin değeri 644 (-rw-r–r–) olmalıdır.
- wp-config.php gibi kritik dosyalar için izin değeri 600 veya 640 seviyesine kadar daraltılabilir.
SSH erişiminiz varsa web kök dizininde şu komutları çalıştırarak izinleri topluca standart hale getirebilirsiniz:
find /var/www/html/ -type d -exec chmod 755 {} ;
find /var/www/html/ -type f -exec chmod 644 {} ;
Bu komutlar, belirtilen yoldaki tüm klasörleri tarayarak izinlerini 755, tüm dosyaları tarayarak izinlerini 644 yapar.
Son olarak, güvenlik yamaları güncellemelerle dağıtılır. Çekirdek yazılım, eklentiler ve temalar çıktığı anda güncellenmelidir. Kullanılmayan veya geliştiricisi tarafından terk edilmiş eklentiler sunucudan tamamen silinmelidir; yalnızca devre dışı bırakmak dosya sistemindeki güvenlik açıklarını kapatmaz.
Sonuç ve Sonraki Adımlar
WordPress güvenliği, tek seferlik bir ayar değil, süreklilik gerektiren bir süreçtir. Bu rehberde uyguladığınız dosya sertleştirmeleri, giriş kısıtlamaları ve sunucu kuralları web sitenizi otomatik taramalardan ve temel saldırı vektörlerinden büyük ölçüde korur.
Bir sonraki adım olarak, sitenize bir Güvenlik Duvarı (WAF – Web Application Firewall) entegre edebilir, Cloudflare gibi bir ters vekil sunucu arkasına alarak trafiği süzebilir ve düzenli harici yedekleme stratejinizi kurgulayarak felaket senaryolarına karşı hazırlıklı olabilirsiniz.


Comments
No comments yet. Write the first comment.