php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.03.2010, 13:51  
hennink
Gast
 
Beiträge: n/a
Standard Anti-(D)DoS Script?

Huhu,

ich stehe momentan vor einem Problem. Unzwar geht es darum, dass ich eine Homepage per PHP-Script vor (D)DoS-Attacken schützen möchte.

Ich habe schon diverse Seiten angesehen und mich ein wenig drüber Informiert, da das Thema bisher nicht wirklich relevant für mich war.

Nun schreibe ich ein Script und möchte einen Schutz vor solchen Angriffen erstellen. Ich weiß auch, dass man gegen DDoS per PHP-Script nicht 100%ig geschützt ist, aber aus Erzählungen weiß ich, dass es in der entsprechenden Szene eher nur zu Massenaufrufen der Homepage kommt (eher keine Profis da drin).

Ich habe mir nun überlegt, dass man eine DB-Tabelle anlegt, die bei jedem Aufruf IP und Zugriffszeit speichert.

Das Script auf der Homepage überprüft nun, wie oft eine IP in einem gewissen Zeitraum (z.B. 10 Sekunden) auf die Seite zugreift. Merkt das Script, dass innerhalb von 10 Sekunden z.B. 20 Seitenaufrufe ausgeführt werden, dann wird auf dem Webspace eine Datei mit IP-Name erstellt mit Anzahl der Zugriffe und Zeitpunkt.

Also wird als erstes bei jedem Seitenaufruf überprüft, ob für die aufrufende IP eine Datei existiert, wenn ja, dann wird der Zugang gesperrt und das Script per exit(); verlassen.

Nun habe ich mir überlegt, dass man diese IP-Sperre nur temporär erstellt (Da es ja auch nur aus Versehen zu einer Sperre kommen könnte). Diese Sperre bleibt für 30 Minuten drinne und dann kann die jeweilige IP wieder zugreifen. Oder sollte man doch lieber die IP komplett sperren?

Würde mich freuen, wenn sich jemand mit der Thematik auskennt und Tipps dazu geben kann.
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.03.2010, 14:30  
Benutzer
 
Registriert seit: 21.02.2010
Beiträge: 78
PHP-Kenntnisse:
Anfänger
comlar befindet sich auf einem aufstrebenden Ast
Standard

Also wenn ich das System einer DoS-Attacke richtig verstanden habe, dann dient sie dazu, einen Server durch Anfragen zu überlasten.

Dein Ansatz hilft also gar nichts. Denn dein System muss ja immer noch alle eingehenden Anfragen annehmen, in eine DB schreiben und abgleichen. Also wird der Server genauso gut in die Knie gehen, wie wenn er ohne dein Idee arbeiten würde.

Da müsstest du schon Änderungen am Router vornehmen, der die Anfragen bereits vorab abblockt.
comlar ist offline  
Alt 16.03.2010, 14:34  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

DoS und erst recht DDoS per PHP-Skript abzuwehren ist wie Wasser mit einer Plastiktüte aufzuwischen. Gegen DoS kannst du nur mit iptables-Regeln und guter Backbone-Struktur etwas ausrichten und selbst da kann es zu Ausfällen kommen (siehe z.B. Hetzner).
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline  
Alt 16.03.2010, 14:44  
hennink
Gast
 
Beiträge: n/a
Standard

Ich sage ja, gegen professionelle Angriffe würde es keinen Sinn machen. Aber Das Script greift auf eine externe Datenbank zu und durch Massenaufrufe der Seite kann diese Überlastet werden und zum Absturz gebracht werden. Dafür reichen wenige Tausend aufrufe. In erster Linie möchte ich nur diese Datenbank schützen und nicht die Webseite + dessen Server. Da es nicht mein Server ist würde ich die Sache mit den IP-Tables weitergeben, aber wie schon erwähnt hat der Schutz der externen Datenbank vor Massenaufrufen die höhere Priorität.
 
Alt 16.03.2010, 14:52  
Erfahrener Benutzer
 
