Buyukweb
WordPress Güvenlik İpuçları ve En İyi Uygulamalar

WordPress Güvenlik İpuçları ve En İyi Uygulamalar

WordPress sitelerini güvenli tutmak için kritik güvenlik adımları: güncel tutma, güçlü şifre, iki faktörlü doğrulama, güvenlik eklentileri ve yedekleme.

Büyükweb Editör EkibiHosting, Sunucu ve Sistem Yönetimi Editörü12 dakika okuma

WordPress Güvenlik İpuçları ve En İyi Uygulamalar

WordPress siteniz saldırıya uğradığında ilk fark ettiğiniz şey genellikle bir arama motoru uyarısı ya da hostinginizin gönderdiği abuse bildirimi olur. O noktaya gelmeden önce alabileceğiniz önlemler var; bu yazıda onları adım adım geçeceğiz. Genel web güvenliği dersi değil, doğrudan WordPress'e özgü pratik önlemler.

WordPress Neden Bu Kadar Saldırı Alıyor?

Dünya genelinde aktif web sitelerinin yüzde kırkından fazlası WordPress üzerinde çalışıyor. Bu rakam saldırganlar için cazip bir hedef havuzu anlamına geliyor; bir açık bulmak kârlı çünkü aynı açık binlerce sitede işe yarıyor.

Üç ana etken öne çıkıyor:

Plugin ekosistemi: Resmi depoda elli bini aşkın eklenti var. Güncelleme bırakılmış, kötü yazılmış ya da kötü niyetle yayımlanmış eklentiler saldırı vektörü oluyor. Araştırmalar, WordPress kaynaklı ihlallerin büyük çoğunluğunun çekirdek değil eklenti açıkları yüzünden yaşandığını gösteriyor.

Varsayılan admin kimlik bilgileri: Kurulumun "admin" kullanıcı adıyla tamamlanması, brute-force botlarına kapıyı aralık bırakıyor. Milyonlarca site bu varsayılanı değiştirmemiş durumda.

Zayıf güncelleme disiplini: Küçük ve orta ölçekli sitelerde eklenti/tema güncellemeleri aylarca bekleyebiliyor. Bu süre saldırganlar için fırsat penceresi.

Çekirdek, Tema ve Eklenti Güncelleme Stratejisi

Güncelleme disiplini en basit ve en etkili güvenlik önlemidir; ancak dikkatli yönetilmesi gerekir.

Otomatik güncelleme aktif edin. wp-config.php içine şu satırı eklemek küçük (minor) çekirdek güncellemelerini otomatik yaptırır:

define('WP_AUTO_UPDATE_CORE', true);

Bu satır tek başına güvenlik yamalarını otomatik uygular; major sürüm geçişleri (5.x → 6.x) hâlâ manueldir.

Staging/Production ayrımı yapın. Major güncellemeleri doğrudan canlı sitede uygulamak yerine önce bir staging ortamında test edin. Büyükweb cPanel hosting paketlerinde Softaculous üzerinden hızlı bir test kurulumu oluşturabilirsiniz. Plesk kullananlar WP Toolkit'in dahili staging özelliğinden faydalanabilir; Smart Updates ile plugin uyumluluğunu otomatik test ediyor.

Kullanılmayan eklenti ve temaları silin. Devre dışı bırakmak yeterli değil; devre dışı eklentiler de güncellenmediklerinde açık bırakır. İhtiyaç dışı her eklenti potansiyel bir risk.

wp-admin Koruması: Giriş Sayfasını Zorlaştırın

wp-login.php adresi dünya genelinde biliniyor ve botların ilk denediği nokta. Birkaç katmanlı önlem bu saldırı yüzeyini önemli ölçüde küçültür.

Giriş URL'ini değiştirin. WPS Hide Login eklentisi ile wp-login.php adresini /giris veya tamamen rastgele bir yola taşıyabilirsiniz. Bu tek başına brute-force botlarının büyük kısmını etkisiz kılıyor; botlar varsayılan adresi deneyemez.

