Jump to content
InvisionCommunity.de - Der Deutsche Invision Community Support
Sign in to follow this  
www.filmforen.de

Datenbankserver durch zu viele Anfragen überlastet

Recommended Posts

Hallo,

gestern habe ich von meinem Provider eine Mail bekommen, in der er mir mitteilt, dass meine Internetpräsenz vorübergehend abgeschaltet wurde, weil es zu viele Anfragen an den Datenbankserver gegeben hat, die diesen in die Knie gezwungen haben. Folgendes Protokoll hat er mir mitgeschickt:

Sehr geehrte Kundin,

sehr geehrter Kunde,

leider mussten wir feststellen, dass der Webserver durch Ihre Domain übermäßig

stark ausgelastet wird. Dies können wir in einer Shared Hosting Umgebung  -

auch im Interesse der anderen Kunden, die auf diesem Server liegen - nicht

akzeptieren, und mussten daher den Zugriff auf Ihre Präsenz sperren.

Bitte überarbeiten Sie Ihre Datenbankabfragen.

Benutzer: ftp50786

# Time: 060803 7:13:43

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 6 Lock_time: 0 Rows_sent: 30 Rows_examined: 120

use dissimulation_de;

SELECT p.*,

m.id,m.name,m.mgroup,m.email,m.joined,m.posts, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn,

me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.avatar_size, m.members_display_name,

pc.*

FROM ibf_posts p

LEFT JOIN ibf_members m ON (p.author_id=m.id)

LEFT JOIN ibf_member_extra me ON (me.id=m.id)

LEFT JOIN ibf_pfields_content pc ON (pc.member_id=p.author_id)

WHERE p.pid IN(200053,200344,200425,200429,200436,200773,200797,200814,200932,200933,200936,

00938,204557,205162,206457,206462,206585,206586,206588,206600,206734,206949,2085

1,208684,208703,211493,211512,211658,211676,211827) ORDER BY pid asc;

# Time: 060803 8:02:11

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 6 Lock_time: 0 Rows_sent: 50 Rows_examined: 300

use dissimulation_de;

SELECT p.*,m.members_display_name, m.mgroup FROM ibf_posts p LEFT JOIN ibf_members m ON ( m.id=p.author_id ) WHERE p.topic_id=4411 AND p.queued=0 ORDER BY pid LIMIT 100,50;

# Time: 060803 8:02:40

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 8 Lock_time: 0 Rows_sent: 50 Rows_examined: 700

SELECT p.*,m.members_display_name, m.mgroup FROM ibf_posts p LEFT JOIN ibf_members m ON ( m.id=p.author_id ) WHERE p.topic_id=327 AND p.queued=0 ORDER BY pid LIMIT 300,50;

# Time: 060803 8:02:50

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 18 Lock_time: 0 Rows_sent: 50 Rows_examined: 2399

SELECT p.*,m.members_display_name, m.mgroup FROM ibf_posts p LEFT JOIN ibf_members m ON ( m.id=p.author_id ) WHERE p.topic_id=3064 AND p.queued=0 ORDER BY pid LIMIT 1150,50;

# Time: 060803 8:11:07

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 9 Lock_time: 0 Rows_sent: 24 Rows_examined: 2145

SELECT p.*,m.members_display_name, m.mgroup FROM ibf_posts p LEFT JOIN ibf_members m ON ( m.id=p.author_id ) WHERE p.topic_id=1006 AND p.queued=0 ORDER BY pid LIMIT 1050,50;

# Time: 060803 8:17:57

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 27 Lock_time: 0 Rows_sent: 19 Rows_examined: 5938

use dissimulation_de;

SELECT pid,topic_id FROM ibf_posts WHERE topic_id=3041 ORDER BY pid asc LIMIT 2950,50;

# Time: 060803 8:20:28

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 6 Lock_time: 0 Rows_sent: 1 Rows_examined: 90

SELECT MIN(pid) as pid FROM ibf_posts WHERE queued=0 AND topic_id=2610 AND post_date > 1154530388 LIMIT 0,1;

