こんにちは、フルスタックエンジニアのryuです。
今回の記事では、基本情報技術者試験の過去問を使いながら、DMZとは何か、Webサーバーとデータベースサーバーをどこへ配置すればよいのかを解説します。
DMZはネットワークセキュリティを勉強するとよく出てくる言葉ですが、
「外部ネットワークと内部ネットワークの間にある場所」 「Webサーバーを置くところ」
とだけ覚えている方も多いと思います。
それだけでも過去問は解けることがありますが、科目Bでネットワーク構成を読むためには、
なぜWebサーバーをDMZへ置くのか なぜ重要なデータベースを内部ネットワークへ置くのか ファイアウォールでどの通信を許可するのか
まで理解しておくことが大切です。
この記事では、過去問を解きながら、DMZ・内部セグメント・外部セグメントの役割、WebサーバーとDBサーバーの配置、通信を必要最小限にする考え方まで順番に解説します。
データを保護するためのサーバーの設置方法は?¶
今回はこちらの問題です。
1台のファイアウォールによって,外部セグメント,DMZ,内部セグメントの三つのセグメントに分割されたネットワークがあり,このネットワークにおいて,Webサーバと,重要なデータをもつデータベースサーバから成るシステムを使って,利用者向けのWebサービスをインターネットに公開する。インターネットからの不正アクセスから重要なデータを保護するためのサーバの設置方法のうち,最も適切なものはどれか。ここで,Webサーバでは,データベースサーバのフロントエンド処理を行い,ファイアウォールでは,外部セグメントとDMZとの間,及びDMZと内部セグメントとの間の通信は特定のプロトコルだけを許可し,外部セグメントと内部セグメントとの間の直接の通信は許可しないものとする。
ア:WebサーバとデータベースサーバをDMZに設置する。 イ:Webサーバとデータベースサーバを内部セグメントに設置する。 ウ:WebサーバをDMZに,データベースサーバを内部セグメントに設置する。 エ:Webサーバを外部セグメントに,データベースサーバをDMZに設置する。 出典:平成29年春期 問43
答えは、ウです。
インターネットからアクセスされるWebサーバーはDMZへ置き、重要なデータを保存しているデータベースサーバーは内部セグメントへ置きます。
そして、DMZのWebサーバーから内部のDBサーバーへ必要な通信だけをファイアウォールで許可します。
DMZとは?¶
DMZとは、内部ネットワークと外部ネットワークの間に設ける、外部公開用のシステムなどを配置するための分離されたネットワーク領域です。
DMZは「非武装地帯(Demilitarized Zone)」の略です。
ネットワークでは、外部から直接内部ネットワークへアクセスさせず、公開が必要なサーバーを中間の領域へ分離するために利用します。

