Firewall: Nach xx Verbindungen in XX Minuten von IP XX zu Port XX blocken!

Rund um die Sicherheit des Systems und die Applikationen
Anonymous

Firewall: Nach xx Verbindungen in XX Minuten von IP XX zu Port XX blocken!

Post by Anonymous » 2006-06-13 11:08

Guten Tag!

Ich habe ein Problem und hoffe, dass mir vielleicht jemand helfen kann.

Seit einigen Tagen bekomme ich immer zwischen 18 Uhr und 2 Uhr nachts einen Angriff auf meinen Server. Mit iftraf kann ich die IP´s von denen der Angriff ausgeht sehen und auch die Ports an denen der Angriff gerichtet ist!

Es sind die Ports 80 und 8000: Web und mein Stream Radio!

Nun meine Frage:

Kann man eine Firewall so konfigurieren, dass wenn ein bestimmtes Verhältniss an eingehenden Verbindungen und Verbindungzeit überschritten wird die Firewall die eingehende IP für eine bestimmte Zeit blockiert?

Wenn z.B. 34 Verbindungen innerhalb von 10 von der IP XXX an port 80 verfolgen, soll die Firewall die IP XX für 5 Stunden Blockieren!

Ist sowas möglich? Wenn ja, kann mir jemand bitte sagen wie?

Meine ICQ UIN ist 155141, falls jemand Kontakt aufnehmen möchte!


Vielen Dank für jede Bemühung :)

codc
Posts: 97
Joined: 2004-01-08 02:55
Location: Tübingen

Re: Firewall: Nach xx Verbindungen in XX Minuten von IP XX zu Port XX blocken!

Post by codc » 2006-06-13 18:52

Mal eine blöde Frage - wieso willst du dir den Stress machen. Wenn deine Dienste sicher konfiguriert sind kann dir das doch egal sein. Wäre mir persönlich die Gefahr zu gross dass ich auch nicht-bösen Netzverkehr blocke.

Wenn du Angst vor einem erfolgreichen Angriff auf die beiden Dienste hast dann würde ich die Zeit nutzen mal die Konfiguration zu überprüfen.

braindead
Posts: 250
Joined: 2002-10-22 09:49
Location: vorm Rechner

Re: Firewall: Nach xx Verbindungen in XX Minuten von IP XX zu Port XX blocken!

Post by braindead » 2006-06-13 19:40

codc wrote:Mal eine blöde Frage - wieso willst du dir den Stress machen. Wenn deine Dienste sicher konfiguriert sind kann dir das doch egal sein. Wäre mir persönlich die Gefahr zu gross dass ich auch nicht-bösen Netzverkehr blocke.
wenns ein dos ist der den Server in die Knie zwingt kann das schon seinen sinn haben.

Zu dem Problem an sich, ich hab sowas mal mit den Apache logfiles gemacht. Wenn dir sowas weiterhilft könnte ich das mal raussuchen.

Anonymous

Re: Firewall: Nach xx Verbindungen in XX Minuten von IP XX zu Port XX blocken!

Post by Anonymous » 2006-06-13 19:45

Hallo!

Danke erstmal für den Hinweis!
Wie muss eine solche Konfiguration aussehen um solche Angriffe zu blockieren?

mfg

atdheu

codc
Posts: 97
Joined: 2004-01-08 02:55
Location: Tübingen

Re: Firewall: Nach xx Verbindungen in XX Minuten von IP XX zu Port XX blocken!

Post by codc » 2006-06-13 20:36

braindead wrote: wenns ein dos ist der den Server in die Knie zwingt kann das schon seinen sinn haben.
Vielleicht stehe ich auf dem Schlauch aber man verhindert so nur maximal die Hälfte des Traffics oder sehe ich das falsch? Ein potentieller DOS kann dann kurz an die neue Situation angepasst werden und das Spiel geht von neuem los.

Meist kommen solche Sachen aber nach meiner Erfahrung von Dialup-Verbindungen und dynamischer IP. Da hat man normalerweise nicht genug Bandbreite im upload für einen wirkungsvollen DOS. Feste IP ist ja kein Problem zu blocken oder abuse-Mail.

Kann aber sein dass ich da gerade gewaltig auf dem Schlauch stehe. Ich habe gerade keinen Root-Server und bin mit den drei Servern @work die ich gerade nebenbei betreue ausgelastet und die Kisten stehen hinter einem Router und wir haben nur eine DSL-Anbindung ans Internet - also brauche ich mir um so etwas gerade keine Gedanken machen.

braindead
Posts: 250
Joined: 2002-10-22 09:49
Location: vorm Rechner

Re: Firewall: Nach xx Verbindungen in XX Minuten von IP XX zu Port XX blocken!

Post by braindead » 2006-06-14 10:56

leider ist dem nicht so. Viele Dienste schicken viel größere Packete zurück als die empfangen haben. Eine http anfrage z.B. hat selten mehr als 100 Byte "GET forum/posting.php?mode=reply&t=41085" dazu noch ein paar Header das wars. Das was zurück kommt sind in dem Fall ca. 8 kb was doch deutlich mehr ist (auf aneren Seiten vielleicht noch viel mehr). Hier nochmal ein Link wie das in der Praxis aussehen kann http://www.heise.de/newsticker/result.x ... &words=DNS

khark

Re: Firewall: Nach xx Verbindungen in XX Minuten von IP XX zu Port XX blocken!

Post by khark » 2006-06-14 11:49

Hallo,

fail2ban kann sowas. Allerdings defaultmäßig nur für SSH und einige Apache Angriffe + vsftpd. Also müsstest du wohl die entsprechenden regulären Ausdrücke selbst erstellen, die du auf die Logfiles anwendest, damit fail2ban weiß, wann er wen sperren soll.

