Ş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…)
[kirmizi]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.[/kirmizi]
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.
[sari]Wordpress wp-login dosyasına erişildiğinde .htpasswd üzerinden şifreyi okuyacak ve size soracaktır![/sari]
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..!
süper faydalı bilgi.
ben şöyle yapıyorum http://tinypaste.com/3dd62
Bu kadar ek güvenlik gerekli değil diye düşünüyorum. Hani çok büyük kitlelere hitap eden, günlük 10k ve üzeri kullanıcı çekebilen sitem olsa uygulardım 🙂
Teşekkürler.
teşekkürler.
Yeni bir blog sitem var, hemde çok güzel çok severek uğraşıyorum ama güvenlik ayarlarını yapamadım ne kadar uğraşsamda 🙁 .. yazılarını beğenerek takip ediyoz. Bilgiler saol ama işte olmadı bi türlü 🙁
Bütün işlemleri yaptım ama bir türlü olmadı 🙁
Allah ne muradın varsa versin 😀 Çok teşekkür ederim…
Bu hackerlerin allah belasını versin demek geliyor içimden. ne yaptıysam olmuyor 🙁 herseferinde yine hack yiyorum. wp güzel ama her sürümünde açık oluyor.. en sonunda yine dayanamayıp düz .html’ye geçeceğim sanırım..
bilgi için tşkler
Merhaba Teakolik..
Bugün e-postamı kontrol ettiğimde e-posta adresime şifre değişikliği talebi linkleri gelmiş. Linklere tıklamadım bir sorun olacağını hissettim. Şuan 2.8.4 versiyonunu kullanıyorum bu vesiyonda bir açık var mı?.. Vermiş olduğunuz ayarları yapmaya kalkarsam mutlak bir yerde hata yapıp siteyi çökertirim. Bilgi ve yardımların için şimdiden çok teşekkür ederim
@Batuhan
Şuan bildirilmiş bir açık yok. Fakat yinede anlattığım şekilde kendini güvene alabilirsin. Ne olur ne olmaz…
Bu arada olmadı diyen arkadaşlar Gtalk üzerinden destek verebilirim. Aslında olmadı diye bişi yok. Kesinlikle oluyor. Dikkatlice tekrar deneyiniz. Mutlaka bir yerlerde yanlış yapıyorsunuz.
Bilgi ve desteğin için teşekkür ederim. Hafta sonu izne çıkıyorum o zaman daha rahat ve sakin kafayla yaparım.. Çok sağol
sonunda (-: teşekkürler..
Bazı hosting firmaları dosya bazlı şifrelemeye izin vermiyor. htaccess ile sadece klasör şifrelenebiliyor. Olmadı diyen arkadaşlar hosting firmalarından bilgi alabilirler.
çok faydalı arşivlik teşekkürler.
Güvenlik herşeydir. Enfes kıvamda süper bir bilgi. Teşekkürlerimi sunuyorum üstad : )
Aslında .htpasswd dosyasını tarayıcıyla girilemeyen bir dizine koymaktan başka, buna yine bir .htaccess ile girişi engelleyebilir ve/veya ismini değiştirebiliriz. Bir de ben sadece wp-login.php dosyasına değil de, wp-admin dizininin tümüne engel koyuyorum, her ne kadar oturum açmayan biri wp-login.php’ye yönleniyor dahi olsa.
Güzel yazı. Ayrıca burada bu yöntemle yapmak istemeyenler, mümkünse bir de hosting yönetim panellerinin dizin şifreleme özelliği olup olmadığına baksın. O sizin yerinize yapacaktır.
İyi günler…
Teşekkürler…
arkadaşlar bu ne işe yarıyor. ben siteme üye kabul etmiyorum ama bunu yaparsam üyeliklere giriş dahamı güvenli olur.
güzel bir döküman olmuş teşekkürler.
merhaba.konuyu tekrar gündeme getireceğim ama sitem hacklendi.şimdi kullanıcı adı ve şifre değiştirdim ve sitelerde gezerken bu güvenlik önlemi dikkatimi çekti. Sorum şu olacaktı : bende /.htpasswds/ diye bi klasör var. bu oluşturduğum şifreyi bu klasörün içine txt dosyası olarak mı atcam yoksa php dosyası olarak mı.ya da ben cok yanlış anladım 🙂 bi de bende .htacsess dosyası hiç yok nasıl oluştutulur yönlendirme yaparsanız sevinirim…
@Gökhan
Merhaba ;
AuthUserFile /home/teakolik.com/.htpasswd # Şifremizin bulunduğu dosya yolunu belirttik
satırında belirttiğim gibi şifreyi koyduğunuz dosyanın adı: .htpasswd olacaktır.
hımm şimdi anladım.. teşekkürler..
özür dilerim ama son bir sorum olacak.girişte yeni bir şifre ekranı geldi.şifrem o sitede oluşturduğum site herhalde.peki kullanıcı adım ne? bi türlü giremedim wp-admine? eğer apache şifresi ise onu nereden öğrenebilirim?
@Gökhan
Dikkatle yazımı okursanız;
teakolik:asasdas324235235sdfasdf
gibi bir şifreleme örneği vermiştim. Baştaki “teakolik” username tabi siz istediğiniz gibi değiştirmekte özgürsünüz. Şifreyi ise yazıda belirttiğim gibi bir şifre üretme sitesinden üreterek user’in yanına yazıyorsunuz.
anladım kusura bakmayın gece geç oldu algıda güçlük çekiyorum. bi de sitem hacklenmiş de kendimi veremiyorum işe. http://www.azriskcokpara.com arama yaptığımda yada kategori ye tıkladığımda uyarı mji geliyor. herhangi bi bilginiz var mı?
@Gökhan
Eğer yedekleriniz varsa geri yükleyin.
1. WordPress en son sürüme güncelleme yapın.
2. Databasenizi mümkünse hack olayından bir gün öncesine çekin.
tamam sorunu buldum.tema dosyamdaki index.php değiştirilmiş.ii geceler..
Kolay gelsin. Yinede tüm dosyaları tekrar elden geçirin..!
Windows Server Icinde Gecerlimidir bu ?
Windows server üzerinde .htaccess yoktur. Bunu host firmanızdan isteyebilir yada kodları Win Server üzerine yorumlayarak güvenlik sağlayabilirsiniz.
Denedim, çalıştı ancak oluşturduğum şifreyi girdikten sonra beni anasayfaya yönlendirdi. Buda .htacces dosyası ile ilgili sanırım ancak nasıl ayarlandığı konusunu bulamadım. Yardımcı olabilirseniz sevinirim. İyi çalışmalar…
ultraslan939[at]yahoo[dot]com
Bunlardan bir tanesi wp-admin girişine .htaccess ile extra şifre koymak..!
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 🙂