1. はじめに
こんにちは。普通科の高校を卒業し、現在は情報系の大学(神奈川工科大学)に通っている学部2年生です。
今でこそセキュリティやネットワークを中心に勉強していますが、大学に入学した当初は「Linux? IPアドレス? 何それ?」という状態でした。本当に右も左も分からないところからのスタートだったので、母校でも自分の現在学んでいるような情報系の知識を得る機会がもっと気軽にあったらいいなと思っていました。
そんな中、ご縁があり3日間の特別ゼミを、実際に母校で開催することになりました。
今回は、実際にカリキュラムを作成し、環境構築をして授業を行ってきた話をまとめます。
2. 開催のきっかけ
今回の開催は、母校の恩師からの提案がきっかけでした。
以前、進路指導でお世話になった先生と話す機会があり、現在の学習内容(CTFやセキュリティ全般)を話していたところ、学校側としても 「生徒のIT・情報技術力を伸ばしたい」 という課題があったようで、「もしよければ、うちでゼミをやってみないか?」とオファーをいただき、私が講師としてカリキュラムを作成することになりました。
3. ゼミの概要
受講者数
当初は定員を15名としていましたが、開催直前に増枠の要望があり、最終的に1年生・2年生合わせて17名での実施となりました。 予想を大きく上回る応募があり、高校生たちの情報セキュリティに対する関心の高さに驚かされました。
カリキュラム構成
日程は「1日2コマ × 3日間」の計6コマです。 集中力を維持し、学習効果を高めるため、単なる座学ではなく 「座学 + ハンズオン」のハイブリッド形式 を採用しました。
前半(座学): 基礎知識の解説
後半(ハンズオン): 前半で学んだ知識を実機で試す
これを3日間繰り返すことで、「聞いて終わり」ではなく「体験して理解する」流れを作りました。
3日間のカリキュラム概要
1日目:作って学ぶ! Webの仕組み
【座学】 「Webに繋がる」とはどういうことか? インターネットに必須なIPアドレスとDNSの仕組みについて解説。
【ハンズオン】 Linuxを使って自分のWebサーバを構築。「自分のパソコンがサーバになる」体験をし、実際に教室内の友人にアクセスしてもらう実験を行いました。
2日目:攻めて暴く! 攻撃者の視点
【座学】 1台のPCやスマホで複数のアプリが同時に動く仕組み(ポートの概念)と、パスワードセキュリティの現状について解説。
【ハンズオン】
OSINT体験(自分のメアドが漏洩していないか調査)
CTF(Capture The Flag)形式でのセキュリティ競技体験
3日目:暴いて守る! マルウェアの正体
【座学】 サイバー攻撃の最終段階で使われる「マルウェア(ウイルス)」の種類や挙動について解説。
【ハンズオン】
マルウェア感染デモ
CTF(Capture The Flag)形式でのセキュリティ競技体験
4. 環境構築とネットワーク構成
17名が一斉にハンズオンを行うため、学校のネットワークへの影響と、環境の均質化を考慮して以下のような構成を組みました。
システム構成
ホストPC上に一台の仮想マシンを立て、その中でTerraformを活用して人数分のDockerコンテナを稼働させる構成にしてみました。
ホスト OS: Windows 11
ゲスト OS: Ubuntu Server 24.04 LTS (VMware Workstation Pro)
環境: Docker (Terraformを使用して、17名分のコンテナを展開)
ネットワークの課題と工夫
ローカルリポジトリの構築 今回、最大の懸念点は「ネットワーク帯域」でした。 CTFやハンズオンで17名が一斉に通信を行うと、学校のネットワークに多大な負荷をかけてしまう恐れがあります。そこで、自前のWi-Fiルーターを持参し、ホストPCと生徒のPCだけで完結するローカルなLAN環境を構築しました。
しかし、閉じたネットワーク(または帯域制限下)では、ハンズオンに必要なパッケージ(apt install 等)がダウンロードできなくなってしまうので、解決策として以下の試みをしました。
解決策: Ubuntu (Guest OS) 上に完全なローカルリポジトリ(apt mirror)を構築しました。 各Dockerコンテナの参照先(/etc/apt/sources.list)をこのローカルリポジトリに向けることで、インターネットに出ることなく、高速かつ安定してパッケージをインストールできる環境を実現しました。
5. 当日の様子と学生の反応
1日目
初日は独特の緊張感があり、前半の座学では少し硬い雰囲気でのスタートとなりました。
しかし、後半のハンズオンで実際に環境を触り始めると、生徒たちの表情も和らぎ、スムーズに進行できるようになりました。
▼ 生徒の反応
今回の参加者の多くは、普段GUI(マウス操作)しか触ったことがなく、CLI(コマンドライン)での操作は完全未経験でした。
最初のsshの接続は、思ったよりもスムーズでいけたのですがその後のnginxを入れてサービスを開始する際や、index.htmlを編集する際に使用をしたnanoエディタの操作が手こずっていました。
2日目
2日目は、より身近な「パスワード」と「攻撃手法」に焦点を当てました。 抽象的な概念が多かった初日に比べ、「自分のメールアドレスの漏洩チェック(Have I Been Pwned使用)」など身近な話題が多かったため、生徒の食いつきが格段に良かったです。
また、2日目と3日目で行ったCTFに関しては、個人戦にしたため、皆さん頑張っていました。
▼ 生徒の反応
-
「自分のメアドが流出してる!」という衝撃
「Have I Been Pwned」を使った調査など、身近なトピックへの食いつきは抜群でした。「うわ、漏れてる…」「俺のは大丈夫だった!」と、セキュリティを自分事として捉えてくれている様子が印象的でした。また、パスワードを自分で考えて調査をする際には、円周率をパスワードにしている人で、どのくらいの桁までだったら漏れているんだろう調査してる子や、自分の誕生日などを入れて調べている子もいました。 -
メモ帳でのログ解析ラッシュ
CTFで攻撃問に行き詰まった生徒たちが、ログ解析問題に殺到。全員がWindowsの「メモ帳」で膨大なログを開き、無言でスクロールし続ける光景はシュールであり、彼らなりの必死な工夫を感じるハイライトでした。 -
「nginx」をド忘れ
1日目の復習として「昨日使ったWebサーバソフトの名前は?」という問題を出したところ、正解者は17人中わずか4人でほぼ全員がなんだっけ?と講義資料や友達と相談をしながら行っていました。
3日目
最終日の講義テーマは、私の専門領域である「マルウェア解析」です。 専門性が高く、高校生にはハードルが高い懸念もありましたが、前日の実習でセキュリティへの興味が高まっていたためか、非常に高い関心を持って受講してくれました。 特に「事後対応(インシデントレスポンス)」や具体的な対策手法の解説では、多くの生徒が自発的にノートを取っており、知識の吸収に対する貪欲さを感じました。
▼ 生徒の反応
CTFに関しては、Crypto(暗号)やProgramming(自動化スクリプト等)のジャンルを追加し、実際のCTF大会に近い構成にアップデートしました。
問題の幅が広がったことで競技性が増し、生徒たちのモチベーションも最高潮に達しました。
常にスコアボード(Leaderboard)を意識し、順位変動に一喜一憂しながらも、「抜かされたくないから解く」という健全な競争環境が生まれていました。ゲーミフィケーションを取り入れた学習効果が最も現れた瞬間だったと思います。
6. おわりに
▼ 成長できた点 1年前の自分は「説明する」どころか、今回扱った技術の存在すら知りませんでした。 それを高校生に教えられるようになったこと、そして何より「自分のやりたい演習環境を、自分の手(TerraformやDocker)で構築しきれたこと」は、エンジニアとして確かな成長を感じる瞬間でした。
▼ 見えてきた課題 一方で、「伝える難しさ」も痛感しました。 自分の知識に対する自信のなさが、言葉の詰まりや説明の複雑さに繋がってしまった場面がありました。**「曖昧な理解では、他人にシンプルに説明できない(言語化できない)」**という事実は、実際に教壇に立ってみて初めて気づいた教訓です。
また、環境構築やカリキュラムに関しても、「もっと効率的な構成があったのではないか?」「もっと分かりやすい順序があったのではないか?」という反省が尽きません。
今回の経験で得た「技術的な自信」と「教えることの難しさ」。この両方を糧にして、今後もインプットとアウトプットを続けていきたいと思います。