Powered by Invision Power Board


  Reply to this topicStart new topic

> Webserver vor Flooding-Angriffen schützen
coyote
geschrieben am: 28.06.2008, 21:19
Quote Post





Gruppe: Mitglieder
Beiträge: 249
Mitglieds-Nr.: 141
Mitglied seit: 10.09.2004



abend allerseits,

meine webseite wurde nun zum 2.mal (laut provider) durch einen flooding-angriff lahmgelegt. es wurden mehrere hundert anfragen (domain) gestellt und so den server zum absturz gebracht. da noch andere kunden auf demselben webserver untergebracht sind, ist die stimmung entsprechend ...

der server kann nur eine bestimmte anzahl von session gleichzeitig verwalten. gibt es eine möglichkeit (konfiguration), dass eine IP nicht so viele anfragen hintereinander ausführen kann?

hab selber schon gesucht, aber sql_pconnect oder mod_loadavg sollen angeblich das problem nicht lösen können. es ist auch keine suchmaschine, die durch eine simple robots.txt daran gehindert werden können. die IPs kommen aus russland und niederlande - wahrscheinlich gefaked.

ideen?

Beitrag bearbeitet von coyote am 28.06.2008, 21:20
PMEmail Poster
Top
NetPanther
geschrieben am: 28.06.2008, 23:34
Quote Post


Administrator


Gruppe: Administratoren
Beiträge: 7.696
Mitglieds-Nr.: 1
Mitglied seit: 29.08.2004



Guten Abend coyote,

im Normalfall ist das Aufgabe der Firewall, für netfilter/iptables gibt es zum Beispiel das Modul iplimit, mit der man den Zugriff für einzelne IP Adressen oder Adressblöcke einschränken kann.

Auf Ebene des Webservers böte es sich zudem an, den Abruf von Seiten per .htaccess Datei zu sperren. Eine solche Konfiguration verläuft typischerweise nach folgendem Muster:
CODE
order allow,deny
deny from 127.0.0.1
deny from 127.0.0.2
deny from 127.0.0.3
allow from all


Die Anfragen an sich werden dadurch natürlich nicht blockiert, Crawler und dergleichen bekommen jedoch eine Fehlerseite angezeigt und finden so keine Links mehr, die sie weiter verfolgen könnten (oder Formulare zum Zuspammen).

Eine ähnliche Lösung ließe sich ebenfalls per .htaccess Datei, dann aber mit dem Apache Modul mod_rewrite lösen. Auch hier kannst du eine IP Adresse oder einen ganzen IP Bereich aussperren:
CODE
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^127\.0\.0\.([1-3])
RewriteRule !robots\.txt - [F]


Sofern sich dein Provider an der Fülle der Anfragen stört, führt der Weg nur über die Firewall. Andernfalls laufen die Requests schon beim Webserver auf und werden erst dort mit einem Error 403 oder ähnlichem abgewimmelt.

QUOTE (coyote)
es ist auch keine suchmaschine, die durch eine simple robots.txt daran gehindert werden können.

Es handelt sich bei der robots.txt um eine reine Konvention. Ob sich der Suchmaschinen-Betreiber auch daran hält, ist letztendlich seine Angelegenheit.

MfG


--------------------
:: NetPanther :: NetPanther@gmx.net :: Website :: IRC Channel: #NetPanther ::

Das Leben ist eine Beta. Nichts ist vollkommen.
PMEmail PosterUsers WebsiteICQAOLYahooMSN
Top
coyote
geschrieben am: 29.06.2008, 08:36
Quote Post





Gruppe: Mitglieder
Beiträge: 249
Mitglieds-Nr.: 141
Mitglied seit: 10.09.2004



das ist ja das problem, dass man vorher die IP (bereich) festlegen muss. sinnvoller wäre eine generelle beschränkung der zugriffe auf alle IPs. warum müssen für eine ip mehr als z.b. 10 anfragen pro sekunden verarbeitet werden? - auf einem webserver doch unnötig. oder meintest du das mit "netfilter"?

danke für's mitdenken!

€dit
QUOTE
Das kann bei uns auch passieren. Wir haben schon verschiedene Apache Module getestet die Zugriffe per Client limitieren können, konnten hier aber noch kein zufriedenstellendes ergebnis erzielen.


scheint garnicht so einfach zu sein ...

Beitrag bearbeitet von coyote am 29.06.2008, 13:43
PMEmail Poster
Top
NetPanther
geschrieben am: 29.06.2008, 15:01
Quote Post


Administrator


Gruppe: Administratoren
Beiträge: 7.696
Mitglieds-Nr.: 1
Mitglied seit: 29.08.2004



Guten Tag coyote,

im Regelfall versucht man, IP Adressen oder Adressbereiche komplett zu blockieren, um z.B. laufende DoS Attacken abzuwenden. Sicherlich kann man auch granularer filtern, indem man Zugriffe einzeln protokolliert, dann ist aber auch der verwaltungstechnische Overhead entsprechend groß.

Die Firewall netfilter/iptables bietet diverse Zusatzmodule, um den Zugriff auf Server und Dienste einzuschränken. Schau dich in diesem Bereich einfach mal um. Mit dem Modul iplimit lässt sich etwa die Anzahl paralleler Verbindungen eines Hosts begrenzen. Darüber hinaus gibt es ein Modul recent, mit dem auch einzelne IP Adressen geloggt und verfolgt werden können. Mit den Optionen --seconds und --hitcount kannst du dort etwa auch bestimmen, wie viele Zugriffe in welcher Zeit erlaubt sind, bzw. für wie lange der Hostname bei Fehlverhalten ausgesperrt werden soll.

Bei einer dreistufigen Regel könnte das Ganze etwa so aussehen:
CODE
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -m recent \
   --rcheck --seconds 1 --hitcount 2 --name HTTP -j REJECT \
   --reject-with icmp-host-prohibited
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -m recent \
   --rcheck --seconds 60 --hitcount 30 --name HTTP -j REJECT \
   --reject-with icmp-host-prohibited
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -m recent \
   --rcheck --seconds 300 --hitcount 100 --name HTTP -j REJECT \
   --reject-with icmp-host-prohibited
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -m recent \
   --set --name HTTP -j ACCEPT


Mit Port 443 für HTTPS Verbindungen bei Bedarf entsprechend. Für weitere Informationen siehe auch hier.

MfG


--------------------
:: NetPanther :: NetPanther@gmx.net :: Website :: IRC Channel: #NetPanther ::

Das Leben ist eine Beta. Nichts ist vollkommen.
PMEmail PosterUsers WebsiteICQAOLYahooMSN
Top
coyote
geschrieben am: 29.06.2008, 17:16
Quote Post





Gruppe: Mitglieder
Beiträge: 249
Mitglieds-Nr.: 141
Mitglied seit: 10.09.2004



klingt für mich als laie vielversprechend^^
ich hab's an den provider weitergeleitet.

bis hierhin danke!
PMEmail Poster
Top
alt-print-b
geschrieben am: 28.08.2009, 15:43
Quote Post





Gruppe: Mitglieder
Beiträge: 18
Mitglieds-Nr.: 547
Mitglied seit: 25.10.2006



CODE

/etc/init.d/apache2 stop
PM
Top
1 Besucher zu diesem Thema (1 Gäste und 0 'versteckte' Mitglieder)
0 Mitglied(er):

Topic Options Reply to this topicStart new topic

 



[ DB Queries: 11 ]   [ Execution Time: 0.0510 ]   [ GZIP aktiviert ]