Einige der IPs öffnen Tausende von Verbindungen meines Servers. Ich habe einen Ubuntu 14-Server. Ich überprüfe die Gesamtzahl der Verbindungen mit folgendem Befehl:
netstat -an | grep tcp | awk '{print $ 5}' | cut -f 1 -d: | sortieren | uniq -c | sort -n
Dann verwende ich die folgende iptables-Regel, um die IP des Täters zu blockieren.
iptables -I INPUT 1 -s xxxx -j DROP
Es funktioniert alles gut und blockiert die IP-Adresse. Ich kann jedoch nicht rund um die Uhr online bleiben, um den Server zu überwachen. Ich habe mich gefragt, ob es ein Shell-Skript gibt, mit dem ich es automatisch ausführen kann. Wenn eine IP beispielsweise zu einem beliebigen Zeitpunkt mehr als X Verbindungen öffnet, sollte sie automatisch durch die oben genannte iptables-Regel gesperrt werden.
quelle
Antworten:
Erfinden Sie das Rad zunächst nicht neu. Genau dafür
denyhosts
ist gedacht:Soweit ich weiß,
denyhosts
ist nur fürssh
Verbindungen, aber es gibt auch sofail2ban
ziemlich alles:Beide sind in den Repositories verfügbar:
Sie können dies auch skripten, wenn Sie möchten. Etwas wie:
Das
awk
extrahiert die IPs und zählt sie und druckt nur diejenigen, die öfter erscheinen alsmax
hier (hier-vmax=100
ändern Sie sie entsprechend). Die IPs werden dann einer while-Schleife zugeführt, in der die entsprechendeiptables
Regel ausgeführt wird.Um dies rund um die Uhr auszuführen, würde ich einen Cronjob ausführen, der den Befehl über jede Minute oder so ausführt. Fügen Sie diese Zeile hinzu
/etc/crontab
quelle
fail2ban
aber nicht nur für ssh. Es funktioniert auch gut für Port 80. Siehe zum Beispiel hier , hier und hier .Eine mögliche alternative Option besteht darin, die problematischen IP-Adressen innerhalb des iptables-Regelsatzes mithilfe des
recent
Moduls zu identifizieren und zu behandeln . Die Herausforderung bei dieser Methode ist das Standard-Hitcount-Limit von 20, daher muss man entweder von den Standardeinstellungen abweichen oder übergeordnete Carry-Zähler erstellen, um einen höheren Hitcount-Triggerpunkt zu erreichen.Das folgende Beispiel stammt aus meinem iptables-Regelsatz und sperrt eine IP-Adresse für etwas mehr als 1 Tag, wenn in weniger als 12 Minuten 80 neue TCP-Verbindungen auf Port 80 hergestellt werden. Sobald Sie sich auf der Liste der Bösewichte befinden, wird bei jedem Verbindungsversuch der 1-Tages-Zähler auf 0 zurückgesetzt. Diese Methode kann maximal 400 Treffer erreichen, bevor eine Erweiterung auf einen anderen Übertrag erforderlich ist (und ich habe eine andere Übertragskette getestet). Beachten Sie, dass der veröffentlichte Code über die Infrastruktur verfügt, mit der nur mehrere kürzere Zeitauslöser für eine lange Zeit gesperrt werden können. Derzeit habe ich es so eingestellt, dass es beim ersten Auslöser nur für eine lange Zeit gesperrt wird.
quelle