PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Riesen Problem: Syn-Flooding!



athlon
21.10.02, 15:28
Hallo!
Wir haben ein Problem mit unseren Webservern.
In Messages bekommen wir ziehmlich oft Possibly SYN Flooding on port 80 sending Cookie.
Vor den Webserver setzten wir einen load balancer ein.
Unsere Webserver sind auch (warscheinlich deswegen) ausgefallen aber nur am port 80..
Wie kann ich nun feststellen von welchem Rechner die Synchronisierungspakete geschickt wurden? Wie kann ich die Webserver dafür schützten.
Oder ist dsa vielleicht doch nur ein falscher Alarm? Wir haben sehr hohe last auf den servern (load von 200) und es laufen ca 350 apache prozesse.

Woher kommen die Attacken? Wie kann ich das nach verfolgen??

DAnke im Vorraus!

Mfg
Sascha

bernie
21.10.02, 15:50
Hi,

Load von 200 ??? Irre, sowas hab ich noch nie gesehen,.. ich glaub 12 oder so war das höchste.

Du kannst nicht viel tun, am besten du aktivierst SynCookies und lasst die Maschine in Ruhe. Vielleicht liegts an der Last, aber das glaub ich nicht. Du könntest dich mit tcpdump auf das Interface hängen und schauen von wo da die SYN-Pakete kommen.

Ciao, Bernie

netzmeister
21.10.02, 15:56
Hallo,

da stimmt was nicht.

Woher kommen denn die hohen Abfragen?

Eas steht denn im Apache Log?

Habt Ihr die Systeme auf die hohe Zahl der Webserver Prozesse hin optimiert?

Viele Grüße

Eicke

gEistiO
21.10.02, 16:33
wenn du eine firewall besitzt, die iptables installiert hat (von dem ich jetzt mal ausgehe ;)) könntest du die anzahl der verbindungsaufbauversuche "limitieren".

z.b so:


EXT=eth0
iptables -A INPUT -i $EXT p tcp --dport 80 -m state --state NEW -m limit --limit 3/sec -j DROP

werte für --limit sind: 1/{sec,min,hour,day}

athlon
21.10.02, 18:20
Hallo!
Nein da ist alles Okay! Wir Haben ca 1 Millionen Page hits pro Stunde das die Webserver dann einen so hohen Load haben ist normal, da auch auskunftsinformationen berechnet werden.

Ja, die Webserver sind natürlich optimiert!
In dem Apache log stehen keine besonderen Fehlermeldungen! Die hohen Abfragen kommen wie gesagt von unseren Kunden..

@gEistiO
Die Anzahlen der Max Verbindungen möchten wir aus diesem Grund nicht auf einen festen wert setzten, da sonst unsere Webserver nicht mehr erreicht werden können (wegen den max connections). Wir haben so viele Anfragen die sekunde da würden ja alle pakete verworfen werden..

gEistiO
21.10.02, 19:14
1 Millionen Page hits pro Stunde
naja... das kann ich mir das zwar nur sehr schwer vorstellen, aber ok. :)

du müsstest das so machen, dass von jeder bestimmten IP nur eine bestimmte anzahl an SYNs/sek ausgehen dürfen. alles was darüber ist, wird gedropt.
nur hab ich jetzt absolut keine ahnung wie man das macht... ich werde mal ein paar howtos über iptables lesen... :ugly:

netzmeister
21.10.02, 19:36
Hallo athlon,

... also über 700 Mio Pageviews im Monat. Das kann ja wohl nicht sein :o
Niemand hat das. Du meinst bestimmt Hits. Das sind aber noch lange keine
Pageviews. Nur so am Rande.

Dennoch stimmt was mit den Systemen nicht. Die hohe Load solltet Ihr
reduzieren. Da gibt es mehrere Möglichkeiten. Ich betreue Server von Firmen,
die auch Fernsehwerbung machen.

Lasst Euch am besten mal von Fachleuten beraten.

Mit iptables oder ähnlichem geht das nicht.

Viele Grüße

Eicke

athlon
21.10.02, 19:46
@netzmeister ich habe auch page hits geschrieben! :)
Nein mit den Systemen ist alles okay! Dort müssen reiseauskünfte berechnet werden das ist normal das die so einen hohen load haben bei dem grossen ansturm! die systeme laufen schon lange so! :) aber mein problem hat nix mit dem hohen load zu tun sondern mit syn flooding :)

netzmeister
21.10.02, 19:48
Hallo athlon,

auf was laufen denn die Systeme?

Viele Grüße

Eicke

athlon
21.10.02, 19:56
red hat 7.3

netzmeister
21.10.02, 20:10
Hallole,

ist da ein Proxy vorgeschaltet?

Viele Grüße

Eicke

athlon
21.10.02, 20:14
ein load balancer ist davor geschaltet aber kein proxy.. ein router.

netzmeister
21.10.02, 20:21
... wie schon weiter oben geschrieben.

Also kommen die Anfragen erst mal beim LB an.

