ポートスキャンを実施するに当たって、困ったことがあったのでその内容をまとめたいと思います。
主に自分用なので、説明足らずなところは徐々に埋めていきたいと思います。
ポートとは
通信ごとに分けられているポートというものがあります。
これによって、一つの端末から複数の通信技術を同時に利用できるわけですね。
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>
手元にあるラズベリーパイに書けた結果がこちらです。
意図通り、sshとvncが利用されていますね。
遅いポートを見切る
ポートスキャンに時間がかかるポートはいさぎよく見限りましょう。
30分でタイムアウトを設定する場合は、下記のコマンドで問題ありません。
ちなみに、nmapはスキャン範囲の全ポートに対して同時にポートスキャンを実行するので、
30分で全てのスキャンが完了します。
sudo nmap <hostaddress> --host-timeout 1800000
並列ポートスキャンのサーバーの範囲を区切る
これは、ポートスキャンの対象台数がめちゃくちゃ多い場合ですね。 全ての台数が完了してから結果が出てくるのでは時間がかかるから、少しずつ結果を見たい場合に使います。
sudo nmap <hostaddress> --min-hostgroup 5
ポートスキャンに時間がかかる理由
ポートスキャンに時間がかかるのはおそらくUDPで使われているポートが含まれているからでしょう。
UDPは通信プロトコルの一つで、リクエストに対して返答を返しません。
nmapはそのポートから返答を待ち続けるので、いつまで経ってもポートスキャンが終わらないという事態が起きます。
UDPポートに対するスキャン
UDPプロトコルに対しても実行したい場合は、下記の-sUオプションを付与すれば実行できます。 DNSやSMTPなどを利用している場合でしょうか。
sudo nmap <hostaddress> -sU