# Time: 060803 8:21:00

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 6 Lock_time: 0 Rows_sent: 30 Rows_examined: 120

SELECT p.*,

m.id,m.name,m.mgroup,m.email,m.joined,m.posts, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn,

Benutzer: ftp50786

# Time: 060803 7:13:43

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 6 Lock_time: 0 Rows_sent: 30 Rows_examined: 120

use dissimulation_de;

SELECT p.*,

m.id,m.name,m.mgroup,m.email,m.joined,m.posts, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn,

me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.avatar_size, m.members_display_name,

pc.*

FROM ibf_posts p

LEFT JOIN ibf_members m ON (p.author_id=m.id)

LEFT JOIN ibf_member_extra me ON (me.id=m.id)

LEFT JOIN ibf_pfields_content pc ON (pc.member_id=p.author_id)

WHERE p.pid IN(200053,200344,200425,200429,200436,200773,200797,200814,200932,200933,200936,

00938,204557,205162,206457,206462,206585,206586,206588,206600,206734,206949,2085

1,208684,208703,211493,211512,211658,211676,211827) ORDER BY pid asc;

# Time: 060803 8:02:11

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 6 Lock_time: 0 Rows_sent: 50 Rows_examined: 300

use dissimulation_de;

SELECT p.*,m.members_display_name, m.mgroup FROM ibf_posts p LEFT JOIN ibf_members m ON ( m.id=p.author_id ) WHERE p.topic_id=4411 AND p.queued=0 ORDER BY pid LIMIT 100,50;

# Time: 060803 8:02:40

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 8 Lock_time: 0 Rows_sent: 50 Rows_examined: 700

SELECT p.*,m.members_display_name, m.mgroup FROM ibf_posts p LEFT JOIN ibf_members m ON ( m.id=p.author_id ) WHERE p.topic_id=327 AND p.queued=0 ORDER BY pid LIMIT 300,50;

# Time: 060803 8:02:50

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 18 Lock_time: 0 Rows_sent: 50 Rows_examined: 2399

SELECT p.*,m.members_display_name, m.mgroup FROM ibf_posts p LEFT JOIN ibf_members m ON ( m.id=p.author_id ) WHERE p.topic_id=3064 AND p.queued=0 ORDER BY pid LIMIT 1150,50;

# Time: 060803 8:11:07

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 9 Lock_time: 0 Rows_sent: 24 Rows_examined: 2145

SELECT p.*,m.members_display_name, m.mgroup FROM ibf_posts p LEFT JOIN ibf_members m ON ( m.id=p.author_id ) WHERE p.topic_id=1006 AND p.queued=0 ORDER BY pid LIMIT 1050,50;

# Time: 060803 8:17:57

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 27 Lock_time: 0 Rows_sent: 19 Rows_examined: 5938

use dissimulation_de;

SELECT pid,topic_id FROM ibf_posts WHERE topic_id=3041 ORDER BY pid asc LIMIT 2950,50;

# Time: 060803 8:20:28

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 6 Lock_time: 0 Rows_sent: 1 Rows_examined: 90

SELECT MIN(pid) as pid FROM ibf_posts WHERE queued=0 AND topic_id=2610 AND post_date > 1154530388 LIMIT 0,1;

# Time: 060803 8:21:00

# User@Host: ftp50786[ftp50786] @ localhost []

# Query_time: 6 Lock_time: 0 Rows_sent: 30 Rows_examined: 120

SELECT p.*,

m.id,m.name,m.mgroup,m.email,m.joined,m.posts, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn,

Ich habe Grund zu der Annahme, dass über ein Sicherheitsloch in der Forensoftware bösartige Scripte installiert wurde, die u.a. für die Überlastung des Servers verantwortlich sind. Ich hatte bei einem Durchlauf des Virenscanners auch bereits drei Backdoor-Scripte gefunden und gelöscht - es scheint aber wohl immer noch mindestens eines zu geben, das den Schaden verursacht hat.

Folgendes habe ich zur Schadensbegrenzung unternommen:

1. Das Forum bleibt erst mal offline. Den Ordner mit der Forensoftware habe ich umbenannt.

