NFLabs. エンジニアブログ

セキュリティやソフトウェア開発に関する情報を発信する技術者向けのブログです。

【2023年夏】現場受け入れ型インターンシップを実施しました!

研究開発部で製品開発を担当している小川です。 エヌ・エフ・ラボラトリーズでは2023年8月28日から9月8日までの2週間、「現場受け入れ型インターンシップ」を実施しました。 インターンシップには2名の学生が参加し、当社で開発しているセキュリティ教育用プラットフォームの開発に取り組んでいただきました。 参加したお二人からの参加したいと思った経緯や2週間の業務を体験してみた感想をご紹介します。

池宮さんの体験記

プロフィール

初めまして。インターン生の池宮卓です。 私は長崎県立大学の情報セキュリティ学科に所属しており、日々セキュリティについて勉強しています。

インターンシップ参加目的

私の所属する長崎県立大学の情報セキュリティ学科では、科目としてインターンシップの授業があります。今回はその授業の一環として、そして卒業後の進路で気になっている職種に近いのではないかということもあり、このインターンシップに参加しました。

インターンシップで取り組んだこと

今回のインターンシップでは、「演習環境をAWS上のコンテナサービスを使って提供できるかの調査」というテーマに挑戦しました。 このテーマが生まれた背景には、現状提供しているシステムでは提供できるコンテンツ数に上限があるという問題がありました。そのため、このコンテンツ数の上限をなくすためにコンテナサービスを使うことができないか、その移行の際に課題となることはないか、という調査に取り組みました。

インターンシップ前半

インターンシップ前半では、始めに、AWSのコンテナサービスを用いたコンテナ環境にインターネットから接続できるかの検証に取り組みました。そのため、まずインターネットからアクセスできるだけのコンテナの作成を行いました。 このコンテナサービスへの移行における技術要素は、AWS、Terraform、Dockerです。しかし私は、これまでAWSとTerraformを触ったことがありませんでした。そのため、特にAWSに至っては、最初のログインからつまずくというような有様でした。 その後も初めての技術に戸惑いつつ、なんとかインターネットからアクセスできる、そしてAWSのコンテナサービスであるECS上で動作するコンテナを、AWSのWebコンソール経由で作成することができました。 続いて、そのWebコンソールで作成したコンテナ環境を、Terraformを用いてデプロイ可能であることの確認を行いました。とはいえ、前述のとおりTerraformも初めて使う技術です。ここでもやはり苦戦しながらも、ドキュメントとエディタを行ったり来たりすることで、なんとかTerraform化も行うことができました。 前半の最後では、プライベートサブネット内にコンテナを配置し、踏み台コンテナ経由でアクセスするという、実際の演習環境に近い仕組みのシステムの作成と接続検証を行いました。ここまで来ると、ここまでに得られた知見によって、比較的スムーズにシステムの作成が行えるようになってきました。

インターンシップ後半

続くインターンシップ後半では、実際に既存の演習環境のうち2種類を用いて、コンテナサービスへの移行ができるかどうかの検証に取り組みました。もう少し詳しく書くと、既存の演習環境はDocker Composeを用いて作成されており、この演習環境をAWSのECSに移行できるか、という検証を行いました。 まず初めに、1つ目の演習環境の移行について検証を行いました。この演習環境は、攻撃者側と攻撃を受ける側で2つのコンテナを用いた演習をする環境になっていました。もちろんDocker ComposeとECSでは仕様が異なるため全く同じ仕組みとは行きませんでしたが、既存環境の構成や演習の内容をもとにAWSの機能をうまく使うことで、既存環境のコードを変更することなく同等の演習が可能となるシステムの構築を行うことができました。その後、動作検証によって既存のものと同様の手順で演習ができることが確認できました。そのため、この演習環境については、コンテナサービスを使った提供が可能であると結論付けました。 次に、2つ目の演習環境の移行について検証を行いました。この演習環境は、Webサーバとデータベースサーバがそれぞれコンテナで動作しており、Webサーバがデータベースサーバと通信を行うような構成となっていました。しかし、このことがコンテナサービス利用への移行において、障壁となってしまうことが判明しました。というのも、既存環境が動作するDocker Composeにおいては、コンテナ名を用いて通信先のコンテナを指定します。しかし、ECSのタスクにおいては、localhost経由で通信を行う仕様となっています。そのため、どうしても既存コードの修正が必要となってしまいます。どうにか既存コードの修正なしに移行できる方法はないかと探したのですが、残念ながらそのような方法は見つかりませんでした。よって、そのような既存コードの修正が許容できれば移行ができる、という結論に至りました。

