2023年9月上旬から10月上旬にかけての約1ヵ月間、合同会社DMM.comの就業型インターンシップに参加してきました。 配属部署はインフラ部ネットワークグループで、DMMのデータセンターを支えるネットワーク技術を学びました。
参加までの経緯
3月に参加したサポーターズの逆求人イベント「エンジニア1on1面談イベント」経由でお声がけいただき、参加に至りました。 イベントではどちらかといえばセキュリティ系のインターンを探していたのですが、面談の中でDMMさんの働き方やネットワークへの強さに興味を持ち、セキュリティ枠の募集がなかったものの選考に進むことにしました。
4月中に面接を終え選考結果もいただいていたのですが、学業との兼ね合いもあり、実際に参加したのは9月に入ってからでした。
インターンシップの内容
9月に始まり、週3日、リモートワークでの参加になりました。
ネットワーク演習課題
インターンの前半では、演習課題を通じてDMMのデータセンターで使われるネットワーク技術を学びました。 ネットワークエミュレータのEVE-NGを使って仮想環境上でJUNOSの設定を行い、簡易的なDMMのネットワークの模擬環境を構築しました。
課題自体は期間内にこなせたものの、実力不足で深掘りしきれなかったのが少し心残りです。 事前知識は大学での研究(インターネット関連のセキュリティがテーマ)の副産物として得られたものが中心で、ルータOSの操作もYamahaのルータで実験環境を構築してきた程度でした。 クラウドインフラの構築とは段違いの緻密さに面白さを感じながら、「ネットワーク完全に理解した」状態から「なんもわからん」状態に進歩(!)しました。
開発:Flow Collectorによるインシデント対応支援ツール
インターンの後半では、ネットワークグループの業務の一環として、インシデント対応を支援するためのツール開発に取り組みました。
セキュリティインシデントへの対応においては、被害範囲の早期特定が収束までのスピードを大きく左右します。 オンプレミス環境でのインシデント発生時には、ネットワークグループも被害範囲の特定に協力することがあります。 具体的には、インシデント対応を専門とする仮想組織のDMM.CSIRTに対し、攻撃に関連する通信のログ情報を提供しています。 このとき提供するデータの収集・取得には、DC内のネットワークにおけるフローを収集・分析するFlow Collectorと呼ばれる装置が使用されています。
DMMで使用しているFlow Collectorでは、Web UIとAPIからフローに関する様々な情報が取得できます。 これまでの業務では、Web UIからトラフィックの一部をPDFなどの形式でダウンロードし、提供していました。 しかしながら、この方法には、以下のような問題点がありました。
- ダウンロードできるデータ数に10,000件という上限がある
- データの一部がFlow Collectorの内部表現となっている
これらの制約は被害範囲の特定スピードを大きく落とすものとなっており、全社的なセキュリティ向上のための課題の一つとして挙げられていました。 今回のインターンでは、この問題を解決するため、フローデータを適切な形でダウンロードするためのツールの開発に取り組みました。 開発したツールの全体像を図に示します。
今回開発したツールは、これまで使用されてこなかったFlow CollectorのAPIを活用するものとなっています。 攻撃者や被害者のIPアドレス、フローを取得したい期間を指定することで、SQLiteのデータベース形式でフローデータをダウンロードできます。
実装にあたっては、ダウンロード用APIにページネーション機能がないこと、ダウンロードされてくるレコードが時系列順に並んでいないことへの対応に手間取りました。 一度のリクエストでダウンロードしきれなかったレコードは、データ取得対象期間をずらすことで無理やりダウンロードする半ば力技の実装で対処しました。
データが時系列順に並んでいないため、この方法では一部レコードが欠損しますが、一度に取得するレコード数を増やして影響が軽微なものとなるよう工夫しました。 Flow Collectorでは元々トラフィックの一部をサンプリングしているため、多少の欠損は許容できると判断しました。
データセンター見学、懇親会
インターンシップは基本的にフルリモートでしたが、途中にデータセンターの見学や、懇親会への参加の機会をいただき、チームの方と直接会ってお話しました。 データセンターでは、普段見られない機器群はもちろんのこと、実際の業務の様子も見学させていただきました。 リモートでは見えづらかったチームでの働き方と雰囲気を知ることのできるよい機会になりました。
学んだこと
勉強になることの多い濃密な一か月間でした。その中で、一番の学びは自分の実力不足がよく分かったことです。
就活期以前のものも含めるとインターンに参加するのは6社目でしたが、正直なところ、今回のインターンが一番難しく苦労しました。 DMMには優秀なエンジニア学生が大勢集まってくるため、期待値も比較的高かったのではないかと思います。
このことは、井の中の蛙だったことに気が付くことができたという意味でいい進歩だったと捉えています。 とてもレベルの高い環境でしたが、背伸びして飛び込んでみてよかったです。
おわりに
サマーインターン参加前は、有名企業のエンジニアインターン体験ブログを読んではレベルの高さに戦々恐々としていました。 DMMでのインターンが始まってからも、我ながらよく受かったなと何度も思いました。 もしこれを読んでいる方の中にこれから参加するインターンが不安な方がいるなら、あまり気にせずチャレンジしてもよいのだと思っていただければ嬉しいです。
最後になりますが、インターンを通して、人事や現場の皆さんから様々なサポートをいただきました。 DMMの皆さん、1か月間ありがとうございました!