Ist das ein Angriff? Was tun?

Unifex

New Member
Seit zwei Tagen haben ich gerade morgens eine sehr hohe Auslastung meines Servers.

Die Auslastung geht da gerne mal auf 5 oder 6 hoch. Normal ist so 0,5 -0,8

Munin zeigt mir eine deutliche Erhöhung im Bereich Apache und Mysql an.

Mysql teilweise bei 122 %CPU.
Fail to Ban zeigt mir an, dass sich da ein chinesischer "Hacker" am SSH versucht aber ich denke das kann an der höheren Load nicht Schuld sein.

Das Apache errorlog gibt mir an, dass um 6:25 "resuming normal operations", was wohl bedeutet, dass der Apache neu gestartet hat.
Ich habe ihm das jedenfalls nicht gesagt.

Seit dem steht da noch:
Code:
sh: 1: /usr/sbin/sendmail: not found
sh: 1: /usr/sbin/sendmail: not found
sh: 1: /usr/sbin/sendmail: not found

Keine Ahnung woher die Meldung kommt. In den vorherigen Error Meldungen ist die nie aufgetauscht.

Was kann ich machen, um wieder einen normalen Zustand zu erreichen?
 
Welche Queries werden denn im Moment ausgeführt? Führ doch mal "SHOW PROCESSLIST" aus.

Ist am Proxy oder Apache2 mehr Verkehr wie sonst? Was sagt Webmin oder die Apache2 Statusseite dazu?
 
das sieht mir schwer danach aus, dass ein PHP Script übernommen wurde. Jetzt wird versucht über sendmail (was du anscheinend nicht installiert hast) Mails zu verschicken.

Das mit SSH würde ich mal für Grundrauschen halten, aber dafür brauche ich mehr infos.
 
Ja, Apache hat ein vielfaches an Zugriffen.

SQL sieht so aus momentan:

Code:
Netzwerk-Datenverkehr seit Start: 525.6 GiB

Dieser MySQL-Server läuft bereits 0 Tage, 2 Stunden, 51 Minuten und 39 Sekunden. Er wurde um 16. Jul 2013 um 08:19 gestartet.

Netzwerkverkehr 	ø pro Stunde
Empfangen	6.1 GiB	2.1 GiB
Gesendet	519.5 GiB	181.6 GiB
Insgesamt	525.6 GiB	183.7 GiB
Verbindungen	ø pro Stunde	%
max. gleichzeitige Verbindungen	53	---	---
Fehlversuche	1	0.35	 <0.01%
Abgebrochen	12	4.19	 <0.01%
Insgesamt	830 k	290.15 k	100.00%
Prozesse	ID	Benutzer	Host	Datenbank	Befehl	Zeit	Status	SQL-Befehl  Zeige die SQL-Abfragen vollständig an
Beenden	830040	root	localhost	Datenbank	Query	0	Copying to tmp table	SELECT COUNT( thread.threadid ) AS threads, thread.postuserid, thread.dateline, user.userid, user.user
Beenden	830041	root	localhost	Datenbank	Query	0	Copying to tmp table	SELECT COUNT( thread.threadid ) AS threads, thread.postuserid, thread.dateline, user.userid, user.user
Beenden	830042	root	localhost	Datenbank	Query	0	Waiting for table level lock	UPDATE user SET lastactivity =1373965877 WHERE userid =1115
Beenden	830044	root	localhost	Datenbank	Query	0	Copying to tmp table	SELECT COUNT( thread.threadid ) AS threads, thread.postuserid, thread.dateline, user.userid, user.user
Beenden	830043	root	localhost	Datenbank	Query	0	Waiting for table level lock	(
SELECT u.userid, u.username
FROM user u
WHERE u.userid
IN (
'5012',  '553',  '554',  '4959',  '7519'
)
)
Beenden	830046	root	localhost	Datenbank	Query	0	Waiting for table level lock	(
SELECT u.userid, u.username
FROM user u
WHERE u.userid
IN (
'5012',  '553',  '554',  '4959',  '7519'
)
)
Beenden	830047	root	localhost	Datenbank	Query	0	Waiting for table level lock	SELECT thread.threadid, thread.title, thread.lastpost, thread.lastpostid, thread.forumid, thread.las
Beenden	830050	root	localhost	Datenbank	Query	0	Waiting for table level lock	SELECT thread.threadid, thread.title, thread.lastpost, thread.lastpostid, thread.forumid, thread.las
Beenden	830049	root	localhost	Datenbank	Query	0	Copying to tmp table	SELECT COUNT( thread.threadid ) AS threads, thread.postuserid, thread.dateline, user.userid, user.user
Beenden	830048	root	localhost	Datenbank	Query	0	Waiting for table level lock	(
SELECT u.userid, u.username
FROM user u
WHERE u.userid
IN (
'5012',  '553',  '554',  '4959',  '7519'
)
)
Beenden	830052	root	localhost	Datenbank	Query	0	Waiting for table level lock	SELECT COUNT( thread.threadid ) AS threads, thread.postuserid, thread.dateline, user.userid, user.user
Beenden	830057	root	localhost	Datenbank	Query	0	Waiting for table level lock	SELECT thread.threadid, thread.title, thread.lastpost, thread.lastpostid, thread.forumid, thread.las
Beenden	830056	root	localhost	Datenbank	Query	0	Waiting for table level lock	SELECT thread.threadid, thread.title, thread.lastpost, thread.lastpostid, thread.forumid, thread.las
Beenden	830058	root	localhost	Datenbank	Query	0	Sending data	SELECT * 
FROM seoqueries_terms
WHERE term_value =  'cesar millan deutsch'
Beenden	830059	root	localhost	Datenbank	Query	0	Waiting for table level lock	SELECT thread.threadid, thread.title, thread.lastpost, thread.lastpostid, thread.forumid, thread.las
Beenden	830063	root	localhost	Datenbank	Sleep	0	---	 ---
Beenden	830064	root	localhost	Datenbank	Sleep	0	---	 ---
Beenden	830065	root	localhost	Datenbank	Query	0	Waiting for table level lock	SELECT thread.threadid, thread.title, thread.lastpost, thread.lastpostid, thread.forumid, thread.las
Beenden	830066	root	localhost	Datenbank	Sleep	0	---	 ---
Beenden	830067	root	localhost	Datenbank	Sleep	0	---	 ---
Beenden	830068	root	localhost	Datenbank	Sleep	0	---	 ---
Beenden	830069	root	localhost	Datenbank	Sleep	0	---	 ---
Beenden	830070	root	localhost	keine	Query	0	---	SHOW PROCESSLIST

