Güvenlik her zaman önemli bir konu olmuştur. Hayatınızda evinizin, arabanızın güvenliğini sağlamak için pek çok önlem alırsınız. Çevrimiçi iken de güvenlik önemlidir, özellikle de websitelerinden ve bloglarından yaşam sağlayanlar için. Bu makalede, wordpress tabanlı blogunuzu korumak adına bazı işe yarar ince ayarları bulacaksınız.

Wordpress için Güvenlik Ayarları
WordPress için Güvenlik Ayarları

1. Gereksiz Bilgilerin Gösterilmesini Engellemek
Problem
Wordpress blogunuza giriş yapmaya çalışırken hata yaptığınızda, içerik yönetim sisteminiz size neyi yanlış yaptığınız hakkında ipuçları verir. Parolanızı unutma ihtimalinize karşı bu iyidir, ancak aynı zamanda blogunuzu hacklemek isteyen kişiler için de iyidir. Öyleyse, neden hatalı giriş denemelerindeki hata mesajlarını gösterelim ki?Çözüm
Giriş denemeleri hata mesajlarını kaldırmak için tema klasörünüz içindeki functions.php dosyanızı açın ve şu kodu ekleyin:add_filter('login_errors',create_function('$a', "return null;"));
Dosyayı kaydedin ve kendiniz görün: Hata mesajlarına son.Kod Açıklaması
Bu kod ile, the login_errors() fonksiyonuna bir kanca ekleyerek tekrar yazdırdık. Yeni fonksiyon ise hata mesajı yerine sadece null yani boş bir satır görünmesini sağlayacak.
Kaynak
WordPress güvenliği için ipuçlarıWordPress Güvenliği: Hatalı Giriş Mesajlarını Gizlemek2. Force SSL Kullanımı
Problem
Eğer verilerinizin bölünmeye başladığından endişeleniyorsanız, kesinlikle SSL kullanmalısınız. Ne olduğunu bilmeme ihtimalinize karşın, SSL internet üzerinden şifrelenmiş, güvenli iletişimi sağlayan protokoldür.Wordpress’i SSL kullanmaya zorlamanın mümkün olduğunu biliyor muydunuz? Tüm hosting servislerinde değil ancak, wp webhost veya hostgator kullanıyorsanız, SSL kullanma olanağınız vardır.Çözüm
Hosting firmanızın SSL desteği olduğundan emin olduğunuzda, wordpress ana dizininizde bulunan wp-config.php dosyanzı açıp bu kodu yapıştırın:define('force_ssl_admin', true);
Dosyayı kaydedin, işlem tamam.Kod Açıklaması
Karmaşık bir şey yok. WordPress yazılımı düzenleyebilmek adına pek çok sabit içerir. Burada da, basitçe the force_ssl_admin sabitinin değerini true yaptık. Bunun sonucunda da wordpress ssl kullanmaya başladı.
Kaynak
Force SSL Wp-admin dizininde nasıl kullanılır?3. wp-config dosyanızı korumak için .htaccess Kullanımı
Problem
Bir wordpress kullanıcısı olarak, wp-config dosyasının ne denli önemli olduğunu biliyorsunuzdur. Bu dosya değerli veritabanınıza erişim için gerekli bilgileri içerir: kullanıcı adı, şifresi, sunucu adı ve daha fazlası. Bu sebeplerden wp-config.php dosyasının güvenliği gerçekten önemlidir.Çözüm
.htaccess dosyası wordpress yüklemenizin ana dizininde bulunur. Dosyanın bir yedeğini aldıktan sonra (o denli kritik bir dosyadır ki her zaman güvenli ve düzgün çalışan bir kopyasını bulundurmanız yararınıza olacaktır.), dosyayı açıp şu satırları ekleyin:<-files wp-config.php->order allow,denydeny from all<-/files->not: files’taki – işaretlerini kaldırmalısınız.
Kod Açıklaması
.htaccess dosyaları, dosyalarınıza istenmeyen erişimi engelleme işinin üstesinden gelen en iyi araçlardan biridir. Bu kod ile, basitçe wp-admin.php dosyasına (kötü amaçlı botları da kapsamak üzere) gelen erişimleri kesmiş olduk.Kaynak
WordPress Blogunuzun güvenliğini sağlamak için 10 basit yol4. İstenmeyen Kullanıcı ve Botları Karalisteye Alma

