Ubuntu 22.04 iptablesコマンドが機能しない

Ubuntu 22.04 iptablesコマンドが機能しない

netfilterに初めてアクセスし、現在3つのインターフェイスeth0/eth1/eth2を使用するアプリケーションを実行しています。私のアプリケーションは2つのサーバーで実行されます。どちらのサーバーも、独自のインターフェース(eth0 / eth1 / eth2)を介してアクセスして互いに通信できます。

Ubuntu 18.04(カーネルバージョン4. *)では、iptablesコマンドを使用してそれら間の通信を中断します。

22.04(カーネルバージョン6.2。*)では、同じiptableコマンドを使用して2つのサーバー間の通信を中断しましたが、期待どおりに機能しませんでした(私のアプリケーションコードは同じままです)。 - 私のアプリケーションには存在を報告するメカニズムがあります。接続可能なネイバーサーバーの数 - 22.04に適用されたiptablesルールを使用すると、まだ他のサーバーに接続できることが報告されます(18.04ではそうではありません)。

2つのカーネルバージョン間でネットワークトラフィックがフィルタリングされる方法に多くの変更があることがわかります(最新バージョンにはより多くのツールがあります)。

nftablesとの衝突を避けるためにufwを削除しました。 1つの観察は、ルールを適用したときにアプリケーションがネイバーサーバーに接続できないことをしばらく報告してから、突然アクセスできるようになり、ルールを上書きしたことです。わかりません。

今、私が逃した部分を確認するためにここに助けを求めてください。

-A INPUT -s x.x.x.x/32 -d y.y.y.y/32 -i eth2 -j DROP
-A INPUT -s x.x.x.y/32 -d y.y.y.x/32 -i eth1 -j DROP
-A INPUT -s x.x.y.y/32 -d y.y.x.x/32 -i eth0 -j DROP

-A OUTPUT -s y.y.y.y/32 -d x.x.x.x/32 -o eth2 -j DROP
-A OUTPUT -s y.y.y.x/32 -d x.x.x.y/32 -o eth1 -j DROP
-A OUTPUT -s y.y.x.x/32 -d x.x.y.y/32 -o eth0 -j DROP

注:すべてのルールはチェーンに配置され、他のルールよりも優先されます。

Chain INPUT (policy DROP)
target     prot opt source               destination
DROP       all  --  xxxx  yyyy
DROP       all  --  zzzz  AAAA
DROP       all  --  BBBB  CCCC

答え1

Ubuntu 22.04でデフォルトnftablesで使用されています。

Ubuntu 22.04 LTSの新しいセキュリティ機能は何ですか?

nftablesをデフォルトのファイアウォールバックエンドとして使用する

Linuxのファイアウォールは、Linuxカーネルのファイアウォールメカニズムと、ユーザー空間でファイアウォールを構成するために使用されるツールの2つのコンポーネントで構成されています。 Linuxカーネルは、伝統的にiptables / xtablesと最新のnftablesという2つの異なるファイアウォールポリシーサブシステムをサポートしてきました。 nftablesは、特にデュアルスタックIPv4 / IPv6システムの場合、ファイアウォールルールを作成して展開するときのパフォーマンスと柔軟性の点でかなりの利点を提供します。既存のiptablesユーザースペース管理ツールはnftablesカーネルバックエンドを構成し、既存のiptablesパラダイムでサポートされていないより柔軟なルールを作成できるようにするための新しいnftユーザースペースツールも提供されます。

iptablesルールをnftと で変換できます。たとえば、iptables-translateipt6ables-translate

iptables-translate -A INPUT -s x.x.x.x/32 -d y.y.y.y/32 -i eth2 -j DROP

詳しくはマンページをご覧ください。

iptablesに戻ります。

優先順位を表示および変更するには、次のコマンドを使用します。

update-alternatives --config iptables 

出力例:

  Selection    Path                       Priority   Status
------------------------------------------------------------
* 0            /usr/sbin/iptables-nft      20        auto mode
  1            /usr/sbin/iptables-legacy   10        manual mode

最高の優先順位を次に設定しますiptables

sudo update-alternatives --install /usr/bin/iptables iptables /usr/sbin/iptables-nft 30

デフォルトに設定:

sudo update-alternatives  --set iptables /usr/sbin/iptables-legacy

UFWとnftを無効にします。

sudo systemctl disable --now ufw 
sudo systemctl disable --now nftables
sudo apt install iptables-persistent
sudo systemctl enable --now iptables

関連情報