Güvenlik

WordPress Klasör Yapısı Güvenliği: "wp-includes" Klasörüne Erişimi Kapatma

  • 12 dk okuma
  • Hostragons Ekibi
WordPress Klasör Yapısı Güvenliği: "wp-includes" Klasörüne Erişimi Kapatma

WordPress Klasör Yapısı Güvenliği için "wp-includes" klasörüne doğrudan erişimi kapatmanın en güvenli yolu, klasörün tamamını kör şekilde engellemek yerine bu klasör içindeki PHP dosyalarının dışarıdan çalıştırılmasını ve dizin listelemeyi kapatmaktır. Çünkü wp-includes, WordPress çekirdeğinin çalışması için gerekli JavaScript, CSS ve bazı statik dosyaları barındırır; klasörün tümüne erişimi kapatmak site tasarımını, editörü veya eklenti işlevlerini bozabilir. Doğru yaklaşım; Apache kullanıyorsanız .htaccess kurallarıyla, Nginx kullanıyorsanız server block içinde location kuralıyla doğrudan PHP erişimini engellemek, ardından siteyi 403/404 yanıtları ve kritik sayfa testleriyle doğrulamaktır.

WordPress güvenliğinde en sık yapılan hatalardan biri, yalnızca güçlü parola veya güvenlik eklentisiyle yetinmektir. Oysa saldırganlar çoğu zaman çekirdek dosyaların bulunduğu dizinleri, eski eklentileri, yanlış dosya izinlerini ve açık dizin listelemeyi tarar. wp-includes klasörü de bu taramaların hedeflerinden biridir. Bu rehberde, gerçek hosting ortamlarında uygulanabilir adımlarla wp-includes erişimini nasıl sınırlandıracağınızı, hangi kuralların siteyi bozabileceğini, Apache ve Nginx için örnek yapılandırmaları, test yöntemlerini ve bakım kontrol listesini bulacaksınız. WordPress sitenizi daha güvenli bir altyapıda çalıştırmak için WordPress Hosting ve genel koruma katmanı için SSL Sertifikası seçeneklerini de değerlendirebilirsiniz.

wp-includes Klasörü Nedir ve Neden Korunmalıdır?

wp-includes, WordPress çekirdeğinin temel kütüphanelerini içeren ana dizinlerden biridir. Tema sistemi, blok editörü, REST API bileşenleri, medya işleme, sınıflar, fonksiyonlar ve çeşitli JavaScript dosyaları bu yapı içinde yer alır. Basitçe söylemek gerekirse wp-includes, WordPress’in motor odalarından biridir; kullanıcıların doğrudan ziyaret etmesi gereken bir içerik alanı değildir.

Normal bir ziyaretçi site.com/wp-includes/ gibi bir adresi açmak zorunda değildir. Ancak sayfa kaynak kodunda wp-includes altındaki bazı statik varlıklar görülebilir. Örneğin WordPress’in varsayılan script dosyaları, emoji scriptleri veya editör bileşenleri bu dizinden yüklenebilir. Bu nedenle güvenlik önlemi alırken hedefi doğru belirlemek gerekir: statik dosyaların çalışmasını engellemeden PHP dosyalarına doğrudan web erişimini kapatmak.

Bu ayrım, profesyonel WordPress Klasör Yapısı Güvenliği yaklaşımının temelidir. Klasörleri rastgele kapatmak kısa vadede güvenli gibi görünse de canlı sitede beyaz sayfa, bozuk yönetim paneli, çalışmayan blok editörü veya hatalı tema görünümü gibi sorunlara yol açabilir. Amaç, WordPress’in ihtiyaç duyduğu dosyaları koruyarak saldırı yüzeyini daraltmaktır.

wp-includes Erişimini Kapatmak Ne Sağlar?

wp-includes klasöründe doğrudan PHP çalıştırmayı engellemek tek başına tüm saldırıları durdurmaz; ancak saldırı yüzeyini anlamlı ölçüde azaltır. Özellikle kötü amaçlı yazılım bulaşmış sitelerde saldırganlar, erişilebilir dizinlere zararlı PHP dosyası yüklemeye veya mevcut dosyaları çağırmaya çalışır. wp-includes altındaki PHP dosyalarının web üzerinden doğrudan çalıştırılmasını yasaklamak, bu senaryoda ek bir bariyer oluşturur.

