【入門編】 IDS/IPSにおけるフラグメンテーション攻撃の検知と再構築の仕組み – インフラ・ネットワーク & クラウドセキュリティ防御ガイド

こんにちは!インフラやセキュリティの現場に身を置いていると、「パケット」や「ファイアウォール」といった言葉を毎日耳にするようになりますよね。でも、セキュリティの勉強を始めたばかりの頃は、専門用語の壁にぶつかって頭が痛くなってしまうことも多いはずです。

今回は、ネットワークセキュリティの世界でちょっと厄介なテーマである「IPパケットのフラグメンテーション(断片化)攻撃」と、それを防ぐIPS(不正侵入防御システム)の再構築の仕組みについて、身近な防犯の例えを交えながら、ゆっくり一歩ずつ紐解いていきたいと思います。

難しい技術用語が出てきても置いてけぼりにしませんので、安心してコーヒーでも飲みながら読んでいってくださいね!

—

1. そもそも「パケットの断片化」ってなに?(身近な例え話)

インターネットの世界では、私たちが送受信するデータ(メールやWebページの画像など)は、そのままの大きなサイズではなく、「パケット」という小さな封筒に細かく切り分けられて運ばれます。

ここで、こんな状況を想像してみてください。

> 【例え話:巨大な手紙と郵便ポスト】
> あなたが友達に、巻物のようにものすごく長い手紙を送りたいとします。しかし、郵便局のポストや配達用のバッグに入るのは、小さな封筒サイズまでというルールがあります。
> そこであなたは、長い手紙をハサミで何枚かの小さな紙切れにチョキチョキと切り分け、それぞれの封筒に「1枚目」「2枚目」「3枚目」と順番を書いてポストに投函しました。
> 受け取った友達は、届いた封筒を順番通りに並べてのり付けし、元の長い手紙に戻して内容を読みました。

これが、ネットワークでいう「パケットのフラグメンテーション(断片化)」と「再構築」の仕組みです。ネットワークの途中にあるルーターの制限(MTU:最大伝送単位)よりも大きなデータが流れてきたとき、ルーターが親切心でデータを細かく切り分けて(断片化して)宛先に送り届けてくれるのです。

—

2. 攻撃者はこの仕組みをどう悪用するの?(セキュリティの盲点)

一見すると便利な仕組みですが、ここにサイバー攻撃者の「悪巧み」が入り込む隙があります。

セキュリティ製品であるIDS(不正侵入検知システム)やIPS(不正侵入防御システム)は、ネットワークを流れるパケットを監視し、中に危険なデータ(例えば SELECT * FROM users のような怪しいSQL文や、ウイルス入りの通信)が含まれていないかをチェックする「門番」のような役割をしています。

しかし、攻撃者はこう考えました。
「怪しいデータを細切れのパケットにバラバラに切り分けて送り付ければ、門番(IDS/IPS)の目を欺けるんじゃないか?」

これがフラグメンテーション攻撃の基本手口です。

巧妙な手口の数々

  • オーバーラップ攻撃(重複断片化): わざとパケットの一部を重ね合わせて送り、IDSと実際に通信を受け取るサーバーの間で「解釈のズレ」を起こさせ、 IDSには無害に見せかけてサーバーには危険なデータを読ませる手法。
  • タイニーフラグメント攻撃(極小断片化): パケットを限界まで小さく分割し、通信の最初のヘッダー情報(IPヘッダー)の中に悪意あるデータを隠し込んで送りつける手法。

門番であるIDSが「うーん、このバラバラのパケットだけ見ても、何が書いてあるのかさっぱり分からないな……まあ、怪しくなさそうだから通しちゃえ!」と見逃してしまった結果、奥にいるサーバーに危険なデータが届いてしまうというわけですね。

—

3. IPSはどうやってこの攻撃を防ぐの?(再構築の魔法)

「バラバラにされると分からないなら、どうやって防げばいいの?」と思いますよね。ここで登場するのが、IPS(不正侵入防御システム)の「パケット再構築(Reassembly)機能」です。

優秀な門番(IPS)は、ただパケットをぼんやり眺めているだけではありません。頭の中で一時的に「パケットのパズル」を組み立てる作業を行っています。

IPSが行っている3つのステップ

