Page 1 of 1
SYN-Flooding
Posted: 2003-12-19 11:36
by captaincrunch
Ein netter Artikel bei Heise-Security:
http://www.heise.de/security/artikel/43066/0
Es geht dabei um Maßnahmen gegen SYN-Flooding, von dem auch Die Rooties betroffen sein könnten. Die aufgezeigten Mittel gegen solche Angriffe sind vermutlich hilfreich für einige, die einem solchen Angriff ausgesetzt sind, 100%igen Schutz erreicht man dadurch aber auch nicht.
Re: SYN-Flooding
Posted: 2003-12-19 12:07
by floschi
schon ausprobiert?
Re: SYN-Flooding
Posted: 2003-12-19 12:20
by captaincrunch
Syncookies setze ich ohnehin schon recht lange ein, die anderen Maßnahmen (noch) nicht, ich wollte das ganze aber im Laufe der nächsten Woche mal austesten.
Re: SYN-Flooding
Posted: 2003-12-19 13:23
by dodolin
Syncookies werden u.a. in de.comp.security.firewall zwiespältig gesehen, weil sie wohl nicht wirklich RFC-konform sind. Deshalb sollte man das vielleicht doch nur "unter Beschuss" aktivieren und nicht ständig. Was da jedoch genau verletzt wird und welche Auswirkungen das hat oder haben kann... so genau habe ich mich dann doch noch nicht damit beschäftigt. IMHO sollte man sich darüber aber Gedanken machen, bevor man Syncookies standardmäßig aktiviert. Kommt halt immer drauf an, wie standardkonform man sein möchte und wie schwer die Verstöße jetzt sind...
Re: SYN-Flooding
Posted: 2003-12-19 13:34
by chris76
für manche hier wäre es aber auch interessant wie man sie wieder deaktiviert und wie man es so macht sie nur bei bedarf zu aktivieren.
Hast du da Ideen dodolin?
Ciao Christian
Re: SYN-Flooding
Posted: 2003-12-19 14:11
by nyxus
Re: SYN-Flooding
Posted: 2003-12-19 15:18
by oxygen
chris76 wrote:für manche hier wäre es aber auch interessant wie man sie wieder deaktiviert und wie man es so macht sie nur bei bedarf zu aktivieren.
Hast du da Ideen dodolin?
Ciao Christian
Das ist ja wohl nicht das Problem:
Aktivieren:
Code: Select all
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
Deaktivieren:
Code: Select all
echo 0 > /proc/sys/net/ipv4/tcp_syncookies
Nach bedarf akivieren ist da schon schwieriger... man könnte z.B. per Cron die Anzahl der netstat Zeilen mit SYN_RECV zählen und bei über 25 tcp_syncookies aktivieren und ansonsten deaktivieren. So im Stile:
Code: Select all
if [ 'netstat -nt | grep SYN_RECV | wc -l' >25 ]; then
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
else
echo 0 > /proc/sys/net/ipv4/tcp_syncookies
fi
Das funktioniert wohl so nicht, es weiß nicht zufällig jemand wie man in einen Shellscript den Wert eines Integers vergleicht? Ansonsten halt Perl verwenden ;)
Re: SYN-Flooding
Posted: 2003-12-19 16:15
by Joe User
øxygen wrote:Das funktioniert wohl so nicht, es weiß nicht zufällig jemand wie man in einen Shellscript den Wert eines Integers vergleicht?
man bash ;)
Re: SYN-Flooding
Posted: 2003-12-19 17:09
by oxygen
Danke aber auf die Idee wäre ich ohne dich nicht gekommen :evil:
ich weiß jetzt zumindest das der Operator -gt ist, aber ich bin noch nicht dahintergekommen wie ich der Ausgabe von 'netstat -nt | grep ESTABLISHED | wc -l' als Typ Integer zuweisen kann... naja bleib ich halt bei tcsh. Müsst ihr euch selbst mit vergnügen ;)
Re: SYN-Flooding
Posted: 2003-12-19 17:33
by alexander newald
dodolin wrote:Syncookies werden u.a. in de.comp.security.firewall zwiespältig gesehen, weil sie wohl nicht wirklich RFC-konform sind. Deshalb sollte man das vielleicht doch nur "unter Beschuss" aktivieren und nicht ständig. Was da jedoch genau verletzt wird und welche Auswirkungen das hat oder haben kann... so genau habe ich mich dann doch noch nicht damit beschäftigt. IMHO sollte man sich darüber aber Gedanken machen, bevor man Syncookies standardmäßig aktiviert. Kommt halt immer drauf an, wie standardkonform man sein möchte und wie schwer die Verstöße jetzt sind...
Man kann auch vorher SynCookies aktivieren, da diese Funktion nur zum tragen kommt, wenn der BackLog Puffer voll ist.
Re: SYN-Flooding
Posted: 2003-12-19 18:14
by dodolin
aber ich bin noch nicht dahintergekommen wie ich der Ausgabe von 'netstat -nt | grep ESTABLISHED | wc -l' als Typ Integer zuweisen kann..
Bash, genau wie auch Perl, kennt und braucht keine typisierten Variablen. Die sind so intelligent, dass sie das selbst erkennen, was es sein soll. ;)
Man kann auch vorher SynCookies aktivieren, da diese Funktion nur zum tragen kommt, wenn der BackLog Puffer voll ist.
*Nachguck*
Ok, haste auch wieder Recht. Hier nochmal die Doku aus kernel-doc:
Code: Select all
tcp_syncookies - BOOLEAN
Only valid when the kernel was compiled with CONFIG_SYNCOOKIES
Send out syncookies when the syn backlog queue of a socket
overflows. This is to prevent against the common 'syn flood attack'
Default: FALSE
Note, that syncookies is fallback facility.
It MUST NOT be used to help highly loaded servers to stand
against legal connection rate. If you see synflood warnings
in your logs, but investigation shows that they occur
because of overload with legal connections, you should tune
another parameters until this warning disappear.
See: tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow.
syncookies seriously violate TCP protocol, do not allow
to use TCP extensions, can result in serious degradation
of some services (f.e. SMTP relaying), visible not by you,
but your clients and relays, contacting you. While you see
synflood warnings in logs not being really flooded, your server
is seriously misconfigured.
Ergo: Andere Parameter sind erstmal besser geeignet, um sich gegen SYN Flood Attacken zu schützen und nicht gleich gegen die RFCs zu verstoßen.
Re: SYN-Flooding
Posted: 2003-12-19 20:46
by oxygen
dodolin wrote:aber ich bin noch nicht dahintergekommen wie ich der Ausgabe von 'netstat -nt | grep ESTABLISHED | wc -l' als Typ Integer zuweisen kann..
Bash, genau wie auch Perl, kennt und braucht keine typisierten Variablen. Die sind so intelligent, dass sie das selbst erkennen, was es sein soll. ;)
sieht so aus ;) der Fehler lag in der Verwechslung von ` mit ' ... folgendes funktioniert, wobei man es ja dann wohl eh nicht braucht:
Code: Select all
if [ `netstat -nt | grep ESTABLISHED | wc -l` -gt 20 ]; then
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
else
echo 0 > /proc/sys/net/ipv4/tcp_syncookies
fi