Guvenlik, WordPress

A’dan Z’ye WordPress Güvenligi

29 Ağustos 2014

Günümüzde en çok kullanılan CMS’lerden biri olan WordPress’in SEO yapılandırmalarından daha önce bahsetmiştim. Ama asıl işimiz güvenlik olduğundan birden güvenliğine değinelim. WordPress zaten oldukça güvenli bir CMS olsa dahi elbette yeterli değil. Konuya başlamadan şunu belirtmekte fayda var. Aşağıda anlattığım şeylerin hepsini yapsanız dahi hacklenme olasılığınız hala çok yüksek. Unutmayın ki kusursuz güvenlik diye birşey yoktur!

 

Güncellemelerin Önemi

WP’de güncellemeleri yapmanız, her sistemde olduğu gibi çok önemlidir. Bulunmuş 0-Day açıklarının yamaları ancak güncellemeler ile yapılabilir. Yalnızca sistemi değil ayrıca eklenti ve tema güncellemelerini de yapmanız çok önemlidir.

 

Warez’den Uzak Durun

Warez tema ve eklenti kurmaktan uzak durun. Warez temaların birçoğunda zararlı kod veya shell bulunmakta. Warez tema kullandığından dolayı haberi olmadan sitesine backlink alan (biz buna hacklink diyoruz) birçok webmaster var. Siz siz olun ücretsiz veya lisanslı tema kullanın.

 

WordPress Sürümünüzü Gizleyin

WordPress sürüm bilginizi kaynak kodlarına eklemektedir. Kötü niyetli insanlara ne kadar az bilgi verirsek o kadar iyi bizim için. Ve her bir sürümün üst sürüme göre açığı mevcuttur. Peki WP sürümünü nasıl gizleyeceğiz?

wp-content/themes/temaadi/ yolundan functions.php dosyasını bulun ve açın. Ardından aşağıdaki kodu dosyaya ekleyin;

 

remove_action('wp_head','wp_generator');


veya

yine aynı yoldan functions.php dosyasını bulun ve açın. Ardından aşağıdaki kodu dosyaya ekleyin;

 

