Linuxでサーバーが使用しているポートを確認する方法

Linuxサーバーでどのポートが使用されている(プロセスがリッスンしている、または通信を行っている)かを確認する方法を紹介します

ss コマンド (推奨)

現在のLinuxディストリビューションでは、高速かつ詳細な情報を取得できる ss コマンドが標準で推奨されているようです

すべてのリスニングポート(接続待ちのポート)を数値で確認する

$ sudo ss -tulpn
  • -t: TCPポートを表示
  • -u: UDPポートを表示
  • -l: リスニング(接続待ち)状態のソケットのみ表示
  • -p: ポートを使用しているプロセスの情報を表示
  • -n: サービス名に変換せず、ポート番号で表示

netstat コマンド

昔から使われている確認方法です。環境によっては net-tools パッケージのインストールが必要です。

すべてのリスニングポート(接続待ちのポート)を数値で確認する

$ sudo netstat -tulpn

オプションの意味は ss コマンドと同様です

lsof コマンド (プロセス名やファイルから調べたいとき)

「特定のポート番号をどのアプリが使っているか」や「特定のファイル・プロセスが開いているポート」をピンポイントで調べたい場合に便利です。

特定のポート(例: 80番ポート)を使用しているプロセスを確認する

$ sudo lsof -i :80

すべてのネットワーク接続と使用プロセスを一覧表示する

$ sudo lsof -i -P -n

特定のポートが使われているかサクッと確認したい場合

$ sudo ss -tulpn | grep 80

nmapについて

昔、RHEL5系の頃は開いているポート確認は namp を使っていた記憶があります。最近はセキュリティ基準が変わっているのであまり使用するケースが減っています

セキュリティ監視(IDS/IPS/EDR)の高度化 昔に比べてセキュリティ監視システムが大幅に進化しました。nmap は特有のパケットパターンを生成するため、現代の監視システムでは即座に「ポートスキャン=攻撃の予兆(インシデント)」として自動検知され、管理者にアラートが飛ば飛んだり、IPが自動ブロックされたりします。

クラウド環境の利用規約(AWS、IDCF Cloudなど) 自前で所有している物理サーバーであれば問題ありませんでしたが、クラウド環境やレンタルサーバーでは、無断でのポートスキャンが「利用規約違反」や「攻撃行為」とみなされるケースが増えました。(事前申請や特定の制限が必要な場合があります)

サーバー内部からの確認で十分な場面が多い 「どのサービスがどのポートを使っているか(リッスンしているか)」を確認するだけであれば、サーバー内部から ss や lsof を実行する方が、ネットワークに不要なトラフィックを流さず、確実で高速に判定できます。

\ 最新情報をチェック /

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です