Hilft das weiter?
 
Ich habe jetzt vier mal "netstat -taupen" laufen lassen und jede einzelne angezeigt IP ausgewertet.

Außer hier und da mal ein Chinese und ein paar IP aus Frankreich, die über die Firma OVH ihren Schrottbot laufen lassen sind da zu 99,9 % nur deutsche IP zu finden.

Ich meine, das hätte mir doch jede aktuelle Verbindung anzeigen müssen.

Übrigens Apache und MySQL sind neu gestartet worden. Hat aber nichts gebracht.
 
Zeitfenster der Auslastung ?

- Crons geprüft ?
- Verwaltung darauf laufen (PSA AWSTATS Updates ?)
- etc.


Guter Vorschlag.

Crons haben keine Fehler ausgegeben.

Die hatte ich erst auch im Verdacht zumal zum Nachmittag die Auslastung und die Apache Zugriffe nachlassen.

Jetzt ist die Auslastung zwischen 1 und zwei. Immer noch doppelt so hoch wie sonst aber ich habe heute auch schon 10 gesehen.

An Verwaltungsfläche läuft da nix.
Habe nur eine Cron laufen der mir alle paar Stunden den Query Cache flusht und sonst nur Backups Cron, die in der Nacht laufen.
 
Über die Status-Seite von Apache (bzw. mod_status) kannst du sehen, welche HTTP-Anfragen ausgeführt werden, auf welche Datei und wie hoch die Auslastung ist und wie lange die Anfrage schon läuft. Dort würde ich mal nachsehen.
 
Statt wild im Trüben zu fischen wäre vielleicht ein Blick in diverse Logfiles hilfreich? Da steht drin, was passiert.

* Webserver logs (auch access.log)
* Applikations logs
* daemon messages
* auth
* ...

Im Zweifel das Loglevel auch mal anheben.
 
Yep, wurde ja soweit gemacht. Teilweise sind solche Zugrifflogs natürlich riesig.

Mittlerweile bin ich ein ganzes Stück weiter.

Es handelt sich offenbar um keinen DDoS.

Jedenfalls keinen externen.

Die hoche Last wurde durch zwei Vbulletin Foren erzeugt.

Da war folgendes Plugin installiert:
http://www.vbulletin.org/forum/showthread.php?t=235841&page=76

Das Plugin erstellt allerlei Statistiken. Man kann einstellen, dass die Ergebnisse sich alle X Sekunden Aktualisieren und zwar per AJAX.

Eingestellt war das auf 15 Sekunden und zwar schon ewig.

Als ich mir das mal genauer angesehen habe, habe ich gesehen, dass das Symbol für das Refresh nicht alle 15 Sekunden geblinkt hat, sondern eher 15 mal in der Sekunde.

Das führte sogar dazu dass meine Bandbreite meiner Leutung für den UP bereich vollkommen aus Anschlag war.

Na ein paar Klicks bekam ich nur noch eine weiße Seite und er wollte nichts mehr laden.

Die Load des Servers schoss nach oben -Apache und der Rest wie beschrieben auch.

Jetzt habe ich die Plugins deaktiviert und alles ist wieder im normalen Bereich.
Jetzt irritieren mich eigentlich nur noch zwei Fragen:

1. Warum stürzt ein Ajax Script so ab und das zu einem bestimmten Zeitpunkt X.

2. Scheinbar bin ich selber der Auslöser für den Start der Prozedur. Jedenfalls ging es mit der Load immer nur hoch, wenn ich angemeldet war im Forum und auf die Startseite mit der Statistik gegangen bin.

Es ist ja nicht zu vermuten, dass mein Browser irgendwas ganz anderes macht als die tausenden anderen Mitglieder.

Warum wurde die Aktion also von mir selber ausgelöst und nicht von anderen.

Sehr merkwürdig das Ganze.
 
Mach das Plugin wieder an und schau an einem anderen Rechner, ob das Verhalten dort tatsächlich nicht auftritt. Ich bezweifle es. ;)
 
Back
Top