it-swarm-tr.com

Sunucunuzun güvenliğinin ihlal edildiğini nasıl anlarsınız?

Geçenlerde sunucularını hacklenmiş bir müşteriye yardım ettim. Bilgisayar korsanları, kullanıcıyı bir porno web sitesine yönlendiren ana sayfanın başlığına bazı PHP kodu) ekledi - ancak yalnızca Google'dan geldiyse bu, müşterinin fark etmesini biraz zorlaştırdı. Sadece Google'dan yeni web sitesi ziyaretçileri porno sitesine yönlendirilir.

Dün gece farklı bir müşteriye benzer bir şey oldu. Ben benzer bir kesmek olduğunu kabul, ama kod temeli kontrol ederken herhangi bir kötü amaçlı kod bulamadık. Onun chrome tarayıcı istemcilerin web sitesinden www(dot)pc-site(dot)com 'e yönlendiriyor. Bu davranışı tekrarlayamıyorum. Sanırım kötü amaçlı kodun eklenmesi ve kaldırılması mümkündür. sunucunun saldırıya uğramış olup olmadığını anlamanın daha kapsamlı bir yolu.

Bu özel sunucuya (ve barındırma şirketi Rackspace) yalnızca 2 geliştirici erişebilir. Sunucu Red Hat Linux.

Sunucunun saldırıya uğramış olup olmadığını öğrenmek için attığım adımlar nelerdir?

45
Boz