Registriert seit: 26.10.2009
Beiträge: 425
PHP-Kenntnisse:
Fortgeschritten
Yoshi- befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
<?php die();
Yoshi- ist offline  
Alt 16.03.2010, 14:54  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Egal, kommt auf das gleiche raus. Und was verstehst du unter einem „professionellen“ DoS-Angriff? DoS ist DoS, da gibt es keine Qualitätsunterschiede. Es gibt lediglich einen Quantitätsunterschied bei DDos-Angriffen (die sich mit IP-Blocking eh nur schwer abwehren lassen). Durch deine Prüfung würdest du die Last der Datenbank übrigens noch erhöhen.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline  
Alt 16.03.2010, 15:00  
hennink
Gast
 
Beiträge: n/a
Standard

Ich meine damit, dass Kiddies einfach nur massig die Seite aufrufen mit Spielzeugen und nicht über bestimmte Ports und was weiß ich nicht alles Angriffe starten.

Die Datenbank von der ich rede würde sobald eine IP geblockt ist gar nicht mehr aufgerufen werden, sondern das Script wird sofort abgebrochen sobald festgestellt wurde (1. Schritt beim Laden), dass die IP geblockt ist ala exit('IP blocked');

PS: bevor es zu Missverständnissen kommt. Die Datenbank, in der die IPs geloggt werden, ist nicht die Datenbank, von der ich ebend Sprach.

Geändert von hennink (16.03.2010 um 15:05 Uhr).
 
Alt 16.03.2010, 15:48  
Neuer Benutzer
 
Registriert seit: 17.02.2010
Beiträge: 29
PHP-Kenntnisse:
Fortgeschritten
Linadillar befindet sich auf einem aufstrebenden Ast
Standard

Kleiner Tipp lass es sein, da es nichts bringt.
Nen kleiner Script Kiddi von zu Hause schafft es nicht mit seinem kleinen Rechner den Server so zu flooden, das er in die Knie geht.

Für ne DDoS verwendet man viele Rechner/ Server die man zuvor übernommen hat.

Alleine um die Masse der Anfrage und die Bandbreite für die Anfragen enorm zu erhöhen. Und nen Hacker/Cracker macht aus deinem kleinen PHP Script ne Achterbahn, das hält ihn nicht einmal auf, da er überhaupt nicht über deine Webseite einen DDoS drüber laufen lässt.

Der DDoS greift den Server an(die Hardware wo dein Script drauf liegt).
Beschäfftige dich lieber mal mit dem Thema DDoS und Sicherung dagegen, anstatt irgend ein Sinnloses PHP Script die Last für die DB und den Webserver für Nichts und wieder Nichts erhöhen zu lassen.

Gruß Lina
__________________
Der Kopf ist rund, damit das Denken die Richtung wechseln kann.
Linadillar ist offline  
Alt 16.03.2010, 16:35  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Dito!
Bleibt noch zu sagen, dass DoS- und DDoS-Angriffe stets von übernommenen Serverrechnern oder einem riesigen Netz trojanerverseuchter Privatrechner (sog. Botnet) gefahren werden. Ein einzelner Privatrechner (oder auch mehrere Rechner an einem Privatanschluss) schaffen diese Masse gar nicht, das würde die eigene DSL-Leitung gar nicht hergeben. Um deine Skriptkiddies musst du dir hier keine Gedanken machen. Solltest du DoS-Opfer werden, kannst du davon ausgehen, dass es sich um einen, wie nanntest du es, „professionellen“ Angriff handelt. Skriptkiddies beschränken sich da eher auf klassische SQL-Injections, XSS-Lücken, CSRF und weiß der Henker was für Kleinigkeiten, gegen die man sich gut absichern kann.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline  
Alt 16.03.2010, 16:50  
Neuer Benutzer
 
Registriert seit: 11.12.2009
Beiträge: 13
PHP-Kenntnisse:
Fortgeschritten
Script befindet sich auf einem aufstrebenden Ast
Standard

Die folgende Methode bringt ein wenig:
PHP-Code:
<?php
session_start
();