Die Homepage von fail2ban lautet: http://fail2ban.sourceforge.net/
Ich denke aber, das es mittlerweile in den größeren Distributionen vorkompilierte Pakete geben sollte. Einfach mal gucken.
(Bei Debian ist es erst ab Etch dabei.)

Wenn es sich nicht nur bloss um sinnlose HTTP-Anfragen handelt, kann dir evtl. mod_security von Apache weiterhelfen.

Wenn es sich immer um die selben IPs handelt, von denen der Datenmüll kommt hilft vielleicht ein statisches eintragen der IPs in iptables mit der Aktion DROP.

MfG Khark

lord_pinhead
Posts: 774
Joined: 2004-04-26 15:57

Re: Firewall: Nach xx Verbindungen in XX Minuten von IP XX zu Port XX blocken!

Post by lord_pinhead » 2006-06-14 16:03

Da könnte vielleicht auch mod_evasive helfen, was allerdings dein Streamingserver nachts noch online macht ist mir ein Rätsel, würde ich abschalten und das wars dann.

Der Sinn eines DoS kann auch einfach nur aufbrauchen des Traffics sein, muss ja nicht immer Serverabsturtz sein. Aber so wie Braindead das mit dem Apache geschrieben hast, geht es ja auch mit DNS (DNS Amplification Attacks), das kommt in dem Heisebericht schlecht raus. Dagegen kann man absolut gar nichts machen weil der Angreifer schlecht gesicherte DNS nutzt, die schicken dir einfach nur die Antwortpackete, das zwingt dich im schlechtesten Fall in die Knie.

Das blocken von der IP nutzt ja auch nicht wirklich etwas, den der macht fröhlich weiter, und das macht die Leitung ja auch dicht. Sowas is blöd zu blockieren, da hilft einfach nur Loggen und dann Abusemails verschicken und hoffen das es aufhört. Sobald er wahrscheinlich etwas gegen die Angriffe macht, wird die gegenseite auf etwas anderes umschwenken.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11139
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Firewall: Nach xx Verbindungen in XX Minuten von IP XX zu Port XX blocken!

Post by Joe User » 2006-06-14 16:19

Für den HTTPd reicht auch ein Redirect (notfalls per mod_rewrite) auf http://256.256.256.256/ 8)
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

lord_pinhead
Posts: 774
Joined: 2004-04-26 15:57

Re: Firewall: Nach xx Verbindungen in XX Minuten von IP XX zu Port XX blocken!

Post by lord_pinhead » 2006-06-14 18:46

Hey, die IP gibts ja gar nicht *rofl* Problem an der Sache ist, die meisten Bots erkennen den Redirect ja gar nicht an weil der nicht mit einprogrammiert wurde, jedenfalls die schlechten Scriptkiddie Varianten *G* Berichtige mich, aber mod_rewrite schickt dem Client eine 302 mit der neue URL. Wenn der Bot das jetzt nicht anerkennt, ist die Umleitung eigentlich schwachsinn.

debianneuling
Posts: 16
Joined: 2006-04-19 09:51

Re: Firewall: Nach xx Verbindungen in XX Minuten von IP XX zu Port XX blocken!

Post by debianneuling » 2006-06-15 09:07

atdheu wrote:Kann man eine Firewall so konfigurieren, dass wenn ein bestimmtes Verhältniss an eingehenden Verbindungen und Verbindungzeit überschritten wird die Firewall die eingehende IP für eine bestimmte Zeit blockiert?
Vielleicht hilft dir folgendes iptables-schnipsel, das ssh Verbindungsversuche auf 3 pro Minute limitiert:

Code: Select all

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT 
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl  --name SSH -j LOG --log-prefix "SSH_brute_force " 
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60   --hitcount 4 --rttl --name SSH -j DROP 
P.S. hab das Skript nie getestet, weil ich das mit SSH dann doch anders gemacht hab ;-)

User avatar
Joe User
Project Manager
Project Manager
Posts: 11139
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Firewall: Nach xx Verbindungen in XX Minuten von IP XX zu Port XX blocken!

Post by Joe User » 2006-06-15 09:56

Lord_Pinhead wrote:Berichtige mich, aber mod_rewrite schickt dem Client eine 302 mit der neue URL. Wenn der Bot das jetzt nicht anerkennt, ist die Umleitung eigentlich schwachsinn.
Ich habe es zwar nicht gegengeprüft, aber per mod_rewrite lässt sich der Statuscode übergeben/ändern, sollte also auch mit 200 funktionieren.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

lord_pinhead
Posts: 774
Joined: 2004-04-26 15:57

Re: Firewall: Nach xx Verbindungen in XX Minuten von IP XX zu Port XX blocken!

Post by lord_pinhead » 2006-06-15 18:33

Du willst auf [R=200] hinaus, das funktioniert nicht weil mod_rewrite bei der Option nur Codes zwischen 300 und 400 annimmt, und per Default 302. mod_redirect macht das ja auch nur Intern, und nicht auf Clientseite. Hier mal der versuch mit mod_rewrite und Apache 1.3:
Configuration syntax error detected. Not reloading.

Syntax error on line 27 of /etc/apache/vhosts.conf:
RewriteRule: invalid HTTP response code for flag 'R'
Allerdings, wer sagt das ein PHP Script nicht einfach umleitungsheader schicken kann? Rein theoretisch wäre es einfacher möglich via PHP und ein dort residierendes "IDS"

Code: Select all

header("Location: http://127.0.0.1/");
[/quote]

Ob das der Bot erkennt weiß ich nicht, ich habs nicht getestet.