IP ile erişim kısıtlaması. Sabit IP'niz varsa .htaccess (Apache/LiteSpeed) veya Nginx konfigürasyonuna kural eklemek en sert önlem:

<Files "wp-login.php">
  Order Deny,Allow
  Deny from all
  Allow from 1.2.3.4
</Files>

Birden fazla IP eklemek için Allow from satırını tekrarlayın. VDS kullanıcıları Nginx'te location = /wp-login.php bloğuyla aynı sonuca ulaşır.

Basic Auth katmanı. İki aşamalı bir giriş kapısı: önce HTTP Basic Auth kullanıcı adı/şifresi, sonra WordPress giriş formu. cPanel'den .htpasswd oluşturmak birkaç dakika alır, brute-force botlarını daha ilk adımda duraksatır.

Güçlü Kimlik Bilgileri ve İki Faktörlü Doğrulama

Kullanıcı adını değiştirin. Yeni kullanıcı oluşturun (Yönetici rolüyle), tüm içerikleri bu kullanıcıya aktarın, eski "admin" hesabını silin. Author arşivi URL'sinde kullanıcı adı gözüküyorsa /?author=1 sorgusuyla kullanıcı adı ifşa olur; bu vektörü kapatmak için arşivi yönlendirip gizleyin.

Parola politikası. En az on iki karakter, büyük-küçük harf, rakam ve özel karakter. Her hesap için ayrı parola; parola yöneticisi (Bitwarden veya benzeri) bu konuda en pratik çözüm.

2FA (İki Faktörlü Doğrulama). WP 5.6+ ile gelen Application Passwords, REST API erişimi için uygulama bazlı parola tanımlamanıza izin veriyor; bunun dışında doğrudan WordPress admin girişine 2FA eklemek için Wordfence Login Security veya WP 2FA eklentileri TOTP destekli doğrulama sunuyor. Google Authenticator veya herhangi bir TOTP uygulamasıyla çalışır. Yönetici hesaplarında 2FA olmazsa olmaz.

wp-config.php Sertleştirme

wp-config.php WordPress'in kalbidir; birkaç satırla saldırı yüzeyi önemli ölçüde daralır.

// Dosya/tema/eklenti editörünü kapat
define('DISALLOW_FILE_EDIT', true);

// Eklenti/tema kurulum ve güncellemeyi tamamen kapat (tam kilitli ortam)
define('DISALLOW_FILE_MODS', true);

// SSL üzerinden yönetim paneli zorla
define('FORCE_SSL_ADMIN', true);

// Otomatik güncellemeyi manuel yönetmek isteyenler için
define('AUTOMATIC_UPDATER_DISABLED', false); // true ise tüm otomatik güncellemeler durur

// WP_DEBUG production'da kapalı olmalı
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', false);
define('WP_DEBUG_DISPLAY', false);

Güvenlik anahtarlarını (salt) döndürün. https://api.wordpress.org/secret-key/1.1/salt/ adresinden yeni anahtarlar alın ve wp-config.php içindeki sekiz define satırını değiştirin. Bu işlem mevcut oturumları geçersiz kılar; hack sonrası mutlaka yapılması gerekenler listesinde.

wp-config.php'yi bir üst dizine taşıyın. WordPress web kökü dışında da wp-config.php arar; dosyayı public_html üstüne çıkarmak doğrudan URL erişimini engeller. cPanel ortamlarında bu konfigürasyonu uygulamak basittir.

Dosya İzinleri: 644/755/600 Kuralı

Yanlış dosya izinleri, sunucuya erişim kazanan bir saldırganın dosyaları okuyup değiştirmesine imkân tanır.

# Dizinler
find /home/kullanici/public_html -type d -exec chmod 755 {} ;

# Dosyalar
find /home/kullanici/public_html -type f -exec chmod 644 {} ;

# wp-config.php — sadece sahip okusun/yazsın
chmod 600 /home/kullanici/public_html/wp-config.php

