Joomla Güvenlik Nasıl Sağlanır?
Joomla son sürümü tek başına kullandığınızda saldırılara karşı % 99 korunma sağlarsınız. Ancak sitenize detaylı araştırma yapmadan sonradan eklediğiniz çeşitli eklentilerde bulunan açıklar veya chmod ayarlarının yetersizliği nedeniyle sitelerimiz saldırılara açık hale gelmektedir. Çeşitli kaynaklar ve deneyimin sonucu edindiğim bilgileri sizlerle paylaşmak istiyorum.
Site güvenliğimizi nasıl sağlarız?
Uyarı: Sitenize her zaman Joomla.org sitesinden indireceğiniz Joomla orjinal sürümü yükleyin ve sitenizi her zaman güncel tutun.
1) Joomla kurulum sonrası dosya ve klasörlerin chmod ayarlarını kontrol etmemiz gerekir.
Dosya chmod değerlerini kısaca açıklamak gerekirse,
chmod 444: Sadece okunabilir,
chmod 644: Okunabilir, sadece admin yazabilir,
chmod 755: okunabilir ve çalıştırılabilir, sadece admin yazabilir
chmod 777: Okunabilir, herkes yazabilir. şeklinde özetleyebilriz. (
Bu ayar tehlikelidir)
Sitemizde chmod ayarları; klasörler 755, dosyalar 644 olarak ayarlanması gerekmektedir.
(FTP programı ile sitenize girdiğinizde dosya veya klasötlere sağ tıklatarak chmod ayarlarını görebilirsiniz, ayarlayabilirsiniz)
Burada en önemli nokta, images klasörünüzün güvenliğidir. Karşılaştığım en çok saldırı şekli images klasörünün yazılabilir (777) olması nedeniyle siteye shell upload edilmesini ve bu sayede sitenin saldırıya açık hale gelmesine neden olmaktadır. Bu klasöre ait chmod ayarını 644 yapılmasının daha uygun olacağını düşünüyorum.
htaccess.txt dosyasını .htaccess değiştirip yayınlayın. Bu dosya içeriğine güvenilir çeşitli sitelerden edineceğiniz kodları ekleyerek çeşitli güvenlik önlemi alabilir çeşitli engellemeler yapabilirsiniz.
2) Sitenize herhangi bir eklenti kurmadan önce detaylı bir araştırma yapmanız ve güncel sürümlerini kullanmanız faydalı olacaktır.
3) Süper Yönetici ID Numarasını DeğiştirinJoomla kurulumu sonrası oluşan Süper Yönetici ID numarası standart olarak verilir. Süper Yönetici ID numarası joomla bilen herkes tarafından bilinmektedir. Bunun değiştirilmesi basit ve kolaydır.
- Yeni bir kullanıcı oluşturun ve süper yönetici olarak atayın.
- Kurulum sonrası oluşan standart süper yöneticiyi pasif hale getirin.
İndex.php dosyalarını salt okunur yapın.Saldırganların en önemli hedefleri index.php dosyalarıdır. Bu dosyaları salt okunur yapmak güvenliğinizi arttıracaktır.
Bu işlemi yapmak için,
- FTP programı ile sitenizin kök dizinine ulaşın.
- Burada bulunan index.php, index2.php gibi dosyaların üzerine sağ klik yapın,
- Açılan seçenekte salt okunur işaretleyin (444) ve uygulayın.
4) Sitenizin yedeğini sık sık almayı ihmal etmeyin. Bu konuda çeşitli eklentiler kullanabilirsiniz. (Aternatif olarak başka yöntemlerle
yedek nasıl alınır bölümlerini detaylı olarak inceleyin lütfen)
5) Common misconfigurations: Bilinen güvenlik açıkları. -
Register_globals PHP's configuration - Bu yönerge açıksa sitenizde saldırılara açıktır. Kapatılması gerekir.
-
PHP's configuration - Uzaktan kod betiklerine dahili olanak sağlayan açık; Kapattığınızdan emin olun. allow_url_include;
-
Varsayılan tablo öneki _jos kullanmak. Joomla kurulumu sırasında tablo öneki değiştirilmeden kurulduğunda, tüm MySQL enjeksiyonları için güvenlik açığı oluşur. (örneğin jos_ için xyz_ gibi)
Tablo önekini değiştirmek için aşağıdaki bileşeni kullanabilirsiniz.
Download:
DB Set Table Prefix 2008-01-08 4.74 Kb (Örnek resim)
-
Register_globals emulates açık; etkinleştirilmişse, bir uyarı görürsünüz; bunu kapatmak için configuration.php dosyası açılır ve
if(!defined('RG_EMULATION')) { define( 'RG_EMULATION', 0 ); }
şeklinde 1 olan değer 0 yapılır. (Joomla 1.0.x sürüm için geçerlidir, diğer sürümler için sunucunuza danışın)
6) Sitenizde yapılan değişiklikleri zaman zaman kontrol edin. Bunun için
Filist 1.1 eklentisini kullanabilirsiniz. Filist.php dosyasını FTP yoluyla sitenize yükleyin ve tarayıcıda çalıştırın. Sitenize yapılan eylemler tarih ve saat olarak listelenecektir. Listede sizin müdahale etmediğiniz eklentide bir değişiklik yapılmış ise bunu başkaları yapmış anlamı çıkmaktadır.
Siteniz saldırıya uğradığında bu eklenti ile güvenlik açığının nerede olduğunu bulmanız kolay olacaktır.
7) Sitenizde aldığınız tüm önlemler tek başına yeterli olsa bile sunucularda meydana gelebilecek açıklar nedeniyle bütün emeğiniz boşa gidebilir. Bu nedenle hukuki destek verebilen güvenli hosting şirketlerini seçmenizde fayda vardır. 8) Sitenize ait şife bilgilerinin bulunduğu configuration.php dosyasının güvenliği mutlaka sağlanmalıdır. Bu dosyanın chmod ayarı genel olarak 644'dür. Bu dosyanın Chmod ayarını manuel olarak 444 yapmanız güvenliğinizi biraz daha artıracaktır.
Configuration.php dosyasının güvenliği için dosya adını değiştirebilir veya değişik yöntemlerle saklayabilirsiniz.
9) Sitenizde kullandığınız tema dışında kullanılmayan diğer tema dosyalarını silmeniz güvenliğiniz için faydalı olacaktır.
10) Configuration.php Şifreleme: PHP Encoder Güvenlik açıkları nedeniyle sitelere yapılan saldırılarda hedef daima Configuration.php dosyasıdır. Çünkü bu dosya içinde sitemize ait önemli bilgiler bulunmaktadır. Dosya chmod ayarlarını 444 yapsanız dahi dosya içeriğinin okunması mümkündür. Yapmamız gereken bu dosyanın açılsa dahi okunmasının engellenmesidir. Bunu yapabilmek için çeşitli yazılımlar mevcuttur. Ancak bir çoğumuz ücret ödemek istemediğinden şifreleme işlemini ücretsiz olarak online hizmet veren siteler sayesinde yapabiliriz.
(Tavsiyem resmi desteği bulunan lisanslı program kullanmanızdır.) Öncelikle google kanalıyla arama kutusuna “
online php script encoder” yazıp online hizmet veren siteleri bulmanız ve içlerinden bir tanesini seçmeniz gerekir.Herhangi bir site tavsiyem yoktur. Ben
http://www.byterun.com/free-php-encoder.php sitesini seçtim. Önce e-posta adresimi yazarak Login ID kodu aldım ve bu kodu girerek karşıma işlem yapacağım sayfa açıldı. Açılan sayfadaki boşluk içine Configuration.php dosyası içinde bulunan kodları kopyalayıp yapıştırıyoruz. Alt tarafta bulunan butona bastığımızda kodların anlamsız kelime ve karakterden oluşarak okunamaz duruma geldiğini görüyoruz.
Ortaya çıkan bu kodları kopyalayıp Configuration.php dosyası içinde bulunan kodların üzerine veya kodları silip yapıştırıyoruz.
Son olarak Configuration.php dosyasını sitemize yükledikten sonra sitemizi yenilediğimizde herhangi bir hata yoksa işlem doğru yapılmıştır.
(Lokal ve web ortamında yapılan denemede herhangi bir sorunla karşılanılmamıştır.) Artık Configuration.php dosyası saldırganların eline geçse dahi içindeki bilgileri okumak mümkün olamayacağından sitemiz olabilecek bir çok saldırıdan da kurtulmuş olacaktır.
Uyarı: İşlem öncesi Configuration.php dosyasının bir yedeğini almayı ihmal etmeyin.
11) SEF bileşeni kullanın. Saldırganlar
Google inurl: komutu kullanarak rastgele sitelerde açık aramaktadırlar.Ancak site uzantılarınızı html şeklinde düzenleyen SEF eklenetileri kullandığınızda sitenizde güvenlik açığı mevcut eklentinin Google aramasında bulunması oldukça zor olacaktır.
12) Klasik terimleri kullanmayın. Şifrelerinizi düzenli aralıklarla değiştirin. Site yöneticisi Admin, administartor ve veri tabanı uzantısı Jos_ ön eki gibi terimler yerine daha değişik kelimeler kullanabilirsiniz.
Site ve cpanel şifrelerinizi birbirinin aynısı olmayacak şekilde düzenli aralıklarla değiştirmeniz faydalıdır.
Şifreler tahmin edilemeyecek düzeyde olmalıdır. Şifreniz uzun ve içinde harf, rakam ve çeşitli karakterler bulunmalıdır. Örnek: ++*Demir-9870-??F12 gibi.
Şifrelerinizi kullandığınız bilgisarayda saklamayınız. Bunun yerine şifreli bir USB bellek içinde saklamanız faydalı olacaktır. (Belleğinizi kaybetmemeniz gerekir.)
13) Kullanmadığınız eklentiler ile gereksiz eklentileri kaldırın.
Sitenizde kullanmadığınız eklenti ve temaları kaldırmanız faydalıdır.Ayrıca eklentileri
alpha, beta ve RC aşamasında kullanmayın. Kararlı sürümleri kullanmak önemlidir.
Gereksiz eklentiler (tarih,saat, hava durumu vs) ile sitenizi doldurmayın. Çok fazla eklentinin güvenlik açıkları ile güncelleme takibi zor olabilir. Sitenizin sade ve şık olması site hızını artırır ve arama motorlarında bulunmasını kolaylaştırır.
14) Güvenli Host Firması Seçmeyi İhmal Etmeyin Sitenizin güvenliğine ilişkin bütün önlemleri eksiksiz aldınız ancak hizmet aldığınız sunucuda meydana gelen ufak bir güvenlik açığı nedeniyle aldığınız güvenlik önlemleri boşa gidecektir.
Bu nedenle sunucu hizmeti alacağınız host şirketinin seçimi önem kazanmaktadır. Internet ortamında bir çok host firmasına ait reklamlar bulabilirsiniz.
Tavsiyem firma seçimi yapmadan önce sunucu hizmeti alan dostlarınızla görüşmeniz, seçim yapacağınız host firmasıyla ilgili çeşitli forumlarda ve şikayet sitelerinde yapılan açıklamaları takip etmeniz faydalı olacaktır.
15) Site Yedeklenmesi ve Saklanması Muhtemel saldırılara karşı bir kenarda site yedeğinizin bulunması gerekir. Site yedeğinizi hiçbir zaman site içinde muhafaza etmeyin çünkü muhtemel saldırıda bu yedek dosyanın çalınması mümkündür.
Site yedeğinizi Flash bellek, harici Disk veya CD ortamında muhafaza edebilirsiniz. Dosya bozulmalarına karşı iki ayrı yedek saklanması faydalıdır. (
Yedek alma - yedek yükleme)
16) Modül pozisyon yerlerini saklayın. (Jomla 1.5.x-1.0.x sürüm için geçerlidir)
Saldırganların sitenize ait modül yerleşim durumunu incelemesini önlemek için aşağıdaki kodları
htaccess dosyası içine yazmanız yeterlidir.
########## Begin - Rule to block "?tp=1"
RewriteEngine On
RewriteCond %{QUERY_STRING} tp=(.*)
RewriteRule ^(.*)$ index.php [F,L]
########## End - Rule to block "?tp=1"
========
Cpanel güvenliğimizi nasıl sağlarız? Bazı sunucu şirketlerinden satın alınan hosting hizmetlerinde, kullanıcılara genel olarak veri tabanı kurulu olarak verilmekte ve veri tabanı şifresi ile FTP giriş şifresi aynı olarak düzenlenmektedir. Sunucuları güvenli olan şirketlerde bu durumun bir mahsuru yoktur. Ancak sunucu güvenliği eksik olan bilgisayarlara giren korsanlar kolaylıkla configuration dosyanızı okuyacak ve buradan öğrendikleri şifre ile FTP yoluyla sitenize girerek telafisi mümkün olmayan zararlar verebilecektir.
Bu zafiyeti bir nebze olarak engellemek için veri tabanı ile FTP/Cpanel giriş şifrelerinizin aynı olmaması gerekir.
Saldırı Olursa Ne Yapabiliriz? Sitenizin veri tabanı ile dosyaların zaman zaman yedeğini almayı ihmal etmeyin.
1- Her türlü önlemi aldık ama olur ya, sitemize saldırı oldu. Öncelikle soğukkanlı olmalıyız.Önce sitenize "Bakım yapılıyor" gibi bir ibareli index.htmk dosyası yükleyin.
Daha sonra
filist.php dosyasını indirip FTP yoluyla sitemize yüklüyoruz ve tarayıcıdan
www.siteniz.com-net/filist.php yazarak saldırının hangi eklentiden. hangi saatte olduğununu tespit ediyoruz. Tespit ettiğimiz eklentinin varsa sürümünü yükselteceğiz veya sileceğiz. (Dosyayı saldırı olmasa bile sitemize önceden yükleyerek sizin bileceğiniz şekilde ismini ve bulunduğu yeri değiştirebilirsiniz.)
2- Açıklarımızı kapatıktan sonra önceden aldığımız yedeği sitemize yüklüyoruz ve kaldığımız yerden devam ediyoruz.
3- Ayrıca saldırıyla ilgili log kayıtlarınızı belgeleyerek C.Savcılığına suç duyurusunda bulunabilirsiniz.
* * * * * *
Siteme bağlanan misafirler trojan ile karşılaşıyor Önemli sorunlardan biriside sitenize bağlanan misafirlerinizin bir tojanla karşılaşması veya farkına varmadan bilgisayarlarına trojan bulaşmasıdır.
Sitenizde trojan varsa bu sebebi bilgisayarınıza bulaşan trojandır. Çünkü bilgisayarınzda herhangi bir güvenlik önlemi almıyorsunuz ve FTP ile sitenize bağlandığınızda bilgisayarınızda bulunan trojanda sitenize bulaşmaktadır. Sitenizde bulunan dosyaları incelediğinizde iframe kodları arasına yazılmış trojanı görebilirsiniz.
Alternatif olarak sitenize bulaşmış zararlı kodları veya zararlı yazılım bulunduğundan şüphelendiğiniz bir siteyi
http://sitecheck.sucuri.net/scanner/ ve
http://safeweb.norton.com/ kanalıyla tarayıp bulabilirsiniz.
Önlem olarak, FTP program girişine şifreleyin ve program içinde şifrelerinizi muhafaza etmeyin.