Verstößt gegen die Hash:net-Port-Unterstützung 0.0.0.0/0

Verstößt gegen die Hash:net-Port-Unterstützung 0.0.0.0/0

Gibt es eine Möglichkeit, 0.0.0.0/0 zum IP-Set-Typ Hash:net,port hinzuzufügen? Es scheint nur Präfixlängen von 1-32 zu unterstützen, aber was ist, wenn ich einen Eintrag in meinem IP-Set-Hash haben möchte, der den gesamten IP-Verkehr auf einem bestimmten Port unterstützt? Zum Beispiel

ipset create testset hash:net,port
ipset add testset 0.0.0.0,22
iptables -I INPUT 1 -m set --match-set testset src, src -j ACCEPT
iptables -I INPUT 2 -j LOG --log-prefix "** FIREWALL **"

wird nichts tun. SSH-Verkehr trifft auf die Firewall und generiert ein Protokoll. 0.0.0.0/0 wird nicht als gültige CIDR-Notation akzeptiert, obwohl es so aussieht, als ob sie es in Revision 2 zu hash:net,iface hinzugefügt haben. Mir ist bewusst, dass ich den Port in einem Bitmap:Port speichern und ihn auf seine eigene iptables-Regel anwenden könnte. Ich möchte Ports jedoch ausdrücklich in einem Hash speichern, da einige Ports sich möglicherweise für die Quell-IP-Adresse interessieren und andere nicht, und ich möchte keinen separaten Satz für 0.0.0.0/0 pflegen.

Antwort1

Die korrekte Syntax wäre 0.0.0.0/0, da 0.0.0.0 standardmäßig 0.0.0.0/32 ist. Wie Sie jedoch festgestellt haben, wird dies nicht unterstützt:

# ipset add testset 0.0.0.0/0,22
ipset v7.3: The value of the CIDR parameter of the IP address is invalid

Sie können stattdessen denselben Trick verwenden, der in OpenVPN beim Überschreiben von Routen verwendet wird: Teilen Sie 0.0.0.0/0 in zwei Hälften: 0.0.0.0/1 und 128.0.0.0/1:

ipset add testset 0.0.0.0/1,22
ipset add testset 128.0.0.0/1,22

Notiz:

Normalerweise für einen Server, auf dem einlokalSSH-Server, deriptablesDie Parameter sollten wahrscheinlich folgendermaßen aussehen:

iptables -I INPUT 1 -m set --match-set testset src,dst -j ACCEPT

Da wir uns imEINGANGKette, BedeutungEmpfang, src,dstbedeutet, die Remote-IP (Quelle) und den lokalen (Ziel-)Port zu prüfen, während src,srcbedeuten würde, die Remote-IP (Quelle) und den Remote-Port (Quelle) zu prüfen. Dies kann nur dazu verwendet werden, um Antwortverkehr von Remote-SSH-Servern zuzulassen, aber dies wird normalerweise bereits -m conntrack --ctstate ESTABLISHEDanderswo erledigt.

verwandte Informationen