wordpress htaccess ile güvenlik önlemleri

Konu, 'Wordpress' kısmında Oğuzhan Mallı tarafından paylaşıldı.

  1. Oğuzhan Mallı

    Oğuzhan Mallı Yetkili Kişi Genel Yönetici

    Kayıt:
    6 Şubat 2015
    Mesajlar:
    525
    Beğeniler:
    414
    Meslek:
    Nükleer ve Atom Mühendisi
    En İyi Cevap:
    11
    Değerlendiriler:
    +519 / 5 / -1
    Üniversite:
    MEPhI, KTÜ
    WordPress 70 milyon kullanıcıya sahip dünyanın en popüler CMS'dir. Ama wordpress ne kadar güvenlidir? Wordpress de güvenlik nasıl sağlanır? Wordpress güvenlik önlemleri nedir?

    Bu yazıda wordpress altyapısına sahip web siteleri için bazı önlem alma tekniklerini göstereceğim. Bir başka yazıda htaccess ile site hızlandırma hakkında bilgi vermiştik.

    1- Olarak .htaccess dosyasını oluşturalım (ana dizinimiz de yok ise)

    İlk olarak aşağıdaki kod ile başlıyoruz. Kalıcı bağlantı ayarlarını yapmaktadır.

    Kod:
    # BEGIN WordPress
    
        <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]
        </IfModule>
        # END WordPress

    2. wp-config.php dosyasının korunması

    .htaccess dosyamızın içerisine aşağıdaki kodu ekliyoruz. Bu ko wp-config.php dosyasına dışarıdan müdahaleyi engelleyecek.

    Kod:
    <Files wp-config.php>
        order allow,deny
        deny from all
        </Files>

    3- Yönetici hesabını sınırlandırma (Opsiyonel)

    Kod:
    order deny,allow
    
        allow from 201.091.21.32 (bu kısıma kendi ip adresinizi yazınız)
        deny from all

    4- Kötü kullanıcıları engelleme

    Eğer aynı ip lerden sürekli yönetici hesabına erişme, şifre denemesi yapma, sunucuyu zorlama, kaynak dosyalara ulaşma vs gibi işlemlerde bulunan var ise ip sini banlayabilirsiniz.

    Kod:
     <Limit GET POST>
        order allow,deny
        deny from 201.091.21.32 ( Bu kısıma kötü kişinin ip si)
        allow from all
        </Limit>
    Yine birden fazla ise aynı koda ekleme yaparak devam ediyoruz.

    Kod:
    <Limit GET POST>
    order allow,deny
    deny from 201.091.21.32
    deny from 204.090.21.2
    allow from all
    </Limit>
    5- Dizinlerin listelenmesini kapama

    Bazı temalar ve eklentilerde açık olabiliyor veya farketmeden silmiş olabiliyoruz. Eğer dizininizde listelenen klasör var ise bunları kapatınız.

    Şöyle ki orada hangi dosyalar mevcut göre biliyorum. Mesela class-wp-theme.php gibi
    veya diğerleri google dan class-wp-theme.php diye arattığım zaman mesela dosyanın içeriğini buluyorum. Bu dosyanın içini gösteriyor. Yani php dosyasının içinde neler var görebiliyorum. Orada hangi değişkenleri kullanmış göre biliyorum. Sonra basit bir şekilde yukarıdan en basit yöntem olan post ile istediğimi gönderip kendime kapı aça bilirim.

    Aşağıdaki kodu .htaccess dosyamıza ekliyoruz. Bazı sunucularda çalışmayabiliyor. Eğer hala dizinler kapanmaz ise o dizine boş index.php atınız.

    Kod:
    Options All -Indexes
    6- Önemli gördüğünüz dosyalarınızı koruyabilirsiniz (opsiyonel)

    Kod:
    <files .htaccess="dosyanın adı buraya">
        order allow,deny
        deny from all
        </files>
    7- .htaccess dosyasının korunması

    Kulağa çılgınca gelebilir :) .htaccess ile sistemimizi korurken bazen açıklar .htaccess'den de kaynaklı olabiliyor. Onuda korumaya almamız gerekiyor.

    Kod:
     <Files ~ "^.*\.([Hh][Tt][Aa])">
        order allow,deny
        deny from all
        satisfy all
        </Files>
    Aşağıdaki koduda ekleyebilirsiniz.

    Kod:
    <FilesMatch "(\.htaccess)">
    Order deny,allow
    Deny from all
    </FilesMatch>

    8- Hotlink koruması

    Sitenizdeki resimleri başka siteler sizin sunucunuz üzerinden kendi sitelerinde kullanabilirler. Buda gereksiz yere sizin bant genişliğinize yansır. Bunu engellemek için aşağıdaki kodu kullababilirsiniz.

    Kod:
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www\.)muhendisbeyinler.net/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)google.com/.*$ [NC]
    Yine buraya izin verdiğizi siteleri ekleyebilirsiniz. Yukarıda kendi sitemize ve googlea izin verdik. Burayı silmeyi unutmayınız :)
    RewriteRule \.(gif|jpg|jpeg|bmp|zip|rar|mp3|flv|swf|xml|mp4|png|css|pdf)$ - [F]
    domain'i değiştirmeyi unutmayınız.

    9- Wordpess Admin Klasörünü Şifreleme


    İlk olara .htpasswds dosyamızı oluşturmamız gerekmektedir. Bu siteden oluşturabilirsiniz: htaccesstools.com/htpasswd-generator sitesine girdikten sonra kullanıcı adı ve şifre oluşturup create .htpasswds tıklayınız. Daha sonra çıkan kodları .htpasswds dosyası oluşturarak içine kopyalayıp bu dosyayı /public_html/ içine atabilirsiniz.

    Örnek yaptığım bir şifreleme:

    Kod:
    admin:$apr1$2ELzmWNL$TZMFaGlFTV.pvBAmhiXbu1
    
    Diğer Bir Yöntem

    home/user/.htpasswds/public_html/wp-admin/passwd/

    wp admin içerisinde passwd klasörü oluşturup içerisine yeni bir .htaccess dosyası oluşturuyoruz. Ardından içerisine aşağıdaki kodları ekliyoruz.

    Kod:
    AuthName "Admins Only"
    AuthUserFile /home/sizindizininiz/public_html/
    AuthGroupFile /dev/null
    AuthType basic
    require user putyourusernamehere
    <Files admin-ajax.php>
    Order allow,deny
    Allow from all
    Satisfy any
    </Files>
    10- Bazı Wordpress alt klasörlerinde PHP yürütmeyi kapatma

    Bazen kötü kişiler /wp-content/uploads/ veya /wp-includes/ klasörlerinden php dosya çalıştırarak kapı açabilirler. Bu klasörlerde php yürütmeyi kapatabiliriz. Nasıl yapacağız? FTP den bu klasörlere ulaşarak yeni bir .htaccess dosyası oluşturuyoruz. Bu dosya içerisine aşağıdaki kodları ekliyoruz.

    Kod:
    <Files *.php>
    deny from all
    </Files>
    11- wp-include ve içerik dosyalarının korumanın bir başka yolu

    Kod:
    <IfModule mod_rewrite.c>
    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]
    </IfModule>
    12- error.log dosyasının gizlenmesi

    sunucumuzun verdiği hataları herkes tarafından görülmesi pek yararımıza olmayabilir.

    Kod:
    <FilesMatch "(\error.log)">
    Order deny,allow
    Deny from all
    </FilesMatch>
     
    • Beğen Beğen x 1