ICTSC2025 本戦 問題解説: [9263] SSH48

問題文

地下アイドルグループ「SSH48」の自主ライブ配信が今夜に迫る。

チケットは完売、ファンたちはすでに画面の前で待機している。そんな最高潮の雰囲気をぶち壊したのは、ファンを名乗る自称エンジニアの「善意」だった。

「推しのサーバが攻撃されてたら嫌じゃないですか。ちょっとセキュリティ強化しておきました!」
結果として配信インフラへのSSHは完全に沈黙。なにもかもが止まっている。

メンバーから「秘密鍵だけは絶対に変えないでください、これ握手会で直接もらったやつなんで」という謎の要望も飛んできた。意味はよくわからないが、とにかくそういうことらしい。

ライブは中止にできない。あなたはこの「愛が重すぎるファンの置き土産」を夜が訪れる前に片付けなければならない。

ネットワーク図

制約

  • 9263-client1 から 9263-server10.200.0.2 を介しての SSH は /home/user/.ssh/id_ed25519 を使うこと
    • Password Authentication を使用してはならない
  • 9263-client1 の鍵を変更してはならない
    user@9263-client1:~/.ssh$ sha256sum /home/user/.ssh/id_ed25519
    0633a2d891ff62bf84408e9662c4ccdffffdb3846f37a82e2cead5483d76fc9b  /home/user/.ssh/id_ed25519
    

初期状態

  • 自分のクライアントから 9263-server(192.168.63.2) へ SSH が出来る
  • 9263-client1 から 9263-server10.200.0.2 を介して SSH が出来ない

終了状態

  • 9263-client1 から .ssh/id_ed25519 を用いて 9263-server10.200.0.2 を介して SSH が出来る

接続情報

ホスト名 IPアドレス ユーザ パスワード
9263-client1 192.168.63.1 user ictsc2025
9263-server 192.168.63.2 user ictsc2025

解説

本問題は、SSHの設定に関する問題であり、以下の4点が原因で 9263-client1 から 9263-server への SSH 接続ができない状態になっていました。

  1. 9263-client1 の /etc/ssh/ssh_known_hosts に存在する 9263-server のホスト鍵が誤っている。
  2. 9263-server の /etc/ssh/sshd_config において 9263-client1 からの公開鍵認証が無効化されている。
  3. 9263-server の /etc/ssh/sshd_config において MaxAuthTries が 2 に設定されているため、接続試行回数が制限されている。
  4. 9263-server の AuthorizedKeysFile に接続で使用したい秘密鍵に対応する公開鍵が存在しない。

解決方法

  1. 9263-client1 の /etc/ssh/ssh_known_hosts から 9263-server のホスト鍵を削除する。
  2. 9263-server の /etc/ssh/sshd_config において 9263-client1 からの公開鍵認証を有効化する。
  3. 9263-server の /etc/ssh/sshd_config において MaxAuthTries を 6 に設定する、または -i オプションを使用して秘密鍵を指定して接続する。
  4. 9263-server の AuthorizedKeysFile に接続で使用したい秘密鍵に対応する公開鍵を追加する。

採点基準

  • 正しい公開鍵を配置出来ている(20点)
  • /etc/ssh/ssh_known_hosts を正しく修正出来ている or ~/.ssh/known_hosts に公開鍵を追加できている(20点)
  • 鍵を -i で指定できている or MaxAuthTries の回数を増やして鍵が発見されるようにしている(20点)
  • Pubkey を yes するか match の条件を変更している(20点)
  • 制約に違反せずに疎通出来ている(20点)

講評

今回の問題は、SSHの設定に関する問題であり、SSHの基本的な知識と設定方法を理解していることが求められました。
~/.ssh/known_hosts ではなく /etc/ssh/ssh_known_hosts でもホスト鍵の管理が行われていることや、SSHの接続試行回数の制限など、SSHに関する基本的な知識が必要でした。
また、SSHの設定ファイルである /etc/ssh/sshd_config の内容を理解し、適切に修正することが求められました。

ほとんどのチームが正しくトラブルシューティングして、SSHの設定を修正することができていました。
しかし、レポートへの記載が不十分なチームも多く、レポートのみでは再現性のあるトラブルシューティングが困難なチームもあったため減点をすることもありました。