
ipset型hash:net、portに0.0.0.0/0を追加する方法はありますか? 1-32のプレフィックス長のみをサポートしているようですが、ipsetハッシュのエントリが特定のポートのすべてのIPトラフィックをサポートするようにするにはどうすればよいですか?例えば
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 **"
何もしません。 SSH トラフィックがファイアウォールに到達し、ログが生成されます。 0.0.0.0/0 は改訂 2 の hash:net,iface に追加されるように見えますが、有効な CIDR 表現としては許可されません。ポートをbitmap:portに保存し、それを独自のiptablesルールに適用できることを知っています。ただし、一部のポートは src IP アドレスに注意を払いますが、他のポートはそうではないため、ポートをハッシュに保存したいと思っています。
答え1
0.0.0.0のデフォルト値は0.0.0.0/32なので、正しい構文は0.0.0.0/0を使用することです。残念ながら、これはサポートされていません。
# ipset add testset 0.0.0.0/0,22
ipset v7.3: The value of the CIDR parameter of the IP address is invalid
あなたができることは、パスをオーバーライドするときにOpenVPNで使用されているのと同じトリックを使用することです。
ipset add testset 0.0.0.0/1,22
ipset add testset 128.0.0.0/1,22
メモ:
通常、実行のために地元のSSHサーバー、iptablesパラメータはおそらく次のようになります。
iptables -I INPUT 1 -m set --match-set testset src,dst -j ACCEPT
私たちは以来入力するチェーン、意味買収はsrc,dst
、リモート(ソース)IPとローカル(宛先)ポートを確認するという意味で、リモート(ソース)src,src
IPとリモート(ソース)ポートを確認するという意味です。唯一の目的は、リモートSSHサーバーからの応答トラフィックを許可することですが、これは通常-m conntrack --ctstate ESTABLISHED
他の場所ですでに処理されています。