cPanel ortamlarında PHP-FPM (suexec) ile WordPress, sitenizin kendi sistem kullanıcısı altında çalışır; bu izolasyon sayesinde aynı sunucudaki başka hesaplara çapraz erişim engellenmiş olur. Paylaşımlı hosting seçerken "CloudLinux + CageFS" desteğinin olup olmadığını sormak iyi bir pratik; Büyükweb cPanel paketlerinde bu izolasyon standart geliyor.

Güvenlik Eklentileri ve Sunucu Seviyesi WAF

Eklenti tabanlı WAF kullanmak işe yarıyor ama sunucu seviyesi koruma her zaman daha verimli.

Plugin düzeyinde çözümler:

  • Wordfence: Yerleşik firewall, malware tarama, gerçek zamanlı tehdit istihbaratı, brute-force engelleme. Freemium; premium sürüm tehdit listelerini gerçek zamanlı alır.
  • iThemes Security: Dosya değişiklik izleme, login kilitleme, 404 algılama. Yapılandırması görece kolay.
  • All-In-One WP Security: Tamamen ücretsiz, firewall kuralları ve kullanıcı hesap denetimi sunuyor.

Sunucu seviyesi tercih edin. PHP uygulaması içinde çalışan bir eklenti WAF'ı, kötü niyetli istek PHP sürecine ulaşmadan önce değil sonra devreye girer. Sunucu seviyesi WAF isteği PHP'den önce filtreler.

Büyükweb cPanel hosting paketlerinde Imunify360 varsayılan olarak geliyor. Imunify360 bir bütünleşik güvenlik katmanı: gerçek zamanlı WAF, IDS/IPS, brute-force engelleme ve malware tarama aynı anda çalışıyor. Ek eklenti kurmak zorunlu değil; sunucu zaten bu katmanları sağlıyor.

Brute Force Koruması: Rate Limiting, CAPTCHA, Imunify360

Brute-force saldırıları saniyede yüzlerce giriş denemesi yapar. Bunu durduracak birkaç mekanizma bir arada kullanılmalı.

Giriş deneme limiti. Limit Login Attempts Reloaded eklentisi belirli sayıda başarısız denemeden sonra IP'yi geçici kilitleniyor. Wordfence de benzer bir özellik sunuyor.

CAPTCHA. Login formuna CAPTCHA eklemek botları eler; Cloudflare Turnstile ücretsiz ve kullanıcı dostu bir seçenek. Google reCAPTCHA da yaygın; ancak iFrame yükü ekler.

fail2ban (VDS). VDS kullananlar için fail2ban, WordPress giriş başarısızlıklarını /var/log/auth.log veya özel log dosyasından okuyarak iptables/nftables kuralı yazar. Kurulumda bir jail tanımlamak gerekiyor; bu generic Linux konfigürasyonu bu yazının kapsamı dışında, ancak kısaca: /etc/fail2ban/jail.d/wordpress.conf ile WP loglarını izleyen bir jail oluşturulabilir.

Imunify360 (cPanel). Büyükweb cPanel paketlerinde Imunify360 otomatik çalışıyor; ayrıca fail2ban kurmaya gerek yok. Tek bir IP'den gelen brute-force girişimlerini sunucu genelinde tespit edip engeller.

SSL/HTTPS: HSTS ve Mixed Content

HTTPS artık bir seçenek değil, zorunluluk. Google arama sıralama faktörü, tarayıcı güven göstergesi ve veri güvenliği açısından.

AutoSSL (cPanel). Büyükweb cPanel paketlerinde Let's Encrypt tabanlı AutoSSL standart geliyor; sertifika kurulumu ve otomatik yenileme panel üzerinden tek tıkla.

HSTS. Tarayıcıya "bu siteye her zaman HTTPS ile bağlan" talimatını .htaccess üzerinden verin:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Bu başlık aktif olduktan sonra HTTP bağlantı denemeleri tarayıcı tarafından doğrudan HTTPS'e yönlendirilir; sunucuya HTTP isteği ulaşmaz bile.

Mixed content. HTTP görseli, CSS veya JS içeren HTTPS sayfası mixed content uyarısı verir; bazı tarayıcılar bu kaynakları engeller. Really Simple SSL eklentisi ya da manuel URL dönüşümü ile temizleyin.

