PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : prozess bei xx% cpu load killen



noble
13.08.06, 23:09
hallo

bin admin eines dedicated server und darf immer wieder zusehen wie es spamer schaffen den apache2 mittels der mod_security rules in dei knie zu zwingen.

leider kann ich die mod_security rules nicht einschränken ohne nebenbei gefahr zu laufen hier meinen server wieder für attacken anderer art zu öffnen.

somit wollt ich fragen ob es möglichkeiten gibt einen prozess mittesl eines daemon zu überwachen um in dann bei zB 90% CPU last zu killen und dann neue zu starten.

weil das problem ist wenn der apache2 die komplette cpu braucht ist es auch schwer sich per ssh einzuloggen um ihn dann endlich mal abzuschießen.

welche lösungen gibts hier?
cron job ist nicht möglich - weil die auslastung innherhalb von minuten oder sekunden von 0 auf 100% schießt wenn die spamer flut kommt.

derRichard
13.08.06, 23:24
hallo!

verwende bei mod_security nur regeln, die auch brauchst.
falls du die regeln von gotroot verwendest, verwirf alle.

du kannst dem sshd eine höhere priorität geben. (man renice)

//richard

noble
13.08.06, 23:30
ja die regeln werden automatisch von gotroot geholt udn upgedatet - da ich einfach zu wenig ahnung habe regular expressions und ähnliches zusammenzustellen die auch die "feinde" sauber draußen halten.

und seitdem wurde unser server eigentlich nicht mehr gehackt trotzd versuchen.

aber sshd könnt ich echt eine höheren nice werde geben gute idee - warum bin ich selber nicht draufgekommen.

aber möglichkeiten prozesse bei gewisser cpu load zu verabschieden muss es doch auch geben oder ?

weil es könnte auch für andere dinge brauchbar sein auf unserer server.

derRichard
13.08.06, 23:39
hallo!

und du schimpfst dich admin?!

die regeln von gotroot sind mehr als schlecht, weil es einfach nicht möglich ist regeln für alle zu bieten.
zb: bei den regeln von gotroot greifen alle regeln für phpmyadmin nur auf "/phpMyAdmin".
hast du phpmyadmin in "/phpMyAdmin" liegen?
schon wenns in "/phpmyadmin" liegt, greift die regel nicht mehr.

derzeit umfasst gotroot 21578 regeln. da fragst dich nocht, dass der apache lahm wird? wenn der pro request 21578 reguläre ausdrücke parsen muss...


ein prozess, der nicht 100% cpu last hat ist ein schlechter prozess. wenn er cpu-zeit braucht muss er sie verwenden...
//richard

noble
17.08.06, 10:54
hallo!

und du schimpfst dich admin?!

die regeln von gotroot sind mehr als schlecht, weil es einfach nicht möglich ist regeln für alle zu bieten.
zb: bei den regeln von gotroot greifen alle regeln für phpmyadmin nur auf "/phpMyAdmin".
hast du phpmyadmin in "/phpMyAdmin" liegen?
schon wenns in "/phpmyadmin" liegt, greift die regel nicht mehr.

derzeit umfasst gotroot 21578 regeln. da fragst dich nocht, dass der apache lahm wird? wenn der pro request 21578 reguläre ausdrücke parsen muss...


ein prozess, der nicht 100% cpu last hat ist ein schlechter prozess. wenn er cpu-zeit braucht muss er sie verwenden...
//richard

hier schimpft sich keiner admin - tut mir leid das ich im besitz eines dedicates servers bin um einfach was zu lernen und hier und da anstehe. außerdem sind wir zu dritt die hier jeder teilbereiche übrig haben.

egal - wir schützen mit mod_sec ja nur bestimmte vhosts - da hier blogs und CMS liegen.
phpmyadmin und ähnliches wird bei uns anders gehandhabt und ist für spamer und ähnliche idioten nicht erreichbar.

aja ich bevorzuge die CPU last der einzelnen prozesse niedrig zu halten um für andere dies brauchen bereitstellen zu können ;)

naja egal - unser server wird einfach mit DoS attacken zugespammed und der nette apache2 prozess wird mit swap löschen schreiben nicht fertig.
hier wird zB auf unsererm server meist ein blog hergenommen und zugespammed bis alles steht.

aber wenn die einzige lösung mod_sec per hand anzupassen ist - dann werd ich mir hier was anderes überlegen - weil mod_sec ist soweit sicher - viell. manchmal über sicher - aber ich vertrau den regeln soweit und bis jetzt is der server ungehackt mit mod_sec

danke trotzdem

Azathoth
17.08.06, 11:37
die gotroot regeln sind schon in ordnung für das was sie machen sollen und werden sicher nicht ersetzt.
die sind soweit zuverlässig... das ist auch nicht die frage hier!

wie kann man prozesse bezgl. ihrer speicherauslastung überwachen , ausser das per cron minütlich abzufragen?
es müsste eben ein daemon sein der das überwacht und dann gewisse aktionen setzen kann.

Tomek
17.08.06, 11:57
Schau dir mal die Datei /etc/security/limits.conf an.