if(!isset(
$_SESSION["visited"]))     {
     
$_SESSION["visited"] = 'True';
     echo 
'<meta http-equiv="refresh" content="1; URL=index.php>"';
}
else     {
?>
     HTML Code
<?php
}
?>
Kann gut sein, dass ein Fehler drin ist, hab es grad nur so runtergekritzelt. Soll auch nur ein Ansatz sein, man kann das auch viel schöner umsetzen.
Bringen tut es etwas, da bei einem sog. HTTP Flood ganz viele neue Anfragen gestartet werden, dadurch wird die Session auch immer resettet.

Falls es dein Server ist und du ihn Administrierst kann ich dir folgendes empfehlen.
(Debian Lenny/5)
-DDoS Deflate
-Syncookies aktivieren
-APF Firewall
-IpTables

Wobei diese ganzen Softwares auch nur gegen 100-1000 Angreifer stand halten, was praktisch nichts ist.
Daher bringt dir nur eine gute Hardware Firewall oder eine sehr gute Bandbreite etwas.

Ansonsten gäbe es noch die Methode, alle aufrufe in eine Datenbank einzutragen, und per cron / php cron die Einträge alle 60 Sekunden löscht, oder ggf. Ip's bannt.
Das halte ich jedoch für völligen schwachsinn, falls zb. eine Ajax Chatbox oder ähnliches auf dem Server liegt wird die Grenze ziemlich schnell überschritten. Außerdem beinträchtigt das die Serverauslastung imens, gerade weil das skript so oft aufgerufen wird, der MySQL Server geht oft als erstes in die knie, zumindest bei großen Anwendung die bei jedem Aufruf mehrere MySQL Anfragen ausführen, wie z. B. das Forensystem VBulletin.

Sonst gibt es noch das sog. Human Verification system (Captcha).


@Manko, die meisten Scriptkiddies wissen nicht einmal was eine SQL injection ist, der Name scriptkiddie kommt glaube ich ursprünglich auch davon, dass sie vorgefertigte Exploits etc. benutzen. Heutzutage benutzen sehr viele kleine Idioten Botnetze, wobei die meiner Meinung nach nicht ernst zu nehmen sind.

Grüße

Geändert von Script (16.03.2010 um 16:57 Uhr).
Script ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Script auf bestimmten FTP... RavenZ PHP Tipps 2009 10 02.12.2009 16:03
Werte von einem Php Script in ein anderes Php Script üergeben WINFO2105 PHP Tipps 2009 5 15.07.2009 20:05
Scriptangebot 1 Klick Counter Hosting Script Charbel Scriptbörse 0 23.06.2009 07:43
Firefox startet Script bei Timeout wieder neu Wolla PHP Tipps 2009 2 18.05.2009 18:07
phpBB Loginscript in eigenes Login Script einbinden 2wuck PHP Tipps 2007 4 19.12.2005 23:10
[Erledigt] php script und ixed PHP Tipps 2005-2 14 12.10.2005 13:34
[Erledigt] Verzögerung durch included Script? Umgehen? PHP Tipps 2005-2 4 10.07.2005 19:26
[Erledigt] Relay Script PHP-Fortgeschrittene 11 01.06.2005 16:02
[Erledigt] Hilfe bei Download Verwaltungs Script PHP Tipps 2005 8 04.05.2005 10:29
Fehler bei Script, welches Ordner erstellt PsychoEagle PHP Tipps 2005 3 23.04.2005 16:03
python script mit php aufrufen... PHP-Fortgeschrittene 1 17.11.2004 17:11
PHP Script aus PHP aufrufen Stümper PHP Tipps 2004 5 26.09.2004 08:15
"das" Script oder "der" Script?? Simbo Off-Topic Diskussionen 31 16.09.2004 17:04
[Erledigt] Muss ein php script für unsere schule ändern Datenbanken 1 28.06.2004 14:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
anti ddos script, human verification umgehen, php ddos, anti dos script, php ddos script, php dos script, ddos php, anti ddos script php, hetzner ddos, debian anti ddos, script gegen ddos, ddos script php, anti ddos, php anti ddos, php dos schutz, php ddos schutz, php anti ddos script, dos script, debian 5.0 lenny dos schutz, anti-ddos script

Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum