「エアコンの安全な修理・適切なフロン回収」はこちら

Linuxのポート状況を確認する

Linuxのポート状況を確認する

ネットワーク上のどのコンピュータに接続するのかを「IPアドレス」で識別し、そのコンピュータ上で動いているどのプログラムにアクセスするのかを識別するのに必要なのが「ポート番号」になります。
ポート番号は16ビット整数であり、 0番~65535番まであります

Linuxで接続待ちをしているポートを確認するには、ssコマンド、またはnetstatコマンドを利用します。

ウェルノウンポート

TCP(Transmission Control Protocol)やUDP(User Datagram Protocol)で使用する有名なサービスやプロトコルには、事前にポート番号(0番~1023番)が予約されています。

代表的なポート番号

TCP 20 FTP (データ)
TCP 21 FTP (制御)
TCP 22 SSH
TCP 23 Telnet
TCP 25 SMTP
UDP 53 DNS
UDP 67 DHCP(サーバ)
UDP 68 DHCP(クライアント)
TCP 80 HTTP
TCP 110 POP3
UDP 123 NTP
TCP 443 HTTPS

ssコマンドで接続待ちをしているポートを確認する

ssコマンドのオプション

-a 全てのソケットを表示
-n サービス名に変換せずに表示
-t TCP情報のみ表示
-u UDP情報のみ表示

TCPポートのみを表示する
ssコマンドにオプション「-atn」を付けて実行します。

[root@Lion ~]# ss -atn
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:10024 *:*
LISTEN 0 100 127.0.0.1:10025 *:*
LISTEN 0 100 *:587 *:*
LISTEN 0 64 *:38861 *:*
LISTEN 0 100 *:110 *:*
LISTEN 0 100 *:143 *:*
LISTEN 0 128 127.0.0.1:783 *:*
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:21 *:*
LISTEN 0 100 *:25 *:*
LISTEN 0 128 *:2233 *:*
LISTEN 0 128 *:37982 *:*
LISTEN 0 100 *:993 *:*
LISTEN 0 100 *:995 *:*
TIME-WAIT 0 0 192.168.11.62:25 45.142.120.183:20614
TIME-WAIT 0 0 192.168.11.62:25 45.142.120.183:33136
・・・以下略・・・

● UDPポートのみを表示する
ssコマンドにオプション「-anu」を付けて実行します

[root@Lion ~]# ss -anu
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:48532 *:*
UNCONN 0 0 *:40884 *:*
UNCONN 0 0 *:111 *:*
UNCONN 0 0 127.0.0.1:323 *:*
ESTAB 0 0 192.168.11.62:45568 192.168.11.1:53
ESTAB 0 0 192.168.11.62:57961 192.168.11.1:53
UNCONN 0 0 127.0.0.1:723 *:*
UNCONN 0 0 *:724 *:*
ESTAB 0 0 192.168.11.62:35666 192.168.11.1:53
UNCONN 0 0 :::45110 :::*
UNCONN 0 0 :::111 :::*
UNCONN 0 0 ::1:323 :::*
UNCONN 0 0 :::724 :::*
UNCONN 0 0 :::43156 :::*

●TCP、UDPポート両方表示する
ssコマンドにオプション「-atnu」を付けて実行します

[root@Lion ~]# ss -atnu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:48532 *:*
udp UNCONN 0 0 *:40884 *:*
udp UNCONN 0 0 *:111 *:*
udp UNCONN 0 0 127.0.0.1:323 *:*
udp UNCONN 0 0 127.0.0.1:723 *:*
udp UNCONN 0 0 *:724 *:*
udp ESTAB 0 0 192.168.11.62:58651 192.168.11.1:53
udp UNCONN 0 0 :::45110 :::*
udp UNCONN 0 0 :::111 :::*
udp UNCONN 0 0 ::1:323 :::*
udp UNCONN 0 0 :::724 :::*
udp UNCONN 0 0 :::43156 :::*
tcp LISTEN 0 128 127.0.0.1:10024 *:*
tcp LISTEN 0 100 127.0.0.1:10025 *:*
tcp LISTEN 0 100 *:587 *:*
tcp LISTEN 0 64 *:38861 *:*
tcp LISTEN 0 100 *:110 *:*
tcp LISTEN 0 100 *:143 *:*
tcp LISTEN 0 128 127.0.0.1:783 *:*
tcp LISTEN 0 128 *:111 *:*
tcp LISTEN 0 128 *:21 *:*
tcp LISTEN 0 100 *:25 *:*
tcp LISTEN 0 128 *:2233 *:*
tcp LISTEN 0 128 *:37982 *:*
tcp LISTEN 0 100 *:993 *:*
tcp LISTEN 0 100 *:995 *:*
tcp TIME-WAIT 0 0 192.168.11.62:25 45.142.120.183:62652
・・・以下略・・・

●通信が確立しているポートを表示する
ssコマンドにオプション「-t」を付けて実行します

[root@Lion ~]# ss -t
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.11.62:smtp 45.142.120.183:57896
ESTAB 0 0 192.168.11.62:smtp 45.142.120.183:6772
CLOSE-WAIT 56 0 127.0.0.1:48094 127.0.0.1:10025
ESTAB 0 0 192.168.11.62:smtp 45.142.120.183:19356
ESTAB 0 288 192.168.11.62:infocrypt 192.168.11.51:64079
ESTAB 0 18 192.168.11.62:smtp 45.142.120.183:58682
CLOSE-WAIT 56 0 127.0.0.1:48652 127.0.0.1:10025
ESTAB 0 0 ::ffff:xxx.xxx.xxx.xxx:http ::ffff:xxx.xxx.xxx.xxx:48918

xxx.xxx.xxx.xxxはLinuxサーバーのIPアドレス

●ssコマンド実行結果の各項目

