PhpMyAdmin'i hedef alan bilgisayar korsanlığı girişimlerini nasıl engelleyebilirim?


34

Web sitem erişmeye çalışan farklı IP'lerden günlük binlerce isabet alıyor:

/php-myadmin/
/myadmin/
/mysql/

... ve binlerce başka çeşitlilik. Bu dizinlerin hiçbiri yok, sunucumda phpmyadmin bile yok.

Bu girişimlerin hiçbirinin başarılı olduğunu sanmıyorum, ancak sunucunun kaynakları üzerinde para harcıyor olmalılar ve bant genişliğini boşa harcamalılar, bu yüzden mümkünse onları durdurmak istiyorum. Bu IP'leri bir avuç engelledim ama yeni IP'lerle geri gelmeye devam ediyorlar, bunu daha kalıcı olarak engellememin bir yolu var mı?


8
Günde binlerce hit hiçbir şey değildir. Aslında performans güçlüğü yaşıyor musunuz yoksa sadece varsayıyor musunuz? Günde birkaç bin 404s gerçekten bir şey değil .
MDMarra

Hayır Performans sorunları yaşamıyorum. Ama bu beni sinir ediyor ve yapabileceğim bir şey olup olmadığını merak ettim.
amba88

6
IP tabanlı engelleme konusunda dikkatli olun - bir çok IP adresi meşru kullanıcılar tarafından kullanılmaya başlandı. Ayrıca, bazı meşru kullanıcılara botnet'in bir parçası olarak bulaştırılabilir. Herhangi bir IP tabanlı engelleme yaparsanız, bunun makul derecede kısa bir süresinin dolmuş olduğundan emin olun.
Bob

Bu konuda hiçbir söz, mod_securitybu yüzden bir göz atın . Aşağıdaki bir yoruma not edin, bunun elbette sunucu tarafından daha fazla iş yapılmasına neden olacağına dikkat edin. Bu yüzden belki mod_evasivede uygulamak için iyi olurdu . fail2ban, ama aşağıda listelenmiştir.
mbrownnyc

Yanıtlar:


42

Endişelenme. Bir 404'e hizmet vermek, bir web sunucusunun yapması için küçük, küçücük, küçücük bir iştir. 486 kullanarak saniyede on 404 saniyede bir servis verebilirsiniz. 404 başına bant genişliği göz ardı edilebilirdir; küçük bir GET isteği ve küçük bir 404 yanıtı.

Ciddi anlamda; Endişelenme. Bu sadece internette bir sunucu çalıştırmanın bir parçasıdır.


14
Hell-Banning: Cılız çıktı ile normal bir sayfa (200 OK) kullanın. Çocukların kullandığı araçlar, sayfanın bulunacağını ve el ile araştırmaları gerekecek (sahte bir giriş sayfası kesinlikle bir şeytan aygıtı olacak) :) :)
arul,

4
@arul - Bazı saldırganlar bunu bir meydan okuma olarak algılayabilir ve sunucunuza sıkıntı vermemesine dikkat edebilir. Daha küçük veya farklı bir 404 hizmetini yapmak hiç yararlı olmaz mıydı? Örneğin, ana bilgisayar normalde bir destek bağlantısına sahip bir 404 hizmetini veriyorsa, bunun yerine hedeflenen bu URL'lere hiçbir içerik içermeyen bir düz 404 hizmetinde olabilir mi?
Freiheit

1
Amaç, muhalifin sonuçları analiz etmek için ek kaynaklar (zaman) harcamasını sağlamaktır. Bir 404 elde ederseniz, saldırının işe yaramadığını biliyorsunuzdur. Değişken uzunluklu OK sonucu, [daha fazla araştırma yapılmadan] beklenen sonuçlardan ayırt edilemez. Bu taramaları yürütüyorlar çünkü sabır kendi erdemleri değil, bu yüzden onlardan uzak durun ve durduracaklar :)
arul

1
Bonus puanlar için, gerçek phpmyadmin sayfasına tam olarak benzeyen ancak tamamen işlevsel olmayan statik bir sayfa döndürün.
captncraig

1
Ek bonus puanları için, 0,5 - 1 saniye gecikme oluşturun. Bu, meşru kullanıcılar tarafından yüklenme süresini önemli ölçüde arttırmayacak, ancak kötü adamların yaptıkları taramayı da yavaşlatacaktır. (Sunucunuzun, bağlantıları gerekenden daha uzun süre açık tutacak kapasiteye sahip olduğundan ve hala meşru talepleri işleme koyduğundan emin olmanız gerekir.)
Moshe Katz

38

Ne yazık ki, sizin için internet bu şekilde çalışır. Görmezden gel. Binlerce bot / trojan interneti tarıyor. Kaynak IP her zaman rastgele olacaktır. Tedavisi yoktur.

Bu trafiği ortadan kaldırmak için% 100 çözüm aşağıda gösterilmiştir: görüntü tanımını buraya girin

