ステートフルインスペクションで動的にポート開閉 YAMAHA,CISCO,アライド FW動作まとめ

インフラエンジニアをしてきて11年近くになりますが、実はインターネットルータを構築した事がほぼないんですよね。 以前、ある中小企業の拠点間接続にインターネットVPNを構築したことがありますが、それも10年くらい前。


かなり懐かしい話ですが、最近、ルーターのコンフィグをチェックしていていろいろと勉強になっています。その一つが、ルータのファイアウォール機能です。   基本的にインターネットに接続するルーターは、ファイアウォール機能で外部からの通信はほぼ遮断することになります。


そこで出てくるキーワードが「ステートフルインスペクション」です。これについてわかりやすく説明されたサイトから抜粋します。

ステートフルパケットインスペクション 【 SPI 】 Stateful Packet Inspection

 

この機能は、ファイアウォールを通過するパケットのデータを読み取り、内容を判断して動的にポートを開放・閉鎖する機能のことです。

 

ステートフルパケットインスペクションでは、LAN側から送信したデータをセッションログとして保管しておき、WAN側から到着したパケットがセッションログと矛盾しないか確認する。
上の例では、WAN側からACK信号がついたパケットを受信した際に、そのパケットに対応するデータがLAN側から送信されたかどうかセッションログを用いて確認する。もし、WAN側から送信されてきたパケットとセッションログが矛盾する場合にはパケットを遮断し、LAN内部のマシンを不正アクセスから保護する。

と便利な機能なんです。これを利用しない場合、戻りの通信を感がなければならないそうなんですが、この機能のおかげで外からは全部遮断して、内から外へはステートフルインスペクションで動的にポート開閉という感じになります。



ちなみに、メーカーや機器によって、実装状況に多少違いがあります。例えば、アライドのルーターにはこの機能が実装されていて、ファイアウォールが有効にすると機能も有効になります。
 
たとえば、LAN側のクライアントがインターネット上のサーバーと通信を開始したとします。ファイアウォールは、通信開始を検知すると該当セッションをテーブルに登録します。セッションは、ローカル側IPアドレスプロトコル、ポート、リモート側IPアドレス、ポートなどの情報からなります。
テーブルに記録されている間、セッションに該当するパケットは方向に関係なく通過させます。通信が終了するなどして一定時間通信が行われなくなると、テーブルからセッションを削除し、それ以降は同じサーバーからであっても、外部からのパケットは一切通過させません。このような処理を行うファイアウォールを、単純なパケットフィルタリング型ファイアウォールと対比して、ステートフルインスペクション型あるいはダイナミックパケットフィルタリングファイアウォールと呼びます。

そして、Cisco ASAやJuniperのSSGやSRXなどの主要なFWではステートフルインスペクションがデフォルトで有効な仕様なので、特に設定が必要ありません。


そこで、、、気になったのがヤマハなのです。あるYAMAHAルーターのコンフィグでダイナミックフィルターを定義してあったり、戻りの通信を許可してあったものを見たことがあったので、なぜか?と思ったら、YAMAHAは別で設定がいるようです。
 



この記事で、フィルタの設定を行う場合、「内から外へはtelnet等を許可したいが、 外から内へは拒否したい」というケースがありますが、 establishedフィルタを利用することにより、 これを簡単に実現することができますとあります。

以下に設定例を挙げます。
# pp select 1
pp1# ip filter 1 pass * * established
pp1# ip filter 2 pass * * tcp ftpdata *
pp1# ip pp secure filter in 1 2
この設定により、PP側からのtelnet等を拒否しつつ、LAN側からのtelnet等 は可能になります。ip filter 2の設定は、FTPを通すために必要です。
このestablishedを入れておけば、ステートフルインスペクションが機能するようです。機種によって設定も変わりますし、ちょっと注意が必要ですね。