PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DROP IP bei zu vielen Anfragen



ManuelW
14.07.06, 23:55
Hiho, ich habe Stunden lang gesucht und probiert aber nix passendes gefunden.

Kurz zum Thema:
Ich hab ein Server mit einem sehr gut besuchten Board am laufen.
Seit kurzem gibt es da jemand, der wohl meint das Board "runter laden" zu wollen.
Der macht jedenfalls mit einem Programm etliche Verbindungen auf (netstat) und
das Board lahmt unter der Last.

Nun habe ich den erstmal manuell per iptables ausgesperrt, was aber bei IP Wechsel
nicht mehr klappt.

Kennt nun jemand ein Script, was die Verbindungen überwacht und bei einem limit
an Verbindungen von einer IP aus eine temp. DROP Regel in iptables schreibt.
Diese nach X Minuten wieder löscht..

wäre für Tips dankbar

PS: mod_evasive hab ich im apache schon versucht, bringt aber nicht den gewünschten Effekt.

danke manu

ManuelW
15.07.06, 11:04
Ich habe mir nochmal Gedanken dazu gemacht, eigentlich sollte das ein nicht allzuschweres Shellscript schaffen.



maxwert=20

while :; do

rückgabewert = netstat -apn|grep :80 |awk '{print $5}'|sort

rückgabewert = $rückgabewert ohne :* (port abtrennen)
$rückgabewert nach gleichen ip zählen lassen

if [rückgabewert -gt maxwert]; then
iptables -A INPUT -i eth0 -p tcp --dport 80 -s $ip -j DROP
fi

sleep 60

done


Irgendwie so in der Richtung. Nach einer zeitspanne sollten die Rules auch wieder gelöscht werden.

Evtl. gibts ja sowas auch schon als Script oder Programm, ich hab leider nix finden können.

manu

Kernel-Error
15.07.06, 14:39
Was du suchst ist ein IDS-System. Snort soll da wohl gut mit iptables zusammen arbeiten.

Such einfach mal nach IDS zusammen mit Snort. Goggle schmeisst dich da mit Infos zu!

So long


Kernel

ManuelW
15.07.06, 14:47
alles klar thx, ich werd mich auf die Suche machen :)

framp
15.07.06, 18:02
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 1200 --hitcount 2 --rttl --name SSH -j LOG --log-prefix SSH_brute_force
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 1200 --hitcount 2 --rttl --name SSH -j DROP

habe ich angewandt um ssh Attacks auszusperren. Wenn man den Port auf 80 aendert und die Parameter -seconds und -hitcount anpasst sollte das auch eine Loesung sein. Allerdings Vorsicht! Zu enge Grenzen sperren auch normale User aus! :rolleyes:

ManuelW
15.07.06, 18:21
oh thx, das schaut natürlich noch wesentlich einfacher aus.

caspartroy
17.07.06, 22:58
@framp: funktioniert aber nicht so ganz... ich weiss nicht genau warum, aber ein nmap -sS -p 22 host und es werden wieder verbindungen akzeptiert (zumindest eine nach jedem nmap) offenbar reicht dazu ein tcp SYN packet oder so?
wie könnte man die regeln ergänzen, so dass es auch mit fake paketen funktioniert, aber den regulären gebrauch nicht beschränkt?