Veritabanı Sertleştirme

Tablo önekini değiştirin. Varsayılan wp_ öneki SQL injection saldırılarında tahmin avantajı sağlar. Kurulum sırasında farklı bir önek seçin (örn. x7k_). Mevcut bir sitede değişiklik yapmak tablo yeniden adlandırma ve wp-config.php güncellemesi gerektiriyor; plugin (Brozzme DB Prefix & Tools Changer) veya WP-CLI ile yapılabilir ama öncesinde yedek zorunlu.

Veritabanı kullanıcısı minimum yetki. WordPress'in DB kullanıcısının sadece kendi veritabanına, sadece SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER yetkisi olmalı. SUPER, FILE veya GRANT OPTION gereksiz ve tehlikeli. cPanel'de veritabanı yönetimi ekranından bunu ayarlayabilirsiniz.

wp-config.php DB bilgileri. DB_HOST olarak localhost yerine 127.0.0.1 kullanmak bazı ortamlarda TCP socket üzerinden bağlantı yerine yerel Unix socket kullanımını tercih ettirir; küçük ama kayda değer bir fark.

XML-RPC: Kapatmak mı, Açık Tutmak mı?

XML-RPC, pingback saldırıları ve brute-force amplifikasyonu için kullanılan eski bir API katmanı. Jetpack kullanmıyorsanız, mobil uygulama bağlantısı yoksa kapatmak en güvenlisi:

<Files "xmlrpc.php">
  Order Deny,Allow
  Deny from all
</Files>

Jetpack gibi bağlantı gerektiren eklentiler XML-RPC'ye ihtiyaç duyabilir. Bu durumda tamamen kapatmak yerine Wordfence'in "Disable XML-RPC authentication" seçeneğiyle sadece kimlik doğrulama girişimlerini engelleyin; pingback ve Jetpack iletişimi çalışmaya devam eder.

WordPress 4.4+ ile gelen REST API modern alternatif. REST API'yi tamamen kapatmak bazı Gutenberg bloğu, WooCommerce ve modern eklentileri bozabilir; bunun yerine yetkisiz kullanıcıların hassas endpoint'lere erişimini engellemek daha sağlıklı bir yaklaşım.

Yedekleme: JetBackup, UpdraftPlus ve Restore Tatbikatı

Yedek almak yeterli değil; geri yükleme testini yapmak asıl kritik adım.

Büyükweb cPanel — JetBackup. cPanel paketlerimizde JetBackup haftalık yedekleme yapıyor. Bu yedekler sunucu dışı (offsite) bir depolama alanında tutuluyor. Önemli bir not: JetBackup yedekleri haftalık, günlük değil. Yüksek frekanslı yedek gerekiyorsa ek bir çözüm kurulmalı.

UpdraftPlus ile ek yedek. UpdraftPlus ücretsiz sürümüyle günlük veya haftalık otomatik yedek alabilir, Google Drive, Dropbox ya da S3 uyumlu bir depolama alanına gönderebilirsiniz. Bu yedekler JetBackup'a ek bir katman oluşturur; tam bir 3-2-1 yedekleme stratejisi için idealdir.

Restore tatbikatı yapın. Her altı ayda bir test ortamına tam yedek geri yükleyin. Yedek alıyor olmak geri yüklemenin çalışacağını garantilemez; dosya bozulması, depolama erişim hatası veya eksik tablo sorunları ancak tatbikatle ortaya çıkar.

Önemli değişikliklerden önce manuel yedek. Büyük plugin güncellemesi veya tema değişikliği öncesi otomatik yedekleri beklemeden manuel bir tam yedek alın.

Malware Tarama: ImunifyAV, Wordfence ve Sucuri

ImunifyAV (cPanel). Büyükweb cPanel paketlerinde ImunifyAV dahili geliyor. Sunucu seviyesinde çalışır; PHP, JavaScript ve diğer dosyaları kötücül kod kalıplarına karşı tarar. WordPress eklentisi gerektirmiyor; tarama sonuçlarına cPanel üzerinden ulaşılabiliyor.