Bu önlem şu kazanımları sağlar:

  • Çekirdek PHP dosyalarının doğrudan URL ile çağrılmasını sınırlar.
  • Dizin listeleme açıksa klasör içeriğinin görünmesini engellemeye yardımcı olur.
  • Otomatik bot taramalarına karşı gereksiz bilgi sızıntısını azaltır.
  • Güvenlik eklentisi olmasa bile web sunucusu seviyesinde koruma sağlar.
  • WAF, SSL, güncel PHP ve dosya izinleriyle birlikte katmanlı güvenliği güçlendirir.

Burada önemli nokta, bu işlemin bir güvenlik katmanı olduğudur. Güncel olmayan eklenti, zayıf yönetici parolası veya ele geçirilmiş FTP hesabı varsa wp-includes kuralı tek başına yeterli değildir. Güvenlik; hosting altyapısı, uygulama, kullanıcı yönetimi ve düzenli bakımın birleşimidir. Güvenli bir temel için Güvenli Web Hosting ve alan adı yönetiminde ek koruma için Domain Güvenliği içeriklerine bağlantı verilebilir.

wp-includes Kapatılırken En Sık Yapılan Hatalar

Klasörün tamamını engellemek

En yaygın hata, wp-includes klasörüne gelen tüm HTTP isteklerini 403 ile engellemektir. Bu yöntem ilk bakışta mantıklı görünür; fakat WordPress bazı statik varlıkları bu dizinden yüklediği için beklenmeyen sorunlar çıkarabilir. Örneğin blok editör açılmayabilir, bazı JavaScript dosyaları yüklenmeyebilir veya ön yüzde küçük ama kritik tasarım bozulmaları görülebilir.

Kuralı test etmeden canlıya almak

.htaccess veya Nginx yapılandırmasında tek karakterlik hata bile 500 Internal Server Error üretebilir. Özellikle yoğun trafik alan sitelerde kuralı doğrudan canlıya almak risklidir. Önce dosyanın yedeğini almak, mümkünse staging ortamında denemek ve ardından canlıya kontrollü geçmek gerekir. Hostragons altyapısında staging veya yedekleme seçenekleri kullanılıyorsa Web Hosting Yedekleme doğal bir iç bağlantı olarak eklenebilir.

Güvenlik eklentisine tamamen güvenmek

Güvenlik eklentileri faydalıdır; ancak web sunucusu seviyesindeki kurallar daha erken aşamada devreye girer. Bir istek PHP’ye ulaşmadan Apache veya Nginx tarafından engellenirse kaynak tüketimi de azalır. Bu nedenle eklenti kullanılsa bile temel sunucu kuralları göz ardı edilmemelidir.

Uygulamadan Önce Kontrol Listesi

wp-includes erişimini sınırlandırmadan önce kısa bir hazırlık yapmak, kesinti riskini ciddi ölçüde azaltır. Aşağıdaki kontrol listesi özellikle canlı WordPress sitelerinde önerilir:

  • Mevcut .htaccess veya Nginx yapılandırmasının yedeğini alın.
  • WordPress çekirdeğini, temaları ve eklentileri güncelleyin.
  • PHP sürümünüzün desteklenen ve güvenli bir sürüm olduğundan emin olun.
  • Dosya izinlerini kontrol edin: klasörler genellikle 755, dosyalar 644 olmalıdır.
  • wp-config.php ve .htaccess gibi kritik dosyaların yazma izinlerini gereksiz açık bırakmayın.
  • Önbellek, CDN veya güvenlik eklentisi kullanıyorsanız değişiklikten sonra cache temizliği planlayın.
  • Admin paneli, ana sayfa, yazı sayfası, iletişim formu ve ödeme sayfası gibi kritik alanları test edecek bir liste oluşturun.

Bu hazırlıklar yaklaşık 10-15 dakika sürer; ancak yanlış bir kuralın neden olacağı saatlerce sürebilecek kesintiyi önler. Kurumsal sitelerde değişikliği düşük trafik saatlerinde yapmak daha güvenlidir.

Apache Sunucuda .htaccess ile wp-includes PHP Erişimini Kapatma

