GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie lässt man iptables-Regeln ablaufen?

Lösung 1:

Wenn Sie meinen, dass iptables die Regel vollständig von selbst entfernt, können Sie dies meines Wissens nicht tun. Was ist der Zweck davon? Wenn Sie eine Art automatisches vorübergehendes Sperren benötigen, ist die Standardlösung fail2ban.

Alternativ können Sie einen Cron-Job verwenden, um die hinzugefügte Regel zu entfernen, oder, wenn Sie dies interaktiv tun möchten, einen at Arbeit:

iptables -I INPUT -s 192.168.1.100 -j DROP
echo "iptables -D INPUT -s 192.168.1.100 -j DROP" | at @10pm 

Sehen Sie sich auch recent an Modul von iptables. Dies mit seinem --seconds Option kann hilfreich sein, abhängig von Ihren tatsächlichen Bedürfnissen. man iptables für weitere Informationen.

Lösung 2:

Fügen Sie einen Kommentar mit einem Zeitstempel (wahrscheinlich Sekunden seit der Epoche) in die Regeln ein. Suchen Sie regelmäßig nach abgelaufenen Regeln.

Beachten Sie, dass der neueste Linux-Kernel Unterstützung für das dynamische Laden von IP-Adressen in einen Cache hat, der von iptable-Regeln konsultiert wird, anstatt von direkten iptables-Regeln.

Beispiel:

iptables  -A INPUT -s 192.168.200.100/32 -m comment --comment "expire=`date -d '+ 5 min' +%s`" -j DROP 
iptables -L INPUT -n --line-numbers | tac | perl -ne 'next unless /(^\d+).*expire=(\d+)/; if ($2 < time) { print "iptables -D INPUT $1\n"; }'

Sie können natürlich iptables -D INPUT $1 anstatt den Befehl zu drucken.

Lösung 3:

iptables hat eine Methode zum automatischen Hinzufügen von IP-Adressen zu einer Liste, wenn benutzerdefinierte Bedingungen erfüllt sind. Ich verwende Folgendes, um automatisierte Hackversuche auf meinen SSH-Port zu vermeiden:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --name ssh --seconds 60 --reap -j DROP

Dies trägt dazu bei, automatisierte Zugriffsversuche auf den Server einzuschränken, indem Verbindungsversuche von derselben IP-Adresse auf alle 60 Sekunden beschränkt werden.

Wenn Sie eine festgelegte Anzahl von Versuchen in einem Zeitrahmen zulassen möchten, z. B. 4 in 5 Minuten, und sie bei Fehlschlagen für einen längeren Zeitraum, z. B. 24 Stunden, auf die schwarze Liste setzen möchten, können Sie Folgendes tun:

iptables -X black
iptables -N black
iptables -A black   -m recent --set   --name blacklist   -j DROP

iptables -X ssh
iptables -N ssh
iptables -I ssh 1   -m recent --update    --name blacklist   --reap   --seconds 86400     -j DROP
iptables -I ssh 2   -m recent --update    --name timer       --reap   --seconds   600     --hitcount 4   -j black
iptables -I ssh 3   -m recent --set       --name timer   -j ACCEPT

iptables -A INPUT   -p TCP --dport ssh   -m state --state NEW -j ssh

Oben erstellen wir 2 Ketten; „ssh“ und „black“ und 2 Listen; "timer" und "blacklist".

Knapp; Die letzte oben gezeigte Kette ist der "Eingang" in die SSH-Kette.

  • Regel 1 in der ssh-Kette prüft, ob die Quell-IP in der Liste "Blacklist" steht. Wenn dies der Fall ist, wird die Verbindung getrennt und der 24-Stunden-Blacklist-Timer wird neu gestartet. Wenn Regel 1 falsch ist, gehen wir zu Regel 2 über.
  • Regel 2 in der ssh-Kette prüft, ob die Quell-IP mehr als 4 Verbindungsversuche in 5 Minuten unternommen hat. Wenn dies der Fall ist, sendet er das Paket an die Kette „black“, wo es zur Liste „blacklist“ hinzugefügt wird. Die Kette "schwarz" unterbricht dann die Verbindung und wir sind fertig.
  • Regel 3 in der Kette "ssh" wird nur erreicht, wenn Regel 1 und 2 falsch sind. Wenn dies der Fall ist, wird das Paket akzeptiert und die Quell-IP wird zur Liste "Timer" hinzugefügt, damit wir die Häufigkeit der Verbindungsversuche überwachen können.

Die Option „--reap“ weist den Kernel an, die Liste zu durchsuchen und alle Elemente zu löschen, die älter als das festgelegte Zeitlimit sind; 5 Minuten für die Liste "Timer" und 24 Stunden für die Liste "Blacklist".

Hinweis:Die zusätzlichen Leerzeichen dienen der Lesbarkeit und sind in Ihrem Shell-Skript optional.

Lösung 4:

IPTables hat eine eigens dafür erstellte Funktion:IP Set. Sie erstellen die Regel einmal und sie bleibt wie gewohnt bestehen, überprüft jedoch eine Reihe von IPs (oder Ports) auf Übereinstimmungen. Das Coole daran ist, dass dieses Set dynamisch und effizient aktualisiert werden kann, ohne den Rest der Firewall zu stören.

Die Hauptwebsite, Beispiele.

Um es zu verwenden, müssten Sie also immer noch at verwenden oder cron um die Entfernung zu planen.

Lösung 5:

Sie können fail2ban verwenden, um IP-Adressen zu sperren und die Zeitdauer zu konfigurieren, für die eine Adresse gesperrt wird.


Linux
  1. So leeren Sie die iptables-Regeln

  2. So fügen Sie benutzerdefinierte iptables-Regeln in der CSF-Firewall hinzu

  3. So erstellen Sie ein VPN

  4. Linux IPTables:So fügen Sie Firewall-Regeln hinzu (Beispiel:SSH zulassen)

  5. CentOS / RHEL :So lassen Sie iptable-Regeln über Neustarts hinweg bestehen

So verwenden Sie Port Knocking unter Ubuntu, um den SSH-Port zu verbergen

So konfigurieren Sie die iptables-Firewall unter Linux

Wie kann ich den tatsächlichen Status der SSH-Portweiterleitungsregeln anzeigen?

Gewusst wie:Grundlegende IPTables-Dateikonfiguration

So sperren Sie Ihren CentOS-Server mit IPTables

So sichern Sie eine Linux-Firewall mit IPTables-Regeln