web-dev-qa-db-ja.com

断片化されたパケットをnftablesにドロップします

Iptablesを使用すると、次のルールで断片化されたパケットをブロックできます。

iptables -A INPUT -f -j DROP

しかし、nftablesには同等のものはありません。それを行う方法はありますか?

1
Rfraile

Nftables Wiki または単にman nftから、ip frag-offを使用できます。現在(数回の試行錯誤の後)、3つのフラグ(予約済み、DF、MF)がこの値の上位3ビットに含まれており、テストから除外する必要があり、&操作が必要です。したがって、この:

nft 'add rule ip filter input ip frag-off & 0x1fff != 0 drop'

それをしますか...

...しかし、nf_conntrack_ipv4がロードされると(ほとんどの場合)、その特定のnf_defrag_ipv4パーツは フック優先度-4 で登録され、すべてのフラグメントを再構築します。つまり、その後の処理ではフラグメントは表示されません。したがって、チェーンはそれよりも低い優先度の値でフックする必要があります。これが完全な実例です:

nft add table filter
nft 'add chain filter predefrag { type filter hook prerouting priority -450; }'
nft 'add rule ip filter predefrag ip frag-off & 0x1fff != 0 drop'

おそらく、最初のパケットもオフセット0のフラグメントですが、MFが設定されています。したがって、それをキャッチするには、0x1fff0x3fffに置き換える必要があるかもしれません。

2
A.B

試してください:

iptables-translate -A INPUT -f -j DROP

結果:

nft add rule ip filter INPUT ip frag-off != 0 counter drop

iptables-comme from(debian Debian 4.9.82-1 + deb9u3(2018-03-02)x86_64 GNU/Linux:

apt install iptables-nftables-compat

https://wiki.nftables.org/wiki-nftables/index.php/Configure_chains#Base_chain_priority

またはnft 'ルールを追加inetfilter input ip frag-off 0x4000 counter accept'

0
zoeurk