CS四方山話(第7話)サイバーセキュリティを考える上で、知っておきたいネットワークの仕組み、その2
今回は、前回(第6話)からこぼれてしまった、DHCP、DNS、デフォルトゲ-トウェイに関して説明しておきます。前回に引き続き、IP通信の基礎のお話になります。
DHCPは、自宅でもオフィスでもネットワークを使っていればお世話になっているはずですし、基本的な機能ですので、皆さんも名称はご存知では? と思います。DHCP、DNS、デフォルトゲートウェイは、ネットワークを詳しく知っていく上での足掛かりになります。セキュリティを考える上でネットワークを知ることも必要になりますので、お付き合い下さい。
●IP通信の基本的な手順をオンラインショッピングでたとえてみると……
レイヤ1〜4などパケットの構造と、MACアドレスに関しては、これまで説明して来ました。パケットを送受信する基本的な仕組みはレイヤ1になります。1つのパケットには、レイヤ2〜4の情報が載っている訳ですが、一番下っ端のネットワークデバイスはレイヤ1の情報だけで動きます。
オンラインショッピングの仕組みを例にして考えてみましょう。あくまでも仮想です。この仮想の世界では、分業(役割分担)が徹底されているものとします。
オンラインショッピングモールは利用者のアカウントを管理しています。ネットで注文を受けて、決済を行い、ネット店舗に品物、届け先住所を指定し発送を指示します。ネット店舗は、品物を梱包して、宅配業者に届け先住所を指示して梱包した荷物を引き渡します。宅配業者は荷物を受け取ると、住所から最寄りの配達所を割り出して、その配達所に荷物を送ります。配達所では、届け先住所から実際の届け先の物理的な場所を割り出して、実際に荷物を運んで目的地に届けます。
この例では、レイヤ1に記述されたMACアドレスは「物理的な位置」、レイヤ2の記述されたIPアドレスは「住所」、レイヤ3に記載されたポート番号は「配達指示」、レイヤ4のアプリケーションデータは「荷物の中身」というように考えると良いでしょう。
●ARP (アープ)⇔ MACアドレス(物理的な場所)を知る手順とは?
この仮想の世界では、地図というものがありません。そこで配達所から大声で「この住所の建物はどこですか?」と叫びます。すると、その建物が「物理的な場所はここです!」と返事をします。この返事で配達員は、物理的な場所を把握し、その場所に荷物を届けることができます。
この処理が ARP (アープ)というプロトコルです。「どこですか?」が ARP要求、「その返事」が ARP応答です。ARPのデータはIPと同様、レイヤ2に書かれます。ARP要求では、相手のIPアドレスは分かっていますが、MACアドレスは分かっていないという段階なので1:1の通信ができません。そこで、ARP要求をブロードキャストという方法で(声の届く範囲に)送信します。
つまりブロードキャストでは、ARP要求は「レイヤ2が到達する範囲」=「ルータなどのレイヤ3スイッチで分割されていない範囲」=「一般的なLAN内の全てのネットワークデバイス」に届きます。そして、自分のIPアドレスが要求のIPアドレスに一致した場合に限り応答します。要求元は、ARP応答によって求めるMACアドレスを把握するという手順になります。
●IPアドレスの設定方法は「自力」と「他人任せ」の2パターンから選択
さて、ARPという手段を手に入れたので、IPアドレスが分かれば、ARPで対応するMACアドレスを取得でき、フレームを構成する情報が揃って通信できることが分かりました。次は、IPアドレスをどうやって手に入れるかという話です。
まずは自分自身のIPアドレスです。IPアドレスの決め方は大きく分けて2つあります。IPアドレスを配布(指定)するサーバーに決めてもらう方式(他人任せ)と、自分で決める方法(自力)です。「自力」は、たとえば社内のアプリケーションサーバーやNASのように、PCなどがそのアドレスを目がけて通信してくる対象の場合は、そのIPアドレスは固定されている必要があるので「自力」で固定IPアドレスを指定する形態が一般的です。
一方、「他人任せ」は、逆にIPアドレスが決まっていなくても問題がない場合、たとえば自宅のPCやオフィス内のPCの場合です。IPアドレスの配布方法としてはDHCP、BOOTP、RARPなどがありますが、ここでは最も普及しているDHCP(Dynamic Host Configuration Protocol)を取り上げます。自分のPCのネットワークの設定で「DHCPを参照」「DHCPサーバーを使用」としていれば、このDHCPサーバーが、あなたのPCのIPアドレスを決めているということになります。手順としては以下のようになります。
・ PCはブロードキャストで DHCP 探索を実行します (DHCP-Discovery)
・ それを受けたDHCPサーバーは、PCに対して、割り振る予定のIPアドレスを指定して、返信します(DHCP-Offer)
・ PCがそのIPアドレスを受け容れる場合は、DHCPサーバーにIPの払い出しを要求します(DHCP-Request)
・ DHCPサーバーは、その要求を承認することでIPアドレスが確定します(DHCP-Acknowledge)
DHCPがよく使われる理由は2つあります。
1) IPアドレスが重複しないようにする
2) IPアドレスと同時に、ネットマスク、デフォルトゲートウェイ、DNSサーバーを指定する
まず1) に関してです。ARPの処理を思い出して頂くと分かりますが、ARPが届く範囲内に同じIPアドレスを持ったネットワークデバイスが2つあると、どちらからの返事をして良いか分からなくなります。IPアドレスは同じLAN内ではユニークであること(他と被らないこと)が重要です。同じIPアドレスを持ったPCが複数あるとネットワークの処理は混乱します(同様にMACアドレスも重複することは御法度ですが、こちらは第6話で解説したとおり、製造メーカも含めユニークになるように配慮されていますので、基本的には重複を気にする必要はありません)。
DHCPの手順(RFC2131)ですが、認証機能がありません。従って、原理的に中間者攻撃やDOS攻撃などを避けることができません(RFC3064、RFC3118で認証機能が提案されていますが、全く普及していません)。通常LANでの運用ということで「認証がなくても、まあ良いか」というノリだと思いますが、「ゼロトラストセキュリティ」という観点では留意するべき項目ということになります。
次に2) ですが、これは、それぞれの用語の解説が必要ですね。
2) は「自力」の場合、ネットマスク、デフォルトゲートウェイ、DNSサーバーも自力で指定することが必要となります。
●IPアドレスのビットにマスクをかけて、同一LAN内のアドレスを設定
ネットマスク(Netmask)は、IPアドレスのどの範囲までをLAN内とみなすかを指定する情報です。IPアドレスを「ネットワークアドレス」「ホストアドレス」と区分することもあり、その区分ということもできます。ネットマスクは、下記のように表現されます。
・ IPアドレス:192.168.100.70/24
・ IPアドレス:192.168.100.70,ネットマスク:255.255.255.0
どちらも同じ意味です。「先頭から24bits = 192.168.100.0が有効で、それがネットワークアドレスである」と表現するか「192.168.100.70と255.255.255.0とのAND = 192.168.100.0がネットワークアドレスである」と表現するかの違いです。ちなみに255は2進数で11111111、0は00000000の8ビット表現です。IPアドレスの192.168.100.70において、先頭から8ビット×3=24ビットぶんに、それぞれ255(11111111)でANDを取ると、計算結果はそのままの状態に保たれます。また下位の8ビットぶんの70に0(00000000)でANDをとると0にリセットされます。ゆえに結果は192.168.100.0になります)。要するに、IPアドレスの先頭が192.168.100のものは「仲間」=同じLAN内のアドレスということになります。
ネットマスクは、192.168.100.0/24や172.16.0.0/16など8bits単位のものをよく見掛けると思います。8bits単位であれば、10進数4桁表記した場合に各桁と一致するので分かり易いです。しかし、コンピュータは10進数ではなく、2進数の世界で暮らしているので、153.240.128.0/17とか10.1.1.8/29とかでもOKです。
10.1.1.8/29の場合を例に説明します。29bitsマスクなので32-29=3bits、つまり8つのアドレスが使えます。指定された範囲の先頭10.1.1.8がネットワークアドレス、指定された範囲の最後10.1.1.15がブロードキャストアドレスになります。普通に使えるIPアドレスは、10.1.1.9〜10.1.1.14の6つということになります。
●異なるネットワークとの中継を行うデフォルトゲートウェイの機能
デフォルトゲートウェイ(Default gateway)は、ルーティングと密接な関係にあります。ルーティングの話は奥が深いので詳しくは次回以降に譲るとして、ここではデフォルトゲートウェイに絞って話をします。
ネットマスクで指定された同じネットワークのIPアドレスに対しては、ARPでMACアドレスを取得して直接通信を行います。しかし、それ以外のアドレスは同じネットワークには存在しないことになるので、直接通信する方法ではなく、デフォルトゲートウェイとして指定されたネットワークデバイス(通常はルータ)に通信を中継してもらうことになります。たとえば、自宅のLANが192.168.1.0/24で構成されていて、ルータが192.168.1.1でデフォルトゲートウェイに指定されている場合は、192.168.1.3や192.168.1.13などには直接通信しますが、8.8.8.8との通信はルータに中継を依頼してもらうという形になります。
●ドメイン名をIPアドレスに変換する DNSの機能
DNSも奥が深いですし、セキュリティ上もリスク要因になる部分でもあるので、DNSに関する詳しい説明も次回以降に譲ります。ここでは、簡単な説明に留めます。DNS(Domain Name Server)は、ドメイン名(人間に分かり易いサーバー名)をIPアドレスに変換する機能を提供するサーバです。
たとえば、あなたがWebブラウザでgoogle.comにアクセスしようとします。あなたのPCはIPアドレスでしか通信できないので、google.comをIPアドレスに変換する処理が必要です。この処理を担うのがDNSです。DNSによって、google.comが142.250.196.142に変換されることで、あなたのPCはgoogle.comと通信できることになります。
さて、文字数が3,500を超えていますので、今回はここまでですが、一応予定したデフォルトゲートウェイ、DHCPまで言及できました。ただし、かなり端折っていますので、次回はデフォルトゲートウェイを起点に(手強い)ルーティングの話に入って行きたいと思います。
株式会社シンクロ 中村健
CS四方山話の過去の記事はこちら(合わせてお読みください)
第1話 セキュリティ対策事始め
第2話 実際にサイバー攻撃を観測してみると……
第3話 サイバー攻撃をどうやって防ぐのか?
第4話 多段防壁とパケットフィルタリングの仕組みをヒモ解く
第5話 WAF、IPS/IDS、UTMの違いを理解しよう!
第6話 サイバーセキュリティを考える上で、知っておきたいネットワークの仕組み
サイバーセキュリティ四方山話は、新たな記事が公開されたらメールマガジンで案内をしております。
是非JAPANSecuritySummit Updateのメールマガジンにご登録ください。
メールマガジンの登録はこちらからお願いします。
中村 健 (Ken Nakamura)
株式会社SYNCHRO 取締役 CTO
機械屋だったはずだが、いつの間にかソフト屋になっていた。以前は計測制御、知識工学が専門分野で、日本版スペースシャトルの飛行実験に関わったり、アクアラインを掘ったりしていた。
VoIPに関わったことで通信も専門分野に加わり、最近はネットワークセキュリティに注力している。
https://www.udc-synchro.co.jp/