日々ブログ

日々のくらしの中で思ったこと

ポートスキャンのコマンドまとめ

ポートスキャンを実施するに当たって、困ったことがあったのでその内容をまとめたいと思います。
主に自分用なので、説明足らずなところは徐々に埋めていきたいと思います。

f:id:xinformation:20220130113237p:plain

ポートとは

通信ごとに分けられているポートというものがあります。
これによって、一つの端末から複数の通信技術を同時に利用できるわけですね。
22ポートのssh通信でリモート接続しながら、80ポートのHTTP通信を行ってブラウザを見るといった具合ですね。
一番身近なブラウザであっても、実はポートが指定されていて、urlの最後にHTTP通信なら「:80」、HTTPS通信なら「:443」といった具合ですね。
はてなブログの場合は、HTTPSなので https://xinformation.hatenadiary.com:443

はアクセス可能ですけど、 https://xinformation.hatenadiary.com:80 はアクセスできません。

ポートスキャンの役割

上記の例で見たとおり、443ポートは通信できるんですが、80ポートは通信できません。
インターネットのサイトはどこかのサーバーと通信して、必要な情報を取ってくるのですが、それらがどの通信ポートを使っているのかを調べるのがポートスキャンです。
というのも、サイトを開設する人も通信ポートについて理解しておらず、使っていない通信ポートが使えるようになっていてそこからサーバー内へ侵入できてしまうわけで、 どの通信ポートを使っているのかを確認するのがポートスキャンの意義です。
AWSとか、wordpress用のサーバーが普及した今でも意外とそうした無防備なサーバーが多かったりします。

NMAPのインストール方法

ubuntu だとaptからインストールできます。

sudo apt install nmap

ポートスキャンの実行

単純なポートスキャンなら下記のコマンドで実行できます。

sudo nmap -v <hostaddress>

手元にあるラズベリーパイに書けた結果がこちらです。
意図通り、sshvncが利用されていますね。
f:id:xinformation:20220130111938p:plain

遅いポートを見切る

ポートスキャンに時間がかかるポートはいさぎよく見限りましょう。
30分でタイムアウトを設定する場合は、下記のコマンドで問題ありません。
ちなみに、nmapはスキャン範囲の全ポートに対して同時にポートスキャンを実行するので、 30分で全てのスキャンが完了します。

sudo nmap <hostaddress> --host-timeout 1800000

並列ポートスキャンのサーバーの範囲を区切る

これは、ポートスキャンの対象台数がめちゃくちゃ多い場合ですね。 全ての台数が完了してから結果が出てくるのでは時間がかかるから、少しずつ結果を見たい場合に使います。

sudo nmap <hostaddress> --min-hostgroup 5
ポートスキャンに時間がかかる理由

ポートスキャンに時間がかかるのはおそらくUDPで使われているポートが含まれているからでしょう。
UDP通信プロトコルの一つで、リクエストに対して返答を返しません。
nmapはそのポートから返答を待ち続けるので、いつまで経ってもポートスキャンが終わらないという事態が起きます。

UDPポートに対するスキャン

UDPプロトコルに対しても実行したい場合は、下記の-sUオプションを付与すれば実行できます。 DNSSMTPなどを利用している場合でしょうか。

sudo nmap <hostaddress> -sU