Apache kullanan paylaşımlı hostinglerde en yaygın yöntem .htaccess dosyasıdır. WordPress ana dizininde bulunan .htaccess dosyasına eklenen doğru kurallar, wp-includes içindeki belirli PHP çağrılarını engelleyebilir. İşleme başlamadan önce dosyanın bir kopyasını bilgisayarınıza indirin veya hosting panelindeki dosya yöneticisi üzerinden yedek oluşturun.

Önerilen .htaccess kuralı

Aşağıdaki yaklaşım, wp-includes altında doğrudan PHP erişimini engellemeye odaklanır ve statik dosyaların çalışmasını korur:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^wp-includes/.*[.]php$ - [F,L]
</IfModule>

Bu kuralın mantığı basittir: URL wp-includes ile başlıyor ve .php ile bitiyorsa istek yasaklanır. Böylece wp-includes içindeki PHP dosyaları tarayıcıdan çağrılamaz. Buna karşılık .js, .css, .png, .svg gibi statik dosyalara erişim devam eder. WordPress’in ön yüzü ve yönetim paneli için daha güvenli denge budur.

Dizin listelemeyi kapatma

Bir diğer kritik ayar dizin listelemeyi kapatmaktır. Eğer sunucuda dizin listeleme açıksa kullanıcılar bazı klasörlerin içeriğini görebilir. Ana .htaccess dosyanıza şu satırı eklemek genellikle yeterlidir:

Options -Indexes

Bu satır, index dosyası olmayan klasörlerde dosya listesinin görünmesini engeller. Modern hostinglerde çoğu zaman varsayılan olarak kapalıdır; ancak kontrol etmek iyi bir güvenlik pratiğidir.

Değişiklikten sonra test

Kuralı ekledikten sonra şu testleri yapın:

  • siteadresiniz.com/wp-includes/ adresini açın; dizin listesi görünmemelidir.
  • wp-includes altındaki bilinen bir PHP dosyasını doğrudan çağırmayı deneyin; 403 veya 404 almalısınız.
  • Ana sayfayı, blog yazısını ve yönetim panelini kontrol edin.
  • Tarayıcı geliştirici araçlarında Console ve Network sekmelerinde 404/403 kaynak hatası var mı bakın.
  • Önbellek eklentisi veya CDN kullanıyorsanız cache temizleyin.

Testlerin tamamı başarılıysa kural üretim ortamında güvenle bırakılabilir. 500 hatası alırsanız en hızlı çözüm, eklediğiniz satırları kaldırıp yedek .htaccess dosyasını geri yüklemektir.

Nginx Sunucuda wp-includes PHP Erişimini Kapatma

Nginx kullanan VPS, dedicated veya yönetilebilir sunucu ortamlarında .htaccess çalışmaz. Kuralı Nginx site yapılandırma dosyasına, genellikle server bloğu içine eklemek gerekir. Bu işlem için SSH erişimi ve yapılandırma dosyalarını düzenleme yetkisi gerekir. Emin değilseniz hosting destek ekibinden yardım almak daha güvenlidir.

Önerilen Nginx location kuralı

Temel kural şu mantıkla uygulanabilir:

location ~* ^/wp-includes/.*[.]php$ {
deny all;
}

Bu kural, wp-includes altındaki PHP dosyalarına gelen istekleri engeller. Değişiklikten sonra yapılandırmayı test etmek önemlidir:

nginx -t

Test başarılıysa Nginx yeniden yüklenir:

systemctl reload nginx

Burada reload komutu, restart komutuna göre daha kontrollüdür; çalışan bağlantıları tamamen kesmeden yapılandırmayı yeniler. Yine de kritik sitelerde değişikliği düşük trafikte yapmak önerilir.

Nginx kullanırken dikkat edilmesi gerekenler

  • Kuralı doğru server bloğuna eklediğinizden emin olun; aynı sunucuda birden fazla site olabilir.
  • CDN veya reverse proxy kullanıyorsanız gerçek testleri CDN cache temizliğinden sonra yapın.
  • PHP-FPM yapılandırmasının yalnızca gerekli dosyaları işlediğini doğrulayın.
  • Log dosyalarını kontrol edin: access.log ve error.log hatalı kuralı hızlı gösterir.

