Loadbalancer'ların arkasında yüzlerce web sunucusu çalıştırıyorum, çok fazla uygulamayı barındıran çok sayıda siteye ev sahipliği yapıyorum (bunların hiçbir kontrolü yok). Yaklaşık ayda bir kez, sitelerden biri saldırıya uğrar ve bazı bankalara veya siyasi kurumlara saldırmak için bir sel betiği yüklenir. Geçmişte, bunlar her zaman bireysel web sunucusunda giden UDP trafiğini engelleyerek etkili bir şekilde çözülen UDP selleriydi. Dün, 80 numaralı bağlantı noktasına birçok TCP bağlantısı kullanarak büyük bir ABD bankasını sunucularımızdan sulamaya başladılar. Bu tür bağlantılar uygulamalarımız için mükemmel bir şekilde geçerli olduğundan, bunları engellemek kabul edilebilir bir çözüm değildir.
Aşağıdaki alternatifleri düşünüyorum. Hangisini önerirsiniz? Bunları uyguladınız ve nasıl?
- Kaynak sunucuya sahip web sunucusu (iptables) giden TCP paketlerinde sınır! = 80
- Aynı ama kuyrukta (tc)
- Sunucu başına kullanıcı başına ücret sınırlaması giden trafik sınırı. Uygulama sunucusu başına potansiyel olarak 1000 farklı kullanıcı olduğu için oldukça idari bir yük. Belki bu: kullanıcı bant genişliği başına nasıl sınırlandırabilirim?
- Başka herhangi bir şey?
Doğal olarak, bilgisayar korsanlarının barındırılan sitelerimizden birine girme şansını en aza indirmenin yollarını da arıyorum, ancak bu mekanizma asla% 100 su geçirmez olmayacağından, bir izinsiz girişin etkisini ciddi şekilde sınırlamak istiyorum.
Güncelleme: Şu anda bu kuralları deniyorum, bu özel saldırıyı önleyecektir. Onları daha genel hale getirmeyi nasıl önerirsiniz? Yalnızca SYN paketlerinde hızı sınırlandırdığımda bilinen bir TCP DoS saldırısını kaçırıyor muyum?
iptables -A OUTPUT -p tcp --syn -m limit --limit 100/min -j ACCEPT
iptables -A OUTPUT -p tcp --syn -m limit --limit 1000/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A OUTPUT -p tcp --syn -j REJECT --reject-with tcp-reset
Şerefe!