システム開発において「セキュリティ対策」は避けて通れない重要なテーマです。しかし、私たちが守るべきシステムを、実際の攻撃者はどのように見ているのでしょうか。
先日開催された社内向けの技術勉強会では、SACユニットの北澤さんが登壇。「攻撃者目線で考える!セキュリティ診断と安全なシステムづくり(基礎)」と題し、攻撃者が実際に用いるツールを使った実践的なデモと、開発現場ですぐに活かせる防御の極意が語られました。
開発者が持つべき「攻撃者の視点」とは何か、そのエッセンスをお届けします。

1. 攻撃者が狙う「既知の脆弱性」とツールの脅威
セキュリティ診断の目的は、システムやウェブサイトに存在する脆弱性や設定の不備を発見することです。
セミナーの冒頭で北澤さんは、すでに発見・公開されている「既知の脆弱性」と、パッチが存在しない未知の「ゼロデイ脆弱性」の違いについて解説しました。 ゼロデイ攻撃を防ぐのは困難ですが、既知の脆弱性はツールによるスキャンで確実に検出可能です。
今回のデモでは、セキュリティ診断用OSである「Kali Linux」を使用。NmapやOpenVAS、Nikto、Hydraといったオープンソースのツールは、診断側だけでなく攻撃者も日常的に使用しています。これらのツールを通じて「攻撃者がどうシステムを見ているか」を知ることが、強固なシステム構築への第一歩となります。
2. 実践デモ:Nmapで見えてしまう「不要な情報」の恐ろしさ
勉強会の中盤では、北澤さんが自身で構築した環境(Raspberry Piなど)をターゲットにしたポートスキャンのデモが披露されました。
Nmapを用いて対象をスキャンすると、開放されているポート番号(22番や80番など)だけでなく、稼働しているOSの種類やApacheなどのソフトウェアのバージョン情報までが丸見えになってしまう事実が示されました。 攻撃者はまず「IPアドレスが存在するか」「どのポートが開いているか」「どんなサービスやバージョンが動いているか」を執拗に探ってきます。もしここに古いバージョンのソフトウェアがあれば、一瞬で標的になり得ます。
不要な情報を外部に公開してしまうことが、いかにリスクを高めるかを視覚的に実感させられるデモでした。
3. 攻撃を防ぐための「通信の制限」と「情報の隠蔽」
では、どのようにシステムを守ればよいのでしょうか。
北澤さんが提示した対策は、非常に実践的です。 まずは「通信の制限」です。VLANやファイアウォールを活用し、外部からの通信を本来必要なWebポート(80番や443番など)のみに限定することで、SSHなどの管理用ポート(22番)を攻撃者から見えなくすることが重要です。
次に「バージョンの隠蔽」です。Apacheの設定ファイルに数行の記述(ServerTokensやServerSignatureをオフにする設定)を追加するだけで、OSやソフトウェアのバージョン情報の漏洩を防ぐことができます。
外部に提示する情報を最小限に抑えることが、攻撃の糸口を絶つ有効な手段となります。
4. 「侵入された後」を想定した究極の防御策
セッションの終盤、北澤さんは「外からの防御だけでなく、不正アクセス後も考えなければならない」と力強く語りました。
実際のタイムズの不正アクセス事例を引き合いに出し、「一般的にパスワードはハッシュ化されており、盗まれても最悪の事態は防げますが、個人情報などはそもそも『毎度必要な情報』と『初回だけ必要な情報』を厳密に分け、不要な情報は持たない(あるいは分離する)べきだ」と指摘。
アクセスできる範囲を限定し、保有する情報を最小限にする。仮に侵入されたとしても被害を極小化する設計思想は、すべての開発者が肝に銘じるべき教訓です。
編集後記
毎週水曜日に開催されている社内勉強会。今回は、攻撃者の視点から自社システムやクラウド環境のセキュリティを見つめ直す、非常に示唆に富んだセッションでした。 質疑応答でも、実際の診断にかかるリアルな時間(半日から1日規模)や、AWS・Azureといったクラウド環境特有の設定ミスに関する議論が交わされ、参加者のセキュリティ意識が一段と高まったのを感じます。
当社では現在、最新技術と確かなセキュリティ意識を持ち合わせ、共にプロダクトと組織を成長させていく仲間を募集しています。このような技術交流や課題解決のプロセスにワクワクした方は、ぜひ採用ページもご覧ください!