Wordfence Scanner. Eklenti tabanlı tarama; çekirdek dosyaları WordPress.org sürümüyle karşılaştırır, değiştirilmiş dosyaları listeler. Ücretsiz sürümde tehdit tanımları birkaç günlük gecikmeyle gelir; premium sürüm gerçek zamanlı.

Sucuri SiteCheck. Dışarıdan (black-box) tarama; sitenizin kamuya açık kısımlarını kötücül kod, blacklist durumu ve zararlı yönlendirmeler için kontrol eder. Ücretsiz kullanılabilir, sunucuya erişim gerektirmiyor.

Öneri: Önce sunucu seviyesi (ImunifyAV, Büyükweb cPanel paketlerinde hazır), ardından doğrulama için Wordfence Scanner. Sucuri SiteCheck'i periyodik harici kontrol olarak ekleyin.

Tarama sıklığı. Otomatik tarama yeterli ama periyodik manuel kontrol de ekleyin. Özellikle büyük bir eklenti güncellemesinden sonra veya olağandışı trafik/kaynak artışı fark ettiğinizde manuel tarama başlatın. cPanel'de ImunifyAV arayüzünden tek tıkla anında tarama başlatabilirsiniz.

Olay Müdahalesi: Siteniz Hacklenirse 7 Adım

Siteyi hacklenmiş bulduğunuzda sakin olmak önemli. Adım adım:

1. Siteyi izole edin. Hosting panelinizden veya .htaccess ile tüm trafiği bakım sayfasına yönlendirin; saldırı devam ediyorsa yeni zararlı dosya yazılmasını önlemek için klasör yazma izinlerini geçici olarak kapatın.

2. Log alın. Sunucu erişim logları (access_log, error_log) ve WordPress error loglarını yedekleyin. Saldırının hangi dosya veya URL üzerinden gerçekleştiğini anlamak, tekrarını engellemek için şart.

3. Malware tarama. ImunifyAV veya Wordfence Scanner ile tüm dosyaları tarayın. Zararlı dosyaların listesini ve değiştirilen çekirdek dosyaları kaydedin.

4. Parola ve salt rotasyonu. Tüm WordPress kullanıcı parolalarını, FTP/SFTP parolasını ve cPanel parolasını değiştirin. wp-config.php güvenlik anahtarlarını (salt) yenileyin; bu işlem tüm aktif oturumları geçersiz kılar.

5. Temiz yedekten geri yükleyin. Mümkünse hack tarihinden önceki temiz yedekten geri yükleyin. Yedek yoksa zararlı dosyaları manuel olarak temizleyin; WordPress çekirdeğini yeniden yükleyin (/wp-admin ve /wp-includes).

6. Tüm eklentileri güncelleyin. Açık genellikle eski bir eklentiden geliyor. Tüm eklentileri ve temayı güncelleyin; açık olduğu bilinen eklentiyi kaldırın.

7. Postmortem yazın. Saldırının nasıl gerçekleştiğini, hangi dosyaların etkilendiğini ve hangi önlemlerin alındığını belgeleyin. Bir dahaki sefere hazırlıklı olmak için bu adım kritik.

Büyükweb destek hattı 0850 302 60 70 üzerinden hack sonrası log analizi ve temizlik için teknik destek alabilirsiniz.

Önemli not: Hack sonrası temizlik teknik bilgi gerektirir ve aceleyle yapılan hatalar ek zarar verebilir. Temizlediğinizi sandığınız zararlı kod yeniden yüklenebilir; bu genellikle saldırganın bıraktığı bir arka kapının (backdoor) atlanmasından kaynaklanır. Temizlikten sonra arka kapı taraması ayrıca yapılmalı; Wordfence'in "backdoor" arama filtresi veya grep ile PHP'nin eval, base64_decode, system çağrılarını tüm dosyalarda arayın.

Sık Sorulan Sorular

WordPress için yönetilen (managed) hosting almalı mıyım?

