技術メモ

役に立てる技術的な何か、時々自分用の覚書。幅広く色々なことに興味があります。

セキュリティ上閉じるべきポート番号一覧

一覧

代表的なポート番号とセキュリティ上閉じることが推奨されているポート番号をまとめる。
※クライアントPCを想定。あくまで慣習的な話であって、もちろん「閉じる」としているポートも使い方を把握して適切に開ける分には問題ない。サーバー用のPCであれば適宜必要なポートは開ける。

ポート番号 サービス名 推奨されるセキュリティ上の対策 備考
20 FTP 基本的には閉じる データ用
21 FTP 基本的には閉じる 制御用
22 SSH 必要最小限に制限 -
23 Telnet 閉じる SSHを使用する
25 SMTP 必要最小限に制限 あえてウェルノウンポートを使わない対策もある(587番、2525番など)
53 DNS 必要最小限に制限 -
67 DHCP 閉じる DHCP - サーバ
68 DHCP 必要最小限に制限 DHCP - クライアント
69 TFTP 閉じる 簡易FTPサービス
80 HTTP 必要最小限に制限 HTTPSを使用する
110 POP3 必要最小限に制限 メール受信
123 NTP 必要最小限に制限 (Network Time Protocol)
137-139 NetBIOS 閉じる (Network Basic Input/Output System)
143 IMAP 必要最小限に制限 メール受信
161 SNMP 閉じる ネットワーク管理
162 SNMP Trap 閉じる ネットワーク管理:異常報告用
389 LDAP 必要最小限に制限 -
443 HTTPS 必要最小限に制限 -
445 SMB 必要最小限に制限 Windowsのファイル共有プロトコル
465 SMTPS 必要最小限に制限 (SMTP over TLS) あえてウェルノウンポートを使わない対策もある(587番、2525番など)
514 syslog (UDP) 閉じる -
514 rsh (TCP) 閉じる リモートシェル
636 LDAPS 必要最小限に制限 (LDAP over SSL/TLS)
873 rsync 閉じる -
993 IMAPS 必要最小限に制限 (IMAP over SSL/TLS)
995 POP3S 必要最小限に制限 (POP3 over SSL/TLS)
1433 MS SQL Server 閉じる -
3306 MySQL 適切な認証やアクセス制御が必要 あえてデフォルトポート番号を使わない対策もある
3389 RDP 適切な認証やアクセス制御が必要 -
5432 PostgreSQL 適切な認証やアクセス制御が必要 -

【補足】 ポートを閉じる意味

ポートを閉じることは、攻撃者が不正アクセスを試みる際の障壁となり、セキュリティを強化するために重要になる。

一般的にポート番号が開いている場合、そのポートに対応するサービスが提供されていることが多いため、攻撃のリスクが高まる。
例えば、Webサーバー(HTTP)には一般的にTCPポート80が割り当てられている。
攻撃者はWebサーバーに対してポート80が開いていることがわかれば既知の脆弱性を突く攻撃を試みる可能性などがある。
脆弱性の識別子であるCVEとして公開されている既知の脆弱性は多くの場合最新バージョンでは対策用のパッチが用意されており、最新バージョンであれば攻撃が成功しないことが多いが、
バージョン更新を怠っているサーバーなどは攻撃者にとって都合のいい攻撃対象になりやすい。

常日頃からバージョン更新を行うのであればまだしも、そもそも不要なポートを開いていなければそんな心配もする必要がない。
したがって、セキュリティを強化するためには不要なポートを閉じることが重要と言える。

【補足】ポートを閉じる方法

(ポートを塞ぐ - Linux技術者認定 LinuC | LPI-Japan)

一つは、「アプリケーション側の対応を行う」です。そもそも、「ポートが開く」とはどういうことなのかを考えてみましょう。たとえば、ApacheなどのWebサーバアプリケーションを起動すると、(特別な設定をしない限り)Well known portsである80番ポートが開き、80番ポートでの通信の待ちうけを開始します。

これを考えると、サーバアプリケーションを停止すれば、自動的にポートが閉じます。「余計なアプリケーションを起動してはいけない」というお話しにつながりますね。

もう一つは、「通信を制限する」という方法です。代表的なのが「パケットフィルタリング」という手法です。パケットフィルタリングを利用すると、特定のポートの通信、特定のIPアドレスの通信をシャットアウトすることができます。Linuxでは「iptables」というコマンドによってパケットフィルタリングを行うことができます。iptablesコマンドを利用すると、どのような通信を遮断するのかなどを細かく指定できるので、「あるホストから、特定のポートを遮断する」といったこともできます。

どのポートが開いているか?を調べるには、「netstatコマンド」「lsofコマンド」「nmapコマンド」などのコマンドがあります。ここではそれぞれのコマンドについての詳細は割愛しますが、netstatとlsofは「自分がどのポートを開けているか?」を知るために、nmapは「他ホストがどのポートを開けているか?」を知るために使われます。パケットフィルタリングを施した場合、netstatやlsofではポートが空いているように見える場合もあるので注意が必要になります。