Dieser leitet "Anfrage" dann an die Server weiter. Die Server sehen immer nur die Adresse
des Loadbalancers, und meinen dann es wäre Flooding. Da kannst Du nichts machen.
Wahrscheinlich laufen auf den Servern cgi-Scripte. Daher auch die hohe Load.

Mit zu interpretierenden Scripten a la PHP oder Perl ist irgendwann Sense.

Ich empfehle da einen eigenen Server programmieren, der ist ist wahrscheinlich 1000 Mal
schneller und braucht auch noch viel weniger Rechenleistung.

Viele Grüße

Eicke

bernie
21.10.02, 20:32
Hi,

aktiviert sich die Synflooding Protection nicht unabhängig von der Source-IP? Da gehts ja nur darum, dass die Connection Table nicht voll wird und so keine Connections mehr angenommen werden.

@athlon
sind syncookies eingeschalten?

Ciao, Bernie

athlon
21.10.02, 21:00
bernie
ja, synflooding cookies sind aktiviert! das steht ja auch in dem messages syn floodig detected sending cookie.....
@netzmeister nein es sind auch es ist ein eigenes programmiertes programm das reiseanfragen brechnet von a nach b mit allem erdenklichen schnick schnack.

wie meinst du das einen eigenen server programmieren? apache 3 oder wie? :)

netzmeister
21.10.02, 21:34
Hallo athlon,

was passiert, wenn Du die Flood Protection deaktivierst?

Ein Apache ist viel zu mächtig und für so was!

Ein eigener kleiner Webserver, der generisch auf die Datenbank zugreift
und alle Funktionen direkt zur Verfügung stellt.

Das wäre genau das richtige.

Viele Grüße

Eicke

athlon
21.10.02, 21:50
hi!
Mh ich glaube das wäre viel zu komplex um so etwas zu realisieren! ich kann ja mal mit meinen kollegen reden ob wir testweise mal den cookie mechanismus deaktivieren. aber dann muss man doch den kernel neu kompilieren oder? dachte das wäre ein feature des kernels.
dann wären die fehlermeldungen sicherlich weg, aber dann sind wir ja ungeschützt gegen syn flooding attacken!!..

netzmeister
21.10.02, 21:57
Hallo,

... ;)

die Attacken fängst Du direkt, mit einem Intrusion Detection System ab (IDS), oder
einer aktiven Firewall ab.

Viel Erfolg und nicht vergessen: Einen Fachmann/-Frau konsultieren, der das genau
unter die Lupe nimmt und auf Herz und Nieren prüft. Möglicherweise ist der Fehler
im Detail.

Von hier kann ich nur Vermutungen schildern.

Viele Grüße

Eicke

athlon
22.10.02, 08:04
ok thx für die Hilfe!.

bernie
22.10.02, 08:54
Hi,

Syncoockies kannst du in /proc deaktivieren, ich weiss jetzt aber nicht genau wies heisst. Vermutlich zu finden in /proc/sys/net/ipv4

Das ISD ist eine gute Idee, aber die Maschine muss schon relaiv mächtig sein, wenn du so viele Anfragen hast.

Ciao, Bernie

netzmeister
22.10.02, 09:11
Hallo,

Einfach in die Datei "tcp_syncookies" eine 1 oder eine 0 schreiben.
Allerdings ist die Prozedur nach dem nächsten Neustart zu wiederholen.

Viele Grüße

Eicke

athlon
22.10.02, 16:51
HI!
Mh meine Kollegen wollen das jetzt erstmal alles so lassen :)
Die Webserver ziehen vor Weihnachten eh alle nach münchen und da ist dann auch eine richtige firewall davor..


Trotzdem danke für Eure Hilfe!!

MfG
aThLoN

Jasper
22.10.02, 18:06
Original geschrieben von netzmeister
Hallo,

Einfach in die Datei "tcp_syncookies" eine 1 oder eine 0 schreiben.
Allerdings ist die Prozedur nach dem nächsten Neustart zu wiederholen.


besser in /etc/sysctl.conf:

net.ipv4.tcp_syncookies = 1

eintragen.

mein senf zur sache:
ein load von 200 ist nicht gerade sinnvoll. wenn 200 prozesse auf cpu/io warten läuft das system nicht rund.

zum syn-problem:

syncookies werden erst versandt, wenn das syn-backlog des sockets voll ist. default bei 2.4 ist glaub ich 1024. man könnte das backlog auf 4096 hochschrauben und an syn_retries, syn_ackretries und den keep_alive sowie fin_timeouts rumschrauben, aber bei einem load von 200 ist das nicht sinnvoll. zuerst sollten die ursache für diesen hohen load herausgefunden werden (cpu oder io) und abhilfe geschafft werden. ich vermute, dann erledigt sich das problem von selbst.

-j

netzmeister
22.10.02, 18:48
Hallo Jasper,

das mit dem hohen Load hatte ich ja weiter oben schon geschrieben.
Darin ist das Grundübel, der Rest erledigt sich dann von selber.

Viele Grüße

Eicke