Nginx ortamında yanlış location sıralaması beklenmedik sonuçlar doğurabilir. Bu nedenle kuralın WordPress permalink ve PHP işleme bloklarıyla çakışmadığından emin olun.

Yöntemlerin Karşılaştırması

Aşağıdaki tablo, wp-includes erişimini sınırlandırmak için kullanılan başlıca yöntemleri özetler:

Yöntemlerin Karşılaştırması
YöntemUygun OrtamAvantajDikkat Edilecek Nokta
.htaccess kuralıApache ve LiteSpeed hostingHızlı uygulanır, paylaşımlı hostinglerde erişilebilirdirYanlış sözdizimi 500 hatasına neden olabilir
Nginx location kuralıVPS, dedicated, yönetilebilir sunucuSunucu seviyesinde güçlü ve performanslıdırSSH ve yapılandırma bilgisi gerekir
Güvenlik eklentisiTeknik bilgisi sınırlı kullanıcılarArayüz üzerinden kolay yönetilirHer kural sunucu seviyesinde uygulanmayabilir
WAF ve CDNYüksek trafikli veya saldırı alan sitelerBot, brute force ve kötü istekleri erkenden filtrelerYanlış kural gerçek kullanıcıları engelleyebilir
Dosya izinleriTüm WordPress siteleriTemel güvenlik hijyenidirTek başına URL erişimini kapatmaz

Pratikte en iyi sonuç, bu yöntemlerin birlikte kullanılmasıyla alınır. Örneğin Apache hostingde .htaccess kuralı, doğru dosya izinleri, güncel WordPress çekirdeği, SSL ve düzenli yedekleme bir araya geldiğinde katmanlı bir savunma oluşur. Hosting altyapısında güvenlik duvarı ve izolasyon da önemli olduğu için Kurumsal Hosting seçimi kritik sitelerde fark yaratır.

Dosya İzinleri ve Sahiplik Ayarları

wp-includes erişimini kapatmak, dosya izinleri yanlışsa eksik kalır. WordPress’te genel kabul gören izinler klasörler için 755, dosyalar için 644 değerleridir. Bu değerler, web sunucusunun dosyaları okumasına izin verirken gereksiz yazma yetkilerini azaltır. Bazı özel hosting ortamlarında farklı kullanıcı ve grup yapılandırmaları olabilir; bu nedenle panelinizin önerilerini de dikkate almalısınız.

Özellikle 777 izni, ciddi bir güvenlik riskidir. Bir klasöre herkesin yazabilmesi, kötü amaçlı dosya yükleme senaryolarını kolaylaştırır. wp-content/uploads gibi yazılabilir olması gereken dizinlerde bile PHP çalıştırma engellenmelidir. wp-includes ise normal koşullarda WordPress güncellemeleri dışında kullanıcı tarafından yazılabilir olmamalıdır.

Bir güvenlik denetiminde şu değerler kontrol edilebilir:

  • wp-includes klasörü: genellikle 755
  • wp-includes içindeki PHP dosyaları: genellikle 644
  • wp-config.php: mümkünse 600 veya hosting yapısına uygun daha kısıtlı izin
  • .htaccess: genellikle 644, düzenleme sonrası gereksiz yazma yetkisi olmadan

Bu ayarlar her sunucuda aynı davranmayabilir. Yanlış izin, sitenin güncelleme yapamamasına veya dosyaları okuyamamasına neden olabilir. Değişiklik sonrası WordPress sağlık kontrolü ve hata logları incelenmelidir.

Güvenlik Eklentileri Bu İşlemi Yapar mı?

Wordfence, iThemes Security benzeri güvenlik eklentileri bazı hardening kurallarını otomatik önerebilir. Bu eklentiler brute force koruması, dosya değişikliği izleme, kötü amaçlı yazılım taraması ve login güvenliği gibi alanlarda faydalıdır. Ancak wp-includes erişimini kapatma konusunda eklentinin ne yaptığı mutlaka kontrol edilmelidir.

Bazı eklentiler .htaccess dosyasına otomatik kural ekler. Bazıları ise yalnızca uygulama seviyesinde koruma sağlar. Uygulama seviyesindeki koruma, istek WordPress’e ulaştıktan sonra devreye girdiği için sunucu seviyesindeki engelleme kadar erken değildir. Bu yüzden profesyonel yaklaşım, eklenti ile sunucu yapılandırmasını birlikte değerlendirmektir.