イメージすると、
インターネット
↓
ファイアウォール
↓
DMZ
↓
ファイアウォールによる制御
↓
内部ネットワーク
という構成です。
今回の問題では1台のファイアウォールに複数のインターフェースを持たせ、
外部
DMZ
内部
の3つへネットワークを分割しています。
なぜWebサーバーをDMZへ置くの?¶
Webサービスをインターネットへ公開するなら、利用者はWebサーバーへアクセスできなければなりません。
つまり、
インターネット
↓
Webサーバー
の通信は許可する必要があります。
しかし、Webサーバーを内部ネットワークへ置き、インターネットから内部へ直接アクセスできるようにすると、内部ネットワークを外部へさらす範囲が広がります。
そこでWebサーバーをDMZへ分離します。
インターネット
↓
DMZのWebサーバー
へ必要な通信だけを許可します。
仮にWebサーバーが攻撃を受けたとしても、そこから内部ネットワークへ自由にアクセスできないように、ファイアウォールで通信を制限します。
DMZの目的は、外部公開が必要なシステムと重要な内部ネットワークを分離することです。
なぜDBサーバーは内部セグメントなの?¶
今回のデータベースサーバーには、重要なデータが保存されています。
一般のインターネット利用者がDBサーバーへ直接接続する必要はありません。
利用者は、
ブラウザ
↓
Webサーバー
↓
DBサーバー
という流れでサービスを利用します。
そのため、
インターネット
↓
DBサーバー
という直接通信を許可する必要はありません。
DBサーバーは内部セグメントへ配置し、
DMZのWebサーバー
↓
必要なDB通信だけ許可
↓
内部のDBサーバー
という形にします。
これにより、重要なデータを持つサーバーをインターネットから直接アクセスできない場所へ分離できます。
DMZに置けば安全になるわけではない¶
DMZを学習すると、
「DMZへWebサーバーを置けば安全」
と考えてしまうことがあります。
しかし、DMZはセキュリティ対策の一つであって、それだけでサーバーが安全になるわけではありません。
DMZのWebサーバーは外部から通信を受けるため、
- OSやミドルウェアの更新
- 不要なサービスの停止
- 適切なアクセス制御
- ログ監視
- Webアプリケーションの脆弱性対策
なども必要です。
DMZは、
侵入を絶対に防ぐ場所
ではなく、
外部公開するシステムを内部ネットワークから分離し、攻撃時の影響範囲を抑えるための境界
と考えると分かりやすいです。
ファイアウォールでは何を許可する?¶
今回の問題では、ファイアウォールによって通信を制御します。
重要なのは、
必要な通信だけ許可する
ことです。
例えば、単純化すると、
インターネット
↓ HTTPS
DMZのWebサーバー
↓ DB接続に必要な通信
内部のDBサーバー
という通信だけを許可します。
一方で、
インターネット
↓
内部DBへ直接アクセス
は許可しません。
また、
DMZのWebサーバー
↓
内部ネットワークのどこへでも自由に通信
という設定も避けるべきです。
WebサーバーからDBサーバーへ必要な通信だけを許可する、といった最小限のアクセス制御が大切です。
選択肢アが不適切な理由¶
アは、
WebサーバとデータベースサーバをDMZに設置する。
です。
WebサーバーをDMZへ配置するのは適切ですが、重要なデータを持つDBサーバーまでDMZへ置く必要はありません。
DMZは内部ネットワークより外部に近い領域です。
インターネットから直接DBへアクセスさせる必要がないなら、DBは内部セグメントへ置き、Webサーバーから必要な通信だけを許可する方が適切です。
選択肢イが不適切な理由¶
イは、
Webサーバとデータベースサーバを内部セグメントに設置する。
です。
重要なDBサーバーを内部へ置く点はよいのですが、インターネットへ公開するWebサーバーまで内部へ配置しています。
今回の問題では、外部セグメントと内部セグメントの直接通信を許可しません。
そのため、インターネット利用者がWebサーバーへアクセスするには、WebサーバーをDMZへ置くのが適切です。
選択肢エが不適切な理由¶
エは、
Webサーバを外部セグメントに,データベースサーバをDMZに設置する。
です。
重要なデータを持つDBサーバーをDMZへ配置しており、適切ではありません。
また、Webサーバーもファイアウォールの保護を受けるDMZへ配置する方が、外部公開用サーバーとして管理しやすくなります。
DMZとHTTPSは役割が違う¶
DMZと一緒に理解しておきたいのがHTTPSです。
HTTPSは、
ブラウザ
↓
Webサーバー
の通信内容をTLSで保護します。
一方、DMZは、
外部ネットワーク
DMZ
内部ネットワーク
というネットワークの配置・分離に関する考え方です。
つまり、
| 対策 | 主な役割 |
|---|---|
| HTTPS | 通信内容を保護する |
| ファイアウォール | 通信を許可・拒否する |
| DMZ | 外部公開システムを内部から分離する |
という違いがあります。
科目Bでは、こうした複数のセキュリティ技術を一つのネットワーク図の中で考える問題が出てきます。
あわせて読みたい:HTTPSの機能を用いて実現できるものはどれか
Webサーバーが侵害されたらどうなる?¶
DMZの考え方が分かりやすいのが、Webサーバーが侵害されたケースです。
もしWebサーバーとDBサーバーを同じ内部ネットワークへ置き、通信制限もほとんどなければ、
Webサーバーへ侵入
↓
内部ネットワークへ移動
↓
DBサーバーへアクセス
と被害が広がる可能性があります。
一方、
WebサーバーはDMZ
↓
DMZ→内部は必要な通信だけ
↓
DBは内部
と分離しておけば、攻撃者がWebサーバーへ侵入しても、内部への通信を制限できます。
もちろん、設定や脆弱性によっては内部へ侵入される可能性はあります。
それでも、ネットワークを分離し通信を制限することで、攻撃者の横展開を難しくすることができます。
科目Bではネットワーク図を「通信の矢印」で読む¶
DMZの問題は、用語だけ覚えるより、ネットワーク図を描いて考えると分かりやすいです。
例えば、
利用者
↓
Internet
↓
[Firewall]
↓
Webサーバー(DMZ)
↓
[Firewallで必要な通信だけ許可]
↓
DBサーバー(内部)
と書きます。
そして、
- 誰が誰へ通信する必要がある?
- インターネットから直接アクセスさせてよい?
- 重要なデータはどこにある?
- どの通信だけ許可すればよい?
と考えます。
今回なら、
利用者 → Web
は必要です。
Web → DB
もサービス提供に必要です。
しかし、
利用者 → DB
は不要です。
このように、必要な通信と不要な通信を分けると答えが見えやすくなります。
Giji Academyでネットワーク構成からセキュリティを学ぶ¶
科目Bのセキュリティ問題では、
「DMZとは何ですか?」
と用語だけ聞かれるより、ネットワーク構成の中から、
「このサーバーはどこへ置くべきか」 「どの通信を許可するべきか」 「どこに危険があるか」
を考えることが重要です。
Giji Academyでは、科目Bに関連するセキュリティ問題を学ぶ前に、IPアドレス、スイッチ、ルーター、ファイアウォール、サーバーなどの基礎から段階的に学べるようにしています。
そのうえで、
社内
DMZ
インターネット
Webサーバー
DBサーバー
といった構成を使いながら、セキュリティ問題を考えていきます。
「ファイアウォールやDMZという単語は知っているけど、ネットワーク図になると分からない」という方は、構成を実際にイメージしながら学んでみてください。
登録不要で無料体験できます。
過去問解説まとめ¶
今回の記事では、DMZを使ったサーバー配置について解説しました。
答えは、ウの「WebサーバをDMZに、データベースサーバを内部セグメントに設置する」です。
DMZで覚えておきたいポイントは次のとおりです。
- DMZは外部ネットワークと内部ネットワークの間に設ける分離された領域
- インターネットへ公開するWebサーバーなどをDMZへ配置する
- 重要なデータを持つDBサーバーは内部ネットワークへ配置する
- 外部から内部への直接通信は許可しない
- DMZから内部への通信も必要なものだけ許可する
- DMZへ置くだけで安全になるわけではなく、サーバー自体の脆弱性対策も必要
基本情報技術者試験では、「公開するものはDMZ、重要な内部データは内部ネットワーク」という基本を押さえたうえで、必要な通信だけを許可する考え方まで理解しておきましょう。
Giji Academyでは、擬似言語に加えて、科目Bに関連するネットワーク・セキュリティ問題も実践的に学習できます。
Giji Academy|科目Bの擬似言語・セキュリティを学ぶ
基本情報技術者試験の参考書¶
元記事で紹介していた過去問題集は旧試験制度向けです。画像・リンクはそのまま残しますが、現在受験する場合は科目A・科目Bに対応した最新教材を利用することをおすすめします。







