セキュリティに課題を抱える企業を対象に独自のセキュリティサービスを提供されている、株式会社CISO 代表取締役 那須慎二様によるセキュリティコラム最終回。今回は、前回に引き続きセキュリティエンジニアに必須となる「ネットワーク」基礎知識 その2をご紹介いただきます。
前回は、ネットワークスキルを身につけるにあたっての基本中の基本である、OSI参照モデルの概要をご紹介いただきました。
今回もOSI参照モデルに触れていただきつつ、「攻撃者がどのように悪用してくるのか」という具体的な部分にも踏み込んで解説いただいています。
セキュリティコラムシリーズの最終回です。
前回の記事は以下よりご確認いただけます。
セキュリティエンジニアを⽬指す⽅にとって、絶対に⾝につけてほしい基本スキルが、前回からお届けしている「ネットワーク」のスキルです。
前回はOSI参照モデルの中の「物理層」「データリンク層」「ネットワーク層」について説明しました。今回はその上位層である「トランスポート層」について説明しつつ、TCP/IPにも触れていきます。
「トランスポート層」は、「ネットワーク層」の上位にある、セキュリティエンジニアにとって極めて重要な層です。トランスポート層の役割は 、主に「転送されるデータの信頼性担保」と「アプリケーションへの振り分け」です。
パソコンから放出された電気信号(データ/パケット:前項参照)が、スイッチングHUB(データリンク層)やルータ(ネットワーク層)を通過していきます。
地球の裏側にあるWebサイトだとしても、素早く表⽰ができるのは、極めて⾼速にデータが⾏き来しているためです。⾼速にデータが⾏き来する間に、何かしらの理由でデータが1つでも破損してしまうと、正確にWebサイトの画⾯が表⽰されなかったり、メールデータが⽋損した場合は本来伝えるべき⾔葉が正しく伝わらない可能性があります。
このような状況を回避するために、トランスポート層(TCPプロトコル)では、データの信頼性を担保するために、シーケンス番号というものを加えます。これによって、データが順番通り届いているかどうかを確認したり、データの途中で⽋損があった場合は、送信元に対して再送を促すことで、データの信頼性を担保します。
なお、データの信頼性を担保するために、送信元(PC端末)から受信先(Webサイトやメールサーバなど)に対して、「接続を開始してもいいですか?(SYN)」と事前に許可を求めます。受信先(Webサイトやメールサーバ等)は「OKです!(ACK)こちらからも接続を開始してもいいですか?(SYN)」と返事をします。その返答を受けて送信元(PC端末)も再度、「OKです!(ACK)」と返事をした上で、データの転送が開始されます。
双⽅で3回の接点があることから、3回握⼿することにちなんで「3Way Handshake(スリーウェイハンドシェイク)」と⾔います。このように、データの信頼性を担保する通信のことを「コネクション型」と呼びます。
加えて、トランスポート層には、データの信頼性を担保しないプロトコルとして「UDP」が存在します。
UDPでは3Way Handshakeを⾏わず、⼀⽅的にデータを送信します。ラジオが⾳声を⼀⽅的に発信し、電波状況が悪いと再送されることがなく、聞き取れなかったらそれ以上聞くことができない、という状況をイメージしていただくとよいでしょう。動画配信や⾳声通話など、データの送受信にスピードを求められる様な場合に使われるプロトコルです。
そして、トランスポート層のもう⼀つ重要な役割として「アプリケーションへの振り分け」があります。
インターネット上に流れているデータに対して、アプリケーションごとに識別番号をつけ、受け渡しをスムーズにする役割を担います。例えばWebサーバ(http)への通信には「80番」が、Webサーバ(https)には「443番」が、メール送信(smtp)では「25番」が、メール受信(pop3)では「110番」などがそれぞれ割り当てられています(この番号のことを「ポート番号」と呼びます)。
Webサーバを公開する際には、Firewallの設定上で「80番」もしくは「443番」を解放していなければ、インターネットを介してアクセスができない、ということになるため、必ず公開(オープン)にする必要があります。
使⽤されているサービスのポート番号は公開が必須ですが、これが攻撃者に悪⽤されるケースがあります。攻撃の初期段階で⾏われる「ポートスキャン」では、公開されているポートの有無を⼿当たり次第に探す攻撃⽅法です。
例えば、指定したグローバルアドレスに対するポートスキャン結果として「22番、80番、3389番」が空いているとしましょう。22番はssh。コマンドを使ってリモートアクセスするために利⽤される番号です。80番はWebサイト。3389番はWindowsのリモートデスクトップサービス(RDP)で使⽤されるポートです。22番と3389番に関して、これらのポートが空いているということは、IDとパスワードがわかれば、その先にあるサーバなどにリモートでアクセスできる可能性がある、ということを⽰唆します。
攻撃者は、22番ポートに対して、IDとパスワードを総当たりで試す、ブルートフォース攻撃を仕掛けたり、3389番ポートに対してWindowsのリモート接続を試み、IDとパスワードを⼊⼒したり、Windowsの脆弱性を突いた侵⼊ができるかどうか等を試みます。IDとパスワードが弱かったり、Windowsの脆弱性を残している状態のままだと、侵⼊を許してしまうリスクが跳ね上がります。
そのため、使⽤していないポート番号は基本的に閉じるのが、セキュリティ上極めて重要になります。
また、TCPのスリーウェイハンドシェイクを悪⽤した攻撃として、SYNフラッド攻撃があります。送信元(PC等)から受信先(Webサイトなど)に対して、「接続を開始してもいいですか?(SYN)」と許可を求め、受信先(Webサイトなど)は「OKです!(ACK)こちらからも接続を開始してもいいですか?(SYN)」と返事することは先ほど述べましたが、その返答を返さずに、受信側を待ち状態にし、コネクションの確⽴がなされない状態で、同様に送信元から「接続を開始していいですか?(SYN)」という内容を連続で送り続けることで、メモリ領域をオーバーフローさせ、サービス不能に追いやる攻撃です。
このような攻撃を知るには、OSI参照モデルや、TCP/IPの基本的なスキルがとても重要なことをご理解いただけたのではないでしょうか。
那須 慎二(なす しんじ)
株式会社CISO 代表取締役
国内大手情報機器メーカーにてインフラ系SE経験後、国内大手経営コンサルティングファームにて中堅・中小企業を対象とした経営コンサルティング、サイバーセキュリティ・情報セキュリティ体制構築コンサルティングを行う。
2018年7月に株式会社CISO 代表取締役に就任。人の心根を良くすることで「セキュリティ」のことを考える必要のない世界の実現を目指し、長年の知見に基づく独自のセキュリティサービス(特許取得 特許第7360101号)を提供している。
業界団体、公的団体、大手通信メーカー、大手保険会社、金融(銀行・信金)、DX関連など業界問わず幅広く講演・執筆多数。近著に「知識ゼロでもだいじょうぶ withコロナ時代のためのセキュリティの新常識(ソシム)」あり。