私のマシンでどのポートが開いているかを知りたい。マシンがリッスンするポート。例えば。 Webサーバーをインストールした場合はポート80など。
これのためのコマンドはありますか?
Nmap( "Network Mapper")は、ネットワーク探索またはセキュリティ監査のための無料のオープンソースユーティリティです。
nmap 192.168.1.33
内部PCまたはnmap external ip address
詳細情報man nmap
私はいつもこれを使用しています:
Sudo netstat -ntlp | grep LISTEN
どのポートがリッスンしているか、そしてファイアウォールルールが何であるかを見つける他の良い方法:
Sudo netstat -tulpn
Sudo ufw status
開いているポートをリストするには、netstat
コマンドを使用します。
例えば:
$ Sudo netstat -tulpn | grep LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 5452/dnsmasq
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1037/cupsd
tcp6 0 0 ::1:631 :::* LISTEN 1037/cupsd
上記の例では、3つのサービスがループバックアドレスにバインドされています。
ループバックアドレス「127.0.0.1」にバインドされたIPv4サービスは、ローカルマシンでのみ使用可能です。 IPv6の同等のループバックアドレスは「:: 1」です。 IPv4アドレス「0.0.0.0」は「任意のIPアドレス」を意味します。これは、特定のポートでローカルに構成されたネットワークインターフェイスのいずれかに他のマシンが潜在的に接続できることを意味します。
別の方法は、lsof
コマンドを使用することです。
$ Sudo lsof -nP -i | grep LISTEN
cupsd 1037 root 9u IPv6 11276 0t0 TCP [::1]:631 (LISTEN)
cupsd 1037 root 10u IPv4 11277 0t0 TCP 127.0.0.1:631 (LISTEN)
dnsmasq 5452 nobody 5u IPv4 212707 0t0 TCP 127.0.0.1:53 (LISTEN)
詳細については、man netstat
またはman lsof
を参照してください。
これは、ポート80(標準Webサーバーのポート番号)でIPアドレス0.0.0.0
(要求に応答するために必要)をリッスンするプロセスがあることを示すのに十分です。私の場合、これはWebサーバーlighttpd
であることを示しています
$ Sudo netstat -ntlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2495/lighttpd
ファイアウォールで許可するのがポート80のみであることを後で確認したい場合は、www.grc.comのShieldsUpを使用してファイアウォールテストを実行することがよくあります。
Sudo iptables -L
は、PCのポートルールをリストします。 ufwまたはshorewallファイアウォールを使用している場合、出力が読みにくい場合があります。その場合は、たとえばSudo ufw status
を使用します。
ポートが開いている場合でも、そのポートでリッスンするプロセスがない場合はアクセスが拒否されるため、これ自体はあまり役に立ちません。