GNU/Linux >> Linux の 問題 >  >> Linux

netstat、lsof、およびnmapを使用してLinuxで開いているポートを確認する方法

この記事では、netstat、lsof、およびnmapコマンドを使用して開いているポートをチェックし、どのサービスがどのポートでリッスンしているかを確認する方法について説明します。

ネットワーク接続やアプリケーション固有の問題をトラブルシューティングする場合、最初に確認することの1つは、システムで実際に使用されているポートと、特定のポートでリッスンしているアプリケーションです。

ネットワークポートは、その番号、関連付けられたIPアドレス、およびTCPやUDPなどの通信プロトコルのタイプによって識別されます。とりわけ、オープンポートは、アプリケーションまたはプロセスがリッスンするネットワークポートであり、通信エンドポイントとして機能します。

各リスニングポートは、ファイアウォールを使用してオープンまたはクローズ(フィルタリング)できます。一般的に、オープンポートとは、離れた場所からの着信パケットを受け入れるネットワークポートです。

netstatで開いているポートを確認する

netstat ネットワーク統計 )は、着信と発信の両方のネットワーク接続を監視し、ルーティングテーブル、インターフェイス統計などを表示するためのコマンドラインツールです。このツールは、Linuxネットワーク管理者およびシステム管理者がネットワークを監視およびトラブルシューティングするために非常に重要で非常に役立ちます。関連する問題とネットワークトラフィックのパフォーマンスを決定します。

ポートを使用するサービスやソケットステータスなど、リッスンされているすべてのTCPまたはUDPポートを一覧表示するには、次のコマンドを使用します。

$ sudo netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      24919/amavisd    
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      967/master   
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      800/tinyproxy       
tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      967/master          
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      844/pure-ftpd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      768/sshd            
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      967/master          
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      1001/dovecot  
tcp6       0      0 :::3306                 :::*                    LISTEN      823/mysqld       
tcp6       0      0 ::1:783                 :::*                    LISTEN      24911/spamd.pid -d  
tcp6       0      0 :::80                   :::*                    LISTEN      781/httpd         
tcp6       0      0 :::21                   :::*                    LISTEN      844/pure-ftpd 
tcp6       0      0 :::22                   :::*                    LISTEN      768/sshd            
tcp6       0      0 :::25                   :::*                    LISTEN      967/master        
tcp6       0      0 :::993                  :::*                    LISTEN      1001/dovecot        
tcp6       0      0 :::995                  :::*                    LISTEN      1001/dovecot        
udp        0      0 0.0.0.0:47967           0.0.0.0:*                           460/avahi-daemon: r 
udp        0      0 127.0.0.1:123           0.0.0.0:*                           472/ntpd            
udp        0      0 0.0.0.0:123             0.0.0.0:*                           472/ntpd     
udp6       0      0 :::123                  :::*                                472/ntpd 

このコマンドで使用されるオプションの意味は次のとおりです。

  • -t :TCPポートを表示します。
  • -u :UDPポートを表示します。
  • -l <​​/ code> :リスニングポートのみを表示します。
  • -n :ホストを解決する代わりに数値アドレスを表示します。
  • -p :リスナーのプロセスのPIDと名前を表示します。この情報は、rootまたはsudoユーザーとしてコマンドを実行した場合にのみ表示されます。

この場合の重要な列は次のとおりです。

  • Proto –ソケットで使用されるプロトコル。
  • ローカルアドレス–プロセスがリッスンするIPアドレスとポート番号。
  • PID /プログラム名–PIDとプロセスの名前。

さらに、結果をフィルタリングする場合は、 grepを使用します 指図。たとえば、TCPポート22でリッスンするプロセスを見つけるには、次のように入力します。

$ sudo netstat -tulnp | grep :22
tcp     0      0 0.0.0.0:22        0.0.0.0:*         LISTEN      768/sshd            
tcp6    0      0 :::22             :::*              LISTEN      768/sshd

出力が空の場合は、ポートで何もリッスンしていないことを意味します。

netstatの詳細については Linuxでコマンドを実行するには、そのマニュアルページを参照してください。

lsofで開いているポートを確認する

lsof 意味「LiStOpenFiles」 どのファイルがどのプロセスで開いているかを調べるために使用されます。 Linuxでは、すべてがファイルです。ソケットは、ネットワークに書き込むファイルと考えることができます。

lsofタイプでリッスンしているすべてのTCPポートのリストを取得するには:

