WordPress sitenizin güvenliğini artırmak istiyorsanız, wp-includes klasörüne dışarıdan erişimi engellemek en temel adımlardan biri. Bu klasör, WordPress’in çekirdek dosyalarını barındırır ve hacker’ların hedefi olabilir. Eğer bir site sahibiyseniz, muhtemelen “wp-includes erişim kısıtlama” veya “WordPress dizin koruma” gibi aramalarla buraya geldiniz. Bu rehberde, bu işlemin nasıl yapılacağını adım adım açıkladık.
Hızlı Yol: wp-includes klasörüne erişimi kısıtlama
Aşağıda daha fazla yöntemden bahsedeceğiz fakat hızlı işlem için WordPress sitenizin wp-includes dosyalarına ve dizinine erişimi engellemek için .htaccess dosyanıza şu kodu ekleyebilirsiniz:
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
Wp-includes Nedir ve Neden Erişimi Kısıtlamalısınız?
wp-includes klasörü; çekirdek PHP sınıfları, fonksiyonlar, JavaScript kitaplıkları ve üçüncü taraf kütüphaneler gibi WordPress’in çalışması için gereken dahili dosyaları barındırır. Örneğin, veritabanı bağlantıları, tema fonksiyonları ve eklenti entegrasyonları burada saklanır. Ancak bu dosyalar doğrudan tarayıcı üzerinden erişilebilir olursa, kötü niyetli kişiler exploit’ler yoluyla sitenize sızabilir.
Neden korumalısınız? Güncel istatistiklere göre, WordPress sitelerinin %40’ından fazlası güvenlik açıklarından etkileniyor. Bu klasörü kısıtlamak, dizin listelemeyi önler ve potansiyel tehditleri azaltır. Özellikle paylaşımlı hosting kullananlar için son derece önemlidir. Bu işlem sitenizin hızını etkilemez, aksine gereksiz erişimleri bloklayarak performansı iyileştirebilir.
Wp-includes Klasörüne Erişimi Kısıtlama Yöntemleri
wp-includes klasörüne erişimi engellemek için birkaç yol var. En popüler olanlar .htaccess dosyası üzerinden manuel ayarlar ve eklenti kullanımı. Hangi yöntemi seçerseniz seçin öncesinde mutlaka sitenizin yedeğini alın – çünkü hatalı bir değişiklik sitenizi olumsuz etkileyebilir.
1) .htaccess ile Manuel Kısıtlama
Apache tabanlı sunucularda (çoğu hosting’de varsayılan) .htaccess dosyası en etkili araç. Bu dosya, sunucu kurallarını belirler ve wp-includes erişim engelleme için ideal.
- wp-include dosyalarına ve dizinine tüm erişimi engellemek için .htaccess dosyanıza bu kodu ekleyin:
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
- Daha etkli güvenlik için .htaccess dosyanıza şu kodları da ekleyebilirsiniz:
# Dizin taramasını devre dışı bırak
Options -Indexes
# PHP Dosyalarına Erişimi Tamamen Engelle
<Files *.php>
Order Deny,Allow
Deny from all
</Files>
Kodları ekledikten sonra Değişiklikleri Kaydedin ve Test Edin. Bunun için tarayıcıda siteniz.com/wp-includes/ adresine gidin. “403 Forbidden” hatası alıyorsanız işlem tamamdır.
2) Nginx ile Kısıtlama
Nginx sunucularda .htaccess çalışmaz. Bunun yerine, sunucu konfigürasyonunda “location /wp-includes/ { deny all; }” gibi kurallar ekleyin. Resmi Nginx dokümanları bu konuda detaylı rehber sunuyor. İşte basit bir örnek:
# wp-includes içindeki PHP dosyalarına erişimi engelle
location ~* ^/wp-includes/.*\.php$ {
deny all;
return 403;
}
# belirli alt dizinleri ekstra engelle (örnek)
location ~* ^/wp-admin/includes/ {
deny all;
return 403;
}
3) Eklenti Kullanarak Otomatik Kısıtlama
Güvenlik eklentilerinin çoğu tek tıkla wp-includes dahil diğer tüm dosyalarınızı korumanıza yardımcı olacak seçenekler sunar. Bunun için daha önce hazırladığımız “En İyi WordPress Güvenlik Eklentileri” önerilerini içeren kılavuzumuzdan faydalanabilirsiniz.
4) IP Bazlı Erişim Kontrolü
.htaccess dosyasına Allow from [sizin IP’niz] kuralı ekleyerek wp-includes’e sadece belirli IP’lerden erişim sağlayın. Bu, özellikle uzaktan çalışan ekipler için ideal. Örnek kod:
<FilesMatch "\.(php|inc)$">
Order Deny,Allow
Deny from all
Allow from 192.168.1.1
</FilesMatch>
Eğer dinamik IP kullanıyorsanız, Cloudflare Access gibi araçlarla IP aralıklarını yönetin.
5) Cloudflare ile Kısıtlama
Cloudflare’ın Firewall Rules özelliğiyle, wp-includes yoluna gelen istekleri doğrudan bloklayabilirsiniz.İşte basit bir kurulum:
- Cloudflare Dashboard’a Girin: Hesabınıza giriş yapın, sitenizi seçin ve Security > WAF > Firewall Rules bölümüne gidin.
- Yeni Kural Oluşturun: “Create Firewall Rule” butonuna tıklayın. Kurala bir isim verin, örneğin “Block wp-includes Access”.
- İfade (Expression) Oluşturun: Expression Editor’da şu koşulu ekleyin:
- Field: URI Path
- Operator: contains
- Value: /wp-includes/
- Tam ifade: (http.request.uri.path contains “/wp-includes/”) Bu işlem, wp-includes klasörüne veya alt yollarına (örneğin, /wp-includes/js/) gelen tüm istekleri yakalar.
- Eylem (Action) Seçin:
- Block: Tamamen engelle (önerilen, 403 hatası verir).
- Managed Challenge: Bot’ları CAPTCHA ile test et (daha az agresif).
- JS Challenge: JavaScript tabanlı doğrulama (ücretsiz planda ideal).
- Kuralı Dağıtın: “Deploy” butonuna tıklayın. Kural anında aktif olur.
- Test Etme: Tarayıcınızda siteniz.com/wp-includes/ adresini açın. “Access Denied” veya challenge sayfası görmelisiniz.
Örnek İfade İyileştirmeleri (Daha Güvenli Hale Getirmek İçin):
- Sadece PHP dosyalarını engelle:
(http.request.uri.path contains "/wp-includes/" and http.request.uri.path matches "\.php$") - Belirli IP’leri hariç tut:
(http.request.uri.path contains "/wp-includes/" and ip.src ne 192.0.2.1)– Kendi IP’nizi ekleyin. - Googlebot gibi meşru bot’ları hariç tutun:
(http.request.uri.path contains "/wp-includes/" and not cf.client.bot) - Log İzleme:
Security > Events‘te engellenen istekleri kontrol edin. Şüpheli trafiği rate limiting ile sınırlayın (örneğin, dakikada 10 istek sınırı). - Managed Rules Entegrasyonu: Cloudflare’ın WordPress Managed Rules setini etkinleştirin – wp-includes exploit’lerini otomatik yakalar.
- Çakışma Çözümü: Eğer site bozulursa (örneğin, eklenti çağrıları), kuralı devre dışı bırakın ve log’lara bakın. Redis gibi araçlarla uyumsuzluk varsa, IP Access Rules ile sunucu IP’nizi whitelist edin.
6. Ek Güvenlik Önlemleri
- Bulut Tabanlı Firewall Entegrasyonu: Cloudflare veya Sucuri gibi CDN’lerle Web Application Firewall (WAF) kurun. wp-includes’e yönelik exploit’leri otomatik bloklayın. Cloudflare’ın WAF kurallarında “Managed Rules” setini etkinleştirin. Bunun için Cloudflare dashboard’undan “Firewall Rules” altında
uri.path contains "/wp-includes/" and not cf.edge.server_port in {80 443}gibi bir kural ekleyin. - Dosya İzinleri ve Sahiplik Ayarı: wp-includes dosyalarını 644 (okuma/yazma izinleri sadece sahip için), klasörleri 755 olarak ayarlayın. Daha fazla detay için: WordPress Dosya İzinleri Nasıl Değiştirilir?
- Dosya Değişikliklerini İzleme: OSSEC veya Wordfence gibi araçlarla wp-includes’teki değişiklikleri gerçek zamanlı izleyin. Eklentiyle: Wordfence’in “File Change Detection” özelliğini etkinleştirin.
- Debug ve Log Dosyalarını Koruma: debug.log gibi dosyaları wp-includes dışına taşıyın veya erişimi engelleyin.
- Otomatik Güncellemeler ve Versiyon Gizleme: wp-includes’i güncel tutmak için
define('WP_AUTO_UPDATE_CORE', true);kodunu wp-config.php’ye ekleyin. - Yukarıdaki önlemler dahil daha fazla önlem ve bu işlemlerin nasıl yapılacağına dair detaylı kılavuzumuzdan faydalanın: WordPress Güvenlik Önlemleri: Web Site Güvenliği.