Güvenlik eklentisi kullanıyorsanız şu kontrolleri yapın:

  • Eklentinin .htaccess veya Nginx kuralı ekleyip eklemediğini kontrol edin.
  • Aynı işi yapan iki farklı kuralın çakışmadığından emin olun.
  • Eklenti güncellemesinden sonra güvenlik ayarlarının değişmediğini doğrulayın.
  • Performans etkisini ölçmek için cache ve sunucu kaynak kullanımını izleyin.

Birden fazla güvenlik eklentisini aynı anda kullanmak çoğu zaman iyi fikir değildir. Çakışan firewall, login ve rewrite kuralları performansı düşürebilir veya yanlış engellemelere neden olabilir.

wp-includes Korumasını Test Etme: Pratik Senaryo

Uygulamanın başarılı olduğunu anlamak için sadece sitenin açılması yeterli değildir. Aşağıdaki 7 adımlı pratik test, küçük işletme sitelerinden e-ticaret projelerine kadar çoğu WordPress kurulumunda uygulanabilir:

  • 1. Ana sayfayı gizli sekmede açın ve görsel bozulma olup olmadığını kontrol edin.
  • 2. Bir blog yazısı, kategori sayfası ve arama sonucu sayfasını ziyaret edin.
  • 3. wp-admin paneline giriş yapın; blok editör ve ortam kütüphanesini açın.
  • 4. Tarayıcı geliştirici araçlarında Console sekmesini kontrol edin.
  • 5. Network sekmesinde wp-includes altındaki statik dosyaların gereksiz engellenmediğini doğrulayın.
  • 6. wp-includes altında doğrudan PHP dosyası çağrısı yapın; 403 veya 404 yanıtı bekleyin.
  • 7. Sunucu hata loglarında yeni ve tekrarlayan hata var mı inceleyin.

Bu test yaklaşık 5 dakika sürer ve yanlış yapılandırmaları hızlıca yakalar. Özellikle WooCommerce gibi ödeme süreçleri olan sitelerde sepet, ödeme ve kullanıcı hesabı sayfaları da ayrıca test edilmelidir. Canlı gelir üreten sitelerde küçük bir JavaScript engeli bile dönüşüm oranını etkileyebilir.

Ek WordPress Klasör Yapısı Güvenliği Önlemleri

wp-includes koruması iyi bir başlangıçtır; ancak WordPress güvenliğini bütünsel düşünmek gerekir. Aşağıdaki ek önlemler, saldırı yüzeyini daha da azaltır:

  • WordPress sürümünü gizlemeye çalışmak yerine çekirdeği güncel tutun.
  • Kullanılmayan tema ve eklentileri tamamen silin.
  • Admin kullanıcı adını tahmin edilmesi zor hale getirin.
  • İki faktörlü kimlik doğrulama kullanın.
  • XML-RPC kullanmıyorsanız erişimini sınırlandırın.
  • wp-login.php için rate limit veya ek doğrulama uygulayın.
  • Günlük otomatik yedekleme ve geri yükleme testi yapın.
  • Tüm sitede HTTPS kullanın; SSL olmadan giriş bilgileri risk altındadır.

SSL, wp-includes erişimini doğrudan kapatmaz; ancak kullanıcı oturumları, form verileri ve yönetim paneli trafiği için temel güvenlik sağlar. Bu nedenle WordPress güvenlik rehberlerinde SSL her zaman ilk katmanlardan biridir. Bu noktada SSL Sertifikası Satın Al ve Ücretsiz SSL Kurulumu bağlantıları içerik içinde doğal şekilde konumlandırılabilir.

Ne Zaman Profesyonel Destek Almalısınız?

Basit bir Apache hostingde .htaccess kuralı eklemek çoğu kullanıcı için yönetilebilir bir işlemdir. Ancak özel Nginx yapılandırması, çoklu site ağı, WooCommerce mağazası, yüksek trafikli haber sitesi veya kurumsal portal söz konusuysa profesyonel destek almak daha doğru olabilir. Çünkü güvenlik kuralı yalnızca teknik olarak doğru değil, iş sürekliliği açısından da güvenli uygulanmalıdır.