2. das MySQL-Passwort habe ich geändert.

3. Das Tabellenpräfix werde ich ändern (sobald ich weiß, wie man das bei den 78 Tabellen der Forendatenbank auf einen Schlag erledingen kann. hints?)

Jetzt meine Fragen/Bitten:

1. Was kann ich tun? Muss ich die Forensoftware neu aufsetzen? Wie finde ich die schadhafte Software? Gibt das obige Protokoll darüber Auskunft?

2. Wie kann ich verhindern, dass sich wider schadhafte Scripte einnisten? Die, die ich gefunden habe, waren allesamt in 777-Verzeichnissen (Avatar, Emoticons, Style-Images)

3. Kann die Datenbank vielleicht selbst schon schadhaften Code enthalten? Wie finde/entferne ich den? Ich möchte die mittlerweile sehr große Forendatenbank nicht löschen.

Stefan

Share this post


Link to post

Tabellenpräfix ändern halte ich nicht für sinnvoll, was soll das bringen?

Zu 1. Alle Dateien mit den Originalen Überschreiben und nachsehen, ob weitere Dateien vorhanden sind, die nicht zum Forum, zu Mods, zu den Uploads, Avataren, Skins, etc. gehören und ggf. löschen.

2. Regelmäßig Sicherheitsupdates von IPS einspielen, admin.php mit .htaccess schützen, schaun, ob weitere Admins existieren, die du nicht kennst, etc.

3. kA, mir fallen höchstens schädliche Änderungen am Skin ein (iframes, etc.)

MfG TO_Webmaster

Edited by TO_Webmaster

Share this post


Link to post

2. Wie kann ich verhindern, dass sich wider schadhafte Scripte einnisten? Die, die ich gefunden habe, waren allesamt in 777-Verzeichnissen (Avatar, Emoticons, Style-Images)

^^^waaaaah.... nieeee 777. nimm 755 und setz den owner auf den webserver ;) sollte genauso gehen...

an sonsten: es wäre erstmal hilfreich deine Forenversion zu wissen ;)

Share this post


Link to post

Die Version steht unten in meiner Signatur. Ist immer die aktuellste und immer mit dem aktuellsten Sicherheitsupdate.

Das mit dem Überschreiben der alten Dateien durch neue wäre schon sinnvoll. Aber wie erkenne ich die übrigen Dateien, die nicht überschrieben wurden? Am Datum? Und das sind ja nicht wenige Dateien, die zum Forum gehören.

Wir werden das Forum (also die Dateien) wahrscheinlich noch einmal komplett neu aufsetzen. Mal sehen, ob das hilft.

Share this post


Link to post

Wir wollen das Forum jetzt auf einem anderen Server neu aufsetzen, aber natürlich mit dem Inhalt der alten Datenbank (bzw. der alten Datenbank selbst). Zwei Fragen:

1. Ist es möglich, die Datenbank neu anzulegen und nur die Tabellen mit Usern und Postings (welche anderen Tabellen gibt es noch, in denen wichtige Daten enthalten sind?) in die neue DB zu übernehmen?

2. Kann es denn überhaupt möglich sein, dass sich in der DB selbst ein Virus oder eine Schadsoftware verbirgt, die zu den massiven Anfragen an den DB-Server geführt hat? (Falls nicht, könnten wir das Problem ja schon beheben, indem wir einfach die Forensoftware neu aufsetzen.)

Da ich in MySQl-Fragen nicht besonders fit bin, bitte ich um Support. :)

Share this post


Link to post

Ich setze mein Selbstgespräch mal fort:

Beim uploaden der alten Datenbank haben wir festgestellt, dass die Tabelle "ibf_spider_log" insgesamt 200 MB groß ist (der Rest der DB 166 MB). Stimmt da was vielleicht nicht? Das kommt mir komisch vor. Kann ich die löschen?

Edited by www.filmforen.de

Share this post


Link to post

hört sich so an, als ob du die spideranfragen loggst. schalt mal diese logfuktion ab. wenn sich viele bots im forum tummeln kann das schonmal massiv abfragen geben... aber sicher bin ich mir leider nicht...

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×