Sisteminizi Shell'lerden Korumanın Yöntemleri | |||||
Bir önceki konumda size "Bir Siteye Shell Atmanın 20 Temel Yöntemi"nden bahsetmiştim. Bu konuyu daha iyi anlamanız için önce onu okumanızı tavsiye ederim. Şimdi de size bir siteye shell atılmasını engellemenin yöntemlerini öğreteceğim. Anlatacağım adımlar birbirinden bağımsızdır. Bu şekilde istediklerinizi kendi sisteminizde uygulayabilirsiniz. Adımlarda kod olarak detaya inmedim. Zira her sistemin kodlaması kendine özgündür. Buradaki mantığı alıp kendi sisteminize göre uyarlamalısınız.
1. Yöntem Birçok sitede gerekli olmadığı halde upload form’larına rastlanır. Örneğin iletişim sayfalarına koyulan upload form’ları ya da sitedeki kullanıcıların imza ve avatar gibi sisteme dosya yükleme yaptıkları özellikler genellikle gereksizdir. Bunların yerine uzaktan resim linki girilerek ya da iletişim kutusuna farklı alanlar eklenerek bu upload form’ları kaldırılabilir. Bu söylediklerime daha birçok örnek eklenebilir. Webmaster olarak yapmanız gereken şey siteye koyacağınız bir upload form’unun yerine başka neler yapılabileceğini düşünmektir. 2. Yöntem Sitenizde bir upload form’u kullanmaya karar verdiniz ve başka çareniz yoksa ilk yapmanız gereken şey upload edilen dosyanın uzantısı ne olursa olsun belli bir kritere göre otomatik değişmesini sağlamaktır. Örneğin sitenize resim yükleme modülü koydunuz ve kullanıcılar bu modül ile istedikleri resimleri yükleyebiliyorlar. Buraya ekleyeceğiniz bir kod ile yüklenen resimlerin uzantıları derhal otomatik olarak .jpg’ye çevrilsin. Bu şekilde zararlı uzantılar ile shell atılmasının önüne geçebilirsiniz. 3. Yöntem Upload dizinini normalin dışında bir isimle adlandırmak çok önemlidir. Saldırganlar sisteme shell atsalar bile bu shell'in nerede olduğunu bulmak için “Upload, dosya, files, dosyalar” gibi bilindik dizinleri araştırırlar. Siz bu dizinlerin adlarını anlamsız harflerle değiştirirseniz saldırganlar shell atsa bile bunu bulmaları oldukça zor olacaktır. 4. Yöntem Günümüzde pek çok sitede SQL Injection zafiyeti bulunmaktadır. Ne yazık ki bu zafiyeti ile sadece veritabanı bilgileri çekilmiyor. Eğer veritabanı kullanıcısının yazma izinleri var ise saldırgan yakaladığı bir SQL Injection zafiyeti ile sisteme shell sokabilir. Bunun önüne geçmek için mevcut veritabanı kullanıcılarının izinleri mümkün olduğunca kısıtlanmalıdır. 5. Yöntem FTP girişi bir sistemin ana kapısıdır. Bu kapıyı korumasız bırakmak ya da ufak bir kilit ile korumaya calışmak sistemi büyük tehlikeye sokar. İlk iş olarak varsa anonymous FTP girişlerini kapatın. Bu şekilde dışarıdan bir kullanıcının sisteme müdahalesini engellersiniz. FTP şifrelerini asla anlamlı kelimelerden seçmeyin. ^iB.$9B^Lt_)b gibi bir şifrenin BruteForce yöntemi ile kırılması imkansıza yakındır. Ayrıca FTP portunu degistirmek ve FTP’ye erisebilen IP Adreslerini sınırlamak da güvenliği önemli ölçüde arttıracaktır. 6. Yöntem Web siteniz tamamen güvenli olsa dahi içerisinde bulunduğunuz sunucunun güvenliği zayıf ise yaptığınız herşey boşa gidebilir. Bunun önüne geçmek için alacağınız sunucu hizmetini çok iyi düşünüp seçmelisiniz. Sunucudaki Antivirus korumaları başta olmak üzere sunucuya ait diğer güvenlik önlemleri hakkında araştırma yapmalısınız. Sisteminizin büyüklüğüne göre mümkün olduğunca az kişi ile aynı sunucuyu paylaşmaya özen gösterin. Zira diğer sitelerdeki bir zafiyet ile sunucuya girilip sizin sisteminiz zarar görebilir. 7. Yöntem Upload dizinlerinde mutlaka bir .htaccess dosyası ile uzantı kontrolü yapın. Örneğin sadece resimlerin bulunması gereken bir upload dizinine php dosyası atılmaması için .htaccess dosyası ile o dizine yüklenecek bütün dosyalara .jpg gibi davranılmasını sağlayın. Böylece farklı uzantılar sisteme yüklense bile o dizinde çalışmayacaktır. 8. Yöntem Birçok saldırgan sisteme saldırırken exec(), passthru(), shell_exec(), system() gibi komutlar kullanır. Bu tarz sisteme müdahale edebilecek komutları php.ini dosyası ile kısıtlamanız gerekir. Eğer server'da yetki sahibi iseniz /etc/php.ini dosyasına aşağıdaki kodu ekleyin: disable_functions=exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source Daha sonra da /etc/init.d/httpd restart diyerek sistemi yeniden başlatın. Böylece server'ınızda bu gibi komutlar çalışmayacak ve shell atılsa bile server'a zarar verilemeyecektir. 9. Yöntem 2. yöntemde bahsettigim gibi sisteme yüklenecek dosya adlarının da belli bir kritere göre değiştirilmesi önemlidir. Upload dizinlerine atılacak olan dosyaların adlarını otomatik olarak 3132hj1g21.jpg gibi rastgele bir alfanumerik isimle değiştirilmesini sağlayın. 10. Yöntem Windows sunucularda güçlü antivirus çözümleri bulunduğundan dolayı bu işlem daha kolay yapılmasına karşın Linux sistemlerde sunucuya shell yüklendiği zaman bunu fark etmek bazen çok zor olabiliyor. Linux sunuculardaki zararlılari tespit etmek için çok güzel bir araç geliştirilmiş. Bu aracı sunucunuza kurup zararlı yazılımların önüne geçebilirsiniz. http://www.rfxn.com/projects/linux-malware-detect/ 11. Yöntem Shell'lerin çoğunda belli encode'lama yöntemleri kullanılır. Bu şekilde sisteme atılacak bir shell korumalara takılmadan çalışabilir. Bu gibi encode edilmiş shell'leri engellemek için php.ini dosyanıza aşağıdaki gibi bir özellik eklemeniz gereklidir: disable_functions = eval, base64_decode, gzinflate Bu şekilde <?php eval(base64_decode(“DQppZiAoIWZ1… şeklinde başlayan shell'lerin önüne geçebilirsiniz. 12. Yöntem Script'inizi güncel açıklar için düzenli olarak tarayın. Sisteme atılan shell'lerin büyük kısmı kullanılan script'lerdeki zaafiyetler yüzündendir. Acunetix ve Netsparker gibi programlar ile sisteminizdeki zafiyetleri tarayabilirsiniz. Eğer sisteminiz hazır script ise sürekli güncelleyin ve mümkün olduğunca az eklenti kullanın. Özellikle Joomla sistemlerde eklenti edinmeden önce kullanan kişi sayısına ve güvenilirliğine bakın. 13. Yöntem Asla warez script kullanmayın. Warez olarak edindiğiniz tema ve script'lerde büyük olasılıkla shell bulunur. Eğer shell bulunmazsa bile bazı dosyalarda bilinçli olarak arka kapı bırakılır. Örneğin indirdiğiniz bir Joomla temasının bir dosyasında bilinçli olarak koyulacak bir XSS, SQL Injection ya da RFI zaafiyeti ile sisteminiz büyük tehlikeye girecektir. 14. Yöntem Güvenliğin en zayıf halkası olarak insan faktörünü asla unutmayın. Size karşı yapılacak bir sosyal mühendislik ve Phishing saldırısı ile sisteme kendiniz shell sokabilirsiniz ya da sokulmasına izin verebilirsiniz. Örnegin bir Phishing saldırısı ya da sosyal mühendislik ile güveninizi kazanan birisi size yardım etmek için sizden Admin ve FTP bilgilerini isteyebilir. Sanal ortamda bu gibi durumlar bir hayli fazla olduğundan kimseye güvenmemeniz gerekir. Sanal ortamda karşınızda konuştuğunuz kişi yıllardır tanıdığınız dostunuz olsa dahi bu gibi bilgileri aktarmayın. Çünkü o kişinin hesabı ele gecirilmiş ve sizinle onun adına konuşuluyor olabilir. Daha da uç nokta bir örnek verecek olursak bulunduğunuz ağ dinleniyor olabilir. Bu şekilde yazışmalarınızdan çıkartılacak şifreler ile sisteminiz ele geçirilebilir. 15. Yöntem Sisteminizde dosya düzenleme ve kontrol izinleri sadece sizde olsun. Eğer ki sistem tek bir kişi ile kontrol edilemeyecek kadar büyükse gerekli izinler mümkün olduğunca az kişide olmalıdır. Bu kişilerin bütün hareketleri onların ulaşamayacakları ve düzenleyemeyecekleri bir yerde sürekli olarak kayıt altına alınmalıdır. Böylece o kişilerin sisteme zarar vermeye çalışması durumunda zafiyetin kaynağını bulabilirsiniz. 16. Yöntem Kişisel güvenliğinize önem verin. Bilgisayarınızda mutlaka güncel ve güçlü bir antivirus programı bulunsun. Buna ek olarak Firewall ve anti-keylogger yazılımları da çalıştırın. Ağınızda olası dinlemelere karşı alınacak güvenlik tedbirlerini araştırın. FTP yazılımlarını asla kendi sitesinden başka yerden indirmeyin. Geçtigimiz aylarda ünlü bir FTP yazılımının içerisine logger koyulup farklı sitelerden servis edilerek binlerce sistem ele geçirilmişti. Sonuç Yukarıda saydığım yöntemleri mümkün olduğunca uygularsanız sisteminizi o ölçüde korumuş olursunuz. Benim düşünceme göre %100 güvenli bir sistem olamaz. Ancak siz siz olun %99 güvenli bir sistemi hedefiniz olarak belirleyin ve çabalayın. Alıntılanan Kaynak
|
|||||
Bu yazı 21.08.2024 tarihinde, saat 16:46:11'de yazılmıştır. 23.08.2024 tarihi ve 20:46:51 saatinde ise güncellenmiştir. | |||||
|
|||||
Yorumlar |
|||||
Henüz yorum girilmemiştir. | |||||
Yorum Ekle | |||||