Linux nmap コマンド

Linux コマンド大全


nmap(Network Mapper)は、Linuxシステムで最も強力なネットワーク探索およびセキュリティ監査ツールの1つです。システム管理者やネットワークセキュリティ専門家を支援します:

  • ネットワーク上のアクティブなホストを発見する
  • 開放されているポートとサービスをスキャンする
  • OSの種類とバージョンを識別する
  • ネットワークサービスの脆弱性を検出する

nmapはその柔軟性、強力な機能、クロスプラットフォーム特性により、ネットワークセキュリティ評価、システム管理、ネットワーク監視などの分野で広く利用されています。


基本構文

nmapの基本コマンド形式は次のとおりです:

nmap [扫描类型] [选项] {目标规范}

ここで:

  • スキャンタイプ:nmapが使用するスキャン技術を指定
  • オプション:スキャン動作を設定する各種パラメータ
  • ターゲット仕様:IPアドレス、ホスト名、またはIP範囲を指定可能

よく使うスキャンタイプ

TCP SYN スキャン (-sS)

最も一般的でデフォルトのスキャン方式で、「ハーフオープンスキャン」とも呼ばれます:

nmap -sS 192.168.1.1

特徴:

  • 高速かつステルス性が高い
  • TCPスリーウェイハンドシェイクを完了しない
  • root権限が必要

TCP 接続スキャン (-sT)

標準的なTCP接続スキャン:

nmap -sT 192.168.1.1

特徴:

  • root権限が不要
  • 完全なTCP接続を確立する
  • 速度が遅く、検出されやすい

UDP スキャン (-sU)

UDPポートをスキャン:

nmap -sU 192.168.1.1

特徴:

  • UDPスキャンは速度が遅い
  • 多くのUDPサービスは応答しない
  • root権限が必要

OS検出 (-O)

ターゲットホストのOSを識別します:

nmap -O 192.168.1.1

よく使うオプションパラメータ

ポート指定 (-p)

特定のポートまたはポート範囲をスキャン:

例

nmap -p 80,443 192.168.1.1       # 80番ポートと443番ポートをスキャン
nmap -p 1-100 192.168.1.1        # 1〜100番ポートをスキャン
nmap -p- 192.168.1.1             # 全65535ポートをスキャン

サービスバージョン検出 (-sV)

サービスの詳細なバージョン情報を調査します:

nmap -sV 192.168.1.1

スキャン速度 (-T)

スキャン速度を制御します(0〜5、数字が大きいほど高速):

nmap -T4 192.168.1.1             # 较快的扫描速度

出力形式

複数の出力形式オプション:

例

nmap -oN result.txt 192.168.1.1  # 通常のテキスト形式
nmap -oX result.xml 192.168.1.1  # XML形式
nmap -oG result.gnmap 192.168.1.1 # grep可能な形式

実用的な例

基本的なネットワークスキャン

nmap 192.168.1.1

出力例:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-05-01 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.045s latency).
Not shown: 998 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
443/tcp open  https

包括的スキャン(OS+サービスバージョン)

nmap -A 192.168.1.1

サブネット全体をスキャン

nmap 192.168.1.0/24

ファイルから対象リストを読み込む

nmap -iL targets.txt

スキャン結果の解釈

nmap出力におけるポート状態の意味:

状態 説明
open ポートが開放されており、アプリケーションが待ち受けている
closed ポートが閉じている(ホストには到達可能だが、待ち受けるアプリケーションがない)
filtered ポートがファイアウォール/ネットワークによってフィルタリングされ、状態を判定できない
unfiltered ポートにはアクセスできるが、開放か閉鎖かを判定できない(ACKスキャン用)
open|filtered ポートが開放されているのかフィルタリングされているのか判定できない(UDPスキャンで一般的)
closed|filtered ポートが閉じているのかフィルタリングされているのか判定できない

セキュリティと法的注意事項

  1. 合法的な使用:スキャンする権限があるネットワークとシステムのみをスキャンする
  2. 許可を取得する:企業ネットワークで使用する前に、書面による許可を必ず取得する
  3. 乱用を避ける:大量の高速スキャンは攻撃行為とみなされる可能性がある
  4. プライバシーを尊重する:自分が所有していないネットワークリソースをスキャンしない

上級テクニック

ファイアウォールの回避

例

nmap -f --mtu 24 192.168.1.1      # フラグメンテーションを使用
nmap --data-length 100 192.168.1.1 # ランダムデータを追加
nmap -D RND:5 192.168.1.1         # デコイスキャン

定期スキャンスクリプト

例

#!/bin/bash
DATE=$(date +%Y%m%d)
nmap -sS -p- -T4 -oN scan_$DATE.log 192.168.1.0/24

結果の比較

ndiff scan1.xml scan2.xml

よくある質問

Q: nmapスキャンになぜroot権限が必要ですか?A: 一部のスキャンタイプ(SYNスキャンなど)はネットワークパケットを直接操作する必要があり、これにはroot権限が必要です。

Q: スキャン速度を速くするには?A: 使用します-T4 或 -T5オプションでタイムアウト時間を短縮するか、スキャンするポート範囲を制限します。

Q: nmapスキャンはファイアウォールに検出されますか?A: スキャンタイプとファイアウォール設定によります。SYNスキャンはフル接続スキャンよりもステルス性が高いです。

Q: IPv6アドレスをスキャンするには?A: IPv6アドレスを直接使用するだけです:nmap 2001:db8::1


学習リソースのおすすめ

  1. 公式ドキュメント:man nmap
  2. Nmap公式書籍:『Nmap Network Scanning』
  3. オンラインチュートリアル:https://nmap.org/book/toc.html
  4. インタラクティブ学習:https://tryhackme.com/room/furthernmap

nmapを習得することで、強力なネットワーク探索能力を身につけ、システム管理やネットワークセキュリティ業務の強固な基盤を築くことができます。簡単なスキャンから始めて、徐々に複雑なオプションやテクニックに挑戦することをお勧めします。


Linux コマンド大全

その他の拡張