言い換えると、スキャンするために別のマシンにアクセスできないときに、サーバーがどのように見えるかを確認したいのです。例を挙げましょう:
ケース1:VPS(Ubuntu Server)にSSH接続している場合、ポートスキャンの結果は次のようになります。
[email protected]:~$ nmap -p 1-20000 77.77.77.70
Nmap scan report for 77.77.77.70
PORT STATE SERVICE
25/tcp open smtp
80/tcp open http
111/tcp open rpcbind
443/tcp open https
8142/tcp open unknown
11273/tcp open unknown
18142/tcp open unknown
18143/tcp open unknown
18144/tcp open unknown
18145/tcp open unknown
18146/tcp open unknown
18147/tcp open unknown
Nmap done: 1 IP address (1 Host up) scanned in 0.36 seconds
ケース2:Ubuntu Desktopマシンから同じコマンドを実行すると、結果はVPSのファイアウォールでフィルタリングされ、次のようになります。
user@Desktop:~$ Sudo nmap -p 1-20000 77.77.77.70
Nmap scan report for 77.77.77.70
PORT STATE SERVICE
80/tcp open http
443/tcp open https
11273/tcp open unknown
Nmap done: 1 IP address (1 Host up) scanned in 4298.23 seconds
だから、私の質問は:VPS自体から「ケース2」のような結果を達成する方法はありますか?nmap
の使用は必須ではありません。
簡単な答え:いいえ、内側から見るとサーバーが外側からどのように見えるかを見ることができません。
長い答え:自分で書いたように、外部からのスキャンはファイアウォールや、場合によっては他の介在するネットワークコンポーネントの影響を受けます。理論的には、VPSに設定した仮想ネットワーク経由でその影響をシミュレートできます。しかし、それは多くの作業であり、それらのコンポーネントが何であり、どのように構成されているかを正確に知る必要があります。実行可能な唯一のアプローチは、スキャンを実行できる外部ホストを見つけることです。
ファイアウォールがない場合は、netstat -ln --inet --inet6
を実行して、リスニングソケットを一覧表示できます。これは、何がどのインターフェースをリッスンするかを示します。
クイックサンプル:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:5298 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:1080 0.0.0.0:* LISTEN
ここには2つのタイプがあります。
0.0.0.0または::(任意のIP)をリッスンする最初の種類は、ファイアウォールで保護されていない限り、リモートで利用できます。 localhost(127.0.0.1または:: 1)でのみリッスンするソケットは、ループバックインターフェイスを介してのみ到達可能であり、リモートからは到達できません。
さらに、特定のインターフェイスにバインドされたソケットを持つことができます。その場合、インターフェイスのIPが列3に表示されます。 192.168.8.1-そのインターフェースでのみアクセスできることを意味します。
ファイアウォールを考慮しないため、これはポートスキャンと同じではありませんが、ファイアウォール構成の読み取りと組み合わせると、セットアップを実行し、ファイアウォールを構成した後にのみポートスキャンで確認するのに適した方法です。