$ sudo lsof -nP -iTCP -sTCP:LISTEN
COMMAND     PID      USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
sshd        768      root    3u  IPv4    16112      0t0  TCP *:22 (LISTEN)
sshd        768      root    4u  IPv6    16114      0t0  TCP *:22 (LISTEN)
httpd       781      root    4u  IPv6    16328      0t0  TCP *:80 (LISTEN)
httpd       781      root    6u  IPv6    16336      0t0  TCP *:443 (LISTEN)
tinyproxy   800 tinyproxy    0u  IPv4    16750      0t0  TCP *:8080 (LISTEN)
tinyproxy   805 tinyproxy    0u  IPv4    16750      0t0  TCP *:8080 (LISTEN)
mysqld      823     mysql   20u  IPv6    17479      0t0  TCP *:3306 (LISTEN)
pure-ftpd   844      root    4u  IPv4    16289      0t0  TCP *:21 (LISTEN)
pure-ftpd   844      root    5u  IPv6    16290      0t0  TCP *:21 (LISTEN)
master      967      root   13u  IPv4    17225      0t0  TCP *:25 (LISTEN)
master      967      root  103u  IPv4    17319      0t0  TCP 127.0.0.1:10025 (LISTEN)
dovecot    1001      root   24u  IPv4    18600      0t0  TCP *:995 (LISTEN)
dovecot    1001      root   37u  IPv6    18623      0t0  TCP *:993 (LISTEN)
httpd     24344    apache    4u  IPv6    16328      0t0  TCP *:80 (LISTEN)
httpd     24344    apache    6u  IPv6    16336      0t0  TCP *:443 (LISTEN)
/usr/bin/ 24911      root    5u  IPv4 25208447      0t0  TCP 127.0.0.1:783 (LISTEN)
/usr/bin/ 24911      root    6u  IPv6 25208449      0t0  TCP [::1]:783 (LISTEN)
spamd     24913      root    5u  IPv4 25208447      0t0  TCP 127.0.0.1:783 (LISTEN)
spamd     24913      root    6u  IPv6 25208449      0t0  TCP [::1]:783 (LISTEN)
/usr/sbin 24919    amavis    5u  IPv4 25208583      0t0  TCP 127.0.0.1:10024 (LISTEN)
/usr/sbin 24919    amavis    6u  IPv6 25208584      0t0  TCP [::1]:10024 (LISTEN)
smtpd     28403   postfix    6u  IPv4    17225      0t0  TCP *:25 (LISTEN)
smtpd     28403   postfix    7u  IPv6    17226      0t0  TCP *:25 (LISTEN)

使用されるオプションは次のとおりです。

  • -n :ポート番号をポート名に変換しないでください。
  • -P :ホスト名を解決せず、数値アドレスを表示します。
  • -iTCP -sTCP:LISTEN :TCP状態がLISTENのネットワークファイルのみを表示します。

特定のポート(たとえば、ポート3306)でリッスンしているプロセスを見つけるには、次のようにします。

$ sudo lsof -nP -iTCP:3306 -sTCP:LISTEN
COMMAND PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  823 mysql   20u  IPv6  17479      0t0  TCP *:3306 (LISTEN)

出力は、MySQLサーバーがポート3306を使用していることを示しています。

lsofの詳細 Linuxでコマンドを実行するには、そのマニュアルページを参照してください。

nmapで開いているポートを確認する

nmap 、またはネットワークマッパー は、ネットワーク探索とセキュリティ監査のためのオープンソースのLinuxコマンドラインツールです。 nmapを使用すると、サーバー管理者はホストとサービスをすばやく明らかにし、セキュリティの問題を検索し、開いているポートをスキャンできます。

nmap コマンドを使用して、単一のポートまたは一連のポートが開いていることを確認できます。

ターゲットシステムのポート80をスキャンする方法は次のとおりです。

$ sudo nmap -p 80 192.168.0.1
Nmap scan report for 192.168.0.1
Host is up (0.000073s latency).
PORT   STATE SERVICE
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds

ターゲットシステムのポート1から200をスキャンします:

$ sudo nmap -p 1-200 192.168.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-21 16:42 EEST
Nmap scan report for 192.168.0.1
Host is up (0.0000080s latency).
Not shown: 196 closed ports
PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh
25/tcp open  smtp
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 1.45 seconds

最も一般的なポートをスキャン(高速)します:

$ sudo nmap -F 192.168.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-21 16:44 EEST
Nmap scan report for 192.168.0.1
Host is up (0.000014s latency).
Not shown: 89 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
25/tcp   open  smtp
80/tcp   open  http
443/tcp  open  https
465/tcp  open  smtps
587/tcp  open  submission
993/tcp  open  imaps
995/tcp  open  pop3s
3306/tcp open  mysql
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 1.46 seconds
ボトムライン

結論として、開いているポートと、それらのポートで接続を受け入れるサービスから取得できる情報を確認すると、サーバーをロックダウンするために必要な情報が得られます。

たとえば、悪意のあるユーザーがマシンから漏洩した無関係な情報を使用して、既知の脆弱性を悪用したり、新しい脆弱性を開発したりする可能性があります。彼らが理解できることが少なければ少ないほど良い。


Linux
  1. netstat、lsof、およびnmapを使用してLinuxで開いているポートを確認する方法

  2. OSとLinuxのバージョンを確認する方法

  3. LinuxでNetstatを使用してリスニング/オープンポートを確認する方法

  1. リモートLinuxシステムで開いているポートを確認する方法

  2. netstatでリスニングポートを確認する

  3. Linuxでパスワードを確認するには?

  1. Nmapを使用して開いているすべてのポートをスキャンして検索する方法

  2. RHEL 8 / CentOS8Linuxで開いているポートを確認する方法

  3. UbuntuLinuxで開いているポートを表示/確認する方法