基本情報技術者 2018年 春期 午前(科目A) 問44
問題文
社内ネットワークとインターネットの接続点に、ステートフルインスペクション機能をもたない、静的なパケットフィルタリング型のファイアウォールを設置している。このネットワーク構成において、社内のPCからインターネット上のSMTPサーバに電子メールを送信できるようにするとき、ファイアウォールで通過を許可するTCPパケットのポート番号の組合せはどれか。ここで、SMTP通信には、デフォルトのポート番号を使うものとする。

選択肢
ア:
イ:
ウ:(正解)
エ:
🔒 解説は解答すると表示されます
SMTPによるメール送信時のTCPポート【午前解説】
正解の理由
正解は ウ です。
理由は単純で、SMTP(サーバ側)はポート25で待ち受け、クライアント(社内PC)は任意のエフェメラルポート(1024以上)を送信元にして接続を開始します。TCPの双方向通信ではサーバからの応答は「送信元ポート25、宛先がクライアントのエフェメラルポート(1024以上)」となるため、静的フィルタでは次の2方向を個別に許可しなければなりません。ウの組合せはまさにそれを満たします。
理由は単純で、SMTP(サーバ側)はポート25で待ち受け、クライアント(社内PC)は任意のエフェメラルポート(1024以上)を送信元にして接続を開始します。TCPの双方向通信ではサーバからの応答は「送信元ポート25、宛先がクライアントのエフェメラルポート(1024以上)」となるため、静的フィルタでは次の2方向を個別に許可しなければなりません。ウの組合せはまさにそれを満たします。
- クライアント→サーバ:送信元ポート = 1024以上、宛先ポート = 25
- サーバ→クライアント:送信元ポート = 25、宛先ポート = 1024以上
解法ステップ
- 問題の通信プロトコル(SMTP)とデフォルトのサーバポート(25)を確認する。
- クライアント側のポート運用(エフェメラルポート=1024以上)を確認する。
- ステートフルインスペクションが無いことから、往復のパケット(クライアント→サーバ、サーバ→クライアント)を個別に考える。
- 選択肢の組合せが「クライアント(1024+)→サーバ(25)」かつ「サーバ(25)→クライアント(1024+)」かを照合し、該当する選択肢を選ぶ(=ウ)。
選択肢別の誤答解説
- ア:クライアント→サーバで送信元ポートが25、宛先が1024以上になっており、送受信ポートが逆になっています。クライアントは通常エフェメラルポートを使うため誤りです。
- イ:ポート110はPOP3の受信ポートであり、SMTP送信には無関係です。さらに送受信ポートの向きも合っていません。
- ウ:正解。クライアント→サーバ(1024+ → 25)およびサーバ→クライアント(25 → 1024+)の両方向を許可する組合せです。
- エ:送信方向で宛先が110になっており、POP3のポートを使っている点で誤りです。SMTP送信では宛先は25です。
よくある誤解
- 「クライアントの送信元ポートは25になる」:実際はサーバ側が25で待ち受け、クライアントはエフェメラルポートを使います。
- 「ステートレスフィルタでも応答は自動で通る」:ステートフルでなければ応答は明示的に許可しないと通りません。
- 「SMTPとPOP3のポートを混同する」:POP3は110で受信に使うポートであり、送信(SMTP)とは異なります。
補足コラム
- エフェメラルポートの範囲はOSや設定で異なります(例:古い慣習では1024–65535、近年は49152–65535を用いることが多い)。問題文では「1024以上」としているため1024以上を許可と解釈します。
- 近年のメール送信ではクライアント(MUA)→メールサーバ(MTA)間はポート587(submission)や465(SMTPS)を使うことが推奨されますが、本問題は「デフォルトのポート番号」を使う前提なので25を採ります。
- 実運用ではステートフルなファイアウォールやNATが使われるため、通常は「アウトバウンドで宛先ポート25を許可」だけで戻りトラフィックは自動的に許可されます。静的パケットフィルタ(ステートレス)ではその自動許可がない点が重要です。
参考(概念的なiptables例、実環境ではconntrackが有効なことが一般的です):
# クライアント→サーバ(1024-65535 -> dport 25)
iptables -A FORWARD -p tcp --sport 1024:65535 --dport 25 -j ACCEPT
# サーバ→クライアント(sport 25 -> dport 1024-65535)
iptables -A FORWARD -p tcp --sport 25 --dport 1024:65535 -j ACCEPT
FAQ
Q. クライアント側の送信元ポートが25になることはありますか?
A. 通常ありません。SMTPサーバが25で待ち受け、クライアントはエフェメラルポートを使います。例外的にサーバ同士の通信や特殊な設定を除き、クライアントが25を送信元とすることはないと考えてよいです。
A. 通常ありません。SMTPサーバが25で待ち受け、クライアントはエフェメラルポートを使います。例外的にサーバ同士の通信や特殊な設定を除き、クライアントが25を送信元とすることはないと考えてよいです。
Q. ステートフルなファイアウォールならどう設定すればよいですか?
A. ステートフルなら「クライアントから宛先ポート25へのアウトバウンドを許可」するだけで、返りのトラフィックは接続追跡により自動で許可されます。
A. ステートフルなら「クライアントから宛先ポート25へのアウトバウンドを許可」するだけで、返りのトラフィックは接続追跡により自動で許可されます。
Q. 問題はポート587や465を使うケースには対応していますか?
A. 本問は「デフォルトのポート番号」を前提にしているため25を扱います。実運用では587/465を使う場合もありますが、その場合は宛先ポートをそれぞれ許可する必要があります。
A. 本問は「デフォルトのポート番号」を前提にしているため25を扱います。実運用では587/465を使う場合もありますが、その場合は宛先ポートをそれぞれ許可する必要があります。
関連キーワード: ステートレスファイアウォール、パケットフィルタリング、SMTP、ポート番号、エフェメラルポート、TCPハンドシェイク、NAT、ポート25、ポート110、アウトバウンド通信

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

