Discussion:
Iptables vraagje
(te oud om op te antwoorden)
Paul van der Vlis
2024-03-01 13:10:08 UTC
Permalink
Hoi,

Vanmorgen was een van mijn webservers overbelast. Toen ik een IP-nummer
blokkeerde was alles weer in orde. Maar het kan zo weer komen...

Nu zat ik te bedenken dat het wellicht een idee is om "mensen" die
teveel vragen automatisch te blokkeren. Ik heb zoiets gemaakt:

# blokkeer teveel verkeer
iptables -A INPUT -m state --state NEW -p tcp --dport 443 \
-m recent --update --seconds 60 --hitcount 20 --name teller -j DROP

# accepteer het bij minder, maar tel het wel
iptables -A INPUT -m state --state NEW -p tcp --dport 443 \
-m recent --set --name teller -j ACCEPT

Nog maar weinig getest, toen had ik de hitcount op 2 gezet.

Wat vinden jullie ervan? Wat zou een goed getal zijn i.p.v. die
hitcount 20, en wat voor sites zouden problemen kunnen geven?

Of weten jullie nog iets beters?

Groet,
Paul
--
Paul van der Vlis Linux systeembeheer Groningen
https://vandervlis.nl
Coen
2024-03-01 22:18:57 UTC
Permalink
Wat vinden jullie ervan?  Wat zou een goed getal zijn i.p.v. die
hitcount 20, en wat voor sites zouden problemen kunnen geven?
Of weten jullie nog iets beters?
Je moet over een grotere periode meten.
Als je even over een site aan het browsen ben kan het aardig hard gaan
in korte tijd. Meerdere connecties per pagina en als je meerdere
pagina's opvraagt ben je er zo overheen.

Wat een goede balans is, is heel lastig.
Van het ophalen van .gif of .js bestanden kan je heel veel hebben
voordat je problemen krijgt. Een PHP script dat een seconde duurt zal
met weinig verzoeken al snel tot problemen leiden.

Wat je hier met iptables gedaan hebt kan je ook met fail2ban doen. Daar
kan je wat geavanceerdere dingen mee maken op basis van de (webserver-)logs.
Paul van der Vlis
2024-03-02 16:54:59 UTC
Permalink
Post by Coen
Wat vinden jullie ervan?  Wat zou een goed getal zijn i.p.v. die
hitcount 20, en wat voor sites zouden problemen kunnen geven?
Of weten jullie nog iets beters?
Je moet over een grotere periode meten.
Als je even over een site aan het browsen ben kan het aardig hard gaan
in korte tijd. Meerdere connecties per pagina en als je meerdere
pagina's opvraagt ben je er zo overheen.
Als je een pagina met veel foto's opent, neem ik aan dat iedere foto een
hit is. Dat kan dan inderdaad veel hits geven.

Meerdere connecties per pagina, bedoel je dan foto's, css, javascript
e.d.? Of nog iets anders?
Post by Coen
Wat een goede balans is, is heel lastig.
Van het ophalen van .gif of .js bestanden kan je heel veel hebben
voordat je problemen krijgt. Een PHP script dat een seconde duurt zal
met weinig verzoeken al snel tot problemen leiden.
Hmm, je hebt gelijk denk ik.
Post by Coen
Wat je hier met iptables gedaan hebt kan je ook met fail2ban doen. Daar
kan je wat geavanceerdere dingen mee maken op basis van de
(webserver-)logs.
Ik gebruik fail2ban voor wat standaardzaken. Maar om daarin zelf wat
speciaals te maken vind ik best lastig. Mocht je een jail kunnen
aanraden, dan hoor ik dat graag.

Bij mij zijn de apache logs per user, dat maakt het doorkijken wellicht
wat lastig voor iets als fail2ban.

Groet,
Paul
--
Paul van der Vlis Linux systeembeheer Groningen
https://vandervlis.nl
Coen
2024-03-02 20:38:39 UTC
Permalink
Post by Paul van der Vlis
Meerdere connecties per pagina, bedoel je dan foto's, css, javascript
e.d.?  Of nog iets anders?
Correct.
HTTP1.1 met KeepAlive en HTTP2 kunnen wel meerdere objecten fetchen per
connectie. Dus helemaal zwart/wit is het niet.
Post by Paul van der Vlis
Ik gebruik fail2ban voor wat standaardzaken. Maar om daarin zelf wat
speciaals te maken vind ik best lastig. Mocht je een jail kunnen
aanraden, dan hoor ik dat graag.
Bij mij zijn de apache logs per user, dat maakt het doorkijken wellicht
wat lastig voor iets als fail2ban.
Ik heb een tijd terug alleen wat specifieks geknutseld voor een lopende
aanval. Iets generieks heb ik niet liggen.
Richard Lucassen
2024-03-02 23:07:01 UTC
Permalink
On Fri, 1 Mar 2024 14:10:08 +0100
Post by Paul van der Vlis
# blokkeer teveel verkeer
iptables -A INPUT -m state --state NEW -p tcp --dport 443 \
-m recent --update --seconds 60 --hitcount 20 --name teller -j DROP
# accepteer het bij minder, maar tel het wel
iptables -A INPUT -m state --state NEW -p tcp --dport 443 \
-m recent --set --name teller -j ACCEPT
Nog maar weinig getest, toen had ik de hitcount op 2 gezet.
Wat vinden jullie ervan? Wat zou een goed getal zijn i.p.v. die
hitcount 20, en wat voor sites zouden problemen kunnen geven?
Of weten jullie nog iets beters?
Je gebruikt de "recent" module, maar kijk ook eens naar de "limit"
module en vooral naar de limit-burst optie. Daarmee kun je een ip
behoorlijk veel verbindingen geven maar als ie daarmee doorgaat
krijgt-ie de opgegeven limit voor z'n kiezen.

HTH,

R.
--
Richard Lucassen <***@lucassen.org>
Loading...