Automatisch blokkeren DOS IP

Pagina: 1
Acties:

  • DieterVDW
  • Registratie: Juli 2002
  • Laatst online: 12-02-2017
Hallo,

Ik draai een webserver met daarop een niet al te lichte PHP applicatie. Nu had ik onlangs de situatie waar 1 IP adres +- 200 requests per minuut deed op mijn server. Omdat de load nogal de hoogte in ging werd ik hiervoor gewaarschuwd en kon ik het schuldige IP adres vinden. Dit heb ik dan eenvoudig manueel geblocked dmv. iptables.

Nu vroeg ik mij af over een manier was om dit automatisch te gaan doen?

Voor apache heb ik al mod_evasive gevonden, maar dit werkt precies niet echt goed ...

Maar liefst zou ik een oplossing vinden die op netwerklaag / iptables laag werkt.
Eenvoudig:
code:
1
2
Indien IP meer dan MAX connecties per INTERVAL
 -> Block IP voor TIJDSSPANNE


Merk op dat het er niet zozeer toe doet hoeveel concurrente connecties er zijn op dat IP.
Als het IP 100 niet-concurrente connecties maakt in een korte tijdsspanne dan wil ik dit ook blocken.
(Zijn er legitieme toepassingen waarbij er erg veel connecties in korte tijd gemaakt worden?)

Ik heb een flauw vermoeden dat er daar al diverse oplossingen voor bestaan, maar ik vraag mij af of er een soort standaard oplossing is, of een pakket wat jullie verkiezen?
Als ik google op iets dergelijks dan kom ik terecht bij firewall's zoals AFS en CFS, maar ik weet niet of dit precies kan wat ik wil, en of dit geen overkill is voor wat ik wil doen.

Ik heb ook de volgende iptables regels ontdekt die ongeveer doen wat ik wil:
code:
1
2
iptables -I INPUT -p tcp -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 20 -j DROP


Dit zou de connectie moeten droppen als een IP meer dan 20 connecties per min naar mijn machine maakt.
Ik snap wel niet 100% hoe dit juist werkt en of dit wel precies doet wat ik wil. Iptables is ook niet zo gebruiksvriendelijk, misschien is er wel een betere tool die dit kan?

Ik zou graag weten of er mensen zijn die al zoiets dergelijks doen, en welke tool jullie daar voor gebruiken.

Verwijderd

Je zou eens kunnen kijken naar fail2ban.

  • BarthezZ
  • Registratie: Juli 2004
  • Niet online

BarthezZ

anti voetbal en slechte djs!

fail2ban is voor het IP daadwerkelijk blokkeren (geen requests meer mogelijk)
De iptables regels van jou zijn voornamelijk voor throttelen. Oftewel connectie rate limiteren van nieuwe connecties. Ik gebruik dezelfde techniek (nagenoeg dezelfde regels) op een aantal servers die ook regelmatig onder "aanval"liggen. Ik heb dit staan op 5 / 15s. Vanwege de apache keepalive (meerdere requests over 1 openstaande verbinding afvuren) heeft dit geen nadelige invloed op bezoekers van de website. Maar als mensen kwaad proberen te doen dan hebben ze een shitload aan servers nodig om de load hoog genoeg te laten stijgen om hinderlijk te zijn. Ik heb daarnaast een scriptje lopen wat de IP's die regelmatig tegen dat limiet aanlopen analyseert en indien nodig wel in een blocklist gooit.

  • MrNGm
  • Registratie: Augustus 2004
  • Laatst online: 05-11-2025
Als je een kernel hebt die ipt_recent ondersteund kan je iets als dit gebruiken.

Edit.. zoiets staat dus al in je TS :X overheen gelezen |:(

[ Voor 15% gewijzigd door MrNGm op 28-03-2009 14:40 ]


  • DieterVDW
  • Registratie: Juli 2002
  • Laatst online: 12-02-2017
Fail2ban en BFD zijn zo'n beetje hetzelfde als ik het goed begrijp.

Ik vind de iptables oplossing beter, aangezien bij fail2ban en BFD het kwaad al geschied is.
In mijn geval was dat het aanmaken van veel te veel httpd workers waardoor de machine plat ging
(ook mijn fout natuurlijk, te hoge MaxClients instelling :( ).

Zijn er firewall pakketten waarin zoiets al geïntegreerd is?