Moin!
Wie kann ich diesen DOS abfangen
Was der DoS ist, und wie man ihn "bearbeitet", kannst Du vorerst meinem Artikel zum Thema entnehmen.
Nicht wirklich. Dein Artikel ist a) veraltet, b) in technischen Details inkorrekt und c) an zentralen Stellen sachlich falsch.
Das ich zB die Herkunftsadresse der Abfragen analysiere und auf diese Weise erkenne, ob jemand in extrem kurzer Zeit sehr viele Abfragen macht.
Das ist durchaus möglich, wenn es sich tatsächlich um eine Fehlfunktion des Bots handelt, wie Du es vermutest. Wenn das jedoch ein ernsthaft ausgelegter Angriff ist, so wird der Angreifer zumindest seine Spuren verwischen, angefangen bei seiner IP-Adresse. Diese wird gefälscht (gespooft, siehe IP-Spoofing).
Das allerallerletzte, was ein DoS-Angreifer, der PHP-Skripte überlasten will, tun wird, ist das Spoofing seiner IP-Adresse. Denn das PHP-Skript wird ja nie gestartet, wenn der Webserver keine komplette TCP-Verbindung aufbauen kann, um überhaupt mal den HTTP-Request vom Angreifer entgegenzunehmen, sobald dieser eine falsche IP angibt.
Insofern ist der Ansatz über das Skript wieder wertlos. Ich vermute Du kommst nicht um eine ordentliche Rekonfiguration Deines Webservers herum.
Allgemeinplatzalarm!
Ich habe mal irgendwann gehört, daß man sowas Flooding nennt und das es da eine Möglichkeit gibt, solche Massenanfragen in PHP vor dem Datenbank-Connect zu verhindern.
Das muß PHP dann selbst regeln. Man könnte den aktuellen Load des Systems ermitteln und in Abhängigkeit vom Ergebnis aufwendige, aber im Grunde nur dekorative Datenbankabfragen weglassen.
Da es allerdings nicht viel hilft, wenn ein überlastetes System zur Feststellung der Überlastung erstmal aufwendig und belastend Skripte parsen muß, gerät man so doch wieder in eine Abwärtsspirale. Schlauer sind schnelle Mechanismen wie z.B. mod_loadavg.
Falls Dein einziges Problem nur der träge Aufbau von Skript zur Datenbank ist, dann könnte mysql_pconnect() interessant für Dich sein.
Das hilft nur in ganz speziellen Fällen (PHP als Modul) und verursacht seinerseits das Potential, dass die Datenbank massenhaft mit persistenten Connections zugemüllt wird - sozusagen ein sekundärer DoS. Ob sich da andere Nutzer der Datenbank freuen? Man sollte jedenfalls wissen, was man tut, wenn man pconnect einsetzt. Es einfach nur so einzusetzen ist keine schlaue Taktik.
- Sven Rautenberg
My sssignature, my preciousssss!