マシン上で開いているポートを確認するにはどうすればよいですか?


148

マシンでどのポートが開いているか、たとえば、マシンがリッスンしているポートを確認したい。たとえば、Webサーバーをインストールした場合はポート80など。

これのためのコマンドはありますか?

回答:


113

nmap nmapをインストールする

Nmap( "Network Mapper")は、ネットワーク探索またはセキュリティ監査用の無料のオープンソースユーティリティです。

nmap 192.168.1.33 内部PCまたは nmap external ip address

詳しくは man nmap


11
ありがとう、nmap localhostうまくいった。
ジョナス

11
間に差があることを覚えておいてくださいnmap localhostとはnmap 192.168.0.3(あるいは今まであなたのマシンのIPとは何でしょう)
LassePoulsen

6
netstatはこれに対するより良い答えだと思います。netstatは、システムが直接リッスンしているものをリストします。追加のアプリケーションを使用したり、localhost経由で不要な呼び出しを行ったり、ネットワークを考えたりすることはありません。
マチュートルデルラピエール

2
これは愚かです。コンピューターにアクセスできる場合は、を使用してくださいnetstat -ln。開いているすべてのポートがすぐに表示されます。
アレクシスウィルケ

1
nmap localhostローカルホストのみにバインドされているサービスは見つかりませんでした。たとえば、で実行influxdbind-address:localhost:8086ます。それは現れませんでしたがsudo nmap localhost、現れましたsudo netstat -tulpn
ダンダスカレスク

279

私はいつもこれを使用しています:

sudo netstat -ntlp | grep LISTEN

4
sudo netstat -ntlp | grep LISTEN...使用しsudoない場合... pidは出力されません。
ラファフターシン

6
-lすでにリスニング用のフィルター。grep LISTEN2行のヘッダー情報を非表示にする以外に役立ちません。
ダンダスカレスク

3
-t:TCP、 -l:リスニングソケット、-p:ショーのPIDとプログラム名、-n:印刷127.0.0.1:80の代わりにlocalhost:http。参照:linux.die.net/man/8/netstat
リック

1
インストールnetstatsudo apt-get install net-tools
RichArt

2
展開されたコマンドはsudo netstat --tcp --listening --programs --numericです。grep列ヘッダーを削除する場合を除き、使用する必要はありません。
パトリックダーク

60

リッスンしているポートとファイアウォールルールを確認する他の良い方法:

  • sudo netstat -tulpn

  • sudo ufw status


答えをnmapもう一度変更しますnetstat。使いやすさはくだらないです。
ジョナス14年

2
@ジョナス:nmapの答えの下に私のコメントを参照してください。ローカルホストのみにバインドするサービスはリストしません。
ダンダスカレスク

27

開いているポートを一覧表示するには、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


3
-lオプションはLISTENポートをリストすることだと思いました。したがって、ここではgrepは不要です。
アレクシスウィルク

24

これは0.0.0.0、ポート80(標準のWebサーバーのポート番号)でIPアドレスをリッスンするプロセス(要求に応答するために必要)があることを示すのに十分です。私の場合、これはウェブサーバーであることを示しています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を使用してファイアウォールテストを実行することがよくあります。


11

sudo iptables -LPCのポートルールが一覧表示されます。ufwまたはshorewallファイアウォールを使用している場合、出力が読みにくい場合があります。その場合はsudo ufw status、たとえば、代わりに使用します。

ポートが開いている場合でも、そのポートでリッスンしているプロセスがない場合はアクセスが拒否されるため、これ自体はあまり役に立ちません。


4

サーバーマシンまたはローカルのポートの継続的な監視を探している場合は、nmapのグラフィカルバージョン、つまりより詳細なバージョンのZenmapも使用できると思います

Zenmapは、Nmapセキュリティスキャナーの公式グラフィカルユーザーインターフェイス(GUI)です。

利用可能なサポート(Linux、Windows、Mac OS X、BSDなど)

このツールビューをご覧ください。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.