Netid Socketのタイプ
u_str:UNIX Domainソケット
tcp :TCPソケット
udp :UDPソケット
State 通信の状態
Recv-Q 受信キューの数
Send-Q 送信キューの数
Local Address:Port サーバー側のIP又はソケットファイル、ポートを表示
Peer Address:Port 通信している側のIP又はソケットファイル、ポートを表示

Linuxでプロセスが使用しているポートを確認する(lsofコマンド)

Linuxでプロセスが使用しているポートを確認するには「lsofコマンド」を利用します。
Linuxでプロセスが利用しているポートを確認することは、不要プログラムが実行されてないか、不正なバックドアが仕掛けられてないか等を調べ、Linuxのセキュリティ状況を確認する上で非常に重要です。

lsofコマンドは、Linuxが使用してるプロセス名や実行ユーザー名を表示することができるコマンドです。
ポートの利用情報のみを確認したい場合は、オプション「-i」を付けて実行します。

ポートなどの利用情報すべてを確認するためには、rootユーザーでlsofコマンドを実行しなければなりません。

プロセスが使用しているポートを確認する

lsofコマンドにオプション「-i」を付けて実行します。

[root@Lion ~]# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 3381 daemon 4u IPv6 29480 0t0 TCP *:http (LISTEN)
chronyd 3758 chrony 1u IPv4 27912 0t0 UDP localhost:323
chronyd 3758 chrony 2u IPv6 27913 0t0 UDP localhost:323
proftpd 3811 nobody 0u IPv4 28910 0t0 TCP *:ftp (LISTEN)
sshd 4097 root 3u IPv4 32041 0t0 TCP *:infocrypt (LISTEN)
httpd 4266 root 4u IPv6 29480 0t0 TCP *:http (LISTEN)
httpd 4356 daemon 4u IPv6 29480 0t0 TCP *:http (LISTEN)
master 4805 root 13u IPv4 30593 0t0 TCP *:smtp (LISTEN)
master 4805 root 14u IPv6 30594 0t0 TCP *:smtp (LISTEN)
master 4805 root 18u IPv4 30603 0t0 TCP *:submission (LISTEN)
master 4805 root 19u IPv6 30604 0t0 TCP *:submission (LISTEN)
master 4805 root 96u IPv4 30682 0t0 TCP localhost:10025 (LISTEN)
mysqld 4836 mysql 15u IPv6 29617 0t0 TCP *:mysql (LISTEN)
httpd 24688 daemon 4u IPv6 29480 0t0 TCP *:http (LISTEN)
sshd 27736 root 3u IPv4 23220846 0t0 TCP Tiger:infocrypt->192.168.11.51:64079 (ESTABLISHED)
sshd 27776 tama 3u IPv4 23220846 0t0 TCP Tiger:infocrypt->192.168.11.51:64079 (ESTABLISHED)
・・・以下略・・・

lsofコマンド実行結果の各項目

項目 意味
COMMAND 実行されているコマンド
PID プロセスID
USER 実行ユーザー
FD ファイルディスクリプタ
TYPE タイプ
DEVICE デバイス
SIZE/OFF ファイルサイズ
NODE プロトコル
NAME ファイル又はポート

●特定のポート番号から使用しているプロセスを表示する
特定のポート番号を使用しているプロセスを確認するには、lsofコマンドにオプション「-i」を付け、
「:」(コロン)で区切って特定のポート番号を指定して実行します
次はWEBサーバー用ポート80番を表示しています

[root@Lion ~]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 3381 daemon 4u IPv6 29480 0t0 TCP *:http (LISTEN)
httpd 4266 root 4u IPv6 29480 0t0 TCP *:http (LISTEN)
httpd 4356 daemon 4u IPv6 29480 0t0 TCP *:http (LISTEN)
httpd 24688 daemon 4u IPv6 29480 0t0 TCP *:http (LISTEN)
httpd 62737 daemon 4u IPv6 29480 0t0 TCP *:http (LISTEN)

80番ポートはhttpdすなわちWEBサーバーApacheが利用しています。

Linux内のサービスのポート番号をファイルで確認する(/etc/services)

Linuxで稼働するサービスは、デフォルトでサービス固有のポート番号が使用されます。
例えば、httpならTCPポートの80番、httpsなら443番などです。これらのポート番号を把握するには、サービス独自の設定ファイルを確認しなければなりませんが、一般的に想定されているポート番号は、/etc/servicesファイルに記載されています。

[root@Lion ~]# vi /etc/services
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2013-04-10
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports
# are included, only the more common ones.
#
# The latest IANA port assignments can be gotten from
# http://www.iana.org/assignments/port-numbers
# The Well Known Ports are those from 0 through 1023.
# The Registered Ports are those from 1024 through 49151
# The Dynamic and/or Private Ports are those from 49152 through 65535
#
# Each line describes one service, and is of the form:
#
# service-name port/protocol [aliases ...] [# comment]tcpmux 1/tcp # TCP port service multiplexer
tcpmux 1/udp # TCP port service multiplexer
rje 5/tcp # Remote Job Entry
rje 5/udp # Remote Job Entry
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
systat 11/udp users
daytime 13/tcp
daytime 13/udp
qotd 17/tcp quote
qotd 17/udp quote
msp 18/tcp # message send protocol (historic)
msp 18/udp # message send protocol (historic)
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp-data 20/udp
# 21 is registered to ftp, but also used by fsp
ftp 21/tcp
ftp 21/udp fsp fspd
ssh 22/tcp # The Secure Shell (SSH) Protocol
ssh 22/udp # The Secure Shell (SSH) Protocol
telnet 23/tcp
telnet 23/udp
"/etc/services" 11176L, 670293C
・・・・以下略・・・・
タイトルとURLをコピーしました