4/22/2012

Wordpress'te Güvenlik Önlemleri

WordPress sitelerimizin güvenliği hepimiz için önemlidir. En önemli konu ise dosyalarımızın güvenliği. WordPress sisteminde wp-config.php gibi kritik bir dosya nedeniyle sitenize veda etmek zorunda kalabilirsiniz. Yazımızda wp-config.php dosyasını korumakla birlikte diğer tüm önlemleri bulacaksınız.


Dosya İzinleri


WordPress kurulumunu yaptıktan sonra wp-admin/install.php dosyasını silmeniz gerekmektedir. Sonra sıra dosyaların izinlerindedir. Yanlış bir dosya izniyle sunucunuza girilebileceğini unutmayın. WordPress’in önemli dosyaların izinlerini aşağıdaki gibi düzenlemelisiniz. Ancak daha iyi bir sistem için kendiniz 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 bazı klasörlerin 0777 olmasını ister. Bu durumda kurulumdan önce dosya iznini 0777 yapın ve kurulumdan sonra eski izin ayarlarına geri dönün. Yükleme klasörünüzün dosya izni 0777 kalabilir ancak ara sıra klasörün içini kontrol etmenizi tavsiye ediyorum.

Plugins Dizini


WordPress sitenizde açık bulunmasa bile kullandığınız eklentilerde açık bulunabilir. Bu dizini ziyaretçilere göstermek istemiyorsanız boş bir index.html dosyası oluşturup wp-content/plugins dizinine yükleyin. Bu anlattığım önlem güncel sürümlerde zaten index.php olarak alınmış durumda. Eğer yoksa boş index.html dosyasını kullanabilirsiniz.

Gereksiz Bilgilerin Görüntülenmesini Engelleyin


WordPress sitemize giriş yaparken bir hata aldığımızda size nerede hata yaptığınıza dair bilgiler verir. Bu şifresini unutan bir kullanıcıya yararlı bir bilgi olabilir ancak sitenizi hacklemeye çalışan biri için de yararlı bir bilgi olabilir. Bu yüzden bu hata yazısını kaldırmalıyız. Bunu yapabilmek için temanızın functions.php dosyasına uygun bir yere aşağıdaki kodu eklemeliyiz.
add_filter('login_errors',create_function('$a', "return null;"));

WordPress Sürüm Numaranızı Gizleyin


WordPress otomatik olarak sayfa kaynağında ek bir kodla kullandığınız WordPress sürümünü gösteriyor. Bu da yeni güncellemeler çıktığında güncellemeyen kullanıcılar için kötü bir durum. Bu kodu engellemek çok kolay. Aşağıdaki kodu temamızın functions.php dosyasına uygun bir yere eklemeliyiz.
remove_action('wp_head', 'wp_generator');

Varsayılan “admin” Kullanıcısını Değiştirmek


Eğer WordPress sitenizde kullanıcı adınız admin ise bunu değiştirmenizi öneririm. Bunu yapabilmek için veritabanınızdan şu SQL sorgusunu çalıştırmanız yeterli olacaktır.
UPDATE wp_users SET user_login = 'Yeni' WHERE user_login = 'Admin';

Zararlı URL İstekleri İçin Bir Eklenti


Hackerlar zayıf gördükleri sitelere saldırmak için çoğunlukla zararlı sorguları websitenize yönlendiriyor. WordPress’in kendi önlemleri var ancak yetersiz. Bu sebepten dolayı aşağıdaki eklentiyi sitenize kurun. Artık websiteniz zararlı sorgulardan korunacaktır.

Block Bad Queries 

.htaccess İle Dosyalarınızı Koruma Altına Alın


Güvenli bir WordPress sistemi için iyi bir .htaccess dosyası şart. Bu dosyada genellikle WordPress yönlendirme kodları vardır ama geliştirmek ve güvenliğimizi arttırmak bizim elimizdedir. Bu sebeple aşağıdaki kodları .htaccess dosyanızın en üstüne yapıştırmanızı tavsiye ederim. Her bir kodun ne işe yaradığı kodda yazmaktadır. Eğer henüz bir.htaccess dosyanız yoksa boş bir dosya oluşturup içine aşağıdaki kodları yazın ve sunucunuza yükleyin.
# Sunucu imzasını kaldır
ServerSignature Off

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

# Dizin listelemeyi iptal et
Options All -Indexes

# Dosya erişimlerini engelle

<files .htaccess>
order allow,deny
deny from all
</files>

<files wp-config.php>
order allow,deny
deny from all
</files>

<files wp-load.php>
order allow,deny
deny from all
</files>

Bazı önemli şeyler:

Sorun


WordPress’inizin yönetim paneline giriş yaparken bir hata aldığınız zaman CMS, size nerede hata yaptığınız ile ilgili çeşitli bilgiler verir. Eğer şifrenizi unuttuysanız bu sizin için gerçekten de yararlı bir bilgi olabilir. Ancak günlüğünüzü hacklemeye çalışan biri için de yararlı bir bilgi olabileceğini unutmamakta fayda var. Bu yüzden oturum açma ekranlarındaki hata mesajlarını neden kaldırmıyoruz?

Çözüm
Bu çeşit hata mesajlarını kaldırmanız için temanızın functions.php dosyasını açın ve aşağıdaki tek satırlık koduPHP kodlarınızın içerisinde uygun bir yere yerleştirip, dosyayı kaydedin.


1


add_filter('login_errors',create_function('$a', "return null;"));


Sorun
Bir WordPress kullanıcısıysanız wp-config.php dosyanızın ne kadar önemli olduğunu biliyor olmalısınız. Bu dosya ile veritabanınız ile ilgili önemli tüm bilgilere erişebiliyorsunuz. (kullanıcı adı, şifre, sunucu adı vb.) wp-config.php dosyası oldukça kritik bir durumda ve bu dosyayı koruma altına almamız oldukça basit.

Çözüm
.htaccess dosyanız, WordPress’inizi kurduğunuz dosyalar arasında bulunuyor. Bu dosyanın bir yedeğini alın ve dosyayı bir kod editörü ile açın. Ardından şu satırları dosyanıza ekleyip kaydedin.



1
2
3
4


<files wp-config.php>
order allow,deny
deny from all
</files>

Sorun
WordPress çok popüler bir sistem olduğundan websitenizi kendilerine çıkar sağlamak amacıyla rahatsız edecek pek çok kullanıcı ve spam botları bulunmakta. Popüler siteler hergün bu spam yayanlardan nasiplerini almamak için çeşitli yöntemler üretiyorlar. Bunları önleyen çeşitli ek yazılımlar ve eklentiler bulunsa da sorunu kökten çözmek oldukça basit. Erişimi engelleyin!

Çözüm
.htaccess dosyamıza engellemek istediğimiz kullanıcının, spam yorumları yapan botların IP adreslerini yazıyoruz. 123.456.789 kısmını keşfettiğiniz IP adresleri ile değiştiriyoruz. Bu işlemi yapmadan önce yedek almayı unutmuyoruz.


1
2
3
4
5


<Limit GET POST PUT>
order allow,deny
allow from all
deny from 123.456.789
</LIMIT>


Açıklama
Apache web sunucuları bu tür işlemler için oldukça kolay yönetilebilir sistemler. Bu kod ile sunucumuza 123.456.789 IP adresli kullanıcının erişimini engellediğimizi söylüyoruz. Farklı IP adresleri de eklemek isterseniz kodu şu şekilde uzatıp, diğer IP adreslerini de ekleyebilirsiniz.



1
2
3
4
5
6
7
8


<Limit GET POST PUT>
order allow,deny
allow from all
deny from 123.456.789
deny from 93.121.788
deny from 223.956.789
deny from 128.456.780
</LIMIT>


Sorun
Websiteniz biraz olsun tanınıyorsa, bazı insanlar sizin özgün olarak ürettiğiniz içeriği, sizden izinsiz olarak kendi sitelerinde yayınlayabiliyorlar. Mutlaka birçoğunuzun başına gelmiştir. Bunun ismi genel anlamda ‘Emek Hırsızlığı‘dır. Daha da önemlisi sizin yazılarınızda kullandığınız resimleri de çekerek, sunucunuzun trafiğinin boş yere harcanmasına neden olmaktadır.

Çözüm
Bu tür içerik hırsızlıkları ile mücadele için .htaccess dosyanıza şu kodları girebilirsiniz. (.htaccessişlemleriniz için daima yedek almanızı öneriyorum)