[~ # ~] güncellenen [~ # ~]

Aşağıdakileri kontrol ederim:

  1. Kütükler. Kök erişiminiz varsa, /var/logs 'Da komut geçmişi ve günlük dosyaları verecek history gibi şeyleri kontrol etmelisiniz.

  2. Temel. Uygulama ve sistem dosyaları için çalışmak için dosya karmaları gibi bir taban çizginiz varsa, bu çok yardımcı olacaktır. Önceki durumu karşılaştırmak için yedekleri de kullanabilirsiniz. Dosyaları karşılaştırmak için bir yedek kullanıyorsanız, mümkünse biraz daha eski bir yedek kullanın. Site bir süre önce ele geçirilmiş olabilir ve yalnızca şimdi yeniden yönlendirme etkinleştirilmiştir.

  3. İçeriği kontrol edin. Dosyalar sunucunuzda olmayabilir. Bunlar <script src=”http://baddomain.com/s.js” /> Veya iframe tipi etiketler gibi komut dosyası içerebilir. Ayrıca görüntüleri, Flash PDF'lerini (SWF), video dosyalarını hariç tutmayın. Farklı bir içerik türündeki dosyalara bağlantılar yerleştirmek oldukça yaygın bir numaradır. Onları özellikle bir dosyanın başında ve sonunda elle incelemenizi öneririm. Dosya tamamen bir link/html/javascript olabilir veya dosyanın sonunda bir bağlantı izleyen yasal bir görüntü dosyası olabilir.

  4. Olağandışı dosya tarihlerini, boyutlarını ve izinlerini kontrol edin, ör. 777.

  5. Olağandışı işler için cron işlerini kontrol edin. Bir sistemden ödün veren biri, tekrar tekrar içeri girmek için arka kapıdan çıkar. Cron, bunu başarabildiklerinde bunu yapmanın çok popüler bir yoludur.

  6. Dosyaların bulunup bulunmadığını kontrol edin, günlüklere erişemeyebilirsiniz, ancak bunların yokluğu, birisinin kendisinden sonra temizlediği bir söyle kuyruk işaretidir.

  7. Arama motorlarını kullanın. Şaşırtıcı olmayan arama motorları her şeyi bulmakta mükemmeldir. site: Gibi yönergeleri kullanın örn. site:yoursitehere.com baddomain.com Herhangi bir isabet alıp almadığınızı görün.

  8. Genellikle bir bağlantı veya yönlendirme gizlenecektir, bu nedenle tek harfli değişkenlere sahip uzun javascript kodu dikkatle analiz edilmelidir.

  9. Güvenli bir iş istasyonundan siteye Wireshark veya tcpdump gibi bir araçla paket yakalama yapın. Dosyaya kaydedin ve URL'nin bir bölümünü arayın.

  10. Sorgulanabilen veya güncellenebilecek veritabanı kayıtlarını kontrol edin. Bağlantı PHP'ye veritabanına enjekte edilebilir.

  11. Müşterinin iş istasyonunu hariç tutmayın. Gerekirse ücretsiz bir çevrimiçi virüs tarayıcı kullanın. Ayrıca nslookup öğesini kontrol edin ve neyin çözüldüğüne bakın. Tarayıcı uzantılarını kontrol edin, önbelleği temizleyin ve hosts dosyalarını kontrol edin.

Temizlemek için (eğer tehlikeye düştüyseniz) gerçekten çıplak metale geri dönüp yeniden yüklemeniz gerekir. Acı verici ama gerçekten çok şey aldığınızdan emin olmanın tek yolu bu.

Gelecekte bunu önlemek için aşağıdakileri yapmalısınız (bunlardan bazılarını zaten yapıyor olsanız da):

  1. Güncel yazılımlar kullanarak güvenli yapılandırmalarda satıcı önerileri kullanma da dahil olmak üzere sert sunucular. İzinler, şifre politikaları gibi sıkı güvenlik kontrolü uygulayın. Ayrıca bkz --- klasör ve dosya izni paylaşılan Ana bilgisayar önerisi .

  2. Düşük güvenlikli ortamlarda test etme, kod inceleme ve test etme gibi kalite kontrol işlemlerini uygulayın.

  3. Web uygulamanızın/web sitenizin güvenlik açığını en az bir kez profesyonel sertifikalı bir test kullanıcısı tarafından test ettirin. EC-Council, ISO 27001 ve PCI sertifikalı test cihazlarını arayın. http://www.eccouncil.org/certification/licensed_penetration_tester.aspx

  4. Web uygulaması güvenlik kaynakları için OWASP www.owasp.org ve http://phpsec.org/projects/guide/2.html adresine bakın.

  5. İzinsiz Giriş Önleme Sistemi (IPS) araçlarını kullanın. Ancak barındırma sağlayıcınıza bağlı olarak, ne kullanabileceğiniz konusunda sınırlamalar olabilir. Ana bilgisayar tabanlı IPS araçları, özel bir sanal makineniz varsa tamam olmalıdır.

Umarım yardımcı olur. Aksi takdirde çalıştırdığınız sistemler hakkında daha fazla bilgi verebilir misiniz?

45
Bernie White

@Dgarcia'nın dediği gibi, hızlı bir yöntem, değişiklikleri kontrol etmek için dosyaları veya dosyaların karmasını izleyen Tripwire veya başka bir araç kullanmaktır. Bu, birçok saldırı türünden etkilenen sunucuları tanımlamak için çalışır.

  1. Bu işleme karşı koyan bir rootkit kurulu olanlar için çalışmayabilir.
  2. Yalnızca bellekten ödün vermeden avlanan veya izlediğiniz dosyalara dokunmayan sunucular için çalışmaz.

1 için, tek seçeneğiniz sıfırdan bir yeniden oluşturma

2 için, en iyi seçeneğiniz sıfırdan yeniden oluşturmadır, çünkü herhangi bir uzlaşma düzeltmeye çalıştığınız her şeyi kıracak arka kapıları uygulayabilir, ancak diğer adımlar yararlı olabilir:

  • web sunucunuzu ve php sürümlerinizi kontrol edin ve bunları bilinen istismarlar için bir Danışma listesinde aramak için kullanın. Bu, güvenliği ihlal edilmiş alanları belirlemenize yardımcı olur. Sonra
  • web uygulama kodunuzu kontrol edin
  • web sunucusu yapılandırmalarınızı kontrol edin
  • sorunun gerçekte olabileceğinden istemcinin makinesini (hosts dosyası, DNS vb.
7
Rory Alsop

Bu cevaplaması zor bir soru çünkü çok geniş. Küçük ve ciddi - kitabımda iki "kesmek" kategorisi vardır. Bir rootkit'i ciddi kategoride ve ortalama senaryo enjeksiyon saldırınızı küçük olarak sınıflandırırdım. Küçük saldırılarla onları temizleyebilirsiniz, ancak saldırıyı tekrarlamak için onları kaldırdığınızdan veya tüm erişimi kapattığınızdan% 100 emin olamazsınız, ancak " Bu kişi iyi bir programcı mıydı? " ve "Kişinin niyeti neydi?" Rootkit'ler kötü bir iş. Bir rootkit'in kaldırılması için tam bir silme ve geri yükleme gerekir. Birini uzaktan algılamak neredeyse imkansızdır - emin olmak için makineye ve bir önyükleme diskine fiziksel erişime sahip olmanız gerekir.

Daha da önemlisi önleme. "Önleme onsu bir kiloluk tedaviye değer" ifadesi bu bağlamda tamamen doğrudur. Sistemin çeşitli yönlerini izlemenize ve günlük hatta saatlik raporlar göndermenize olanak tanıyan bir yazılım yükleyin. Tripwire bahsedildi, ama orada başka araçlar da var. Birkaç farklı araç kullanmanızı öneririm - evli olanları bulmak daha zordur ve yazması zor değildir. Sağlam bir savunma oluşturmak ve sisteme erişimi sınırlamak istiyorsunuz. Dünyadaki herkesin SSH bağlantı noktasına erişmesine izin vermeyin (en azından IP adresi/küçük IP aralığı ile sınırlayın). Ekstra koruma sağlamak için her sunucunun önüne özel bir güvenlik duvarı yapıştırın. Kutunun kendisinin tek savunma hattı olmasına izin vermek istemiyorsun. Kritik verileri yalnızca sunucuyla SSH/SSL üzerinden yönetin, böylece her şey şifrelenir ve meraklı gözlerden arındırılır. Sunucularınızı hiçbir zaman açık WiFi ağlarından yönetmeyin.

Birçok site MySQL veya benzer bir veritabanı kullanır. Bir veritabanında XSS saldırıları veya diğer hileli veriler gibi şeyleri tespit etmek kolay değildir, çünkü şemaya bağlı sorunlar vardır. Bu sorun için herhangi bir çözüm görmedim ama var olduklarından şüphe etmem.

6
Linders

Hızlı bir yöntem, sağlıklı olduğunu bildiğiniz tüm dosyaların md5'ine sahip olmaktır. Sitenizin kötü davrandığından şüpheleniyorsanız veya düzenli bir inceleme olarak dosyaları kontrol edebilirsiniz. Md5'ten herhangi biri eşleşmezse dosyaları dağıtabilir ve değişiklikleri inceleyebilirsiniz.

Açıkçası bu dinamik dosyaları ile çalışmaz: günlükleri, veritabanı dökümlerini, vb Eğer değişiklikleri izleyemiyorsanız.

Elbette, birden fazla yöntem (günlükleri inceleyin ...) ve önlemleri vardır, ancak bu kolay ve hızlı bir yoldur.

2
dgarcia