UzmanWeb.Net Forum

WordPress Güvenlik Tedbirleri (Dosyalar) (Okunma sayısı 1466 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

kh4ron

* Ocak 14, 2014, 00:07:37 ÖÖ
Merhabalar arkadaşlar bir makale daha wordpress güvenliği hakkında.Bu makalemizde wordpress dosya ayarlarını daha güvenli hale getirme yollarını anlatmaya çalıstık.

 

WordPress Güvenlik Tedbirleri  – Dosyalar

    Dosya izinleri
    Eklenti (Plugins) Dizini
    Htaccess Dosyası
    Wp-admin Dosyası
    Wp-config.php Dosyası
    wp-config.php Dosyasını Şifrelemek
    wp-config.php Dosyasının Konumunu Değiştirmek
    wp-config.php Dosyasına Erişimi Engellemek
    Yönetim panelinden tema editörünü kaldırın
    WordPress Sürümünü Gizleme İşlemleri

 

Güvenlik konusunda belki de en önemli meseledir dosyaların güvenliği. Çünkü dosyalar bizzat sitelerin çökertilmelerine sebep olabilecekleri gibi wp-config.php gibi kritik bir dosya nedeniyle veritabanınıza da veda etmek zorunda kalabilirsiniz. Dosya güvenliği konusunda wp-config.php dosyası üzerinde özellikle durmak istiyorum. Bununla birlikte diğer dosyaların güvenliği ve .htaccess dosyasından da bahsedeceğim.

Dosya İzinleri

WordPress kurulumunu tamamladıktan sonra ilk yapmanız gereken şey ana dizindeki readme.html, license.txt, wp-sample-config.php  dosyalarını silmek ve wp-adminklasöründeki install.php dosyasının ismini değiştirme işlemlerini yapmak veya silmektir. Ardından sıra dosyaların izinlerindedir. Yanlış bir dosya izni nedeniyle sunucuya sızılabileceğini unutmayın. WordPress’in kritik dosya ve kalsörleri ile bunların izinleri için aşağıdaki tabloyu referans olarak alabilirsin ama tabi çok daha sıkı bir sistem için izinleri kendi isteğinize göre ayarlayabilirsiniz.

    Ana dizin (root directory) : 0755
    wp-includes/                        : 0755
    wp-admin/                           : 0755
    wp-admin/js/                      : 0755
    wp-content/                         : 0755
    wp-content/themes/          : 0755
    wp-content/plugins/          : 0755
    wp-admin/index.php         : 0644
    .htaccess                                : 0644
    wp-config.php                      : 0644

 

Bazı eklentiler kurulmak için wp-content gibi klasörlerin yazılabilir olmasını ister. Böyle durumlarda eklentiyi kurmadan önce dosya iznini 0777 yapın ve kurulum tamamlandıktan sonra klasörü tekrar eski dosya iznine döndürün. Aynı durum .htaccess dosyası için de geçerlidir. Mutlaka eski dosya iznine dönüş yapın.

Yükleme klasörünüzün (uploads, yuklemeler vb.) dosya izni 0777‘de kalabilir ama arada bir bu dizini kontrol etmek ve zararlı bir dosya (örneğin .php uzantılı ve sizin yüklemediğiniz bir dosya) var mı, bakmak gerekli.

Plugins Dizini

WordPress sisteminizde açık olmasa da kullandığınız eklentilerde açıklar bulunabilir. Ziyaretçilerinizin bu dizini yani eklentilerinizi görmelerini engellemek istiyorsanız boş bir dosya oluşturup bu dosyayı index.html olarak kaydedin ve wp-content/plugins dizinine FTP ile yükleyin. Artık eklentileriniz tarayıcı vasıtasıyla görünmezler.

Not: Güncel WordPress sürümlerinde zaten boş bir dosya bulunuyor(index.php). Bulunmayanlar bu bahsettiğim boş index.html dosyasını kullanabilirler.

.htaccess Dosyası

Güvenli bir WordPress için sağlam bir .htaccess dosyası çok önemlidir. Bu dosya genelde WordPress’in standart yönlendirme içeriğini barındırır ama geliştirmek ve güvenliğimizi artırmak bizim elimizdedir. Bu nedenle aşağıdaki kodları .htaccess dosyanızın en üstüne yapıştırmanızı öneririm. Her satırın üzerinde ilgili kodun ne işe yaradığını yazdım. Aşağıdaki kodları olduğu gibi kopyalayıp.htaccess dosyasına yapıştırarak kullanabilirsiniz. Eğer henüz bir .htaccess dosyanız yok ise boş bir dosya oluşturun, içine aşağıdaki kodları kopyalayın ve bu dosyayı sunucunuza yükleyin.

Kod:

    # .htaccess dosyasına erişimi engelle
    <files .htaccess>
    order allow,deny
    deny from all
    </files>

    # sunucu imzasını kaldır
    ServerSignature Off

    # dosya yükleme boyutunu 10mb ile sınırlandır
    LimitRequestBody 10240000

    # wpconfig.php dosyasına erişimi engelle
    <files wp-config.php>
    order allow,deny
    deny from all
    </files>

    # wp-load.php dosyasına erişimi engelle
    <files wp-load.php>
    order allow,deny
    deny from all
    </files>

    # dizin listelemeyi iptal et
    Options All –Indexes

Wp-admin Dosyası

Saldırganların shell işlemleri için theme-editor.php – plugin-editor.php dosyalarını çekmek isticeklerdir.  Bu işlemleri engellemenin yolu iki dosyanın sahte .txt uzantılı boş dosya kalıbı oluşturup aynı dizine atmaktır.

Örnek:

theme-editor.php – theme-editor.txt

plugin-editor.php – plugin-editor.txt

wp-config.php Dosyası

Bu dosya WordPress günlüklerinin en önemli dosyasıdır çünkü içinde veritabanına bağlantı için gerekli bilgiler ile birlikte temel ayarlar bulunur. İşte bu nedenle bu dosyayı mutlaka korumalıyız.

wp-config.php Dosyasını Şifrelemek

Bununla birlikte wp-config.php dosyasının içeriğini şifrelemeyi unutmayın. Şifreleme için ionCube,Zend Guard veya en basiti ve ücretsiz olan phpr.org sitesindeki aracı kullanabilirsiniz. Benim tercihimionCube‘den yana. Tabi şunu da unutmamak gerekir ki her şifre kırılabilir. Bu nedenle hiçbirine tam olarak referans olamam. Ben sadece böyle bir yolun da olduğunu bilmenizi istiyorum.

ionCube ile Dosya Şifrelemek: Aslında bu gerçekten çok basit bir işlem. Önce ionCube sitesine üye oluyorsunuz. Sonra kredi yüklemek için ödeme yapıp (minimum 5$ = 10 dosya) kredinizin yüklenmesini bekliyorsunuz. Krediniz yüklenince Encode (Şifrele) sayfasına gidiyor ve şifrelemek istediğiniz dosyayı gönderiyorsun. Dosya şifrelenip size geri veriliyor. Verilen dosyayı sitenize koyup direk kullanmaya başlayabiliyorsunuz.

ionCube ile şifrelenmiş bir wp-config.php dosyası yaklaşık olarak şöyle görünür.
<?php
if(!extension_loaded(‘ionCube Loader’)){$__oc=strtolower(substr(php_uname(),0,3));$__ln=
‘ioncube_loader_’.$__oc.’_’.substr(phpversion(),0,3).(($__oc==’win’)?’.dll’:’.so’);@dl($__ln);if(function_exists(‘_il_exec’)){return _il_exec();}$__ln=’/ioncube/’.$__ln;$__oid=$__id=realpath(ini_get(‘extension_dir’));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==’:’){$__id=str_replace(”,’/’,substr($__id,2));$__here=str_replace(”,’/’,substr($__here,2));}$__rd=str_repeat(‘/..’,substr_count($__id,’/’)).$__here.’/’;$__i=strlen($__rd);while($__i–){if($__rd[$__i]==’/’){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}@dl($__ln);}else{die(‘The file ‘.__FILE__.” is corrupted.n”);}if(function_exists(‘_il_exec’)){return _il_exec();}echo(‘Site error: the file ’.__FILE__.’ requires the ionCube PHP Loader ‘.basename($__ln).’ to be installed by the site administrator.’);exit(199);
?>
4+oV575DvTsGajqIUVykSFuJGG8fQa3HJdW84yY76SRKAYvtpoMNsaj+cvZ0rvmH+Oshi+/Hho
FumUwQCqePxKNCBS5qWo2+/U5v50KOGpurR5jzM2aoY8GZqeQ6W4jDu2MFPQ/vt41caF6wjzJOmtMs
GQv29n2lLMSGAvnG1G0vGHltkRu8EApnKgxVuGL2UOax2xVDOmD9kTlH/99tEU57
NvXrYIIfFLRPhypRoh02Prk4A0oGo7e32t40TkIi+YRufAQsKOaL4m8tOBGl9iBKeGxc5
TvLODf0SM5TcTmsf3Ab4CJCQzzrx6L23jsrUaHZPrBdOVubdBaG7P4txEdfVMA9HaPgR
kf0j7lB9i4Zhy879Ta6o54IcOpDaxMyhFZ9LmUTWjyvN0n92/1xc1CnAwbYKFLfPROeodE
KaJKedNNl2BCu0BbGLgk5b1U3+7QRdO4gfHogbUNw/q5kgvUftcTFTYk5eBi3i0ibbVhJYx
x8YyPqjUjh4hFiCSs0LZiPUJMY1qtMfWBfn+Jjqw11r4cpgjwVq5ur3+pMcQ8CxCnOHX8
DauxZ/fQP7eDKkbp/FJX7GlyV9z/zn5D+wIyKyfEEHYWiUEDDPIkIo2PGSs1ZhI
dnt3hyj0DbwCT9Gf51OkdUQulKGTwRzYFRIP8e3cVfpCXHjvc37l/jXFPN
vlCm6n6EQqPuhgYPO1Abpo+Ne5Xp7ihu6RtHI/KvQgpywub2BRpsvypvmzeNX359tzt543q92Mh5
HnyTYIFHXzXMRcLwu1Fu4YYCGnXKnJXS8ITq0MQV+A4zJd7dTgKv44WjI8tqZ4oLjQhTv/lEnk
R+zzPhnLKUHlvRF/Ww01Qbjzzneh+AxSIfHqdBtB3gnxwvo6dj8AN4EIl8Lk6tq8YHqBN9dWn
N03/6wC3rB2bgPP+xXzY/kuoH5W11lsIsjdfXobEj+tTpRANAMiBcxdu7+Ph97KKHTENlZ08g
fl+1a4WKvWavse/s8VcY7W8CM05r1JNGHJs83aBgx0wKOvIFBnBncZNdAvjL+adRQWdIstl+X
1AAnbaUbF1CgIVkcirAUGfN/YOgx6JjjO6Wk9vbXPN8aQXHe58LKKHolYMTnVimDuhyMYaYdF
6VZKqc+ZN4Ccss6QeMgz/7TIavAtumqzAlkZUBMhad0+we1eUmXEuQDGj2G7+/hj5pCKUjID
K1Hp9BkkepP8u0c8ecX+tU1uTmD8Rf3nvSoD7O0UFhWQL8mkUgeAmiafKDIoK+Co1qr7IwN3
avlp0M2alGZHgaOUV6wHUTH9j2AOgvHJXoa6jlo47KViPrvARriCUMSzH6dpZ23Fr0Lj+jkt
WP6UKIGL6MNLyM4K77ce4IbSBHr4zPIMTSzDPgGkpalp02tUIea0nQbcL67cDT6JuRZqxu7
FV0yCdPHFquanH5sgI9S3CxsSRbBh8i…

wp-config.php Dosyasının Konumunu Değiştirmek

wp-config.php dosyası çok önemli olduğu için sadece şifrelemeye güvenemeyiz. Bununla birlikte wp-config.php dosyasının bulunduğu dizini veya dosyanın direk ismini değiştirmeliyiz. Bunu yapmak için de sitemizin ana dizinindeki wp-load.php dosyasını açmalı ve wp-config.php yazan yerleri dilediğimiz şekilde değişirmeliyiz. Örneğin wp-content klasörüne taşımak için wp-load.phpdosyasındaki wp-config.php yazan yerleri wp-content/wp-config.php şeklinde değiştirmeliyiz. İlgili satırların değişmiş hali şu şekilde olacaktır.

    if ( file_exists( ABSPATH . ‘wp-content/wp-config.php’) ) {

    /** The config file resides in ABSPATH */
    require_once( ABSPATH . ‘wp-content/wp-config.php’ );

    } elseif ( file_exists( dirname(ABSPATH) . ‘/wp-content/wp-config.php’ ) && ! file_exists( dirname(ABSPATH) . ‘/wp-settings.php’ ) ) {

    /** The config file resides one level above ABSPATH but is not part of another install*/
    require_once( dirname(ABSPATH) . ‘/wp-content/wp-config.php’ );

wp-config.php Dosyasına Erişimi Engellemek

Bu dosyayı korumak için öncelikle .htaccess dosyasına, tarayıcı üzerinden wp-config.php ve wp-load.php dosyalarına erişimi engelleme kodunu eklemeliyiz. .htaccess dosyasını incelediğimiz başlıkta bu kodu zaten vermiştim ama yine de tekrar yazayım.

Kod:

    # wpconfig.php dosyasına erişimi engelle
    <files wp-config.php>
    order allow,deny
    deny from all
    </files>

    # wp-load.php dosyasına erişimi engelle
    <files wp-load.php>
    order allow,deny
    deny from all
    </files>

Yönetim panelinden tema editörünü kaldırın

Çok kullanıcılı sistemlerde, hele ki birden fazla yönetici varsa temanızın kodlarına karışmalarını istemeyebilirsiniz. Bu gibi durumlarda yönetim alanınızdan tema düzenleyicisini kaldırabilirsiniz. Bu nu yapmak için kullandığınız temada bulunan functions.php dosyasına aşağıdaki fonksiyonu eklemek yeterli olacaktır. Bu fonksiyonla beraber sizin haricinizde kimse tema düzenleme alanını kullanamayacak. Bu da size bazı dosyalarınızı ve size ait fonksiyonları koruyabilirsiniz…

Kodu functions.php dosyasında en son satırda bulunan ?> etiketinden önce ekleyin
Kod:

    function wpr_remove_editor_menu() {
    remove_action(‘admin_menu’, ‘_add_themes_utility_last’, 101);
    }

    global $remove_submenu_page, $current_user;
    get_currentuserinfo();
    if($current_user->user_login !== ‘admin’) { //Kullanıcı adınızı ekleyin
    add_action(‘admin_menu’, ‘wpr_remove_editor_menu’, 1);
    }

WordPress Sürümünü Gizleme İşlemleri

WordPresss versiyonunuzu gizlemeyi unutmayınız. Çünkü wordpress sürümünü her zamaan güncelleyemeyebilirsiniz. Bu nedenle eski versiyonda varsa bir açık, sizin başınızı ağrıtabilir. Bunun için temanızın functions.php dosyasına aşağıdaki kodu ekleyiniz. Tabi yedek alarak.

Kod:

    remove_action(‘wp_head’, ‘wp_generator’);
Kaynak
http://secmasterz.com
Kayıtlı