筆者の自己紹介
sleekと言います。
サイバーセキュリティの業界に関心を持ち、CTF(ハッキング技術を競うゲーム)などに勤しんでいました。新卒で、企業のレッドチーム(サイバー部隊)に所属しました。
その後、株式会社varのCTO(最高技術責任者)として活動しています。
vimとお酒が好きです。
Envaderの始まり
私自身が、CTFをしていた頃、常に感じていたことが「インフラって勉強しにくい」ということでした。CTFでは、あたりまえのようにTerminalを扱ったり、特定のIPアドレスに対して攻撃を行うような問題を解きます。
プログラミングについては、Progate のような素晴らしいサービスのおかげで、比較的簡単に学習できました。
しかし、「インフラを学習するには、インフラを構築しなければならない」という矛盾があり、プログラミングほど簡単に進むものではありませんでした。
「インフラもオンライン上で学習できたらなぁ」という気持ちがスタートです。
Dockerと仮想マシン
2017年当初、Dockerのようなコンテナ型仮想化が流行(?)していた時代です。
ネットサーフィンをしていると、セキュリティの脆弱性を再現したCVE-XXXX-XXXX
というコンテナを発見しました。
これまでは、Virtual Boxなどにovaファイル
をインポートしていましたが、Dockerなら10秒ほどで起動まで完了するというのは、CTFerな私にとってすごく嬉しい話でした。
Virtual Boxがうまく作動しない経験をしたことがある人はきっと多いはずです。
今更ですが、1つの仮想マシンを立ち上げるのに少なくとも2分程度かかっていた時代に、コンテナを利用すると環境を10秒程度で起動するのは非常に魅力的だと感じました。
特定の演習が可能なコンテナを動的に起動できたら様々な場面で演習を行うことができるなと思いました。
これがEnvaderの着想です。そう、Envaderはコンテナベースのシステムなのです。
当時のアイディア図
ユーザーが利用するコンテナを用意して、そこにウェブからアクセスすれば、オンラインでもインフラの学習ができるはずです。
ova
やdocker image
をローカルマシンに落とす必要がないのではないか?
当時、頭の中にあったイメージを図にしました。
ここからEnvaderの開発がスタートしました。
次から開発について話します。