Problem
Bu çevrimiçi olduğu kadar çevrimdışı iken de doğru: Bugün sizi rahatsız eden biri, muhtemelen yarın da rahatsız edecektir. Kaç tane spam botun rahatsız edici yorumlarını bırakmak adına günde 10 kez blogunuza döndüğünden haberdar mısınız? Çözüm ise oldukça basit: Blogunuza erişimlerini yasaklayın.Çözüm
Aşağıdaki kodu wordpress ana dizininizde bulunan .htaccess dosyanıza yapıştırın. Önceden dediğim gibi bu işlem öncesinde .htaccess dosyanızı yedeklemeyi unutmayın. Ayrıca yasaklamak istediğiniz ip adresini de 123.456.789 olarak bırakmayın, hangi ip’yi yasaklamak istiyorsanız onu yazın.<-limit get post put->order allow,denyallow from alldeny from 123.456.789<-/limit->Not: Elbette yine “-“leri kaldırmalısınız.
Kod Açıklaması
Apache kolayca istenmeyen kişi ve botların sitenize erişimini kesebilir. Bu kod ile apache’ye 123.456.789 dışındaki ip adresini taşıyan herkesin sitemizi ziyaret etmeye izinli olduğunu söylüyoruz.Daha fazla kişi veya bot banlamak için farklı ip adresi kullanarak 4. satırı kopyalayın. Örnek verecek olursak:<-limit get post put->order allow,denyallow from alldeny from 123.456.789deny from 93.121.788deny from 223.956.789deny from 128.456.780<-/limit->Not: Koddaki “-“lerin kalkacağını her seferinde yinelemekten kaçınmıyorum ki siz de gözden kaçırmayasınız.
Kaynak
2007nin en kötü 150nin üstünde spamcisi5. WordPress blogunuzu script enjeksiyonlarından koruma
Problem
Dinamik siteleri korumak özellikle önemlidir. Çoğu geliştirici kendi get ve post isteklerini korur ancak bu her zaman yeterli olmayabilir. Aynı zamanda blogumuzu script enjeksiyonlarına ve PHP globals ve _request değişkenlerini düzenlemeye karşı da korumalıyız.
Çözüm
Aşağıdaki kod script enjeksiyonlarını engellemenin yanında php globals ve _request değişkenlerini düzenlemeye yönelik girişimlere de çözüm oluyor. WordPress ana dizininizde bulunan .htaccess dosyanızın yedeğini aldıktan sonra içine yapıştırın:
options +followsymlinksrewriteengine onrewritecond %{query_string} (<|%3c).*script.*(>|%3e) [nc,or]rewritecond %{query_string} globals(=|[|%[0-9a-z]{0,2}) [or]rewritecond %{query_string} _request(=|[|%[0-9a-z]{0,2})rewriterule ^(.*)$ index.php [f,l]Kod açıklaması
.htaccess dosyasının gücünü kullanarak istekleri kontrol edebiliriz. Bu kodun yaptığı şey <-script-> içeren veya php globals ile _request değişkenlerini düzenlemeye çalışan bir durum ile karşılaşıldığında isteğin bloklanması ve kullanıcının ekranına bir 403 hata sayfası döndürülmesidir.
.htaccess ile sitenizi koruyun.htaccess kullanarak blogunuzu koruyun6. İçerik Hırsızlarına Karşı Savaşın
Problem
Eğer blogunuz biraz tanınır hale geldiyse, şüphesiz ki insanlar izniniz olmadan içeriğinizi kendi sitelerinde paylaşmaya başlayacaklar. En büyük problemlerden biri de resimlerinizin sunucudan çok çağrılması ile hot-linking durumunun yaşanması, bu durumda da giden sizin bant genişliği değerinizden olacaktır.Çözüm
Sitenizi hot-linking durumlarına ve içerik hırsızlarına karşı korumak için, aşağıdaki kodu .htaccess dosyanıza yapıştırın. Ancak her zamanki gibi bu işlemden önce dosyanızın yedeğini alın.rewriteengine on#replace ?mysite.com/ with your blog urlrewritecond %{http_referer} !^http://(.+.)?mysite.com/ [nc]rewritecond %{http_referer} !^$#replace /images/nohotlink.jpg with your “don’t hotlink” image urlrewriterule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [l]Dosyayı kaydettikten sonra, sadece kendi siteniz resimlerinize link vermeye izinli olacak. Daha doğrusu, sizin dışınızdaki kimse resimlerinize link veremeyecek, çünkü bu onlar için oldukça karışık ve zaman alıcı hale gelecek. Diğer sitelerde otomatik olarak nohotlink.jpg görünecek. Ayrıca var olmayan bir resim adresi de girebilirsiniz, bu durumda sadece beyaz bir boşluk göreceklerdir.Kod Açıklaması
Bu kodun yaptığı şey resme link verenin kendi sitemizin URL’i olup olmadığına bakmak, değilse ve referans gösterilen dosya .jpg, .gif, .bmp veya .png uzantılıysa bunu nohotlink.jpg dosyası ile değiştirmek.Kaynak
Blogunuzu içerik hırsızlarından korumak7. Blogunuzu Kötü Niyetli URL isteklerinden koruyan bir eklenti yaratın

Problem
Hackerlar bazen kötü niyetli sorgularla blogun zayıf noktalarını saptayıp saldırmak isteyebilirler. WordPress’in öntanımlı koruması oldukça iyi, fakat bunu geliştirmek de mümkün.Çözüm
Aşağıdaki kodu bir text dosyasına kaydederek adını blockbadqueries.php yapın ve eklenti dizininize atıp yönetim panelinizden aktifleştirin. Artık blogunuz kötü niyetli sorgulara karşı korumalı.<-?php/*plugin name: block bad queriesplugin uri: http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/description: protect wordpress against malicious url requestsauthor uri: http://perishablepress.com/author: perishable pressversion: 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;}}}?->Not: Baştaki ve sondaki “-“leri kaldırmanız gerekiyor yine.
Kod Açıklaması
Bu kodun yaptığı oldukça basit. 255 karakterden uzun URI sorgularını kontrol ediyor ve eval ya da base64 php fonksiyonlarına rastlarsa kullanıcı ekranına bir 414 hatası gönderiyor.
Kaynak
WordPress’i kötü niyetli url isteklerine karşı korumak8. WordPress versiyon numaranızı kaldırın… Cidden!
Problem
Bildiğiniz gibi, wordpress otomatik olarak kullandığınız versiyonu blog dosyalarınızın baş kısmında gösteriyor. Eğer yapmanız gerektiği gibi daima son sürümleri kullanıyorsanız bu oldukça zararsızdır. Fakat herhangi sebeplerle yazılımınızı güncelleyemediyseniz, wordpress bunu da göstermeye devam edecektir, ve bu hackerlar için oldukça önemli bir mana taşıyor olabilir.Çözüm
Aşağıdaki kodu tema klasörünüzde bulunan functions.php dosyasına yapıştırın. Kaydedin, sayfayı yenileyin ve ta-daa: Artık wordpress versiyon numaranız in the header’da gösterilmiyor.remove_action('wp_head', 'wp_generator');
Kod açıklaması
Bazı belli aksiyonları işleyebilmek için wordpress “hooks” denilen bir mekanizma kullanıyor, bunun sayesinde bir fonksiyonu bir diğeriyle ilişkilendirebiliyorsunuz. Basitçe, WordPress versiyonunuzu gösteren the wp_generator fonksiyonu remove_action() fonksiyonuyla ilişkilenince ortadan kalkmış oldu.
Kaynak
WordPress Versiyon Numaranızı Kaldırmak (doğru yol)9. öntanımlı “admin” kullanıcı adınızı değiştirin

brute force en kolay şifre kırma yöntemlerinden biri. Metod oldukça basit: Doğru şifreyi bulana kadar deneyebildiğin kadar şifreyi dene. Brute Force metodunun kullanıcıları kullandığı sözlükler ile pek çok şifre kombinasyonu deneme şansına sahip oluyorlar.Fakat kullanıcı adınızı biliyor olmaları şüphesiz ki işlerini kolaylaştıran bir şey olurdu. İşte bu yüzden her zaman “admin” kullanıcı adınızı tahmin edilmesi daha zor bir şey ile değiştirmelisiniz.

Ayrıca orijinal makalede yok ama bu da benden olsun: Güvenlik adına değil ama bir yerelleştirme tutkunuysanız, sitenizdeki her yabancı terim için bir Türkçe karşılık arıyorsanız, siz de benim gibi Türkçe siteniz içerisinde admin yazısının görülmesinden rahatsız olabilirsiniz. Yerelleştirme adına da değiştirilesi diyorum yani.

Ayrıca WordPress 3.0 size öntanımlı kullanıcı adını belirleme imkanı veriyor. Yine de bu ipucu eski bir wordpress versiyonunda “admin” adını kullanan bir kullanıcıysanız yararlı.Çözüm
Hala “admin” kullanıcı adınızı değiştirmediyseniz, aşağıdaki SQL sorgusunu çalıştırın. Tabi ki yeni kullanıcı adınızın ne olacağı bilgisini değiştirmeyi unutmadan.update wp_users set user_login = 'yeni kullanici adiniz' where user_login = 'admin';
Kod Açıklaması
Kullanıcı adları veritabanında saklanır. Bunu değiştirmek için basit bir sorgu yeterlidir. Bu sorgunun “admin” ile yazılmış gönderileri yeni kullanıcı adınıza aktarmayacağını dikkate alın. Aşağıdaki kaynakta kolayca nasıl yapabileğinizi bulabilirsiniz.Kaynak
Keşke önceden bilseydim diyeceğiniz 13 WordPress SQL Sorgusu10. Dizin Taramayı Engellemek
Problem
Öntanımlı olarak pek çok sunucu klasör listelemeye izin verir. Yani eğer adres çubuğunuza www.yourblog.com/wp-includes yazarsanız, bu dizindeki dosyaları görebilirsiniz. Bu kesinlikle bir güvenlik riskidir, çünkü bir hacker dosyalarınıza en son ne zaman erişildiğini veya dosyalarınızın en son ne zaman düzenlendiğini görebilir.Çözüm
.htaccess dosyanıza bu satırı ekleyin:option -indexes
Kod açıklaması
Lütfen blogun robots.txt dosyasına disallow: /wp* eklemenin yeterli olmadığını unutmayın.
Blogunuzun güvenliği için 18 wordpress eklentisi ve ipucu