【入門編】 hping3によるカスタムパケット生成とファイアウォールテスト – トラブルシューティング&ネットワーク運用監視実践ガイド

こんにちは!NOC(ネットワークオペレーションセンター)で日々、張り詰めた空気の中でパケットの奔流と格闘しているシニアエンジニアです。

データセンターの深夜、ふと鳴り響くアラート音。そして「あれ、新しいファイアウォールのルールを入れたのに、なぜか社外から特定のサービスに繋がらない……?」という冷や汗もののトラブル。インフラエンジニアなら、誰もが一度は経験する胃が痛くなる瞬間ですよね。

そんなとき、教科書通りの ping や traceroute だけでは、「本当に入口の門番(ファイアウォール)が通してくれているのか」の確証が得られなくて途方に暮れてしまうことがあります。

「一体、うちのパケットはどこでブロックされているんだ!?」

今回は、そんな現場の迷えるエンジニアの強い味方、hping3を使ったカスタムパケット生成とファイアウォールテストの極意を、身近な例えを交えながらたっぷりお伝えしていきます。難しい専門用語に気後れする必要はありません。一歩ずつ、一緒に紐解いていきましょう!

—

1. ファイアウォールテストって、現実世界で言うとどんなこと?

まず、「パケットを自由にカスタマイズして送る」という感覚を掴むために、私たちの身近な世界に置き換えて考えてみましょう。

ネットワークの世界を「手紙や荷物を送る郵便配達」に例えてみます。
通常の ping コマンドは、郵便局の窓口から「そこに誰かいますかー?」と大きな声で叫んで、返事があるかを確かめるようなものです。誰でもいつでも叫べるので、厳重な警備員(ファイアウォール)がいると、「おや、怪しい声だな」とすぐに門前払いを食らってしまいます。

では、厳重なセキュリティを突破(あるいは正しくブロックされているかテスト)するにはどうすればよいでしょうか?
例えば、

  • 「宛先は普通の郵便のふりをして、中身はこっそりラブレター(TCPのSYNパケット)を入れてみよう」
  • 「封筒の裏に、存在しない差出人の住所(スプーフィング)を書いてみよう」
  • 「わざと真夜中に、郵便受けの隙間からこっそりチラシを差し込んでみよう」

このように、「手紙の封筒(ヘッダー)や中身(ペイロード)を自分の手で自由自在に作り変えて相手に送りつける」ことができるツール、それが今回主役として登場する hping3 です。

—

2. なぜ hping3 なのか? 標準ツールとの決定的な違い

私たちが普段お世話になる ping (ICMPプロトコルを使用)や traceroute は、ネットワークの疎通確認には最高のツールです。しかし、これらは「決まったルールに従って決まった手紙を出す」ことしかできません。

現代のデータセンターを守るステートフル・ファイアウォールは非常に賢くなっています。「あ、こいつはただの ping だな。セキュリティポリシーに基づき、とりあえず通しておこう」あるいは「このポートへの通信は禁止だ!」と、柔軟に判断します。

ここで hping3 の出番です。
hping3 を使えば、以下のような「意地悪なパケット」を自由自在に作ることができます。

  • 「Webサーバー(ポート80)宛てに見せかけた、実はSSH(ポート22)のふりをしたTCPパケット」
  • 「TCPの接続開始の合図である SYN フラグだけをピュッと飛ばすパケット」
  • 「あえてUDPの特定のポートを狙い撃ちするパケット」

「そんな危険なツール、使って大丈夫なの?」と思われるかもしれませんが、NOCの現場では、自分が管理するファイアウォールが本当に意図通りに動いているか(=意図しない不正なパケットをちゃんと弾いてくれているか)を確認する「セキュリティの健康診断」に欠かせない必須のスキルなのです。

—

3. 実践! hping3 でカスタムパケットを飛ばしてみよう

それでは、実際に手を動かして hping3 の世界を覗いてみましょう。
※注意:実務で試す際は、必ず自分が所有・管理している検証環境(テスト用のファイアウォールやサーバー)のIPアドレスに対して行ってくださいね。

基本のキ:TCPのSYNパケットを送ってみる

まずは、ターゲットのサーバーの特定ポート(ここではWebサーバーの 80 番ポート)に対して、TCPの接続開始の合図である SYN パケットを1通だけ送ってみましょう。

# ターゲット(192.168.10.50)の80番ポートへ、SYNパケットを1回(-c 1)だけ送信する
sudo hping3 -c 1 -S -p 80 192.168.10.50

実行すると、次のようなレスポンスが返ってきます(画面イメージ)。

