こんにちは!NOC(ネットワークオペレーションセンター)で日々、張り詰めた空気の中インフラの番人をしているシニアエンジニアです。データセンターの冷たい空調音をBGMに、夜な夜な流れるパケットを見つめて生きてきました。
インフラの世界へ足を踏み入れたばかりの頃って、目の前にある黒い画面や、飛び交う謎の専門用語に圧倒されてしまいますよね。「ポートスキャン」なんて言葉を聞くと、何やら物騒なハッカーの技のように感じるかもしれませんが、実はネットワークの健康診断や、自分の城(サーバー)の安全を守るためには欠かせない、お医者さんの聴診器のようなものなんです。
今回は、ネットワークエンジニアの心強い相棒である nmap というツールを取り上げます。パケットがどう動いているのか、身近な例えを交えながら、一歩ずつ優しく紐解いていきましょう!
—
1. ネットワークの「家宅捜査」? nmap とポートスキャンの基本
突然ですが、あなたは大きなマンションの管理人さんだと想像してみてください。
「このビルには、今いくつ部屋があって、どの部屋の電気がついていて、中に誰が住んでいるんだろう?」と気になったとき、どうしますか? 1つひとつのドアをノックして、「すなせーん、お留守ですかー?」と確認して回りますよね。
ネットワークの世界でも全く同じことが行われています。
IPアドレスという「住所」の先にある、サーバーという「建物」には、扉(これをポートと呼びます)がなんと「6万5535個」もあるんです。Web用、メール用、ファイル共有用……と、部屋ごとに用途が決まっています。
nmap は、この膨大な扉をものすごいスピードでノックして、「今、どの扉が開いていて、中でどんなサービスが動いているのか」を調べるためのコマンドです。
郵便配達員に例えるパケットのやり取り
コンピュータ同士の通信は、手紙のやり取りにそっくりです。
私たちが普段何気なく見ているWebサイトを見る通信(TCP)では、会話を始める前に必ず「握手(ハンドシェイク)」を交わします。
1. 「おーい、お話しませんか?」(SYNパケット):こちらから手紙を送る。
2. 「はい、喜んで!そちらもお元気ですか?」(SYN-ACKパケット):相手が扉を開けて返事をくれる。
3. 「よろしくお願いします!」(ACKパケット):こちらも返事をして、通信がスタートする。
nmap の基本である SYNスキャン は、この「会話の最初の手紙(SYN)」だけを相手に投げつけて、相手がどう返事をしてくるかを観察するテクニックです。最後まで会話を完了させない(=途中で電話を切るような)ため、相手に痕跡を残しにくく、かつ高速に調査できるのが特徴です。
—
2. 実際に nmap を使ってみよう!
百聞は一見にしかず。実際に手元の環境(※必ず自分で管理している検証用サーバーや、許可を取った環境で行いましょう!)で nmap を動かしてみましょう。
一番シンプルなスキャンは、ターゲットのIPアドレスを指定するだけの形です。
# ターゲットサーバー(例: 192.168.1.10)に対して基本のスキャンを実行する
nmap 192.168.1.10
このコマンドを実行すると、nmap はよく使われる主要なポート(1,000番まで)をサクッと調べて、以下のような結果を返してくれます。
Starting Nmap 7.80 ( https://nmap.org )
NSI: Nmap scan report for 192.168.1.10
Host is up (0.00035s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1-5 seconds) groves scanned.
おっ、結果が出てきましたね!
22/tcp open sshと書かれているのは、「22番の扉が開いていて、中ではリモート接続用のsshが待機していますよ」という意味です。80/tcp open httpは、「80番の扉が開いていて、Webサーバーが動いていますよ」というお知らせです。
このように、どの扉が開いていて、何が待ち受けているのかが一目でわかるようになっています。
—
3. もう一歩深く!「OSやサービスの名前」まで見抜く魔法
nmap のすごいところは、ただ扉の開閉を調べるだけではありません。扉の隙間から「こんにちはー!」と声をかけたときの、相手の反応の微妙な方言やクセ(返事のパケットの作り方など)を観察して、「おや、あそこの家はWindowsだな」「こっちは最新のLinuxだな」と、相手のOSやバージョンの正体まで暴いてしまうんです。
これを行うには、-A というオプション(強力なスキャン)を使います。
# OSの推定と、サービスバージョンの詳細検出、さらにスクリプトによる脆弱性チェックを有効にする
nmap -A 192.168.1.10
このコマンドを叩くと、nmap は少しだけ時間をかけて相手の懐にぐっと入り込みます。
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
すごい情報量ですよね!
「ただのWebサーバー」ではなく、「Apache のバージョン 2.4.41 が動いていて、OSは Ubuntu だな」というところまで丸裸にしてしまいます。
現場のエンジニアがセキュリティ監査や、古いバージョンが放置されていないかの棚卸しを行う際にも、この機能は本当に重宝します。
—
4. 現場のシニアからのお願いと注意点
ここまで nmap の便利さと面白さをお伝えしてきましたが、最後にこれだけは絶対に覚えておいてほしい大切なルールがあります。
それは、「自分が所有していない、または許可されていないネットワークやサーバーに対して、絶対に勝手に nmap を使ってはいけない」ということです。
冒頭で nmap を「聴診器」に例えましたが、見ず知らずの人の家を勝手にノックして回り、「お宅の鍵、ちゃんとかかってますかー?」と調べていたら、不審者として通報されてしまいますよね。ネットワークの世界でも全く同じで、許可のないポートスキャンは「サイバー攻撃の準備行為(威嚇行為)」とみなされ、プロバイダから回線を止められたり、法的なトラブルに発展したりするケースがあります。
必ず自分の手元の検証環境や、社内で許可されたテスト用のシステムに対してのみ使うようにしてくださいね。
—
まとめ
nmapとは?:サーバーという建物の「扉(ポート)」の開閉を調べ、健康状態や安全性を確認するための強力なネットワーク診断ツール。- SYNスキャン:挨拶の手紙を投げて、相手の反応から扉が開いているかを高速かつスマートに判定する仕組み。
- バージョン・OS検知:相手の返事のクセを見極めて、中で動いているソフトやOSの種類まで推測してしまうスグレモノ。
インフラの世界は、最初は目に見えなくて怖いと感じるかもしれませんが、仕組みをひとつずつ紐解いていくと、パケットたちがまるで意思を持っているかのように生き生きと動いているのが見えてきて本当に面白くなります。
焦る必要はありません。ご自身のペースで、安全な検証環境から少しずつ触ってみてくださいね。それでは、次回のNOCルーム便りでお会いしましょう!
コメント