1. 一時的なお預かり(バッファリング):
断片化されたパケット(IPヘッダーに MF (More Fragments) フラグやオフセット情報が入っているもの)を受け取ると、IPSはそれをすぐに奥へ通さず、自分のなかのメモ帳(メモリ領域)に一時的に保管します。
2. パズルのピース合わせ(再構築):
「これは1番目のピース」「これは2番目のピース」と、パケットに振られた番号(フラグメントオフセット)を確認しながら、バラバラだったデータを元の完全な形へと順番通りに復元します。
3. 検査と判定(インスペクション):
きれいな元の形に戻ったデータに対して、はじめてウイルスチェックや攻撃パターンのスキャンを行います。「おや、この中身は危険な攻撃コードだな!」と分かった時点で、その場で通信をブロック(ドロップ)します。

つまり、IPSは「一度パケットを自分で組み立て直してから安全確認をする」という、非常に手間の掛かる安全確認を裏で行ってくれているのです。

—

4. 現場で役立つ!IPSのフラグメンテーション対策と設定のコツ

実務のインフラ構築やセキュリティ運用において、このフラグメンテーション攻撃にどう備えればよいのでしょうか。オープンソースの代表的なIDS/IPSであるSnortや、クラウド・オンプレのファイアウォール製品での基本的な考え方を見ていきましょう。

設定・運用のポイント

実務では、無限にパケットを溜め込もうとするメモリ枯渇攻撃(DoS攻撃の一種)を防ぐため、再構築エンジンのリソース制限を適切に設定することが極めて重要です。

以下は、Snortなどの設定ファイル(snort.conf など)におけるフラグメンテーション再構築モジュール( frag3 や最新の stream エンジンなど)の概念的な設定例です。

# ==========================================
# IPフラグメンテーション再構築のチューニング設定例
# ==========================================

# フラグメンテーション処理モジュールを有効化
config min_ttl: 1
config checksum_mode: all

# プレプロセッサ設定:frag3エンジン(パケット再構築の心臓部)
# 攻撃者がメモリを枯渇させるのを防ぐため、同時に保持するパケット数やタイムアウト時間を制限します。
preprocessor frag3_global: max_frags 65536
preprocessor frag3_engine: policy windows detect_exhaustion timeout 60

# 【実務上のワンポイントアドバイス】
# 「policy」の設定は、社内で実際に稼働している主要なOS(WindowsやLinuxなど)に合わせるのが鉄則です。
# OSによって断片化されたパケットが重複したときの処理方法(上書きするか、無視するか)が異なるため、
# 門番(IPS)と本体(サーバー)の間で解釈のズレ(Ambiguity)が生じるのを防ぐためです。

インフラ担当者が現場で意識すべきこと

1. ポリシーの整合性:
先ほどのコードコメントにも書いた通り、IPSが想定するOSの挙動(ポリシー)と、実際にバックエンドで動いているサーバーのOSの挙動が一致していないと、攻撃者に見事に裏をかかれてしまいます。
2. パフォーマンスとのトレードオフ:
すべてのパケットを組み立て直して検査する作業は、CPUやメモリにそれなりの負荷をかけます。トラフィックが爆発的に多い環境では、IPSのサイジング(性能見積もり)を間違えると、セキュリティを強めた結果ネットワーク全体が遅くなってしまう「本末転倒」な事態になるので注意が必要です。
3. 不要な断片化のブロック:
現代のまともなネットワーク環境において、意図的なルーターの分割を除き、正当な通信で異常に細切れのパケットが大量に発生することは稀です。場合によっては、悪質なタイニーフラグメントを問答無用でドロップするようなファイアウォール側のルールを組み合わせるのも、実務では非常に効果的なアプローチとなります。

—

おわりに

今回は、IDS/IPSにおけるフラグメンテーション攻撃と、パケット再構築の仕組みについてお話ししました。

一見すると難解な「パケットの断片化」も、「大きな手紙を小さな封筒に分けて送り、受け取った人が元通りに並べ直す」という仕組みを思い出し、そして攻撃者はその隙(門番の確認不足)を突こうとしているんだなとイメージできれば、セキュリティの構造がぐっと身近に感じられるのではないでしょうか。

インフラや開発の現場に出ると、こうした目に見えないデータの世界で日々激しい攻防が繰り広げられています。ぜひ今回の知識をベースにして、安全で堅牢なネットワーク環境の設計に挑戦してみてくださいね。一歩ずつ、確実にスキルアップしていきましょう!

コメント

タイトルとURLをコピーしました