目次
SPIとは
SPI(Stateful Packe Inspection)とは、通信の状態(ステート)を考慮したより高度なパケットフィルタです。「ステートフル」とは、通信の状態をきちんと考慮していることを意味します。SPIは設定も簡単で、「許可した通信の戻りだけを自動的に許可する」ようなよりセキュアなパケットフィルタが可能です。その他にも各種プロトコルのヘッダの整合性のチェックなども行うことが可能です。
以降で通常のパケットフィルタと、SPIのパケットフィルタについて解説します。
通常のパケットフィルタ
ネットワーク上の通信は、ほとんどの場合で双方向です。何らかのデータを送信すると、そのデータに対する返事が返ってきます。パケットフィルタを行うためには、「通信は双方向」ということを考慮して適切に設定しなければいけません。
通常のパケットフィルタは、受信したパケットのIPアドレスやポート番号などをチェックして、パケットを許可するか拒否します。通常のパケットフィルタを利用していると、リクエストとそのリプレイのそれぞれの方向でどのような通信を許可するかの条件をあらかじめ設定しておかなければいけません。そして、リクエストとリプライでそれぞれ別々の条件を設定しなければいけません。つまり、通常のパケットフィルタでは、通信はリクエストとそのリプライから成り立っているという通信の状態は特に考慮せず、パケット単位でファイアウォールを通過させるかどうかを決めているだけです。
条件を作成する際、サーバ側のアプリケーションのポート番号はウェルノウンポートで決まっています。ところが、クライアント側のアプリケーションのポート番号はダイナミックに決められることがほとんどです。サーバからのリプライを通過させるために、ファイアウォールで許可するポート番号の範囲が広くなってしまいます。また、クライアントは複数存在するので、ファイアウォールを通過する通信のIPアドレスはある程度の範囲で指定することになります。許可するパケットのIPアドレスやポート番号を範囲指定しなければいけないということは、不正なパケットがファイアウォールを通過できてしまう危険性が増すことになります。
SPIのパケットフィルタ
SPIのパケットフィルタは、通信が双方向であることを考慮しファイアウォールを通過する通信の状態を管理してフィルタリングします。通信の状態(ステート)をもう少し具体的に考えます。アプリケーションの通信には、次のような特徴があります。
- TCPを利用する場合、TCPの3ウェイハンドシェイクが行われる
- リクエストとリプライでは、IPヘッダ、TCP/UDPヘッダの宛先と送信元が入れ替わっている
こうした通信の状態を踏まえて、SPIのパケットフィルタは、次のように動作します。
- 許可するアプリケーションの条件を設定する
- SPIによるパケットフィルタでは、クライアントアプリケーションのリクエストパケットがファイアウォールを通過できるように条件を設定します。
- ファイアウォールは自動的にリプライパケットを許可する条件を作成してパケットを転送
- クライアント側からのパケットを受信すると、ファイアウォールはパケットのIPヘッダやTCP/UDPヘッダ、アプリケーションヘッダなどを解析して、自動的にそのリプライパケットのIPアドレス、ポート番号の組み合わせだけをピンポイントで許可する条件を作成し、パケットを転送します。自動的に作成するリプライパケットを許可する条件は、基本的にはリクエストの宛先と送信元を入れ替えている条件です。
- 返ってきたリプライパケットを転送して、セッション情報を保持する
- リプライパケットが返ってくると、自動的に作成された条件によってパケットが許可されることになります。そして、ファイアウォールではクライアントアプリケーションとサーバアプリケーション間の通信の状態をセッション情報として管理し、ファイアウォールを経由したアプリケーションの通信ができるようにします。なお、クライアントアプリケーションとサーバアプリケーションの通信が終了すると、セッション情報が削除されます。
また、SPIでのパケットフィルタは、TCPヘッダのフラグ情報の整合性を確認して、不正なパケットを拒否することも可能です。さらに、アプリケーションごとの通信の特徴を踏まえたフィルタリングを行うことも可能です。なお、自動的にリプライパケットを許可する条件を作成する機能を指して、ダイナミックパケットフィルタリングと呼ぶこともあります。
セキュリティの基礎
- SSLとWi-Fiの暗号化の違い
- セキュリティの目的 ~機密性/完全性/可用性~
- セキュリティの脅威と対策の概要
- マルウェア ~ユーザにとって有害なソフトウェア~
- 認証の基礎 ~正規のユーザ/デバイスですか?~
- 覚えやすくて推測されにくい安全なパスワードの作り方
- 暗号化の概要
- ハッシュ関数とは
- SSLとは? ~アクセス先は本物です!データは盗聴/改ざんされません!~
- ファイアウォールの概要 ~正規の通信のみを転送~
- IDS/IPS ~不正アクセス対策~
- Cisco アクセスコントロールリストの概要
- パケットフィルタ ~不正な通信をブロックするCisco ACLの最も多い用途~
- SPI(Stateful Packet Inspection)の概要
- Cisco ACLによるパケットフィルタの設定と確認
- 名前付きACL(Named ACL)
- タイムベース(Time-based)ACL
- Cisco ACLによるパケットフィルタの設定例
- 標準ACLと拡張ACLのパケットフィルタリングをより深く理解するための演習 ~標準ACL~
- 標準ACLと拡張ACLのパケットフィルタリングをより深く理解するための演習 ~拡張ACL~
- リフレクシブ(Reflexive)ACL ~戻りの通信を自動的に許可~
- リフレクシブ(Reflexive)ACLの設定例
- Catalystスイッチのパケットフィルタリング RACL/VACL/PACL
- RACL/VACL/PACLの設定と確認コマンド
- uRPFの設定例
- VTYアクセス制御
- DHCPスプーフィング ~DHCPサーバを偽装~
- DHCPスヌーピング
- Cisco DHCPスヌーピングの設定と確認コマンド
- Cisco DHCPスヌーピングの設定例
- ARPスプーフィング
- Dynamic ARP Inspection
- Cisco Dynamic ARP Inspectionの設定と確認コマンド
- TCPインターセプトの設定例
- WAF(Web Application Firewall)の概要
- 電子メールのセキュリティ