Şu wordpress’in admin hack, Xss hack, SQL injection saldırıları ve zafiyeti yüzünden bir sürü güncelleme yaptık. yapmaya da devam ediyoruz. Yine de yeni bir güvenlik açığı ortaya çıkabilmekte. WordPress’i yıllardır kullanmaktayım ve bu hack olaylarına karşı herkes gibi bende ek güvenlik önlemleri alıyorum.
Bunlardan bir tanesi wp-admin girişine .htaccess ile ek bir şifre daha koymak..!
En önemligüvenli yöntemlerden bir tanesi olduğunu söylemek isterim. WordPress admin hack konusunda nasıl bir açık çıkarsa çıksın ya da admin şifrenizi kim çalarsa çalsın .htaccess ile şifreleyeceğimiz wp-login.php dosyasına erişmeyi engelleyecektir.
Wp-login.php dosyamızı aşağıda anlattığım şekilde .htaccess ile şifrelediğimizde wp-admin girişine gelen isteklerde sunucumuz ek olarak koyduğumuz bu şifreyi soracaktır. Wp-login.php kullanarak ortaya çıkabilecek açıklıklar da bu sayede işe yaramayacak ve korunmuş olacağız.
Google üzerinden aradığınız zaman .htaccess ile şifreleme hakkında bilgi bulabilirsiniz. Bu yöntemler işe yaramayacaktır. Standart .htaccess ile şifreleme WordPress’in .htaccess dosyasına takılacak ve şifrelemeye izin vermeyecektir.
Şimdi anlatacağım yöntemde WordPress’in .htacess dosyasına ekleyeceğimiz kodlar ile şifrelemeyi gerçekleştireceğiz.
Öncelikle hostunuzda Cpanel / Plesk üzerinde public_html , www yada alanadınız.com olan klasörlerimizin bir üst dizinine çıkarak .htpasswd dosyamızı oluşturmamız gerekiyor.
1. . htpasswd dosyasını oluşturmak ;
Bu dosyada sunucunun bize soracağı şifreyi belirteceğiz. Yalnız bu şifreyi de güvenli bir dizinde saklamamız gerekmekte. Benim hostingimde wordpress dosyalarım…
/home/teakolik.com/www dizininin altındadır. Sizinkinde hostunuza göre farklı olabilir. Cpanel yada Plesk ile dosyalarınıza erişerek en üst ya da bir üst dizine yani /home klasörüne veya /home/teakolik.com gibi hesap klasörüne ulaşıyoruz. Bu klasör içerisine .htpasswd dosyamızı oluşturacağız. (www içerisine atmıyoruz..! WWW içerisine atarsak güvenlik diye bir şey kalmaz…)
Oluşturduğumuz .htpasswd dosyası içerisine aşağıdaki gibi user ve şifrelenmiş parolayı tanımlıyoruz. Tek satır aşağıdaki gibi yazmak yetiyor. Sonra dosyayı .htaccess adı ile kayıt edip kapatın.
kullanıcı:şifrelenmişparola
…gibi bir user ve şifre belirteceğiz. Burada dikkat ederseniz parolamız aslında şifrelenmiş bir şekilde yani bir nevi server üzerinde de şifreleme yapıyoruz. Direk olarak kullanıcı adından sonra parolamızı yazamayız. Parolanızı şifrelemek için…
http://www.htaccesstools.com/htpasswd-generator/
adresine giriyoruz ve bir kullanıcı ve şifre yazıyoruz. Encrypt butonuna bastığımızda bize bir kod üretiyor. Oluşturduğu kod yukarıdaki gibi kullanıcı:şifrelenmişparola şeklinde çıkacaktır. Bu kodu .htpasswd adıyla bir dosya olarak ftp dosyalarımızın üst dizinlerde bir yere (/home/teakolik gibi bir yere) kayıt ediyoruz.
2. WordPress .htaccess dosyasını düzenlemek ;
WordPress’in kurulu olduğu dizindeki .htacess dosyamızı açıp içerisinde en alt satıra şu kodları yerleştiriyoruz.
ErrorDocument 401 default AuthUserFile /home/teakolik.com/.htpasswd AuthName "Blog" AuthType Basic <Files "wp-login.php"> require valid-user </Files>
Bu işlemi yaparken .htaccess içerisindeki diğer kodlara dokunmuyoruz. Aynen olduğu gibi kalıyorlar ve alt satırlara boş bir yere bu kodu yapıştırıyoruz. Bu kodda dikkat etmeniz gereken /home/teakolik.com/ dosya yolumuz.
Wordpress wp-login dosyasına erişildiğinde .htpasswd üzerinden şifreyi okuyacak ve size soracaktır!
Dosya yolumuzu dikkatle giriyoruz.
AuthUserFile /home/teakolik.com/.htpasswd
Birinci adımda belirttiğimiz .htpasswd dosyası neredeyse yukarıdaki dosya yolunu aynı şekilde girmemiz gerekiyor. Yoksa çalışmayacaktır. Yukarıda /home/teakolik.com/ altında olduğunu gösterdim. Sizde /home/user/ gibi değişiklikler olabilir.
Ek olarak; XMLRPC dosyasını dışarıya kapatabiliriz…
<Files “xmlrpc.php”
require valid-user
</Files>
kodlarını girersek bu kod sayesinde xmlrpc yani wordpress’in pingleme servisinin çalışmaması sağlanır. Genelde, pingback ve trackback kullanmıyorsanız bu dosyayı da güvenliğe almanız ekstra güvenlik önlemi olacaktır.
Eğer yukarıdaki kodu da eklersek sistem ping alış-verişi yapmayacak biraz daha güvenli olabilecek.
Ben kullanmıyorum…
Örnek .htacess dosyamızın şekli şöyle oldu ;
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
ErrorDocument 401 default
AuthUserFile /home/.htpasswd
# Şifremizin bulunduğu dosya yolunu yukarıda belirttik
AuthName "Blog" AuthType Basic
<Files "wp-login.php"> require valid-user
#Şifreledik
</Files>
Dosyamızı kayıt ettik ve işlemler bitti. Atık WordPress’i biraz daha rahat bir şekilde kullanabilirsiniz. En azından yeni bir admin XSS açığı çıktığında kafanız rahat olur 🙂 Kolay gelsin..!
Bu kadar uğraşmak istemeyenler için bir ekleme yapmak istiyorum. cPanel de password protected directory bölümünden bunu yapabilirsiniz.
@Can Dirgen; Kurulu olan Wp üzerine Cpanel’den bu işlemi yaptığınızda malesef ki çalışmıyor. Mevcut WordPress’in .htaccess dosyasını açıp editlemeniz gerekiyor. Wp klasörü olmasa başka bir klasör olsaydı bu işlemi Cpanel üzerinden rahatlıkla yapabilirdik.
tşk paylaşımın için admin
Hocam ben kuramadım ya. public_html olan dizine koydum. sora publich html girdim. .httpacces bunun içine verdiğiniz kodları ekledim. wp admine giriş yaparken kullanıcı adı ve pasword istedi şifrelenmiş bilgileri girdim kabul etmedi. sora şifrelenmemiş haliyle girdim yine kabul etmeni ne yapmam gerek. Dönüş yaparsanız cok minnettar kalırım
Çok güzel bir konu çok teşekkürler çok işimize yaradı bu şifreleme olayı
teşekkürler yapacam dedim yaptım oldu.
bu dediklerini aynen uyguladım abi, wp-login.php ‘ye girince şifre de soruyor. giriyorum fakat girdikten sonra 404 sayfasına yönleniyor blogun. Ne olabilir sorun?
Benim merak ettiğim birşey var. Diyelim ki bir sitenin .htaccess i yazılabilir durumda. O siteye zarar verilebiliyor mu? Bunun için önlem almak gerekir mi.
Hamza abi dediklerini uyguladım ama wp-admin’e girince şifre istiyor. Şifreyi yazıyorum 404 sayfasına yönleniyor. Sorun ne olabilir 🙁
Sanırım bir yerde hata yapıyorsun. Tekrar baştan dikkatlice yapmanı tavsiye ederim.
Kodları aynen yine denedim yine olmadı :/
Eline saglik kardesim, cok isime yaradi.
Dostum arkadaşında belirttiği gibi ana dizindeki yani root’taki orjinal wordpress .htaccess’i ile çakışıyor ana dizindeki htaccessin ismini değiştirince veya silince çalışıyor bu ikisinin çakışması için hiç bir sebeb yok ama çakışıyorlar işte ilginç ..
Mevcut htacess’i güncelle ana dizindeki.
Bu yönteme gerek yok. Cpanel kullanıcıları şifreli klasörler
bölümünden wp-admin klasörünü şifreleyebilirler.
Yeterlidir.
Pleskde de benzeri bir ayar bölümü vardır muhtemelen.
Merhabalar Hamza hocam; .htaccess ile wp-login.php
değilde wp-admin dizini için sabit bir ip koymak
mümkün olmaz mı? ne kadar da doğru şifremizi
bilsede wp-admin dizininden kendini atamayacaktır.
# admin paneline ip koruması
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName “Example Access Control”
AuthType Basic
order deny,allow
deny from all
allow from ipadresi
ben şu şekilde bir kodcuk buldum ancak deneme fırsatım
olmadı
s.a benim istediğim bir kod var bir türlü bulanmıytorum bu sitelerin login bölümüne bir kod yazıyorlar ve orda girilen herşey senin e-mail adresine geliyor bunu nasıl yapabiliriz yardımcı olursanız sevinirim.
Bu işlemi yaptık,peki test işlemini nasıl yapacağız çalışıp çalışmadığını veya bir yerde hata yapıp yapmadığımızı öğrenmek amacıyla.
Bir yerde yanlış yaptığımız kesin,çalışmıyor çünkü.
http://www.passionforever.org
bendede çalışmadı istersensor.com
herşeyi doğtu yaptım sayfa bulunamadı diyor neden acaba
Cpanel/LiINUX kullananlar için önemli not** resellerhosting kullanan WordPress kullanıcıları /home klasörü altında kullandığı reseller paketinin kullanıcı adını da yazması gerekiyor .htacces dosyası içerisine. Örnek URL “/home/kullancıadı/dizininiz/.htpasswd” gibi.
Eğer daha sonradan değiştirilmemiş ise “cPanel” kullanıcı adı ile aynı olabiliyor.
saygılar 🙂