Linuxインフラ実践

netstat/ssでネットワーク接続を確認する【ポート・プロセス調査】

Linuxインフラ実践
記事内に広告が含まれています。

「どのポートが開いているか確認したい」「どのプロセスがネットワークを使っているか調べたい」——ssコマンドはそんなときの定番ツールです。netstatの後継として現代のLinuxで標準的に使われています。

ss vs netstat

比較項目ssnetstat
推奨度◎ 現在の標準△ 非推奨(廃止予定)
速度高速低速
パッケージiproute2(デフォルト)net-tools(要インストール)

ss コマンドの基本

# よく使うオプション
# -t: TCP  -u: UDP  -l: LISTEN中  -n: 数値表示  -p: プロセス名

# LISTEN中のTCP/UDPポートを表示(最も使う)
$ sudo ss -tuln

# プロセス名も表示
$ sudo ss -tulnp

# 確立済みのTCP接続を表示
$ ss -tn

# 特定ポートの接続を確認
$ ss -tn sport = :80    # ローカル80番ポート
$ ss -tn dport = :443   # リモート443番ポート

# 特定プロセスのソケットを確認
$ ss -p | grep nginx

# 接続状態のサマリー
$ ss -s

出力の読み方

$ sudo ss -tulnp
Netid  State  Recv-Q Send-Q  Local Address:Port  Peer Address:Port  Process
tcp    LISTEN 0      128     0.0.0.0:22           0.0.0.0:*          users:(("sshd",pid=1234))
tcp    LISTEN 0      511     0.0.0.0:80           0.0.0.0:*          users:(("nginx",pid=5678))

# 各列の意味
# State    : LISTEN(待受中)/ ESTABLISHED(接続中)/ TIME-WAIT など
# Recv-Q   : 受信バッファのデータ量
# Send-Q   : 送信バッファのデータ量
# Local    : ローカルのIPアドレスとポート
# Peer     : 接続先のIPアドレスとポート(LISTENは0.0.0.0:*)
# Process  : 使用しているプロセス名とPID

セキュリティチェックに活用する

# 外部からアクセス可能なポートを確認
$ sudo ss -tulnp | grep "0.0.0.0"     # IPv4で全インターフェース公開
$ sudo ss -tulnp | grep "[::]"         # IPv6で全インターフェース公開

# 想定外のポートが開いていないか確認
# 必要なポートのみ開いているかチェックする習慣をつける

# 接続元IPを確認(不審な接続がないか)
$ sudo ss -tn state established | grep -v "127.0.0.1"

まとめ

  • netstatは非推奨。現代のLinuxではssを使う
  • sudo ss -tulnp がすべての基本。開いているポートとプロセスを一覧表示
  • STATEはLISTEN(待受)・ESTABLISHED(接続中)・TIME-WAIT(切断中)を覚えておく
  • 0.0.0.0:ポートは外部から全インターフェースでアクセス可能な状態。定期確認を

📋 Phase 3 ネットワーク基礎チートシートで全コマンドをまとめて確認できます。

コメント

タイトルとURLをコピーしました