木曜日, 12月 04, 2025

IPv6始めました

 冷やし中華的タイトルではありますが、かなりマニアック(専門的)な話題です。

今更ながら、IPv6デビューと相成りました。
外から中への通信制御(通す・止める)こともパケットレベルで確認済みです。

というか、NUROさんからレンタルしてるルータ、フィルタリング設定に凄い癖があって、ちょっと悩みました。

※以下、IPv6のフィルタ設定(「有効IPフィルタ」(日本語…)をON、「フィルタリング方法」が「ハイブリッド」の前提)の話で、IPv4はデフォルトのままという前提(内→外のアウトバウンド方向だけOK)です。

で、この「癖」ですけど、一言(?)でいえば、

「ステートフルのフリをしているけど、実は全然ステートフルじゃないやん!(メ゚皿゚)」

というところ。

ファイアウォールにおいては一般的ですが、以下の2つのルールを設定するとします。

  • アウトバウンド方向(内→外。NUROルータ的には「アップストリーム」)は全許可
  • インバウンド方向(外→内。NUROルータ的には「ダウンストリーム」)を全拒否

※インバウンド方向のルールは、いわゆる、Cleanup Rule(s)ですね。


すると…インバウンド方向どころかアウトバウンド方向までIPv6通信が出来なくなります。(´・ω・`)


ここで、インバウンド方向のフィルタを削除すると、IPv6通信が可能になります。
※明示的に許可していないので、インバウンド方向の通信が出来ない点では一緒。

もちろん、フツーのファイアウォールなら、何事もなく想定通りに動きます。
通信セッションを監視して、パケットを通す通さないを判断している(=ステートフル)だから当然ですね。

ところが、NUROルータはどうやらそうではなく、中ではステートレスなパケットフィルタが動いていて、implicit rules(暗黙のルール)で、Cisco様のACLでいう「established」な通信を通すようになっているのではないかと。

もちろん、明示的にestablishedなパケットを許可する・拒否することは出来ません。

これでもまあ実用的には…と思っちゃいがちなのですが、ステートレスなパケットフィルタを扱うことにおいて、不安(試してないので、あくまで不安なだけですが)は2つあります。

  1. UDPにはセッション(コネクション)の概念がないので、establishedを使ったルールは書けません。となると、サーバ側はアウトバウンド方向のUDPをフルオープンにしておかないと、向こうはランダムでポートアサインするので通信できません。これは最小権限の原則に反するので、かなり嫌な感じです。
  2. ちょっと深刻なのですが、ACKフラグを立てたパケットなら素通し(もちろん端末側で拒否するでしょうが、届くことは届く)ってことです。となると、TCP通信での「ACK flooding攻撃」が成立します。
    ※いきなりACKフラグが立っているTCPパケットを出そうと思うと、パケットをねつ造しないとできないですが、ねつ造が不可能というわけでもない…インターネットをまともに通るかは別ですが。

NUROの網側で、その辺守られてたら…いいなぁと思います。

この際、ルータは全スルーにして、その下でIX2105にでも任せようかな、とも思ったですが、そうするとこのルータのWifi機能で繋がる機器が危険に晒されるし、ルータそのものも危ないかも(IPv4でしか接続できないかもですけど)と思います。

悩ましいなぁ…。

0 件のコメント:

コメントを投稿