Mit Python den RefHeader ermitteln und mit Apache arbeiten

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
MrMind
User
Beiträge: 3
Registriert: Samstag 9. Juli 2005, 16:32
Wohnort: Odw
Kontaktdaten:

Moin Leutz,

ich wollte ein Script mit Python erstellen, welches bei einem Aufruf einer Webseite den ReferHeader ermittelt über den Apachen und bei missbrauchen und absichtlichen Serverüberlastung diesen ReferHeader sperren lassen. Sprich nicht mehr zulassen.

Kennt jemand so ein Script oder kann man mir evtl. helfen welche Libs ich benötige und wie ich da am besten vorgehe??

Python ist für mich Neuland (habe zwar einige Tuts gelesen und verstehe auch einige Scripte die ich hier lese, aber selbständig bekomme ich sowas noch net hin).

Würde mich sehr darüber freuen.

vielen Dank schonmal.

Mfg
MrMind
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Willkommen im Forum, MrMind!

Ich glaube du kommst mit urllib2.Request() am besten zum Ziel, denn dort kannst du auch zusätzliche Header angeben, die zum Server geschickt werden sollen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
MrMind
User
Beiträge: 3
Registriert: Samstag 9. Juli 2005, 16:32
Wohnort: Odw
Kontaktdaten:

Leonidas hat geschrieben:Willkommen im Forum, MrMind!

Ich glaube du kommst mit urllib2.Request() am besten zum Ziel, denn dort kannst du auch zusätzliche Header angeben, die zum Server geschickt werden sollen.
Alles klar ich werde damit mal ein bissl rumspielen und mal die Manual von python.org zu hilfe nehmen.

Vielen Dank erstmal, wenn ich noch einige Probleme habe (das denke ich), werde ich mich nochmal melden.

wenn es weitere möglichkeiten gibt, wäre ich dankbar, wenn man diese auch gleich dazu schreibt ;)

Mfg
MrMind
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

MrMind hat geschrieben:wenn es weitere möglichkeiten gibt, wäre ich dankbar, wenn man diese auch gleich dazu schreibt ;)
Okay, es gibt noch eine mehr Low-level Version, die ich dir anbieten könnte:
httplib.HTTPConnection.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

MrMind hat geschrieben: ich wollte ein Script mit Python erstellen, welches bei einem Aufruf einer Webseite den ReferHeader ermittelt über den Apachen und bei missbrauchen und absichtlichen Serverüberlastung diesen ReferHeader sperren lassen. Sprich nicht mehr zulassen.
Hi MrMind!

Die Daten über die Anfragen an den Apachen bekommst du am Einfachsten über das Logfile des Apachen. Diese Daten brauchst du ja nicht unbedingt in Echtzeit. Ob jemand versucht, den Server zu überlasten bekommt man auch mit Daten raus, die ein paar Sekunden alt sind.

Schwieriger wird es, dem Apachen bei jeder Anfrage, und das können wirklich viele sein, mitzuteilen, ob er auf die Anfrage antworten soll.

Vielleicht gibt es ein Apache-Modul, das sozusagen als Zwischenschicht dient. Das muss vom Apache aus gehen. Der müsste eine Anfrage an dein Programm schicken und je nach Rückgabe deines Programmes richtig agieren. Leider bin ich überfragt, ob es so etwas gibt, oder wie man so etwas einstellen kann.

Ich hoffe, zumindest die Sachlage geklärt zu haben. Vielleicht weiß jemand in diesem Forum mehr über die Zusammenhänge im Apache und ob es so eine Zwischenschicht gibt. Vielleicht gibt es sogar eine Einstellung, die den Apache dazu veranlasst genau dieses, gewünschte Verhalten an den Tag zu legen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Das hier könnte evt. so etwas sein:
http://httpd.apache.org/docs-2.0/mod/mo ... ilter.html
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Man kann anscheinend mit Umgebungsvariablen angeben, ob eine IP-Adresse auf einen Ordner zugriff hat. Ich konnte allerdings nicht herauslesen, ob die Umgebungsvariable bei jedem Zugriff oder nur beim Starten des Apachen ausgelesen wird.

http://httpd.apache.org/docs-2.0/mod/mod_access.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Vielleicht hilft die Einstellung MaxRequestsPerChild auch schon weiter. Soll aber laut Anleitung mit Vorsicht zu geniesen sein.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
MrMind
User
Beiträge: 3
Registriert: Samstag 9. Juli 2005, 16:32
Wohnort: Odw
Kontaktdaten:

Es geht genauer gesagt darum, das mein Hoster einige Server laufen hat, die in der letzten Zeit mehrfach von DoS Angriffen befallen wurden, welche über PopUps auf diversen Seiten anscheinend hervorgerufen wurden (sprich ein User geht auf eine Seite, dort öffnet sich ein PopUp, welches einen iframe beinhaltet das die Startseite des betroffenen Servers ca. 500 mal aufruft und der User bekommt davon nichts mit).

Daher bringt es uns wenig, wenn wir die IP veruschen zu sperren bzw. zu überprüfen, da diese vom User aus gehend sind (die können aber in der Regel nichts dazu).

Und deswegen wollen wir das via RefHeader machen, da die Seiten sich ja nicht ändern und jeder aufruf einer Seite den RefHeader von der vorherigen Seite beinhaltet.

Die Apachemodule sind uns bekannt, jedoch müsste mein Hoster mehrere Server den Apachen deswegen neukompilieren was wieder zu Serverausfällen sowie mehr Arbeit führt. Deswegen dachte ich, weil Apache ja mit Python arbeiten kann, das man dieses Modul durch ein Python Script ersetzen kann und somit dies daran hindert.

Vielen dank aber erstmal, das du dir soviel Mühe gemacht hast und was im Netz gesucht hast. Macht net jeder ;)

Mfg
MrMind
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

MrMind hat geschrieben:Und deswegen wollen wir das via RefHeader machen, da die Seiten sich ja nicht ändern und jeder aufruf einer Seite den RefHeader von der vorherigen Seite beinhaltet.

Die Apachemodule sind uns bekannt, jedoch müsste mein Hoster mehrere Server den Apachen deswegen neukompilieren was wieder zu Serverausfällen sowie mehr Arbeit führt. Deswegen dachte ich, weil Apache ja mit Python arbeiten kann, das man dieses Modul durch ein Python Script ersetzen kann und somit dies daran hindert.
Achso, dann habe ich das Problem falsch verstanden.

Nein, ich wüsste nicht wie man sowas in Python lösen könnte, ich denke der Weg über Apache Module ist sowohl einfacher als auch sicherer.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten