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;")); |
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> |
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> |
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. (.htaccess
iş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] |
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'); |
head
öncesini kontrol edebilirsiniz.Sorun
Barındırma hizmeti sunan çoğu firma, varsayılan olarak alt dizinlere erişilmesine müsaade etmektedir. Eğer
site.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ı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önder