応用情報技術者試験

応用情報・セキュリティを解く(H26秋)前編

今回は、平成 26 年度(2014 年度)秋期の「応用情報技術者試験」の過去問(午後 問1 情報セキュリティ)を解いていきます。

この問題では、FW、IDS、IPS、WAF について、基本的な理解が問われています。設問 1 に関しては、出題の仕方が工夫されており、単に用語を知っているだけでは解きにくくなっています。つぶしがいのある問題ですね。

さっそくいきましょう。

・ IPA の情報処理技術者試験 過去問題のページから、問題冊子をダウンロードしておいてください
・ 二重カッコ『 』は、問題文や解答からの引用を表します
・ このエントリでは、設問 1 のみ解説します。設問 2, 3, 4 については、別のエントリで解説します

整理

解説に入る前に、ネットワークに関する基本的な知識を、簡単に確認させてください。押さえてほしいことは、これだけです。

ポイント
  • TCP/IP は、4 つの層からできている
  • パケットは、原則、ヘッダ部分と、データ部分に分かれている。下位層では、上位層のパケット全体を、データ部分に、まるっと突っ込んでいる(カプセル化)
  • 各層では、自分の層に対応するヘッダ部分を見て処理をする。データ部分は、原則、見ない

簡単に、解説していきます。

 プロトコルスタック

コンピュータ同士の通信を実現するためのプロトコルは、実装や改修をより容易にするため、階層構造になっています。
TCP/IP のプロトコルスタック(階層構造)は、次の図の真ん中の絵のように 4 つの層(レイヤ)で実装されています。TCP/IP は、OSI 基本参照モデルとは全く異なるモデルなのですが、レイヤ分けが似ていることから、対比して説明されることがあります。このため、TCP/IP のプロトコルスタックも、2 層、3 層、4 層、7 層と呼ばれることがあります。


以下、2 層が「イーサネット」であるとします。

 パケットのレイアウト

このような階層構造にあわせ、パケットのレイアウトは、次のようになっています。パケットは、基本的に「ヘッダ」部分と「データ」部分(「ペイロード」と呼びます)に分かれており、下位層では、上位層のパケット全体を、データ部分にカプセル化します。

なお、青字で「ヘッダ部」と「データ部」と書かれた箇所を、あわせて「イーサフレーム」と呼びます。

 具体的な通信の流れ

これらを踏まえて、本問における『社内の PC から社外 Web サイトへの HTTP 通信』を例に、どのように通信が実現されているのか、見ていきます。
次の図は、PC から、DMZ に配置されたプロキシサーバ(以下、プロキシ)までの HTTP による通信を表しています。

のように処理されるため、各層は、自分の層のことだけを気にしておけばよいとなります。

  • PC で作られたパケットは、まずは L2SW を通ります。L2SW は、イーサフレーム中の宛先 MAC アドレスを見て、該当する機器がある口(ポート)へ、パケットをフォワード(転送)します。このとき、3 層以上のデータ(イーサフレームのデータ部分)は、原則、見ません
  • L3SW では、イーサフレームから IP のパケット(イーサフレームのデータ部)を取り出し、IP ヘッダ中の宛先 IP アドレスを見て、ルーティング(中継)します。このとき、4 層以上のデータ(IP データ)の内容は、原則、見ません
  • 同様に、今回の FW では、7 層のデータ(今回は HTTP のメッセージ)は、原則、見ません

という感じです。
通信の様子を、もう少し細かく知りたい方は、このエントリの最後の「【4】付録」をご覧ください。

解説

前置きが長くなりました。問題を解き進めましょう。

 設問 1

① FW による IP アドレスやポート番号を用いたパケットフィルタリングだけでは、外部からの攻撃を十分に防ぐことができない

FW の『IP アドレスやポート番号を用いたパケットフィルタリング』では、どの PC(送信元 IP アドレス)から、どのサーバ(宛先 IP アドレス)の、どのサービス(宛先ポート番号)にアクセスするのか、これしか制御できません。

の表は、内部セグメントにある IP アドレス 192.168.0.3 の PC が、社外の Web サイトにアクセスできるようにするための FW のルールです。

方向 送信元 IP 宛先 IP 送信元ポート 宛先ポート 処理
内部 → DMZ 192.168.0.3 192.168.0.1 任意 80 / TCP 許可
DMZ → 外部 200.a.b.1 任意 任意 任意 許可

※1. このルールは、ステートフルインスペクション(個々の通信の状態を保持し、それをもとにフィルタリングできる)機能がある場合をイメージしています。この場合は、応答の通信については、ルールを記載しなくても OK です
※2. プロキシサーバについて、内側の IP アドレスを 192.168.0.1 に、外側の IP アドレスを 200.a.b.1 としました

※3. TCP のポート 80 番は、HTTP です。ちなみに 443 番は、HTTPS です

ここまでわかれば、答えは出たようなものです。それぞれの選択肢を見ていきます。

記号 防御 解答群 解説
不可 DNS サーバを狙った、外部からの不正アクセス攻撃 ・ DMZ 上に配置し、外部から直接アクセスできるよう、FW を設定
・ FW では、DNS のペイロードは見ない
不可 Web サーバの Web アプリケーションプログラムの脆弱性を悪用した攻撃 ・ DMZ 上に配置し、外部から直接アクセスできるよう、FW を設定
・ FW では、HTTP/HTTPS のペイロードは見ない
内部 Web サーバを狙った、外部からの不正アクセス攻撃 ・ 内部セグメントには、外部から直接アクセスできないよう、FW を設定
ファイルサーバを狙った、外部からの不正アクセス攻撃 ・ 内部セグメントには、外部から直接アクセスできないよう、FW を設定
プロキシサーバを狙った、外部からのポートスキャンを悪用した攻撃 ・ DMZ 上に配置しているが、外部から直接アクセスできないよう、FW を設定(内部セグメントからのみ、アクセスできるように設定)

