IPtables- Regeln können angepasst werden, um das zu erreichen, was Sie erreichen möchten .
Annahme: In Ihrem Embedded Linux ist das Netfilter-Modul kompiliert und vorausgesetzt, Sie kennen das Firewall-Konzept und haben zuvor iptables verwendet. Root-Zugriff wird angenommen. Wenn Sie sudo-fähig sind, fügen Sie sudo vor den Befehlen hinzu.
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
Die Syntax hat keine gewünschte Vebosität, aber die Zeile weist die Firewall-Polizei-Iptables an, dass Sie eine Regel an die vorhandene INPUT-Kette anhängen möchten. Das Argument -p tcp gibt an, dass diese Regel nur für TCP-Pakete gilt. Die meisten anderen Argumente basieren auf der Option -m, die für match steht und iptables mitteilt, dass die Regel für Pakete gilt, die den spezifischen Attributen entsprechen, nach denen wir suchen. Hier wird die Regel auf Pakete angewendet, die den Beginn neuer Verbindungen auf dem Weg zum TCP-Port 22 signalisieren. Wenn ein Paket diesen Attributen entspricht, notiert iptables die Adresse des Remote-Hosts in einer temporären Liste.
iptables -N LOG_AND_DROP
Die obige Regel führt tatsächlich eine Aktion mit einer anderen Kette aus. Um sie anzuhängen, müssen wir zuerst die Kette erstellen, die wir erstellt haben (z. B. LOG_AND_DROP).
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 20 --hitcount 4 --name DEFAULT --rsource -j LOG_AND_DROP
Diese Regel weist iptables an, nach Paketen zu suchen, die den Parametern der vorherigen Regel entsprechen und die auch von Hosts stammen, die bereits zur Überwachungsliste hinzugefügt wurden. Wenn iptables ein Paket sieht, das von einem solchen Host kommt, wird der zuletzt gesehene Zeitstempel für diesen Host aktualisiert. Die Argumente --seconds 20 und --hitcount 4 werden verwendet, um die zu blockierenden Hosts weiter einzugrenzen. Wenn ein Host innerhalb von 60 Sekunden vier- oder mehrmals versucht, eine Verbindung herzustellen, stimmt er mit diesem Teil der Regel überein, und wir springen (-j) ) zur LOG_AND_DROP-Kette.
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Technisch gesehen ist diese Regel für die INPUT-Kette nicht erforderlich, da für alle nicht übereinstimmenden Pakete standardmäßig die Richtlinie ACCEPT festgelegt ist. Ausfallsicher, wenn Sie eine restriktive Firewall erstellen, z. B. Standard-Ablehnung.
Anhängen, nachdem Feedback von @singh erhalten wurde. Ich wusste nicht, dass der Staat zugunsten eines Techie-Conntrack-Moduls (Connectiontracking) vertrieben wurde
Anstelle von zB:
-m state --state RELATED
-m conntrack --ctstate RELATED