インターンシップを振り返って

今回AWSやTerraformを初めて触ったこともあり、戸惑いやつまずきも多かったものの、最終的には当初の目的「演習環境をAWSのコンテナサービスを使って提供できるかの調査」については、達成できたと考えています。また、提供できるという結論だけでなく、移行において障壁となりうる問題の洗い出しも行えたことは良かったと思います。 また、今回のインターンシップでは、社員の方と交流する機会をいただけたり、リモートワークでの働き方を体験できたりなど、技術的なこと以外にもたくさんの学びを得ることができました。そして、些細なことでも気軽に相談できる雰囲気だったり、リモートであっても社員の皆さんの温かさを感じることができたりと、とても働きやすい環境だと実感しました。 この度、このような機会をいただけたことにとても感謝しています。ここでの学びや経験を、たくさんの場面で活かしていきたいと思います。長いようで短い2週間のインターンシップでしたが、大変お世話になりました。ありがとうございました。

奥村さんの体験記

プロフィール

工学院大学情報学部コンピュータ科学科の学生で、サイバーセキュリティの研究室に所属しています。研究ではMetasploit Frameworkを触っており、プラグインの作成を行なったりもしています。

インターンシップ参加目的

目的としては次の3つがありました。

  • 少数精鋭の会社の空気感や業務に触れてみたかった
  • 研究につながることがあれば吸収したかった
  • IT職に就いた時のイメージの解像度を上げたかった

私の中ではエヌ・エフ・ラボラトリーズさんは少数精鋭のイメージがあり、その業務や空気感から刺激を受け、普段の研究のモチベーションや広い視野の獲得につなげたいと考えていました。また、実際にIT職についた際にどのような手順を踏むのか、解決策を講じるのかということを現状興味のあるセキュリティ業界の企業で確認したいと考え、参加させていただきました。

インターンシップで取り組んだこと

脆弱性のあるサーバに対し、管理者権限を取得しflagを獲得するという演習があるのですが、私はその演習サーバを攻略する手順を、テストとして自動化するというタスクに取り組みました。このタスクをするにあたって、

  • 演習サーバを攻略する手順の妥当性を考える
  • Pythonコードの作成
  • Pythonコードを組み込んだbehaveの作成

という3つのステップを踏む必要があり、その動機としては、演習サーバに修正が入った際に、手動で確認する大変さや見落としの改善、不具合の早期発見につながることが挙げられます。

インターンシップ前半

CTFってなんか聞いたことはあるなレベルだったので、まずはエヌ・エフ・ラボラトリーズが開発されている教育用のプラットフォームで手法について勉強させていただき、実際に取り組んでみることにしました。その後、演習サーバを攻略する手順の妥当性を考えるといった内容に取り組んだのですが、「演習サーバはAからBという手段で情報を取得する」ことを想定されている時、妥当性としては「Aが存在する」や「Bという手法が使える」といった様に細かく必要となるポイントを挙げていきました。完璧に作成したつもりで提出したところ、すぐさま抜け落ちているポイントのご指摘をいただき、確認不足だったなと感じると同時に見ていただいた社員さんのレベルの高さを感じました。

インターンシップ後半

後半ではPythonコードの作成からbehaveに組み込むところを行いました。behaveとはPythonでBDD(Behavior Driven Development)を実現するためのツールです。確認したい各ステップごとにシナリオを作成し、どのステップや条件が成功したか失敗したかを見やすくすることができます。 単に前半で取り組んだことのPythonコードを書くだけと思っていると、GUIでの操作をどのようにコードに落とし込むかや、そもそも開発環境で使用していたDockerってどう使うのといったような問題に追われ、自力では解決できない部分をすぐに相談させていただける環境を用意してくださったことに、ただただ感謝です。どうにかbehaveでの動作を確認できた時には達成感や自身の成長を感じることができました。

インターンシップを振り返って

単純にITスキルが向上しただけではなく、進捗を高める方法だったり改めて蓄えた経験や知識の重要性を学ぶことができました。一方的に学ばせていただくだけではなく何か返したいと考えていただけに、やりきれなかったことがあったのが少し残念ではありますが、2週間とは思えないほど成長できたと感じています。また、CTFへの興味やスキル向上へのモチベーションに良い影響を受けることができたのも、ひとえにエヌ・エフ・ラボラトリーズの皆様の温かさや優れた業務形態のおかげです。本当にありがとうございました。