Soru Kötü niyetli, kalıcı POST isteklerinin etkisini en aza indirmek için nasıl


Birkaç için ay şimdi paylaştığımız hosting sunucularımızdan biri, yüz binlerce IP'den hangisinin olması gerektiğine dair "POST /" talepleri ile ısrarla ve sürekli olarak dövüldü. Bazı durumlarda bu, sunucuyu bunalmış ve hizmet tipi bir kesintinin reddine yol açmıştır. Hedef alan oldukça sıkıcıdır (küçük bir emlakçı), bu kötü niyetli gibi gözükse de, bu uzun süreli ve% 99 başarısız saldırının sebebini anlayamıyorum.

Tipik bir istek (TCPDUMP'tan alınmıştır) şöyle görünür:

POST / HTTP/1.1
Accept: */*
Accept-Language: en-us
Content-Type: application/octet-stream
Content-Length: 570
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: xxx.co.uk
Connection: Keep-Alive
Cache-Control: no-cache

2+cIPSyYVJFqB9xPFzWoLj9seNyEKIcuIJz/yfkc9tVP+orXgjDk8ywglufcXsMz
bVP4XLcowz/fQtsn2kceQEj/EaEWx/GEbcC3eTbCbTube0suAfEGje3qISKQJ+ka
HaChqun3whii3OTh7vCayGV72lh4raLRandKC5g/73wgQ9Jzh2OLIzNvsiEMSJco
yG+4i35XJMvX7ovx8qJkyByHUIeE5G5M2Kp97O4sOT4jTAK2y/KAMjf6oFgtAJhI
K4/HdcnyfNdI3/4RJXlrSfhUQAc+qhGMEL7AZdtzgRub7lnu+hbuPGZvS3rF1MvL
WK1q4mrnZr0Q3m0bWkzsMZCndQ7fqOBafchjprhn4JKPsjO+upRm2m+irvmJjqnl
sDiR3fnD6pzbWyLTm2qonMJPCll3p6zg06gEfIaW04t9r89/PdHgz8AU8nzO4BX8
qwTG6dSjgbowHyJQmud8Ro+ZT+gHfw/YQUrBqKm7RoFmfJzUoOCKaP1LTwHfI1Gc
E+L8bwQV6ztKBwVn2NqbE83SAXYr9E0QkpaxGg==

POST isteğinde çöp gibi görünenleri belirleyemedik, ancak ilgili olduğundan emin değilim. Kodlanmış base64 değil.

Bu talebe verilen yanıtlarla kullanılan bant genişliği miktarını azaltmak için Apache2 yapılandırmasında POST isteklerinin kullanımını yasakladık:

<Location />
    <Limit POST>
        Order deny,allow
        Deny from all
    </Limit>
</Location>

Bu, yanıt boyutunu istemcinin olağan ana sayfasından ziyade basit bir 403 Yasak iletiyle kısıtlar.

Bunu yapmak için IP'leri denemek ve engellemek için erişim günlüğünü pipetlemeye, POST isteğine göre filtrelemeye ve bunu doğrudan iptables'e aktarmaya çalıştık:

tail -f /var/www/vhosts/xxx.co.uk/statistics/logs/access_log | grep "POST / " | awk '{print $1}' | xargs -I{} iptables -A INPUT -s {} -j DROP

Bu iyi çalışır ve sorunun etkisini azaltır, ancak bu acımasızdır ve genellikle iptables / kernel problemleri nedeniyle 50-60k'ye ulaştığında ayarlanan iptables kuralını temizlemek zorundayız. Bu bir çözüm değil çünkü sorumluluğu olan kişi mesajı alır ve pes edene kadar bunu birkaç hafta sürdüremez.

İşgal altındaki Apache çalışanlarının sayısını asgaride tutmak için bu VirtualHost için KeepAlive'i kapattık, ancak bu bir çözüm değil.

Bu istekleri, yüzbinlerce uzak IP'nin ölçeğinde nasıl karartmak veya Apache üzerindeki etkiyi mutlak asgariye indirmek konusunda daha iyi fikirler var mı? Şu anda yapabileceğim en iyi şey, birkaç saatliğine IP engellemeyle birlikte bir 403 Yasak göndermek için yapılandırmak ...

Teşekkürler!


5
2017-10-30 12:38


Menşei


wordpress yüklü mü? - that guy from over there
Emlak acentesi botnet kiralayan rekabeti işaretlemediğinden emin misin? - Brian
Site sadece bir avuç html dosyası, sunucu tarafı betikleri ya da hiç bir şey kullanılamaz! Rekabetlerinden dolayı işe alınan botnet'i merak ettim ama aylarca sürdü ve neredeyse tamamen başarısız oldu. Siteyi / sunucuyu çevrimdışına almak istemeleri çok zor olmazdı ... - Richard Maynard


Cevaplar:


Bu makineye kök erişiminiz varsa, snort / suricata'yı sınırlı bir kural kümesiyle dağıtabilirsiniz. POST - isteklerini algılar ve engeller.

pro:

  • ağ düzeyinde çalışır
  • ips belirli bir süre için engellenebilir

con:

  • Kurulumu ve bakımı çok kolay değil, nasıl yapılacağını bilen biri tarafından yapılmalıdır.

daha kolay: nginx'i apache'nin önünden geçirin ve 403'ü oradan işleyin, apache'ye geçerli istekleri iletin

pro:

  • kolay kurulum
  • Apache'den daha fazla istekte bulunabilir
  • limit oranı ip düzeyinde kullanılabilir

con:

  • test edilmeli

2
2017-10-30 12:55