Bir alternatif:
- https / http ile 80/443 numaralı bağlantı noktasından başka bir yere geçmek. Botlar genellikle diğer tüm 65k portlarında http sunucusu aramazlar.
- sunucuya bağlanmak için VPN kullanın (genel bir web sitesine ev sahipliği yaparsanız bu mümkün değildir sanırım).


Diyagram için LOL +1 :-) Statik bir sitede bu can sıkıcı sorun var (hepimiz gibi) ve bu en kullanışlı cevap.
Dave Everitt

30

İstediğiniz şey Fail2ban (bunun bir linux makinesi olduğunu varsayarsınız , demediniz …)

Fail2ban Nedir?

Fail2ban, sistem günlüklerini ayrıştırıp, engellenecek belirli düzenli ifadeleri arar. Bir eşleşme bulduğunda (veya aynı IP’den birkaç eşleşme, onu nasıl yapılandırdığınıza bağlı olarak), genellikle IPTable'lar aracılığıyla engellenir. Genellikle bu, SSH veya web sunucularına karşı başarısız kimlik doğrulama girişimlerini engellemek için kullanılır.

Onları belirli bir süre için yasaklayacak şekilde yapılandırın (dakikalar olabilir, günler olabilir ... ne kadar ısrarcı olduklarına bağlı olarak), daha sonra tekrar denemezlerse yasağı sona erecek.

Bu, phpmyadmin tarama botlarının engellenmesine nasıl yardımcı olur?

Var olmayan phpmyadmin klasörlerine erişmeye çalışmak gibi, bir saldırının genel belirtileriyle eşleştirmek için kolayca kullanılabilir. Bu tür girişimleri karşılayacak doğru düzenli ifadeyi bulmanız ve meşru kullanıcıları engellememenizi sağlamak zorunda kalacaksınız.

Bu blog gönderisinde verilen yapılandırma verbatium olabilir veya kurulumunuz için biraz değişiklik yapmanız gerekebilir.

Onları neden engellemeliyim? 404 hataları çok pahalı değil

Bunları iptables içinde engelleme Bazı kullanımları DOES vardır - olasılıklar phpmyadmin açıklarını kontrol ediyorlarsa, çalışan bir şeye çarpıncaya kadar diğer açıkları da deneyebilirler. Bunları yasaklamak botların / komut dosyalarının çoğunun bir süre sonra vazgeçmesine neden olacak ve daha iyi hedeflere geçecekler.

Taramalar yoluyla bile fazla maliyetli olmuyorlar (aslında bir güvenlik açığı bulamazlarsa), web sunucunuzla başarılı saldırılar ve sorunlar görmeyi zorlaştırarak günlüklerinizi siler.

Aşağıdaki açıklamanın dediği gibi, Fail2ban bazı sistem kaynaklarını gerektiriyor. Ama çok değil. En azından, Fail2ban’a atfedilebileceğim bir performans problemim olmadığını söyleyebilirim. Bununla birlikte, sunucumda saniyede binlerce SQL enjeksiyon girişimi ve diğer istismarlar atmaya çalışan veya zor şifreler kullanmaya çalışan çok agresif betiklerin performans sorunları var. Bunları güvenlik duvarı düzeyinde engellemek, FAR'ı sunucu / uygulama düzeyinde engellemekten daha az kaynak alır. Ayrıca, IP adreslerini yasaklamak için özel komut dosyaları çalıştırmak için de genişletilebilir; bu nedenle, IPtables’da yasaklamak yerine, bir donanım güvenlik duvarında yasaklamalarını ya da aynı kişi size saldırmaya çalışıyorsa birisine e-posta göndermelerini isteyebilirsiniz; ISS’lerine veya veri merkezinizin güvenlik duvarlarında onları engellemesini sağlayın.

Başka ipucu var mı?

ÇOK TAVSİYE EDİLDİ, kontrol ettiğiniz bazı IP adreslerini beyaz listeye almanız, böylece yanlışlıkla kendinizi kilitlememenizi sağlar.


6
ben Sadece :) bazen 404 porsiyon üzerinde daha Fail2ban daha fazla CPU döngülerini kullanacaktır düşünüyorum :) kaynağın bir defolu mal olacak
Bartłomiej Zarzecki'nin

4
@ BartłomiejZarzecki Daha iyi güvenlik her zaman daha fazla kaynak gerektirir
user11153

3
@ heinrich5991 ilk denemeden sonra bloke edecek . Bazı taramalar için bir fark yaratmaz, ancak sunucuda birden çok deneme yapmaya çalışan taramalar için büyük bir fark yaratır.
Hibe

2
Fail2ban (veya benzeri) umarım / phpmyadmin'den daha fazlası içindir. Herhangi bir uzaktan erişimi olduğunu varsayarsak, F2B tipi engelleme (3 parola ve siz ... gittiniz!) Sadece 404'ten daha fazlası içindir.
WernerCD

