CMS yazılımlarının yönetim panelleri hackerların favori alanları olmuştur hep. Özellikle de güvenlik seviyesi yüksek olanlar. WordPress için konuşursak: yeni bir WordPress blogu yarattığınızda sistem size bir yönetici hesabı ve yüksek seviyeli rastg ele bir şifre oluşturur. Bu sayede, yönetim panelinize isteyen herkes elini kolunu sallayarak giremez. Bu bölüm güvenlik kalkanınızın en temel taşıdır. Şimdi biraz daha derinlere inelim..
Bu yazı WordPress admin panelini nasıl koruyacağınızı hakkında en ince detayları verecek size. Burada bahsedilen ve koruma altına alacağımız dosyaların tümü (http://blogunuz.com/wp-admin/) klasörü içerisinde bulunuyor. Bu dosyalar kullanıcı başarılı bir giriş yaptıktan sonra işleniyor. Burada “kullanıcı başarılı bir giriş yaptıktan sonra” kelimesinin altını çizmek istiyorum. Yani bu kadar güvenlik önlemi ile donatılan admin panelinize saldırmak isteyen bir hackerın başlangıç noktası burası olacaktır.
Blogunuza saldırmak isteyen bir hacker çok farklı yöntemler deneyebilir. Bu nedenle aşağıdaki adımları bir bir uygulayarak admin panelinizin koruma kalkanını güçlendirmeniz yararınıza olacaktır. Fakat şunu da hatırlatmalıyım ki bu size %100 bir çözüm sunmayacaktır. İşini bilen bir hacker için her zaman açık bir kapı vardır. Ancak bu yöntemleri uygulayarak işlerine taş koyabilirsiniz.
1- WordPress klasörünüzün ismini değiştirin
WordPress, 2.6 versiyonundan bu yana wp-content klasörünün yerini değiştirmenize izin veriyor. Ancak ne yazık ki bu yöntem wp-admin klasörünün adını ve yerini de değiştirebileceğiniz anlamına gelmiyor. Güvenliği ön planda tutan blog sahipleri bu gerçeğin farkındalar ancak ellerinden bir şey gelmiyor, ilerki versiyonlarda wp-admin klasörünü gizlemek gibi bir özelliğin WordPress tarafından geliştirilmesini ummaktan başka.. Anlatacağım bu yöntem bahsettiğim bu konuya bir alternatif olabilir. WordPress’in en son sürümünü indirdikten sonra WordPress klasörüne çıkarıyoruz dosyaları. Dosyaları çıkardıktan sonra bu klasörün adını değiştirelim. (tercihen şifreli karakterlerle) Daha sonra wp-config.php dosyasında bazı ayarlamalar yaparak bu klasörün tanımlamasını yapabiliriz.
Bunu yaparsak ne olur?
- İlk olarak, bundan böyle wordpress dosyalarınız root dizininde yer almayacak.
- İkincisi, wordpress dosyalarınızı farklı bir klasöre taşıdığınız için mevcut sistem dosyalarınızdan ayrılacak, test ve geliştirmeleriniz için size daha ferah bir çalışma alanı sunacak. Hatta isterseniz birden fazla wordpress kurulumu bile yapabilirsiniz bu şekilde.
- Son olarak, admin paneliniz ve blogunuzun kendisi (tüm dosyalar) bundan böyle ana dizinde olmayacağı için, otomatik saldırı botlarının dosyalarınızı bulması epey bir zaman alacak. En azından bir insana göre log-in sayfanızın yerini bulması epey zor olacak. Çünkü klasör ismimizi de şifreleyerek oluşturmuştuk hatırlarsınız.
Not: Bundan böyle wordpress dosyalarınızın tümü ana dizinde olmayacağı için blogunuzun ana kurulum dizini de değişmiş olacak. WordPress admin panelinde general settings bölümüne girip bunu ayarlayabilirsiniz.
2- wp-config.php dosyasını geliştirelim
WordPress ana konfigrasyon dosyası olan wp-config.php, bir takım ayarlar ve SQL veritabanına erişim için bazı bilgileri barındırır. Ancak bu bilgiler dosyanın içinde açık ve şifrelenmemiş bir biçimde bulunur. Bu nedenle aşağıdaki adımları mutlaka uygulayın.
- WordPress 2.7 sürümü ile birlikte 4 aşamalı bir güvenlik anahtarı mekanizması sunuyor. Şuraya tıklayarak sizin için oluşturulan restgele güvenlik anahtarlarını, wp-config.php dosyasındaki ilgili yerlere girin. Bu keyler blogunuzun güvenliği için gerekli.
- Yeni bir wordpress blogu yarattığınızda veritabanınızda saklanan tablolar için otomatik olarak wp_ ön eki yaratılır. Yani tablolarınız ör: wp_posts, wp_settings, wp_comments gibi yaratılır. Bu durum WordPress’in yapısını bilen hackerlar için bulunmaz niğmettir. Bu nedenle bu ön eki tahmin edilmesi güç bir kelimeyle değiştirmekte fayda var. Mesela: $table_prefix = ‘wp4FZd3Y_’; gibi. Bu ön eki daha sonradan hatırlamak gibi bir kaygınız olmasın çünkü bu dahili bir fonksiyon. Bir daha asla işimiz düşmeyecek.
- Eğer serverınız destekliyorsa admin paneli için SSL şifrelemesini devreye alın mutlaka. Bunun için wp-config dosyanıza şu satırı ekleyin.
define(’FORCE_SSL_ADMIN’, true);
wp-config.php dosyasıyla ilgili diğer ince ayarlar için WordPress Codex e bir göz atın.
3- wp-config.php dosyanızın yerini değiştirin
WordPress, 2.6 sürümünden bu yana wp-config.php dosyasının yerini değiştirmenize izin veriyor. (yalnızca üst seviyeye) Yani diyelim ki blogunuz www.blogunuz.com/wordpress dizinine kuruldu ise, wp-config.php dosyanızı wordpress dizininden, bir süt seviye olan ana dizine taşıyabilirsiniz. Bunu yaptığınızda WordPress, otomatik olarak wp-config.php dosyanızın yerini bulacaktır ve hiç bir problem olmadan çalışmaya devam edecektir. Ancak unutmayın, “yalnızca blogunuzu kurduğunuz dizinin, bir üst dizinine taşıyabilirsiniz bu dosyayı. Farklı bir klasöre taşırsanız, WordPress çalışmayacaktır.
4- wp-config.php dosyasını koruma altına alın
Bütün servis sağlayıcılar desteklemese de wp-config.php dosyanıza dışarıdan erişimi engelleyebilirsiniz. Yani sizinle birlikte aynı serverı kullanan kullanıcılara karşı bir güvenlik önlemi almış olacaksınız. Bununla ilgili şu kodları .htaccess dosyanıza yerleştirin:
<files wp-config.php> order allow,deny deny from all </files>
5- Admin hesabını silin
WordPress’i ilk defa kurduğunuzda karşınıza herhangi bir opsiyon sunulmadan, otomatik olarak “admin” adında bir yönetici hesabı oluşturulur ve full yetkiyle donatılır. Çoğu blogger bu hesabı değiştirmeden kullanır. Bu da hackerlara karşı bir güvenlik zaafı doğuruyor. Çünkü bu hesaba otomatik olarak #1 numaralı ID veriliyor. Bu da sizi açık bir hedef haline getirir. Kullanıcı adınızı bildiklerine göre, geriye bir tek şifreyi kırmak kalır. Şu adımları izleyin ve admin hesabından kurtulun.
- Varsayılan “admin” hesabıyla giriş yapıp, yönetici haklarına sahip yeni bir hesap oluşturun
- Admin panelinden log-out olun.
- Yeni hesabınız ile giriş yapın.
- Giriş yaptıktan sonra, eski admin hesabını silin.
Not: Eski admin hesabını silmeden önce, eskiden yazdığınız yazılarınızı yeni yazar hesabınıza atayın. “Attribute all posts and links to”
6- Güçlü bir şifre seçin
Hackerların saldırılarının yoğunluğu, genellikle ve sıklıkla ilgili blogun popülaritesiyle doğru orantılı oluyor. Eğer bir de seçtiğiniz şifreniz zayıfsa, yandığınızın resmidir.
Genellikle seçilen şifreler yukarıda anlattığım gibi zayıf oluyor. Doğum tarihini yazanların sayısı binlerce.. Peki sebep ne? Genellikle, sonradan kolay hatırlanabilen ya da o anda akla ilk gelen en kolay şeyin şifre olarak seçilmesi hacklerın ekmeğine yağ sürüyor. Yapılan araştırmalar gösteriyor ki, seçilen şifrelerin çoğu özensizce seçiliyor, sadece sayılardan oluşuyor ve kolayca tahmin edilebilir şeyler oluyor. (ör: doğum tarihi)
WordPress, seçeceğiniz şifrenin ne kadar güçlü olup olmadığını ölçebilmek için gerçek zamanlı bir algılayıcı fonksiyon kullanıyor. Ancak bu fonksiyon açıklanamaz bir şekilde sadece önceden yaratılan hesapların şifrelerini değiştirirken çalışıyor. Yani yeni bir hesap yaratmak istediğinizde, şifrenizin gücünü ölçen gerçek zamanlı algılayıcı devreye girmiyor. Umarız bu bug ı yeni versiyonda yamar WordPress geliştiricileri.
Seçeceğiniz şifre için önerimiz, en az 7 karakter ve üzeri, sayı ve rakamlardan oluşan, büyük küçük harf ve semboller (” ? $ % ^ & ) içeren bir şifre kullanın.
7- wp-admin klasörünü koruyun
Yönetim paneline giriş normalde tek bir şifre ile yapılıyor. Buna ek olarak wp-admin klasörünü de şifrelesek daha iyi olmaz mı? Sonuçta ünlü bir çin atasözü der ki “İki, birden daha iyidir” (:
Bu şifreleme işini .htaccess ve .htpasswd dosyalarını kullanarak yapabilir ya da kullandığınız server dizin şifreleme özelliği sunuyorsa ilgili ayarlardan basit bir şekilde halledebilirsiniz.
Not: Htaccess and Htpasswd generator adlı bu araç, şifrelemek istediğimiz wp-admin klasörü için otomatik olarak dosyaları oluşturabiliyor. Size kalan da dosyaları blogunuzun olduğu dizine göndermek.
8- Log-in sayfasındaki “hata bildirimini” devre dışı bırakın
WordPress geliştiricileri her ayrıntıyı öyle derinlemesine düşünmüşler ki sistem bir saat gibi tıkır tıkır işliyor.Ancak bazı ayrıntılar bize karşı silah olarak da kullanılabiliyor. Admin paneline giriş yaparken şifrenizi hatalı girerseniz ne oluyor? “Error invalid password” gibi bir hata görüyorsunuz ekranda. Çünkü ilgili kullanıcı adı ve şifre veritabanından kontrol ediliyor ve yanlışsa ekrana bir hata mesajı basılıyor. Ancak otomatik şifre kırıcılar, bu dönen hata mesajlarını referans alarak, kullanıcı adının mı yoksa şifrenin mi yanlış olduğunu anlayabiliyorlar ve denemelerine devam ediyorlar. “Kırılamayacak açık yoktur” sözünü aklımızın bir köşesine yazmak suretiyle biz önlemimizi alalım ve bu hata mesajlarından kurtulalım.
Yapmanız gereken, temanızın functions.php dosyasına şu satırı eklemek ve şifre kırıcıları kısır bir döngüye sokmak:
add_filter(’login_errors’,create_function(’$a’, “return null;”));
Bundan böyle şifre ya da kullanıcı adınızı yanlış girdiğinizde hata mesajı dönmeyecek.
9- Hatalı giriş sayısını sınırlayın
WordPress, ne yazık ki kendisinden beklenmeyecek bir hareketle, admin paneline yapılan girişlerin bir kaydını tutmuyor. Yani kaç kez giriş yapılmış, kaç kez hatalı şifre girilmiş, “şu kadar kez hatalı şifre girilirse bu yapılsın” gibi döngüleri kullanmıyor.
Neyse ki bu eksiklik için 2 farklı çözüm mevcut. Login LockDown ve Limit Login Attempts. Bu eklentiler sayesinde, admin paneline girişleri sınırlayabilir ve kaç kez deneme yapıldığını kayıt altına alıp sonradan görebilirsiniz. Böylelikle otomatik şifre kırıcılara karşı güçlü bir önlem almış olacaksınız.
10- Her zaman güncel kalın
Son olarak söyleyeceğim; WordPress geliştiricileri sürekli ve hızlı olarak güvenlik açıkları üzerinde çalışıyorlar. Önceki sürümlerde olan bir güvenlik açığı yeni sürümlerde yüksek ihtimalle kapatılıyor. Bu nedenle en güncel WordPress sürümünü kullanmaya dikkat edin ve bu meseleyi gerçekten ciddiye alın. Tüm eklentilerinizi ve ana wordpress sürümünüzü sürekli güncel tutun. Unutmayın ki kullandığınız her eklenti potansiyel birer güvenlik açığı tehdididir. Bu nedenle güncellemeleri kaçırmamaya özen gösterin.
Kaynak
WordPress Admin Panelini 10 adımda korumaya alın (Hakan Yamanoğlu‘na teşekkürler)
10 Steps To Protect The Admin Area In WordPress (Bu yazının esas sahibinede ekstradan teşekkürler)
Yazı tamamen Hakan Yamanoğlu‘a aittir. İngilizce makaleninde linkini verdim. 🙂