Şu durumlarda uzman desteği önerilir:

  • Sunucuda birden fazla WordPress sitesi barındırıyorsanız.
  • Nginx, Varnish, CDN ve WAF birlikte kullanılıyorsa.
  • Son değişikliklerden sonra 403, 404 veya 500 hataları artıyorsa.
  • Site daha önce malware bulaşması yaşadıysa.
  • Ödeme, üyelik veya kişisel veri işleyen bir sistem çalıştırıyorsanız.

Güvenli hosting altyapısı, doğru izolasyon, düzenli yedekleme ve uzman destek, WordPress güvenliğinin görünmeyen ama kritik parçalarıdır. Altyapı seçimi yaparken yalnızca disk alanına değil; yedekleme, güvenlik duvarı, PHP sürüm desteği, SSL yönetimi ve teknik destek kalitesine de bakılmalıdır. Bu bağlamda Hostragons Hosting Paketleri ve WordPress Site Taşıma içerikleri okuyucu için yararlı olabilir.

Sonuç

WordPress Klasör Yapısı Güvenliği kapsamında wp-includes klasörüne erişimi kapatmanın doğru yolu, klasörün tamamını engellemek değil; wp-includes içindeki PHP dosyalarına doğrudan web erişimini kapatmak ve dizin listelemeyi devre dışı bırakmaktır. Apache için .htaccess, Nginx için location kurallarıyla bu işlem kısa sürede uygulanabilir. Ancak her değişiklikten önce yedek almak, sonrasında admin paneli ve ön yüz testlerini yapmak gerekir.

Kısa özetle: statik dosyaları bozmayın, PHP erişimini sınırlandırın, dizin listelemeyi kapatın, dosya izinlerini kontrol edin ve düzenli güncelleme yapın. Daha güvenli ve yönetilebilir bir WordPress altyapısı için Hostragons’un hosting, domain ve SSL çözümlerini inceleyebilir; ihtiyacınıza uygun yapılandırma konusunda destek alabilirsiniz.

Sıkça Sorulan Sorular

wp-includes klasörünü tamamen kapatmak güvenli mi?

Genellikle önerilmez. wp-includes içinde WordPress’in ihtiyaç duyduğu JavaScript, CSS ve statik dosyalar bulunabilir. Tam engelleme site görünümünü veya yönetim panelini bozabilir. Daha güvenli yaklaşım, bu klasördeki PHP dosyalarına doğrudan erişimi kapatmaktır.

.htaccess kuralı ekledikten sonra 500 hatası alırsam ne yapmalıyım?

Önce eklediğiniz son kuralları kaldırın veya yedek .htaccess dosyasını geri yükleyin. Ardından kuralı sözdizimi hatalarına karşı kontrol edin. Hata devam ederse hosting hata loglarını inceleyin veya teknik destekten yardım alın.

Nginx sunucuda .htaccess çalışır mı?

Hayır. .htaccess Apache ve LiteSpeed ortamlarında kullanılır. Nginx sunucularda benzer kısıtlamalar server block içindeki location kurallarıyla yapılır ve değişiklikten sonra nginx -t ile yapılandırma test edilmelidir.

Bu işlem WordPress sitemi tamamen güvenli yapar mı?

Hayır. wp-includes PHP erişimini kapatmak önemli bir güvenlik katmanıdır ancak tek başına yeterli değildir. Güncellemeler, güçlü parolalar, iki faktörlü doğrulama, SSL, yedekleme, güvenlik duvarı ve doğru dosya izinleri birlikte uygulanmalıdır.

Güvenlik eklentisi kullanıyorsam ayrıca wp-includes kuralı eklemeli miyim?

Eklentinin hangi kuralları uyguladığına bağlıdır. Bazı eklentiler .htaccess kuralı ekler, bazıları yalnızca uygulama seviyesinde koruma sağlar. Çakışma oluşturmadan sunucu seviyesinde PHP erişimini sınırlandırmak genellikle daha güçlü bir çözümdür.

Bu yazıyı paylaş:

Hostragons Ekibi

Hosting, sunucu ve alan adı konularında uzman ekibimizden güncel rehberler. Projeniz için doğru çözümü birlikte bulalım.

Bize Ulaşın