HPING 192.168.10.50 (eth0 192.168.10.50): S set, 40 headers + 0 data bytes
len=46 ip=192.168.10.50 ttl=64 id=0 sport=80 flags=SA seq=0 win=64240 rtt=0.4 ms

--- 192.168.10.50 hping statistic ---
1 packets transmitted, 1 packets received, 0% packet loss
round-time-spansクト rtt=0.4 ms

注目してほしいのは、返ってきたレスポンスの中にある flags=SA という部分です。
これは、ターゲットサーバーから SYN(接続しようぜ) と ACK(了解!) のフラグが返ってきたことを意味しています。「おっ、向こうのポートは空いていて、ファイアウォールもこの通信を通しているぞ!」と一目で分かりますよね。

もし、ファイアウォールがこのポートを完全にブロック(Drop)している場合は、いくら待っても何も返ってこず、packet loss 100% になります。

—

ステートフル・ファイアウォールの「穴」を見つけるスキャン手法

ファイアウォールが本当に正しく設定されているかテストする際、NOCエンジニアがよく使うテクニックに「ACKスキャン」があります。

通常の通信(スリーウェイハンドシェイク)を無視して、いきなり「了解!(ACK)」のパケットだけを送りつけるという、ちょっと意地悪な手法です。

# ターゲットの80番ポートへ、ACKフラグ(-A)だけを送信する
sudo hping3 -c 2 -A -p 80 192.168.10.50

このとき、ファイアウォールの設定によって挙動が大きく変わります。

1. パケットが通過し、ポートがフィルタリングされていない場合
サーバー側は「あれ、まだ接続してないのにいきなりACKが来たぞ?」と戸惑い、RST(リセット)パケットを返してきます。これで「あ、このポートはファイアウォールに隠されておらず、外から丸見え状態だな(要対策だ!)」と気づくことができます。
2. ファイアウォールがステートフルにきちんと守っている場合
「なんだこの文脈の無いACKパケットは!」とファイアウォール自身が怪しんでパケットをドロップするため、応答は返ってきません。

このように、パケットの「旗(フラグ)」を意図的に操ることで、セキュリティ機器が正しく仕事をしているかを裏側から検証できるのです。

—

4. トラブルシューティングの現場から:よくある失敗と注意点

最後に、私たちが現場でやらかしがちな「あるある」と、安全に運用するための注意点をいくつかシェアしておきますね。

その1:宛先が見つからない? インターフェースの指定忘れ

hping3 は非常に多機能ゆえに、賢すぎて「どのネットワークカード(NIC)からパケットを出せばいいの?」と迷うことがあります。もしうまくパケットが出ないときは、-I オプションで明示的にインターフェースを指定してあげましょう。

# eth0 インターフェースを使ってパケットを送信する
sudo hping3 -c 3 -S -p 443 -I eth0 192.168.20.100

その2:実務での最大の注意点(絶対に忘れてはいけないこと)

冒頭でも少し触れましたが、hping3 は非常に強力なツールです。パケットの送信間隔を詰める(-i u1000 などのオプションを使用する)と、意図せずターゲットに対してDDoS攻撃(サービス妨害攻撃)のような負荷をかけてしまい、社内ネットワークや検証サーバーをダウンさせてしまう危険性があります。

現場でテストを行う際は、必ず以下の鉄則を守りましょう。

  • 業務時間外、またはメンテナンスウィンドウ(計画停止時間帯)に行う
  • 送信回数は必ず -c オプションで厳格に制限する
  • 事前にネットワーク管理者やセキュリティチームに「何時何分から検証を行う」と根回しをしておく

—

5. まとめ:パケットの「意思」を感じ取れるエンジニアへ

今回は、hping3 を使ったカスタムパケット生成とファイアウォールテストの世界を、郵便配達の例えを交えながら解説しました。

最初は「コマンドのオプションが多すぎて覚えられないよ……」と感じるかもしれません。でも大丈夫です。パケットという名の小さな手紙が、ルーターを越え、ファイアウォールの門番をすり抜け(あるいは跳ね返され)、宛先のサーバーに届くまでの旅を頭の中で想像できるようになると、ネットワークのトラブルシューティングは劇的に楽しく、そしてスピーディーになります。

「なぜ繋がらないのか?」ではなく、「パケットは今、どこでどんな顔をして立ち止まっているのか?」
その答えを導き出すための心強い相棒として、ぜひ今日の知識をあなたの引き出しに加えてみてくださいね。

それでは、次のNOCの現場でお会いしましょう!快適なネットワークライフを!

コメント

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