Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

DoS, hoe voorkomen?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo Tweakers,

Ik heb een server en heb sinds gister last van DoS'ers (dus geen DDoS). De aanvallers hebben een programma waar ze een url invullen van een site die op mijn server staat, waarna dat programma tig requests gaat doen. Al die requests komen dus gewoon van één IP, maar de ellende is dat ze heel veel IP's tot hun beschikking hebben (uit alle landen van de wereld zo'n beetje), maar de aanvallen worden telkens na elkaar uitgevoerd, dus vanaf 1 IP tegelijk.

De server draait op Debian en als firewall heb ik csf + lfd.
Volgens mijn hoster kan hij er weinig tegen doen, maar ik heb het idee dat ik niet de enige op de wereld ben, en dat er vast wel iets aan te doen is.

Ik heb weinig server-ervaring, maar om nou maar genoegen te nemen met deze situatie en een kwartier downtime per dag te accepteren dat gaat me wat ver...

Het zijn allemaal POST of GET requests naar dezelfde pagina, en echt tig per seconde ofzo, zodat Apache het niet meer aan kan (alle threads zijn dan met dat ene IP bezig) en de server onbereikbaar wordt.

Een oplossing zou zijn om een maximum van x requests per y seconden toe te staan, maar dan zit je er weer mee dat als er een site met veel afbeeldingen wordt geladen, dat die bezoeker ook veel requests doet, maar die zijn dan wel legitiem.
Een limiet van maximaal x pagina's (dus geen requests) per y seconden zou dan beter zijn, want dan kun je het gewoon weer afkappen op 3 pagina's per seconde en dan moet het goed gaan. Maarja, voor apache is een pagina hetzelfde als een afbeelding lijkt me zo...
Nog een optie zou zijn om maximaal x requests per y seconden voor een bepaalde pagina in te stellen (dus je kunt maximaal 3x per seconde /index.php of /afbeeldingen/001.gif opvragen).

Zodra ik het IP van de aanvaller op de blacklist zet dan is het opgelost, maar ik kan niet nonstop de status lijst in de gaten houden en IP's direct bannen.

Iemand een idee?
(Alvast mijn excuses als dit in het verkeerde subforum staat.)

edit: oh, ik weet niet of het wel een DoS is, het zijn in ieder geval heel veel (geldige) POST of GET requests naar bijvoorbeeld site.com/index.php, daardoor worden de apache threads weggetrokken, de verbinding zit niet vol in ieder geval

(kick naar Beveiliging & Virussen?)

[ Voor 5% gewijzigd door Verwijderd op 11-04-2012 20:30 ]


  • xares
  • Registratie: Januari 2007
  • Laatst online: 06:25
Installeren anders even mod_dosevasive voor Apache.

http://thinkingrails.blog...dosevasive-in-apache.html

  • DGTL_Magician
  • Registratie: Februari 2001
  • Laatst online: 27-10 13:43

DGTL_Magician

Kijkt regelmatig vooruit

Verwijderd schreef op woensdag 11 april 2012 @ 20:21:
Hallo Tweakers,

Ik heb een server en heb sinds gister last van DoS'ers (dus geen DDoS). De aanvallers hebben een programma waar ze een url invullen van een site die op mijn server staat, waarna dat programma tig requests gaat doen. Al die requests komen dus gewoon van één IP, maar de ellende is dat ze heel veel IP's tot hun beschikking hebben (uit alle landen van de wereld zo'n beetje), maar de aanvallen worden telkens na elkaar uitgevoerd, dus vanaf 1 IP tegelijk.

De server draait op Debian en als firewall heb ik csf + lfd.
Volgens mijn hoster kan hij er weinig tegen doen, maar ik heb het idee dat ik niet de enige op de wereld ben, en dat er vast wel iets aan te doen is.

Ik heb weinig server-ervaring, maar om nou maar genoegen te nemen met deze situatie en een kwartier downtime per dag te accepteren dat gaat me wat ver...

Het zijn allemaal POST of GET requests naar dezelfde pagina, en echt tig per seconde ofzo, zodat Apache het niet meer aan kan (alle threads zijn dan met dat ene IP bezig) en de server onbereikbaar wordt.

Een oplossing zou zijn om een maximum van x requests per y seconden toe te staan, maar dan zit je er weer mee dat als er een site met veel afbeeldingen wordt geladen, dat die bezoeker ook veel requests doet, maar die zijn dan wel legitiem.
Een limiet van maximaal x pagina's (dus geen requests) per y seconden zou dan beter zijn, want dan kun je het gewoon weer afkappen op 3 pagina's per seconde en dan moet het goed gaan. Maarja, voor apache is een pagina hetzelfde als een afbeelding lijkt me zo...
Nog een optie zou zijn om maximaal x requests per y seconden voor een bepaalde pagina in te stellen (dus je kunt maximaal 3x per seconde /index.php of /afbeeldingen/001.gif opvragen).

Zodra ik het IP van de aanvaller op de blacklist zet dan is het opgelost, maar ik kan niet nonstop de status lijst in de gaten houden en IP's direct bannen.

Iemand een idee?
(Alvast mijn excuses als dit in het verkeerde subforum staat.)

edit: oh, ik weet niet of het wel een DoS is, het zijn in ieder geval heel veel (geldige) POST of GET requests naar bijvoorbeeld site.com/index.php, daardoor worden de apache threads weggetrokken, de verbinding zit niet vol in ieder geval

(kick naar Beveiliging & Virussen?)
Een simpele oplossing is het aantal connecties limiteren op je server, nadeel is ook dat je hiermee een hoog aantal false positives hebt, je limieteerd daar je totaal aantal connecties, niet alleen dat van de aanvallers.

Je zou inderdaad ook mod_dosevasive of een NGINX frontend met Roboo (https://github.com/yuri-gushin/Roboo) op kunnen zetten.

Blog | aaZoo - (Wireless) Networking, Security, DDoS Mitigatie, Virtualisatie en Storage


Verwijderd

Topicstarter
Ja het aantal connecties is al gelimiteerd, maar daardoor loopt apache juist vol, want stel er zijn max 50 connecties beschikbaar, dan komt niemand er meer op als je die 50 connecties bezet houdt door continu nieuwe requests te doen.

Die Roboo vind ik wel weer riskant omdat die meteen AL het automatische verkeer (en dus ook bots die gewoon toegang moeten hebben) blokkeert. mod_dosevasive ga ik bekijken, bedankt!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Wat voor url is het die ze invullen? Als daar iets van server-side scripting in zit kan je misschien enkel die pagina maar 1x per ip toelaten (en de rest gewoon gelijk bouncen)

  • DGTL_Magician
  • Registratie: Februari 2001
  • Laatst online: 27-10 13:43

DGTL_Magician

Kijkt regelmatig vooruit

Verwijderd schreef op woensdag 11 april 2012 @ 21:23:
Ja het aantal connecties is al gelimiteerd, maar daardoor loopt apache juist vol, want stel er zijn max 50 connecties beschikbaar, dan komt niemand er meer op als je die 50 connecties bezet houdt door continu nieuwe requests te doen.

Die Roboo vind ik wel weer riskant omdat die meteen AL het automatische verkeer (en dus ook bots die gewoon toegang moeten hebben) blokkeert. mod_dosevasive ga ik bekijken, bedankt!
Die bots kun je whitelisten:

Roboo_whitelist
- "UA('Googlebot'),IP(127.0.0.0/8),URI('^/ajax/')"
- UA('pcre_string') and URI('pcre_string') syntax whitelists a user-agent or URI string using PCRE
- IP(0.0.0.0/0) syntax whitelists a CIDR network

Blog | aaZoo - (Wireless) Networking, Security, DDoS Mitigatie, Virtualisatie en Storage


  • cork87
  • Registratie: Maart 2010
  • Laatst online: 29-09-2022
Als het allemaal naar dezelfde pagina gaat dan zou ik beginnen met een goede caching, zodat je 0 load krijgt daardoor.

  • ReenL
  • Registratie: Augustus 2010
  • Laatst online: 14-09-2022
Is het niet het script erachter wat traag reageert? Anders kan je met wat kleine aanpassingen zorgen dat dubbele requests instant beantwoord worden met een lege pagina door bijvoorbeeld in memcache (niet op het filesystem dat is misschien te traag) het ip weg te schrijven. Als het ip er al is dan stop je met het uitvoeren van de pagina.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Wat bij ons vaak helpt is als we nog wat verder kijken naar de aanvallen. Vaak wordt er dezelfde user agent gebruikt, die ook nog eens met grote kans niet door andere hosts wordt gebruikt.
Dan kan je eerst op de user agent testen in je code en daarna pas allerlei zwaardere of gebruikersonvriendelijke tests activeren (zoals restricties op het aantal requests per ip).

Als je een sessie systeem hebt zal je ook zien dat ze doorgaans geen sessie-cookie meesturen.

Ik ben wel met je eens dat het de voorkeur heeft om dit soort dingen te blacklisten, niet een whitelist op te moeten stellen. Anders heb je heel gauw legitieme gebruikers er tussen zitten.

Check ook of het toevallig om tor gaat, daar bestaan lijsten van exit-nodes van. Dus als het inderdaad om tor-nodes gaat en je die als geheel wilt beperken of blokkeren, is dat wat eenvoudiger te realiseren.

  • AndriesLouw
  • Registratie: December 2005
  • Nu online
Je aanval klinkt als een slowloris aanval, simpel op te lossen door libapache2-mod-antiloris te installeren.

Specificaties | AndriesLouw.nl


  • bigfoot1942
  • Registratie: Juni 2003
  • Niet online
Goede hardware firewalls kunnen ook vaak een stukje IPS / IDS (mogelijk aparte licentie).
DoS signatures kunnen hierin staan, en kunnen zelfs automatisch bijgewerkt worden (net als virusdefinities).

Uiteraard is het beter geen kwetsbaarheden te hebben (lees apache gepatcht te houden e.d.), maar het is relatief makkelijk 'bij te blijven' als je een IPS abbo hebt...

Mocht je een goede hardware firewall hebben dan zal IPS een goede aanvulling zijn op je bescherming...
Pagina: 1