ということで、答えは、 ア と イ になります。

ポートスキャンとは、ポートがオープンなのか、クローズなのかを確認する手法です。対象のポートに対し、TCP や UDP のパケットを送信し、そのレスポンスの内容から、そのポートがオープンなのか、クローズなのか(サービスが起動しているのか、起動していないのか)判定します。

※ ポートスキャンには複数の手法があります。典型的な手法では、TCP の SYN パケットを送信し、コネクションが確立したらオープン、RST/ACK が応答されたらクローズと判定します

復習

それでは、本エントリで学んだことを、簡単に復習しておきましょう。

おさらい
  • TCP/IP のプロトコルスタックは、2 層、3 層、4 層、7 層の 4 つのレイヤからなる
    TCP/IP では、ネットワークを流れるパケットは、基本的に「ヘッダ」部分と「データ」部分に分かれている。下位層では、上位層のパケット全体を、データ部分にカプセル化している
  • L2SW は、3 層以上のデータ(イーサフレームのデータ部分)の内容は、原則、見ない
    L3SW は、4 層以上のデータ(IP データ)の内容は、原則、見ない
    FW では、7 層のデータ(HTTP/HTTPS や DNS の内容)は、原則、見ない
  • ポートスキャンとは、オープン/クローズを確認したいポートに対し TCP や UDP のパケットを送信し、そのレスポンスの内容からサービスが有効かどうか判定する手法である

付録

PC から外部の Web サイトにたどり着く様子を、もう少し細かく知りたい方向けに、通信の流れをざっと、書いてみました(細かい用語は説明しませんので、あしからず)。

まず、プロキシの動きを説明します。プロキシまでうまく到達すれば、あとはプロキシがよしなにやってくれることを理解してください。

  • ブラウザの URL 欄に http://example.com/foo を打って、Enter キーをべこっと押すと、ブラウザに設定されているプロキシを目がけて、リクエストが飛びます
  • プロキシまで届けば、後はプロキシが PC を代理して、example.com に HTTP リクエストを投げてくれます
  • プロキシは、まず example.com を名前解決して、外部 Web サイトの IP アドレスをゲットします。これで、外部の Web サイトに到達できるようになります。そこで、Web サイトの TCP ポート 80 番とコネクションを張り、そのコネクション上で、GET  /foo  HTTP/1.0 のようなテキストを送信してくれます

では、PC からプロキシまで、どのようにデータが到着するか、順にみていきましょう(なぜか、物語調)。

  1. 昔々、とある内部セグメントにいる PC が、自身が作成したパケットの内容を、プロキシに伝えようとしていました。このプロキシは、かつて情報システム部門から指示され、ブラウザに設定したものです。
    PC が、プロキシの IP アドレスを確認したところ、どうやら、自分とは別のネットワークにいることがわかりました。残念ながら、直接届けることができません。
  2. 困った PC は、ふと、情報システム部門(以下、情シ)から指示され、PC に「デフォルトゲートウェイ(以下、デフォゲ)」として、L3SW を設定したことを思い出しました。そして、情シの方が、「直接届かない場合には、デフォゲにお願いするのですよ」、と言っていたことも思い出しました。
    そこで、デフォゲまでパケットを届け、デフォゲに、プロキシのいるネットワークに、ルーティング(中継)してもらうことにしました。
  3. デフォゲは、PC と同じネットワークにいるので、PC から、直接パケットを届けることができます。つまり、デフォゲまでは、CSMA/CD の方式に従って、ケーブルに電気信号流すことで、パケットの内容を伝えられるのです。
    しかし、そのためには、デフォゲの MAC アドレスが必要です。PC は、すぐに自分の ARP テーブル(ARP キャッシュ)を見てみましたが、デフォゲのレコード(IP アドレスと MAC アドレスの組)がありません。そこで、同じネットワークにいる全員に、この IP アドレスを持っているのは誰なのか、聞くことにしました。つまり、デフォゲの IP アドレスについて、ARP リクエストを、ブロードキャストしました。すると、デフォゲが応えてくれました。ARP リプライで、デフォゲの MAC アドレスを教えてくれたのです。
  4. すかさず、デフォゲの MAC アドレス宛に、CSMA/CD の方式に従って、ケーブルに電気信号を流しました。コリジョンは検出されなかったため、再送せずに済みました。これで、ようやくデフォゲにたどり着きました。
  5. デフォゲである L3SW では、パケットの送信先 IP アドレスのネットワークを確認してくれました。そして、L3SW のルーティングテーブルに従い、送信先のネットワークにルーティング(中継)してくれました。
  6. ようやく、パケットが、プロキシと同じネットワークにたどり着きました。あとは、L3SW に、プロキシの MAC アドレスをゲットしてもらい、電気信号を流してもらうだけです。
    たまたま、L3SW の ARP テーブルに、プロキシのレコードがあったため、そこから MAC アドレスをひきました。CSMA/CD の方式で、ケーブルに電気信号流して、PC が作成したパケットの内容は、無事、プロキシまで伝わりました。

めでたしめでたし。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です