3
Böyle bir şey yaparsanız, yasağın nispeten hızlı bir şekilde sona ermesini (birkaç saat, maksimumda) sona erdirdiğinizden emin olun veya saldırı dinamik olarak tahsis edilmiş bir IP’den kaynaklanıyorsa meşru kullanıcıları durdurma riskini alırsınız.
Jens Neubauer

7

Yaptığım şey küçük bir betiği ilgili dizine koymak, bu yüzden birisi / phpmyadmin / dosyasına erişirse çalışır. Bu komut dosyası, başka bir şey yapmaz, iptables (Linux altında) olan ve IP adresini komut dosyasına erişen 30 dakika boyunca engelleyen (bundan sonra bir cron işi IP adresinin eklendiği iptables zincirini temizler) ipotekleri çağırmaktan başka bir şey yapmaz.

Fail2ban'a göre avantaj, syslog / access-log dosyasını ayrıştırmak için herhangi bir kaynak kullanmamanızdır. Dezavantajı, elbette, bu çok özel adrese erişmek dışında başka hiçbir şeyi kontrol etmemenizdir.

Bunu neden yapıyorum? Tabii ki, bir 404 hizmet vermek sunucu için kolay olurdu, ama onların alay etmesini istemiyorum, bu kadar basit. Araçlarının zamanını boşa harcamak, sunucunun cevap vermesini beklemek, sonunda vazgeçene kadar yeniden denemek istiyorum. Ayrıca, onları engellemezseniz, en geç devam etmeden önce bir çok farklı URL’yi deneyeceklerdir - bazen binin üzerinde. Araca bağlı olarak, bu "hoş" olabilir ve birkaç saat içinde kalanları boşaltabilir veya sunucunuzu dakikalar içinde hepsiyle birlikte umursamayabilir ya da çarpıtmayabilir.

Neden geçerli bir sayfa sunmuyorum? Onların araçları sizi taramayı bırakabilir ve onu çalıştıran skiddie'yi uyarabilir; bu durumda manuel olarak kontrol etmek zorundadır. Bunun asıl amacı, eğer taraması sizi sonuçlarına getirmediyse, sunucunuza sahip olduklarından daha yakın bir görünüm vermeleridir. Belki biraz daha dürteceklerdir, belki birkaç port taraması, belki onları kızdırırsınız ve bir şey yapıp yapamadıklarını görmek için bir DoS başlatırlar. Onları basitçe engellemek - ki bu onların bakış açısına göre, sunucu phpmyadmin komut dosyasına eriştiği anda sunucuyu zaman aşımına uğratır - istenmeyen dikkatlerden kaçınırken araçlarının zamanını boşa harcar.

Sunucuda phpMyAdmin varsa DO, etkili bir çözüm ayrı bir dizine koyuyor olabilir ve herhangi bir şeye erişmeden erişimi engellemek için web sunucunuzun parola kontrolünü (.htpasswd).


İyi bir alternatif seçenek gibi görünüyor ... ama bu web sunucusunun betiği root izinleriyle çalıştırabilmesini gerektirmiyor mu?
Grant

1
Diğer adı phpMyAdmin gibi araçlar için ayarlayın. AdminMyPhp veya chrisPhpAdmin ... veya script-kiddied olmayacak bir şey değiştirmek için yapılandırma dosyasında basit değişiklik.
WernerCD

Geç cevap için özür dilerim - değil (mutlaka). Web sunucusunun iyi bilinen bir komut dosyasını (ve yalnızca bu komut dosyasını) kök izinleriyle çalıştırmasına izin vermek için sudo'yu (sudoers dosyasıyla birlikte) kullanabilirsiniz. Bu komut dosyası (parametre olarak) IP'yi kabul eder ve siz normal bir ifadeyle ([0-9] + \. [0-9] + \. [0-9] + \. [0-9] + garip bir şey enjekte etmediğinden emin olmak için.
Aaa

1

FWIW / phpmyadmin / 'e yalnızca beyaz listeye alınmış IP Adreslerine erişimi kısıtlıyoruz.

Ayrıca DOS / zayıf davranışlı komut dosyasıyla yapılan saldırıları engellemek için mod_evasive (apache2'de) kullanıyoruz.


1

mysql admin aracını makine geri dönüş adresinize bağlayın 127.0.0.1

daha sonra yönetici arka ucuna erişmek için ssh ile port yönlendirmeyi kullanın.

oldukça saydam olabilen ekstra bir güvenlik katmanı ekleyin.


-4

Bulduğumuz en iyi yol, şifreyi phpmyadmin'in bulunduğu klasörü korumaktır. Ayrıca, phpmyadmin ile bir klasör adı olarak ilgili hiçbir şey kullanmayın: pma, phpmy, etc ...


2
Şu sorudan: None of these directories exist, I don't even have phpmyadmin on my server.- Mevcut kurulumlarını nasıl sertleştireceğini sormuyor ... olmayan şeyler için ne yapacağını soruyor. Yeniden adlandıramazsınız PMAveya yoksa neyin var olduğunu.
WernerCD
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.