"Managed WordPress hosting" otomatik güncellemeler, hazır CDN ve özel destek sunuyor ama fiyatı yüksek. Büyükweb şu an tam managed bir WP ürünü sunmuyor; ancak cPanel paketlerinde Softaculous otomatik kurulum, Plesk paketlerinde ise WP Toolkit + Smart Updates ile otomasyonun önemli kısmına ulaşabiliyorsunuz. Gerçek managed hosting ihtiyacınız yoksa bu paketler çoğu proje için yeterli.

Wordfence mi, sunucu WAF mi tercih edilmeli?

Her ikisi bir arada olabilir ama önceliği sunucu seviyesi WAF'a verin. Büyükweb cPanel paketlerinde Imunify360 sunucu genelinde kötücül istekleri PHP'den önce filtreler. Wordfence'i ek bir uygulama katmanı olarak eklemek mümkün; performans etkisi genellikle kabul edilebilir.

wp-login.php adresini değiştirmek yeterli mi?

Hayır, tek başına yeterli değil. URL değişikliği brute-force botlarının büyük kısmını eliyor ama kararlı bir saldırgan sitenizdeki JavaScript veya form kaynaklarından gerçek URL'yi bulabilir. Mutlaka 2FA ve rate limiting ile desteklensin.

Her gün yedek alıyor musunuz?

Büyükweb JetBackup ile haftalık yedek yapıyor. Günlük yedek ihtiyacınız varsa UpdraftPlus gibi bir eklentiyle kendi yedekleme sürecinizi kurun.

XML-RPC'yi kapattım ama Jetpack çalışmıyor ne yapmalıyım?

Jetpack, XML-RPC yerine artık WordPress REST API ile de çalışabilir; Jetpack ayarlarından REST API bağlantısını etkinleştirmeyi deneyin. Eski sürümlerde XML-RPC gerekli olabilir; bu durumda Wordfence'in selective disable seçeneğiyle sadece kimlik doğrulamayı kapatın.

Veritabanı önekini değiştirmek güvenli mi?

Mevcut bir sitede prefix değişimi risklidir; önce tam yedek alın. WP-CLI veya güvenilir bir eklentiyle yapın. Test ortamında önce deneyin.

Sitemi kimse saldırmaz diye düşünüyorum, bu yaklaşım doğru mu?

Botlar hedefli değil, toplu tarama yapıyor. Siteniz küçük olsa bile otomatik tarayıcılar açıkları bulur ve istismar eder. Ölçek fark etmeksizin temel önlemleri uygulamak gerekiyor.

Plesk kullananlar için WP Toolkit ne sağlıyor?

Büyükweb Plesk paketlerinde WP Toolkit dahili geliyor. WP Toolkit ile tek panelden birden fazla WordPress kurulumunu güncelleyebilir, Smart Updates özelliğiyle eklenti güncellemelerini otomatik test edebilir, anında staging ortamı oluşturabilir ve güvenlik taraması başlatabilirsiniz. Ayrıca hardening profili uygulayarak dosya izinleri, wp-config.php ayarları ve erişim kısıtlamalarını tek tıkla standart hale getirebilirsiniz.

Cloudflare kullanıyor isem sunucu tarafı güvenlik önlemleri hâlâ gerekli mi?

Evet. Cloudflare CDN ve WAF katmanı saldırıların büyük kısmını edge'de durdurur; ancak orijin sunucunuza direkt erişim mümkünse (IP bilinirse veya Cloudflare bypass edilirse) sunucu ve uygulama katmanı önlemleri devreye girer. Cloudflare ve Imunify360 birbirini tamamlar, birbirinin yerini almaz.


İlgili Büyükweb Hizmetleri

WordPress sitenizi güvende ve hızlı tutmak için Türkiye lokasyonlu hosting seçenekleri:

Sorularınız için 0850 302 60 70 numaralı destek hattımıza veya iletişim sayfamıza yazabilirsiniz.

WordPress Rehberi İlgili Hizmetlerimiz

Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin

Etiketler:

#WordPress güvenliği#WordPress güncellemesi#WordPress eklenti#brute force WordPress#WordPress yedekleme#wp-login güvenlik

Bu yazıyı paylaş