このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

ポートスキャンを行う:nmapコマンド

 ネットワーク管理やセキュリティの観点から、特定のホストがどのポートを開いているかを確認することは非常に重要です。ポートスキャンは、ホストが外部からどのようにアクセス可能であるかを調査するための手法であり、そのために広く使用されるのがnmapコマンドです。nmapは、ネットワーク内またはインターネット上のホストに対して、開いているポートをスキャンし、どのサービスが稼働しているかを特定するための強力なコマンドです。

nmapコマンドの概要

 nmapコマンドは、指定したホストの開いているポートをリストアップするためのコマンドです。このコマンドはローカルホストだけでなく、リモートホストに対しても実行できるため、ネットワーク管理者やセキュリティ専門家にとって非常に有用です。ただし、許可を得ていないホストに対してnmapコマンドを実行すると、不正アクセスとして誤解される可能性があるため、使用には注意が必要です。ssコマンドやnetstatコマンドも、ローカルシステムで開いているポートを確認するために使用できますが、nmapはリモートホストのスキャンにも対応している点で優れています。

【書式】
nmap [オプション] ホスト

コマンドの主なオプション

オプション説明
-sSTCP SYNスキャンを実行します。これは最も一般的なスキャンタイプで、迅速かつ目立ちにくいスキャンが可能です。
-sTTCPコネクトスキャンを実行します。TCP接続を完了するため、検出されやすいですが、特定のファイアウォールをバイパスする場合に有効です。
-sUUDPスキャンを実行します。UDPポートを開いているかどうかを確認するために使用されます。
-p特定のポートまたはポート範囲を指定してスキャンします。例: -p 22はポート22(SSH)をスキャンします。
-OOS検出を行います。ターゲットホストのOSを推測するために使用します。
-AOS検出、バージョン検出。詳細な情報を取得したい場合に使用します。
コマンドの主なオプション

コマンドの使用例と解説

1.nmapのインストール(Ubuntu)

以下のコマンドを実行します。

  • sudo apt update」コマンド
  • sudo apt-get install nmap」コマンド

 nmapコマンドは、Ubuntuのパッケージリポジトリからインストールできます。sudo apt updateコマンドでパッケージリストを更新し、sudo apt-get install nmapコマンドでnmapをインストールします。途中「y」と入力してインストール作業を続行します。

user01@ubuntu-vm:~$ sudo apt update
[sudo] user01 のパスワード: 
取得:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]
ヒット:2 http://jp.archive.ubuntu.com/ubuntu jammy InRelease     
(省略)

user01@ubuntu-vm:~$ sudo apt-get install nmap
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
以下の追加パッケージがインストールされます:
  liblinear4 lua-lpeg nmap-common
提案パッケージ:
  liblinear-tools liblinear-dev ncat ndiff zenmap
以下のパッケージが新たにインストールされます:
  liblinear4 lua-lpeg nmap nmap-common
アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 12 個。
5,744 kB のアーカイブを取得する必要があります。
この操作後に追加で 25.6 MB のディスク容量が消費されます。
続行しますか? [Y/n] y # 「y」と入力
(省略)
2.ホストの標準的なポートスキャン

・「nmap localhost」コマンドを実行します。

 このコマンドは、ローカルホストの標準的なポートスキャンを実行し、開いているTCPポートの一覧を表示します。どのサービスが稼働しているかを確認する際に有用です。

user01@ubuntu-vm:~$ nmap localhost
Starting Nmap 7.80 ( https://nmap.org ) at 2024-08-28 01:41 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000029s latency).
Not shown: 998 closed ports
PORT    STATE SERVICE
25/tcp  open  smtp
631/tcp open  ipp

Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

3.OS検出とバージョン検出を含む詳細なスキャン

・「sudo nmap -A localhost」コマンドを実行します。

 このコマンドは、ローカルホストに対して詳細なスキャンを実行します。OS検出やバージョン検出を含む、ターゲットホストに関する包括的な情報を取得できます。一般ユーザーで実行するよりもrootユーザーで実行した方がより多くの情報が得られます。

user01@ubuntu-vm:~$ sudo nmap -A localhost
Starting Nmap 7.80 ( https://nmap.org ) at 2024-08-28 01:38 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000043s latency).
Not shown: 998 closed ports
PORT    STATE SERVICE VERSION
25/tcp  open  smtp    Postfix smtpd
|_smtp-commands: ubuntu-vm, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8, CHUNKING, 
| ssl-cert: Subject: commonName=ubuntu
| Subject Alternative Name: DNS:ubuntu
| Not valid before: 2024-01-01T01:38:02
|_Not valid after:  2033-12-29T01:38:02
|_ssl-date: TLS randomness does not represent time
631/tcp open  ipp     CUPS 2.4
| http-robots.txt: 1 disallowed entry 
|_/
|_http-server-header: CUPS/2.4 IPP/2.1
|_http-title: \xE3\x83\x9B\xE3\x83\xBC\xE3\x83\xA0 - CUPS 2.4.1
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
Network Distance: 0 hops
Service Info: Host:  ubuntu-vm

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.85 seconds

まとめ

nmapコマンドは、ネットワーク管理者やセキュリティ専門家にとって不可欠なツールです。ホストの開いているポートを特定し、セキュリティ評価やトラブルシューティングに役立てることができます。ただし、許可を得ていないホストに対してスキャンを実行すると、法的な問題を引き起こす可能性があるため、適切な範囲内で使用することが求められます。