function remove_version(){ return "; }</strong>

<strong>add_filter('the_generator','remove_version');


 

Ek Bilgi Gösterimini Kaldırın

Admin paneline giriş yaparken yanlış bilgi girdiğimizde bize bunun hakkında bilgi verdiğini görmüşsünüzdür. Bu gibi ek bilgileri kaldırmak güvenlik açısından iyi olacaktır. Peki bu ek bilgi gösterimini nasıl kaldıracağız?

WP sürümünü gizlerken girdiğimiz functions.php‘yi açalım ve içine aşağıdaki kod satırını ekleyelim.

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

 

Display Errors İzinleri

PHP’de yapılan kodlama hatalarının gösterilmesine yarar. Aynı zamanda işlemlerin log kaydını da tutar. Peki Display Errors izinlerini nasıl düzenleyebiliriz?

wp-config.php dosyasını bulun ve açın. Ardından

require_once

kodunu bulun ve hemen altına şu kod satırını ekleyin;

ini_set('display_errors', 0);

 

Doğrulama Anahtarını Kullanın

Çerezleri geçersiz kılabilmek için eşsiz doğrulama anahtarını kullanmanız şart. Peki nasıl kullanacağız bu doğrulama anahtarını?

wp-config.php dosyasını bulun ve açın. 45 ila 52. satırın arasına biryerlere vereceğim siteden aldığınız kodları yapıştırın. Secret-Key API için TIKLAYIN. 

 

Sunucunuzdaki Klasörleri Yabancı Gözlerden Koruyun

Sunucunuzdaki dosyaları yabancı gözlerin görmesini hiçbirimiz istemeyiz her halde. Öncelikle yabancı gözlerin sitenizdeki dosyaları görüp göremediğine bakalım. siteniz.com/wp-includes adresine gittiğinizde sitedeki içeriği görebiliyorsanız herkes görebiliyor demektir. Peki sunucumuzdaki klasörleri yabancı gözlerden nasıl koruyacağız?

.htaccess dosyasına girip aşağıdaki kodları yapıştırıyoruz.

Options All -Indexes

 

.htaccess Dosyanızı Koruyun

Htaccess ve wp-config.php dosyası WP’nin en temel iki dosyalarındandır. Korunması sitenin güvenliği açısından oldukça önemlidir. Peki .htaccess dosyasını nasıl koruyabiliriz?

.htaccess dosyasını bulun ve açın. Ardından içine aşağıdaki kodları yerleştirin.

<Files .htaccess>

order allow,deny

deny from all

</Files>

 

Wp-Config Dosyanızı Koruyun

Az önce de dediğim gibi WP’nin en temel iki dosyasından biri olan wp-config.php’yi korumanız oldukça önemlidir. wp-config.php’yi .htaccess dosyası yoluyla koruyacağız. Peki nasıl yapacağız?

.htaccess dosyasını bulun ve açın. Ardından şu kodları ekleyin.

<Files wp-config.php>

order allow,deny

deny from all

</Files>

 

HTML Etiketlerini Kapatın

Bazı HTML Etiketlerini kapatmanız güvenlik açısından iyi olacaktır. Peki bunu nasıl yapacağız?

wp-config.php dosyasını bulun ve açın. Ardından dosyanın en üstüne şu kod satırını ekleyin.

define('DISSALOW_UNFILTERED_HMTL', true );

 

XSS Saldırılarından Korunmak

XSS açığı coder’ların bilinçsiz kodlama hatasından doğan bir açık türüdür ve oldukça ciddi sonuçlar doğurabilmektedir. Coder’lar her ne kadar GET ve POST isteklerine karşı koruma yapsalar da bu yeterli olmuyor. Web sitemizi GLOBAL_REQUEST’in değiştirilmesine karşı da korumamız gerekmekte. Peki bunu nasıl yapacağız?

.htaccess dosyasını bulun ve açın. Ardından aşağıdaki kodu içerisine yapıştırın.

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{QUERY_STRING} (\\<|<).*script.*(\\>|>) [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]

Bu kod satırı sayesinde herhangi bir kimse GLOBAL_REQUEST değişkenini değiştirmeye kalktığında karşısına 403 Error hata sayfası gönderiyor.

 

SSL Kullanımına Zorlayın

SSL Protokolünü kullanıyorsanız, ziyaretçiyi SSL Kullanımına zorlamakta fayda var. Veri gizliliği açısından bu çok önemli bir aşama. Peki bunu nasıl yapacağız?

Öncelikle söylemekte fayda var eğer hizmet sağlayıcınız SSL desteklemiyorsa bu yapacaklarınız hiçbir işe yaramaz. Eğer destekliyorsa wp-config.php dosyasını bulun ve açın. Ardından aşağıdaki kod satırını girin.

define('FORCE_SSL_ADMIN', true);

Bu komut sayesinde Admin paneline girerken SSL Protokolünü kullanmayı zorunlu kılmış oluyoruz.

 

Veritabanı Yerinizi Gizleyin

Bunu yapmak için öncelikle wp-config.php dosyamızın yerini değiştirelim. Saklayabildiğimiz kadar saklayalım. Bu size kalmış bir aşama. Daha sonra wp-config.php dosyasının içine aşağıdaki kod satırını girin

define('DISSALOW_FILE_EDIT', true);

Sıkı Şifreler Koyun

Tahmin edilmesi güç şifreler koyun. Şifrenizi ananızla babanızla bile paylaşmayın 🙂 Sosyal medya vb. hesaplarınızla kullandığınız şifrelerden farklı bir şifre kullanın. Şifrelerinizi sağda solda saklamayın. Ne bilgisayarınızda ne de başka bir yerde. Aklınız yeterli bir depolama alanı zaten. En iyi şifre türü Büyük Küçük Harf Karakterler + ASCII Karakterler veya (#,*) gibi karakterler + Rakam kombinasyonudur.

 

Hotlinking

Öncelikle hotlinking nedir? Buna bir açıklık getirelim. Sitenizdeki görsel içeriğin başka sitelerde de kullanıldığını düşünün. Bu bant genişliğinizin boş yere harcanmasına neden olacaktır. Bunun önüne geçmek için hotlinking yapıyoruz. Peki ama nasıl?

.htaccess dosyanızı bulun ve açın. Ardından dosyaya aşağıdaki kod satırını ekleyin.

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^http://(.+\\.)?websiteadresiniz\\.com/ [NC]

RewriteCond %{HTTP_REFERER} !^$

RewriteRule .*\\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

websiteadresiniz yerine kendi website adresinizi ve nohotlink.jpg yerine de hangi resimin görünmesini istemiyorsanız onun linkini koyun.

 

Backup

Sık sık veritabanı yedeğinizi alın. Olası bir hacklenme durumunda siteyi en kısa sürede eski haline döndürmek için bu şart. Dilerseniz Wp-Db-Backup gibi programlarla yedek alma işlemini otomatik olarak da yaptırabilirsiniz.

 

PHP Versiyonu

Sitemize sızmak isteyen kötü niyetli kişiye ne kadar az bilgi sunarsak işini o kadar zorlaştırmış oluruz. Her PHP sürümünün kendine özgü açıkları bulunmaktadır. PHP sürümünüzü gizlemeniz de bu sebeple önemlidir. Peki nasıl yapacağız?

.htaccess dosyasını bulun ve açın. Ardından aşağıdaki kod satırını ekleyin.

Header unset X-Powered-By Header unset Server

 

Admin Paneline Ek Güvenlik

Admin panelinize de birkaç önlem almanız yerinde olacaktır. Yanlış girişlere kısıtlama getirebilirsiniz  örneğin. Bunun için Login Limit Attempts gibi Plug-In’leri kullanabilirsiniz.

 

Brute Force Saldırılarını Engelleyin

Brute Force saldırılarını engellemek için yine eklenti kullanacağız. SI-Captcha veya Login Limit Attempts gibi eklentiler işinize yarayacaktır. Detaylı bilgi için “WordPress Brute Force Saldırılarını Engelleme” isimli makalemi okuyabilirsiniz.

 

Admin Adınızı Değiştirin

Admin olan kullanıcı adınızı değiştirin. Ayrıca Wp-Admin menüsünden Kullanıcılar > Profiliniz yolunu izleyin. Burada Ad kısmına blogunuz içinde kullanmak istediğiniz Nickname’i girin. Giriş yaptığınız nick’ten farklı bir isim olsun. Sonrasında Herkes tarafından görülecek ad yerini buna göre ayarlayın. Bu sayede kötü amaçlı kişisel siteye giriş yaptığınız nick’i öğrenmekte güçlük çekeceklerdir.

 

WordPress Enumeration Zaafiyetinin Giderilmesi

Öncelikle WP Enumeration zaafiyeti nedir buna bi açıklık getirelim. WP Enumeration Zaafiyeti; hackerların sitenizde kaç tane yetkili kullanıcı olduğunu anlamak için yaptıkları saldırıdır. Nasıl engelleyeceğinizi burada anlatmayacağım. “WordPress Username Enumeration ve Korunma Yolları” isimli makalemde daha önce konuya değinmiştim zaten.

 

Dosya İzinleri

Dosya izinlerini yani CHMOD değerlerini ayarlamanız da güvenlik açısından önemli bir husustur. Peki CHMOD değerlerimiz nasıl olmalı?

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

 

Bitirmeden önce şunuda belirteyim. Tüm bu işlemleri yapmadan önce sitenizin yedeğini almayı unutmayın. Güvenli günler 🙂

You Might Also Like

2 Yorumlar

  • Reply Can Usta 11 Eylül 2014 at 21:54

    WordPress yeni sürümü ile birçok açık kapatılırken yanı sıra birçok açıkta meydana geldi. Gayet iyi bir konuya deyinmişsin. Eline sağlık.

  • Reply iptv turk 25 Nisan 2016 at 22:35

    eline saglik hocam baya faydali

  • Bir Yorum Bırak

    twenty − 17 =