第7回ICTトラブルシューティングコンテスト 感想
はじめに
大学サークルチーム「tuat_mcc」として第7回ICTトラブルシューティングコンテストに参加した。CTFをやっているいつもの3人+期待の後輩2人というチーム構成だった。3月3日土曜日、4日日曜日の2日間に渡って開催され、場所は調布にあるNTTの研修センターだった。
問題は、複数の会社でトラブルが発生し、それを解決したり原因の特定をしたり対策をしたりする感じだった。サーバー系の問題やネットワークの問題など多岐にわたるジャンルから出題されていたらしい。
このポストでは、感想と自分が解けた問題のwriteupを書いていく。writeupを書いていいことは、運営に尋ねたら了承してくれた。
TAB (D社の1問目)
問題文は以下の感じで、サーバのドメインとユーザー名、パスワードも一緒に与えられていた。DNSに関する問題で、自分はDNSを名前解決する何かとしか認識していなかったので、調べながらの挑戦となった。
社内のDNSサーバを構築する際、上司はコンテンツサーバとキャッシュサーバを別にしなければならないというこだわりを見せた。 リソースが足りないため1台のサーバに同居させたところ、正しくフォワードされないようである。 この不具合を修正し、 http://t[チーム番号].p22.ictsc が表示されることを確認してほしい。
サーバーには、コンテンツサーバーとしてNSD、キャッシュサーバーとしてunboundがインストールされていた。2つのサービスはデフォルトで53番ポートを使用する設定になっているため、片方のポートを変えてやる必要があった。NSDを10053番ポート、unboundを53番ポートにして同時に動作できるようにした。しかし、ここでNSDを起動しても落ちてしまっていた。原因はSELinuxで、10053番をDNSで使えるように設定する必要があった。
sudo semanage port -l | grep 53 apertus_ldp_port_t tcp 539 apertus_ldp_port_t udp 539 dns_port_t tcp 53 dns_port_t udp 53
下記の手順で、10053番ポートをDNSで使えるようにした。TCP、UDPを両方設定したのは念のため。これでNSDを起動しても落ちないようになった。
sudo semanage port -a -t dns_port_t -p tcp 10053 sudo semanage port -a -t dns_port_t -p udp 10053
正答条件には、参加者がいるネットワークのブラウザから、http://t[チーム番号].p22.ictsc へアクセスできることが含まれている。t[チーム番号].p22.ictscの名前を解決する情報は、ログインしているサーバーに存在しており、参加者がいるネットワーク内のDNSから、ログインしているサーバへDNSのリクエストが飛んでくる。これに気付かずに1日目を潰してしまい、気づいた2日目の昼にはヒント公開と同時に点数が下げられてしまい痛かった。unboundの設定で、参加者ネットワーク内のDNSから来るリクエストを許可すれば良い。
ここまでしても解決されなかったので、tcpdumpの結果を眺めていたら、より下の階層で弾かれてないか?と気づきiptablesでDNSが使用するポートを通過するように設定した。これで無事に名前が解決できて、ブラウザからt[チーム番号].p22.ictscへとアクセスできるようになった。
感想
ICTSCには初めて参加だったが、とても楽しかった。今まで参加したことがないジャンルのコンテストだったので、自分に足りないものを知ることができた。あと、独走していた社会人チームを見て、突き抜けた大人はカッコイイなぁと思った。
それと、どうでもいいことなのだが、一つだけ残念だったことがあった。1日目の昼食時にチームメンバーがハンバーグ弁当を選んでおり、その中には大きなハンバーグが入っていて、とても美味しそうだった。2日目の昼食時、1日目の印象から今日はハンバーグにしようと、ハンバーグ弁当と書かれた札から取った弁当は、1日目のものと違い、ハンバーグが入っているが小さくガッカリした。1日目のものとは違ったがハンバーグは入っているので、よく確認しなかった自分が悪いのだが、あの時はとても残念だった。