1
2
3
4
5
6


RewriteEngine On
# ?site\.com/ bolumunu kendi website adresiniz ile degistirin
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?site\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
# /images/nohotlink.jpg kismini gorunecek olan resim ile degistirin
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]


Bu işlemi yaptıktan sonra sizin sunucunuzda bulunan resimleri yalnıca kendi sitenizde kullanabileceksiniz. Websiteniz üzerinden alınan resimlere karşılık yasakladığınız nohotlink.jpg resmi görüntülenecektir. Bu resim yerine düz ve boş bir resim seçerseniz aynı şekilde karşı taraf boş bir resim görecektir. İstediğiniz resmi seçmek size kalmış. Hayal gücünüzü kullanın!

Sorun
Hackerlar zayıf gördükleri sitelere saldırmak için çoğunlukla zararlı sorguları websitenize yönlendiriyor. WordPress, otomatik olarak bu tür saldırılar için bir çeşit koruma mekanizması geliştirmiş hali hazırda, ancak yeterli değil.

Çözüm
Aşağıdaki kodları, gelişmiş bir editör ile oluşturun ve blockbadqueries.php şeklinde, PHP uzantısında kaydedin ve wp-content/plugins klasörünüze gönderin. Ardından WordPress Yönetim Paneli’ne girip Eklentiler kısmından aktifleştirin. Artık websiteniz zararlı sorgulardan korunacaktır.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27


<?php
/*
Plugin Name: Block Bad Queries
Plugin URI: http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/
Description: Protect WordPress Against Malicious URL Requests
Author URI: http://perishablepress.com/
Author: Perishable Press
Version: 1.0
*/

global $user_ID; 

if($user_ID) {
  if(!current_user_can('level_10')) {
    if (strlen($_SERVER['REQUEST_URI']) > 255 ||
      strpos($_SERVER['REQUEST_URI'], "eval(") ||
      strpos($_SERVER['REQUEST_URI'], "CONCAT") ||
      strpos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
      strpos($_SERVER['REQUEST_URI'], "base64")) {
        @header("HTTP/1.1 414 Request-URI Too Long");
 @header("Status: 414 Request-URI Too Long");
 @header("Connection: Close");
 @exit;
    }
  }
}
?>




Sorun
Bildiğiniz gibi WordPress otomatik olarak sayfa kaynağında ek bir kod ile kullandığınız WordPress sürümünü görüntülüyor. Bu durum, websitesini yeni sürümler çıktıkça güncellemeyen birisi için oldukça zararlı bir hale bürünebilir. Bu yüzden bu kodun görüntülenmesini tamamiyle engellemek oldukça basit.

Çözüm
Aşağıdaki kodu temanızın functions.php dosyasına ekleyip, kaydediyoruz.


1


remove_action('wp_head', 'wp_generator');


Bu işlemden sonra sayfa kaynağınızın head öncesini kontrol edebilirsiniz.

Sorun
Barındırma hizmeti sunan çoğu firma, varsayılan olarak alt dizinlere erişilmesine müsaade etmektedir. Eğersite.com/wp-includes adresini çalıştırdığınız zaman içerisindeki dosya ve klasörler görüntüleniyorsa, bu kesinlikle bir güvenlik açığı oluşturacaktır. Bundan kurtulmamız oldukça basit.

Çözüm
.htaccess dosyanıza şu kodu eklemeniz yeterlidir.


1


Options -Indexes


Yukarıda saydığım 8 yöntem işinizi fazlasıyla görecek yegane yöntemler. WordPress’te güvenlik için pek çok eklenti ve yöntem bulunmakta.

Yukarıdaki yöntemler ile sitenizi koruyabilirsiniz ancak daha fazla güvenlik için eklentiler araştırıp bulabilirsiniz. Bu yöntemleri uygulamanızı şiddetle tavsiye ederim. Emin olun uğraştığınıza değecektir. Bu yazımızın da sonuna geldik. Bir sonraki yazımızda görüşmek üzere…

0 Yorum:

Yorum Gönderme

© 2012- Hackings.org Bu Sitenin hakları Aziz Türk milletine Aittir.
"Benim hayatta yegâne fahrim, servetim Türklükten başka bir şey değildir." K.ATATÜRK