zu viele TCP-Verbindungen / was tun?

Flo7

Registered User
Hallo!

Ich habe folgendes Problem (und leider weiß der Server4You-Support auch keinen Rat), vielleicht kann mir jemand helfen!?
Mein vServer stützt andauernd ab und zwar offenbar aufgrund zu viele TCP-Verbindungen.

/proc/user_beancounters zeigt teilweise 6000 Überschreitungen des zulässigen Limits von 130 TCP-Verbindungen (vServer basic, RH9).

Da ich keine Prozesse außer den Standard-Sachen (httpd,mysql,...) laufen habe, ist eine Überschreitung durch irgendwelche installierte Software ausgeschlossen.

Meine Vermutung: div. Suchmaschinen-Bots bauen diese Verbindungen auf, oder aber jemand versucht (gezielt oder wahllos) meinen Server per DoS-Attacken lahm zu legen. (tippe aber auf ersteres)

Geschichte dazu am Rande: kürzlich hatte der mirago-Bot mit seinen Zugriffen auf meinem Server 1,3 GB(!) an error_logs erzeugt und damit die Quota gesprengt ;-(

Frage nun, was kann ich tun? Im Augenblick ist mein Server jeden 2. Tag überlastet und nur per reboot aus dem Tiefschlaf zu wecken.

Der S4Y-Support hatte mir angeraten, evtl. per iptables die TCP-Verbindungen zu limitieren, konnte mir aber auch nichts spezifischeres sagen, als es mal mit der Option -m limit --limit 6/m zu versuchen.

Ich habe nun die Zeile
Code:
iptables -A INPUT -p tcp -m limit --limit 6/m -j ACCEPT
daraus gemacht und zusätzlich die IPs der aggressiven Bots mit nem DROP versehen. Allerdings hatte ich trotzdem schon wieder einen Absturz und auch die Zahl von 6/Minute scheint mir etwas zu wenig.

Weiss jemand Rat? Hat(te) jemand ähnliche Probleme?

Flo :confused:
 
Hallo!
Als erstes mal untersuchen, was das für Zugriffe sind. Handelt es sich tatsächlich um HTTP Anfragen oder ist es etwas ganz anderes? Ist dein System release technisch auf einem aktuellen Stand? Setzt du eventuell 'problematische' Software (phpBB) ein?

mfG
Thorsten
 
Blöderweise ist iptables ohne LOG-Modul kompiliert... Hast du ne Ahnung, wie ich es sonst rauskriege? Wenn ich im kritischen Moment zufällig eingeloggt wär, könnte ich natürlich mit netstats gucken, aber das wäre ja Zufall...

Das System ist RedHat9.
phpBB habe ich in der Tat im Einsatz, aber PHP ist auf dem neusten Stand (4.3.10) und die Dateien heissen ohnehin nicht viewforum.php und sind dadurch für den Wurm eigentlich nicht aufzufinden. Das würde ich also ausschließen...

Ja die Frage wäre also, wie kriege ich die Ursache heraus (bevor ich die Symptone bekämpfe). iptables neukompilieren wäre evtl. eine Lösung, aber da bin ich ehrlicherweise auch nicht so der Spezialist - bin ja schon froh, dass ich PHP erfolgreich neukompiliert habe ;-)
 
netstat kannste für sowas vergessen, probier mal ob iptraf bei Dir funktioniert. Bei meinem Debian vServer erkennt er das venet0-Interface leider nicht ;(

Mit iptraf könntest Du sehr bequem rausfinden, welche Verbindungen aufgebaut werden und wieviel Traffic darüber läuft. Ich denke damit solltest Du recht flott rausfinden können, wodurch der Traffic überhaupt entsteht (Voraussetzung leider wieder, dass Du in dem Moment eingeloggt bist.. oder Du lässt den iptraf mal nen Tag lang laufen und kramst dann in der History).

Bei http-Anfragen müsstest Du access- oder errorlogs von den Zugriffen haben.

Die Geschichte mit den pauschalen Limitierungen über iptables kann keine langfristige Lösung sein, damit könnte jeder x-beliebige den Server unerreichbar machen, indem er ein paar Verbindungen aufbaut. Bin mir auch nicht sicher ob eine gedroppte Verbindung nicht trotzdem kurzzeitig einen Deiner 130 Sockets verwendet. Damit wäre das komplett nutzlos.
 
Tscherni said:
netstat kannste für sowas vergessen, probier mal ob iptraf bei Dir funktioniert. Bei meinem Debian vServer erkennt er das venet0-Interface leider nicht ;(

Hm, bei mir wird irgendwie nur das lo-Interface überwacht :confused:
(Habe iptraf 2.7.0.6 installiert / RH9)

Tscherni said:
Die Geschichte mit den pauschalen Limitierungen über iptables kann keine langfristige Lösung sein, damit könnte jeder x-beliebige den Server unerreichbar machen, indem er ein paar Verbindungen aufbaut.

Da hast du leider recht...

Tscherni said:
Bin mir auch nicht sicher ob eine gedroppte Verbindung nicht trotzdem kurzzeitig einen Deiner 130 Sockets verwendet. Damit wäre das komplett nutzlos.

Die Vermutung hatte ich auch schon :(
 
Wenn dann iptraf -i venet0.

Bei einem vServer hast Du kein eth0-Interface.. Aber wie befürchtet erkennt iptraf das virtuelle Interface nicht.

Du könntest höchstens mal ausprobieren, dass Du über iptables nur die Ports 80 und 443 limitierst.. Dann ist immerhin der Server an sich z.B. zur Administration noch zu erreichen.

Code:
iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/m -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m limit --limit 20/m -j ACCEPT
 
Tscherni said:
Wenn dann iptraf -i venet0.

Bei einem vServer hast Du kein eth0-Interface.. Aber wie befürchtet erkennt iptraf das virtuelle Interface nicht.

Leider richtig vermutet: "Specified interface not supported"

Hat jemand iptraf auf seinem vServer laufen?


Gruß, Flo
 
Back
Top