Übrigens: Alle Regeln von gotroot.com zu übernehmen ist imho völliger Schwachfug. Bei jedem Request muss der Apache-Server tausende Regelsätze durchlaufen. Das kostet viel CPU-Leistung und bläht den Speicherverbrauch der Apache-Childs extrem auf.

zyrusthc
17.08.06, 12:03
die gotroot regeln sind schon in ordnung für das was sie machen sollen und werden sicher nicht ersetzt.
die sind soweit zuverlässig... das ist auch nicht die frage hier!

wie kann man prozesse bezgl. ihrer speicherauslastung überwachen , ausser das per cron minütlich abzufragen?
es müsste eben ein daemon sein der das überwacht und dann gewisse aktionen setzen kann.
Und dieser daemon könnte einfach ein Shellscript mit while Schleife usw. sein.

Jedoch ist die Gefahr bei solche Scripten gross das sie Prozesse abschiessen die nicht abgeschossen werden sollen , man denke mal nur daran der sshd wird gekillt weil er kurzzeitig 100% genommen hat.

Gruss Oli

Cerox
17.08.06, 12:03
Jap, ich will diese Regeln auch nie wieder haben^^ Mindestens fünf Sekunden hat jede Seite damit im LAN geladen.

Ich habe mir vielleicht 15 Zeilen eigene Regeln geschrieben, um gängige XSS- und SQL-Injection Attacken zu filtern.

Einziger Nachteil:
Wenn man häufig neue PHP-Scripte usw. einsetzen möchte, kommt es schnell zu False Positives - so ist es auch bei mir mit PHPMyAdmin gewesen.

Ich habe bei mir in den limits maximal 120 Prozesse eingestellt (reicht dicke hab meistens nur 70 Prozesse) - die Last liegt eigentlich immer unter 1. Wie hoch darf die Last maximal werden und ab wann muss ich mir Sorgen machen?

Tomek
17.08.06, 12:07
Wie hoch darf die Last maximal werden und ab wann muss ich mir Sorgen machen?
Theoretisch kann der Server auch mit einer Load von über 1000 laufen. Solange der Server einwandfrei funktioniert, braucht du dir keine Sorgen machen. Es hängt davon ab, wie leistungsfähig die eingesetzte Hardware ist und wie schnell die Dienste funktionieren sollen. Das lässt sich eben nicht pauschal sagen.

Cerox
17.08.06, 12:23
CPU: AMD Thunderbird 800 MHz
RAM: 2x 256 MB SD 133 MHz (wohl eher unwichtig)

Wie hoch dürfte sie da werden?

Also auf dem Server läuft immer SSHd, exim4, samba, apache, mysql und ein paar Scripte - dabei habe ich meistens eine Last von 0.0 oder sogar ganz 0 ^^

Speicher ist meistens so 80 MB belegt; der Rest cached/buffered.

marce
17.08.06, 21:34
Meinung 1: mod_securtiy ist die falsche Lösung - wenn man SQL-Incjection oder sonstige Probleme damit lösen muss, so hat man fehlerhafte SW am laufen.

Meinung 2: Load-Überwachung ist die falsche Lösung - richtig wäre m.M.n. response-Zeiten zu überwachen und erst, wenn diese mehrfach in direkter Folge über einer kritischen Marke sind, zu reagieren.

noble
17.08.06, 22:38
also die zweite lösung klingt verdammt gut - da könnt man vorher schon agieren bevor überhaupt der speicher überläuft oder ähnliches passiert.

hättest du dazu auch einen lösung parat ?

marce
17.08.06, 23:55
einfache shell-Scripte sind da recht gut geeignet - ich habe Lösungen, aber die funktionieren nur bei uns in der Firma - da speziell dafür entwickelt.

Aber Du kannst dir mal die Monitor-Scirpte von Nagios anschauen, die laufen ja auch ohne die Oberfläche und bieten viele Möglichkeiten für entsprechende Konfigurationen.

Cerox
18.08.06, 11:17
Meinung 1: mod_securtiy ist die falsche Lösung - wenn man SQL-Incjection oder sonstige Probleme damit lösen muss, so hat man fehlerhafte SW am laufen.

Natürlich ist die Lösung prinzipiell falsch, jedoch kann man wohl kaum eine absolute Fehlerfreiheit garantieren. mod-security ist nichts anderes als eine Firewall für den Webserver, falls doch mal was nicht abgesichert ist.

Hast du eine "normale" Firwall / Paketfilter aktiv? Wenn ja, wieso?
Das ist genauso eine falsche Lösung. Wer seine benötigten Dienste absichert, benötigt genauso keine Firewall.

marce
18.08.06, 11:29
schon klar.

Wir haben hier bei uns auch mal nachgeschaut, ob wir das für uns verwenden können - einfach nur, ob noch ein bisschen sicherer zu sein... Der Aufwand, den wir bei uns dafür treiben müssten ist jedoch zu groß und wir würden viel an Flexibilität einbüssen.

Ansonsten - ja, wir haben auch eine Firewall am laufen, allerdings aus anderen Gründen...