HOME

林田力hayariki.netセキュリティ

 

ウイルス... 1

パスワード... 3

USBICカード... 4

ハードディスク... 5

無線LAN.. 6

シングルサインオン... 8

ポートスキャン... 9

SYN Flood. 11

リスクマネジメント... 12

 

 

ウイルス

情報機器の普及やインターネットの発達は現代人の生活を大きく変えた。便利になった一方、情報セキュリティという新たな問題にも向き合う必要が生じた。今回は様々な情報セキュリティの問題を整理した。

一般のPCユーザーにとって最も身近な情報セキュリティの脅威はコンピュータウイルスである。コンピュータウイルスは日々進化し、攻撃方法も多様化している。

ウイルス添付メールは不特定多数に無差別に送信される形が主流であるが、最近ではスピア攻撃(標的型攻撃)も登場している。これは特定の相手を標的とする攻撃である。送信元を取引先企業や関係団体、顧客などに装ったメールでウイルスを送りつける。メールの受信者は業務に関連するメールと思いやすく、添付ファイルを開く可能性が高いため、攻撃が成功する確率が高くなる。

コンピュータウイルスを発見・駆除するためのオーソドックな手法はウイルス対策ソフトの利用である。ウイルス定義ファイルを最新にして、ウイルス検査を実施することで大抵のウイルスは発見できる。ウイルス対策ベンダーの多くはオンラインスキャンを提供しており、ウイルス対策ソフトを購入しなくても、スキャンは可能である。

但し、製品によっては差もある。ある製品では検出・駆除できたウイルスが他の製品では検出できない場合もある。また、ウイルス対策ソフトでは発見できない巧妙なウイルスも続々と開発されている。たとえば以下のようなウイルスが登場している。

第一にメールの送信頻度を抑えることなどによって、自身の発見を逃れるものがある。ウイルス検出方法には感染や発病に伴う特徴的な振る舞いを監視するビヘイビア法がある。そして一般的なウイルスは感染PCからメールを大量に送信する。これは、その裏を突いたものである。

第二に頻繁に自身のコードを更新することで、パターンマッチング方式のウイルス対策ソフトによる検知を難しくする仕組みを持つものがある。

第三にルートキットのように関連するファイルやプロセス情報をOSから見えなくする仕組みを持つものもある。これはシステムコールを横取りして、その応答を偽装することによって実現する。

コンピュータウイルスの中でも厄介なものがボット(BOT)である。ボットに感染したコンピュータは、攻撃者が用意した指令サーバなどに自動的に接続され、外部からの指示に従って内蔵された処理(迷惑メールの送信やDDoS攻撃Distributed Denial of Service Attackなど)を実行する。ボットに感染されたコンピュータを放置することは、犯罪の踏み台にされ、加害者にさせられてしまいかねない。

従来型のウイルスは感染したコンピュータに不具合を起こすため、使用者は最終的には感染に気付く。たとえばアイコンを「お祈りパンダ」(線香を持って祈るパンダ)に変えてしまうウイルスなどである。使用者にとって気付いた時には手遅れであることが多いとしても、その時点で感染の拡大は防止できる。

これに対してボットは使用者が気付かないようにコンピュータを支配して悪さをする。使用者が気付かないために対策されず、ウイルスが拡散してしまう。現実世界のウイルスでも致死性の高いエボラ出血熱よりも致死性の低い新型インフルエンザの方が広範囲に流行する。

ボットの多くはInternet Relay ChatIRC)を使って通信を行う。IRC通信は大抵、TCPポート6667を使用する。ネットワークアナライザでIRC通信を監視することで、ボットに感染したPCを発見できる可能性がある。しかし、ボットには指令を含む通信の発見を逃れるために通信を暗号化するものや通信ポートを変えるものもあるため、完璧ではない。

ウイルスは感染を広げるためにメール送信機能があるものが多い。メールの送信には、ウイルス自身がメール送信機能を有しており、直接宛先に送信する場合と、外部のメールサーバを利用して送信する場合とがある。前者については、組織内で感染PCが出た場合、ファイアウォールで社内LANからインターネットへのSMTPプロトコルの通信を禁止しておけば組織外へのウイルスメール送信を防止できる。

後者はメールサーバの管理者がSMTP AUTH方式またはPOP before SMTP方式を設定することが対策になる。但し、いずれの方式もPCに保存されているメールサーバのアカウント情報を盗用するウイルスには効果がない。

SMTP AUTH方式もPOP before SMTP方式もメールの送信者を認証する方式である。POP before SMTP POP認証が成功した後の一定時間内だけメールの送信を可能にする。POP認証によって認証されたクライアントが一定期間内に送信するメールについてはメール送信を許可する。クライアントはIPアドレスで識別する。

これはSMTP自体に送信者認証の仕組みがなかったために考案された手法である。POPは受信者のメールボックスからメールを取り出す際に必ず認証を行う。そのため、POP before SMTPはメールソフトに依存せず利用可能である。

その反面、ブロードバンドルータなどのNAPTNetwork Address Port Translation)装置に接続されたメールクライアントは、未認証のものでもメール送信ができてしまうという問題がある。メールの送信制御がクライアントのIPアドレスではなく、NAPT装置のIPアドレスによって行われるためである。

SMTP AUTHはメール送信時にパスワードによる認証を実施する方式である。これは認証機能を持つようにSMTP自体を拡張したもので、RFC 2554 (SMTP Service Extension for Authentication)として標準化された。これを利用するためにはPCのメールソフトもメールサーバも拡張機能に対応している必要がある。

 

 

パスワード

ユーザーIDとパスワードはシステムを利用する上で最も基本的な本人確認の方法である。もしパスワードが破られるならば、システムが悪用されてしまう。このため、破られにくいパスワード(強いパスワード)を設定する必要がある。強いパスワードを設定するポイントは以下の通りである。

第一にパスワードのユニークさである。辞書に掲載されているような単語はパスワードに使用すべきではない。

第二にパスワードの長さである。たとえば7文字以上にすることなどが考えられる。

第三にパスワードの複雑さである。たとえばパスワードにはアルファベット大文字や小文字、数値、記号を最低1字は含むようにする。

第四にパスワードの定期的な変更である。同じパスワードを長期間使用し続けると、漏洩のリスクが高まる。そのため、定期的に変更することは望ましい。たとえば3ヶ月に1回は変更するようにする。

これらはユーザーが設定を心がけるだけでなく、システム側でルールとして設定することも可能である。たとえば7文字未満の文字列やアルファベット大文字・小文字・数値・記号を最低1字含まない文字列をパスワードに設定できないようにする。

パスワードの定期的な変更についても、パスワードに有効期間を定めることで強制的に変更させることができる。但し、定期的な変更を求めるだけでは意味が乏しいこともある。パスワードをAAAAからBBBBに変更し、次の変更時にAAAAに戻す利用者が存在するためである。そこでシステム側でパスワードの履歴も保存し、過去に使用したパスワードを再設定できないようにする。

このように強いパスワードを設定することは可能であるが、パスワードの問題はユーザーが覚えていなければならないという点にある。複雑すぎるパスワードを設定してしまい、それを思い出すことができなければユーザー本人もシステムを使えなくなる。もし、パスワードが覚えられないために紙に記録するならば逆にパスワード漏洩のリスクが高まる。これは本末転倒である。ポストイットにユーザー名とパスワードを書いてディスプレイに貼り付けるようなことは絶対に避けなければならない。

この問題はパスワードの定期的な変更にも当てはまる。パスワードが頻繁に変更されるならば覚えられなくなる。パソコンのOSパスワードのように毎日ログインするならば問題ないが、稀にしか使わないシステムでパスワードの頻繁な変更はユーザーの負担が大きい。

そのために上述のパスワード・ポリシーが定められたとしても、覚えやすいパスワードが設定されがちである。たとえば林田というユーザーならば「!Hayashida1」などが考えられる。しかも定期的なパスワード変更も「!Hayashida2」「!Hayashida3」「!Hayashida4」……という形で末尾の数値を順々に増やしていくだけという形になりがちである。セキュリティと利便性はトレードオフの関係にあり、難しい問題である。

 

USBICカード

インターネットでの認証方法として最も普及している方法はユーザーID及びパスワードによる認証である。しかし、この認証方法の安全性はパスワードに依存する。破られにくいパスワードを設定することは可能であるが、利便性とのトレードオフになる。また、ユーザーIDやパスワードが漏洩する危険もある。認証情報が漏洩されれば、なりすましによって、利用可能な情報システムにアクセスされてしまう。

このため、パスワード以外の認証方法と組み合わせた二要素認証(Two-Factor Authentication)によるセキュリティ強化が行われている。記憶(パスワード)、所持、生体(バイオメトリクス)などの認証要素を組み合わせた認証方法は他要素認証と呼ばれる。

二要素認証の発想は決して突飛なものではない。現実世界でも銀行のATMを利用する場合、キャッシュカードと暗証番号の両方が必要である。インターネット上の認証でキャッシュカードに相当するものとして電子証明書がある。これは公開鍵暗号を利用して検証する証明書であり、パスワードのみの認証に比べ、より確実な認証方法となる。

この電子証明書を格納するデバイスとしてUSB (Universal Serial Bus)トークンやICカードがある。ここでは両者のメリット・デメリットを分析する。

第一にUSBトークンである。これは機器のUSBポートに挿すだけで使用できる。また、デバイス自体に鍵のようなイメージがあり、利用者が馴染みやすい。他方、デメリットとして、ICカードよりも高価であり、USBポートのある機器でしか利用できない。

USBはパソコンと周辺機器を接続するシリアルバス規格の一種である。周辺機器毎に存在したインタフェースを統一することを目的に制定された。USB 1.1ではフルスピードモードとロースピードモードが使われ、各々の転送速度は1秒当たり12メガビット、1.5メガビットである。

現在広く利用されているUSB 2.0では上記のモードにハイスピードモードが追加された。ハイスピードモードの転送速度は1秒当たり480メガビットで、フルスピードモードの約40倍に相当する。これによって、ハードディスクなどの高速・大容量の機器の接続が可能になった。

また、パソコンを介さずに周辺機器同士を直接接続できるOn-The-Go機能を拡張仕様としてサポートした。これと同種の機能は音声や映像などの転送に適したブロードキャスト転送方式を採用するIEEE 1394にも存在する。

トークンは証明書類を格納するが、USBメモリとは異なり、パスワードによる不正利用防止機能やトークン内での暗号処理機能を実現している。トークン内で暗号処理行うことで、秘密鍵を読み出すことなく処理できるため、秘密鍵の秘匿性が増す。これはセキュリティ上の利点である。

第二にICカードである。これは既存の証明書(学生証、社員証、キャッシュカードなど)と同じ形態で、利用者が管理しやすい。また、USBトークンよりも安価である。さらに機器への差し込みが不要な非接触式も可能である。非非接触式のICカードの例にJR東日本のSuicaがある。ICカードのデメリットは機器にICカード読取り機が必要なことである。

これまで学校や企業などの組織が電子証明書デバイスを配布する場合、安価なICカードが優勢であった。既存の学生証や社員証と同じ形態であり、出席確認や入退室管理などへの応用にも向く。プリンタの認証にも使われている。認証プリントではICカードで本人を認証した後にデータを印刷するため、印刷物の放置や取り違えを抑制できる。

しかし、専用の読取り機が必要なICカードに対し、現在ではUSBポートの付いていないパソコンはほとんどない状態である。今や「USBポートのある機器でしか利用できない」というUSBトークンのデメリットは意味をなさなくなってきている。このため、今後はUSBトークンの利用も増大すると予想される。

 

ハードディスク

近年は持ち運びが容易なノートパソコンの紛失や盗難による情報漏洩が多発している。パソコンを利用するためには通常OSのユーザーIDとパスワードが必要になるため、破られにくいパスワードを設定することが第一歩である。

しかし、強固なパスワード設定だけではハードディスクの情報漏洩対策としては不十分である。ログインしなくても、ハードディスクの内容を読み出せてしまうからである。たとえばハードディスクを取り外し、その内容を別のパソコンから読み出すことができる。

このため、以下の対策が行われている。

第一にハードディスクにアクセスパスワードを設定する。

第二にハードディスク上の情報を暗号化する。

第三に外部持出しに必要な情報だけを格納した持出し専用のノートパソコンも用意する。

これらのうち、第一案はデータそのものがハードディスクに残るため、ハードディスクから情報を読み取られる可能性は皆無ではない。第三案は漏洩したら困るものを持ち出さない点で確実な対策であるが、コストや利便性と相談する必要がある。持ち出すパソコンに不要なデータを格納しておかないことは当然であるが、流出しては困る全てのデータを格納しないことも難しい。以上より、第一案や第三案を採用した上で、第二案の技術的対策が注目される。

但し、ディスクの暗号化にも限界がある。ディスクの内容の暗号化といっても、ユーザーが利用する時は復号化(暗号化されたデータを元に戻す)される。そうでなければ使用できなくなる。ユーザーが毎回復号処理をしなければ使えないとなると、利便性が損なわれるため、大抵のディスク暗号化製品はOSにログインすれば自動的に復号する仕組みになっている。

そのために暗号化製品や設定によっては、スリープ状態やスタンバイ状態で紛失・盗難された場合には意味がなくなる。現実に起動時間を短縮するためにノートパソコンをスリープ状態やスタンバイ状態にして移動する人も少なくない。ディスクの暗号化に加えて、スリープ状態やスタンバイ状態からの復帰にはパスワード入力を必須とすることが万全の対策になる。

 

無線LAN

無線LANは電波の届く範囲ならばどこからでもアクセスでき、「いつでも、どこでも」というユビキタス(Ubiquitous)環境を実現する。一方でも他の人、特に悪意を持った人からもアクセスされかねないため、暗号化や利用者の認証が重要になる。送信されるパケットを暗号化して傍受者に内容を知られないようにすることで安全性を高める必要がある。

暗号化技術としてWEP (Wired Equivalent Privacy)方式が有名だが、認証方式や暗号方式、鍵の秘匿性について脆弱性が問題になっている。そのため、セキュリティが強化されたIEEE 802.11i規格の採用が望ましい。

IEEE 802.11iではセキュリティを高めるためにIEEE802.1X認証方式を採用し、より強固な暗号鍵の生成と配送方式を規定する。IEEE802.1X認証方式はIETF (Internet Engineering Task Force)が規定したEAP (Extensible Authentication Protocol)という認証や暗号鍵配送用のフレームワークを利用する。

EAPPPP (Point to Point Protocol)で利用される認証プロトコルである。拡張性(Extensible)という言葉通り、ワンタイムパスワードやデジタル証明書など各種の拡張認証方式を利用でき、様々なバリエーションが存在する。

認証処理は無線アプリケーションからパソコンにEAP要求を送信することから開始される。この応答として、パソコンは利用者が入力した自分自身の識別情報を送信する。その後、パソコンと認証サーバの間で認証方式の選択処理が行われる。認証方式が決まると、パソコンと認証サーバ間で電子証明書などが送受信され、相互の認証が行われる。

パソコンと認証サーバ間で通信されるEAPパケットは、パソコンと無線アプリケーション間はEAPOL (Extensible Authentication Protocol over LAN)フレームのデータとして送られる。無線アプリケーションと認証サーバ間はRADIUS (Remote Authentication Dial In User Service)パケットのデータとして送られる。

RADIUSはリモート・アクセスでの認証情報を一元管理する仕組みである。個人の利用者がダイヤルアップ接続する時の個人認証のための機能として開発されたというインターネットの世界では相対的に古い歴史を持つ。

EAPには細かく見るとEAP-TLS (Transport Level Security)方式やEAP-TTLS (Tunneled Transport Level Security)がある。EAP-TLS方式は電子証明書を利用して認証する。但し、単にパソコンと認証サーバ間の電子証明書を送受信しただけでは相互認証はできない。パソコンはサーバに対してクライアント署名を送信する。クライアント署名はTLSで通信されたメッセージのハッシュ値を求め、それをクライアントの秘密鍵で暗号化する。

具体的にはパソコンと認証サーバ間で通信されたメッセージのClient-HelloメッセージからClient-Key-Exchangeメッセージまでを対象に、事前に折衝したハッシュアルゴリズムによってハッシュ値を求める。尚、パソコンによるサーバ認証は、サーバ証明書の検証によって行われる。

EAP-TLS方式では暗号鍵作成のための機能強化も図られている。認証処理に加え、暗号鍵を生成するための乱数などの情報が認証過程で通信され、PMK (Pairwise Master Key)と呼ばれる暗号鍵がパソコンと認証サーバで共有される。PMKはパソコンと無線アプリケーション間のデータを暗号化するために使われるもので、認証サーバから無線アプリケーションにも転送される。

実際のフレーム転送時に使われる暗号鍵TK (Temporal Key)は、4ウェイ・ハンドシェイクという手順でパソコンと無線AP間で送受信される情報とPMKを基に生成される。これによって、TKWEP方式の鍵暗号とは異なり、予測されにくい暗号鍵となっている。

EAP-TTLS方式はサーバ認証にはデジタル証明書、クライアント認証にはパスワードを用いる。サーバ認証とクライアント認証共にデジタル証明書を利用するEAP-TLSと比べると、運用面や処理は相対的に簡便である。クライアントのパスワードはTLSトンネルを利用してサーバに安全に送るため、必ずしも安全面で劣る訳ではない。

IEEE 802.1Xはスイッチのポートベースのアクセス制御技術を実現する技術である。規格名がPort-Based Network Access Controlであることが示している。有線LANで使用する場合、ポート単位に通信を制御する。IEEE 802.1Xを実装するスイッチの配下にハブを接続し、そこに複数のパソコンが接続されると、認証されていないパソコンとの通信が行われるというセキュリティ上の問題が発生する。

これを防止するため、有線LANでは独自の実装が必要である。具体的には許可したMACアドレス(Media Access Control Address)をスイッチで記憶し、それによってフィルタする。許可したMACアドレス以外のものはアクセスを拒否する。MACアドレスとは、パソコンの内蔵LANポートやLANカードなどのNICNetwork Interface card)に割り当てられた固有のID番号である。

尚、最近の認証スイッチではMACアドレスによるVLAN (Virtual Local Area Network)管理が可能な製品もある。これはVLANを論理ポートと見なすことで、複数のクライアントが単一の物理ポートに収容されていても、MACアドレス単位で管理できる。

一方、無線LANではパソコンと無線アプリケーションとの論理的接続であるアソシエーションをポート接続と見なすようにポートの概念を拡張している。このため、端末と無線アプリケーションの11の関係で認証が行われる。その結果、有線LANで使用する場合と比べ、接続制御上の問題は少なくなる。

これらの実現には公開鍵基盤(PKI; Public Key Infrastructure)と呼ばれる認証基盤の構築が必要で、認証局の設置、電子証明書の発行と配布、有効期限切れなどに伴う電子証明書のメンテナンスを行うことになる。認証サーバとしては、認証局機能とRADIUS機能の両機能を備えたアプライアンス型の認証サーバ製品を使うことで、プライベート認証局を設置でき、容易に対応できる。

 

シングルサインオン

シングルサインオン(Single Sign On; SSO)はサービス利用者が一度認証を受けるだけで、許可されている全てのサービスを利用できるようにする仕組みである。たとえばポータルサイトにログインする際に1回だけユーザーIDとパスワードを入力すれば、アクセスするコンテンツやアプリケーションへの認証・承認が自動的に行われる。

ネットサービス会社はホームページやブログ、電子メール、ソーシャルブックマークなど複数のサービスを提供しているところも多い。それらのサービス毎にIDを発行する仕組みは利用者及びネットサービス会社の双方にとって不都合がある。利用者にとっては複数のIDとパスワードを使い分けなければならず、管理が煩雑になる。

ネットサービス会社にとってはサービス毎にIDを管理する運用コストが増大する。システム毎にパスワードのルールが異なるならば、同一レベルのパスワードの強度が確保されなくなる。また、認証システムの運用管理に同一レベルのセキュリティを確保することも難しい。

このデメリットを解決する仕組みがシングルサインオンである。これによって、一つのIDで全てのサービスの認証が可能になる。利用者もネットサービス会社もサービス毎にIDやパスワードを管理する必要はなくなる。

シングルサインオンの実現には、共通IDを含む認証情報と、利用者の氏名や属性情報(メールアドレスなど)を一元管理するシステムが必要になる。このシステムには高い可用性が要求される。可用性(availability)とは「認可されたエンティティが要求したときに、アクセス及び使用が可能である特性」である(JIS Q 13335-1:2006)。具体的にはシステムを利用したい時に利用できること、壊れにくいことである。何故なら、ログインを一元管理するシステムに障害が発生すると、誰もログインできなくなり、全てのサービスが利用できなくなってしまうためである。

ウェブにおいてシングルサインオンを実現させる場合、一般的にはクッキーにセッションIDなどの情報を格納することで、認証された利用者に対するセッションを維持する。

クッキーはウェブサーバとブラウザ間で情報をやり取りする仕組みである。最初にブラウザがウェブサーバにアクセスすると、ウェブサーバからブラウザにクッキーが送信される。次にブラウザがウェブサーバにアクセスする場合、そのクッキーをウェブサーバに送れば、同じブラウザからのアクセスであると認識できるため、セッションを管理できるようになる。

但し、クッキーの漏洩によってセッションが乗っ取られる危険があるため、ブラウザがウェブサーバにクッキーを送信する場合、属性の一致するサーバにしか送信しないようにしている。この属性としてdomainpathがある。これらの属性が一致しない場合、ブラウザはウェブサーバにクッキーを送信しない。従って、クッキーはドメイン名の異なるサーバに送ることはできない。そのため、複数ドメインでサービスを提供する場合には利用できない。

この場合はリバースプロキシ(逆プロキシ)の利用が考えられる。これは利用者とWebサーバの間に逆プロキシ・サーバを設置する方式である。利用者からのアクセスは逆プロキシ・サーバが認証を行った上で各Webサーバに中継する。これによってシングルサインオンを実現する。新たに機器を設置することになるため、ネットワークの構成やWebアプリケーションへのアクセス方法が変更されるものの、Webアプリケーション自体の改修は基本的には不要である。

 

ポートスキャン

システムをインターネット上に公開することは悪意ある攻撃に晒されることを意味する。例えば悪意ある第三者がWebサーバにアクセスし、ウェブページを改竄することなどである。システム管理者は攻撃の仕組みを確認した上で、適切な対策をとらなければならない。

攻撃は基本的にサーバの持つ脆弱性を利用して行われる。DMZ (Demilitarized Zone)設置のサーバはインターネット側に公開されているため、第三者がIPアドレスを知ることは可能である。IPアドレスを知った攻撃者は次にポートスキャンを行うことが一般的である。これによって、対象のサーバで稼動するサービスを確認する。

ポートスキャンではNmap (Network Mapper)というツールを利用することが多い。このツールはTCP SYNスキャン、UDPスキャン、TCP FINスキャン、TCP Nullスキャンなど様々なスキャンを実施できる。

スキャンはTCPのコネクション確立方式を利用して行われる。一般にTCPの接続開始処理は3ウェイ・ハンドシェイクと呼ばれる手順を経る。これは3つのパケットのやり取りでTCPコネクションを確立する手順である。

最初にクライアントから、接続要求を意味するSYNパケットがサーバに送られる。次にSYNパケットを受け取ったサーバから接続要求と接続許可を組み合わせたSYN/ACKパケットが返される。最後にクライアントからACKパケットが送られることによって、接続開始処理が完了する。

TCP SYNスキャンでは最初にTCP SYNパケットを送信して攻撃対象のサーバのポートの状態を調査する。例えばSYN/ACKパケットが返されればポートがオープンであると判断する。一方、サーバからRST/ACKパケットが返されればクローズされていると判断する。

サーバからSYN/ACKパケットが返された場合、TCPコネクションの確立を行うためにはACKパケットを返すことが通常であるが、TCP SYNスキャンでは最初のACKパケットを返さない。サーバ側はACKパケットの応答を待ち続ける状態となる。従って、TCPコネクションはハーフオープンの状態になったままとなる。

TCP FINスキャンやTCP Nullスキャンも類似の方法を利用している。TCP FINスキャンではフラグフィールドのFINビットだけをオンにしたパケットを送信する。TCP Nullスキャンでは、どのフラグビットもオンにしないパケットを送信する。これらのスキャンに対し、何の応答もなければポートがオープンであると判断する。RSTパケットが返されればクローズと判断する。

TCP SYNスキャンやTCP FINスキャン、TCP NullスキャンはTCPコネクションが確立されないため、各サーバのログにはアクセス記録が残されない。これがステルススキャンと呼ばれる所以である。システム管理者にとって攻撃の兆候を把握できない点が脅威である。

このうち、TCP FINスキャンやTCP Nullスキャンは正常なシーケンスではないため、侵入防御システム(IPS; Intrusion Prevention System)によって遮断できる。IPSFINビットだけのパケットやフラグビットが何も立っていないパケットを検出し、自動的に遮断する。

ポートスキャンで稼動ポートを発見した攻撃者は、続いてバナーチェックを行う。これによってサーバで使用されているソフトウェアのバージョンなどを調査する。バージョンなどが分かれば、当該ソフトウェアに存在するセキュリティホールが分かる。

TCP上で稼動するアプリケーションに対するバナーチェックは、リモートログインで使用されるtelnetコマンドで行うことが一般的である。サーバからの応答として、サーバで使用しているソフトウェアのバージョン番号を始め、接続完了に関するメッセージが出力される。

また、DNSサーバに対してはdig (Domain Information groper)コマンドを使用する。これによって、DNSサーバのソフトウェアやDNSの登録データなどの情報が出力される。DNSUDP上で動作するプロトコルであり、telnetは利用できない。バナーチェック対策として、バージョンなどを出力しないように設定できるソフトウェアもある。

攻撃者はバージョン情報などを入手すると、次にexploitコードを入手しようとする。これはプログラムに存在する特定の脆弱性(セキュリティホール)を突くプログラムである。セキュリティの専門家がプログラムの脆弱性を発見した場合、それを実際に攻撃するコードを作成することが一般的である。そして発見者は発見した脆弱性をプログラムの開発元に通知し、セキュリティ関連のフォーラムなどに投稿する。その際、脆弱性を実証するexploitコードも添付する。発見者がexploitコードを開示する目的は、脆弱性の影響を幅広く検証することである。

しかし、exploitコードを入手・改変することで、脆弱性を狙った攻撃を簡単に仕掛けることにも悪用可能である。脆弱性が発見されてから、開発元がパッチをリリースするまでにはタイムラグがある。セキュリティパッチがリリースされる前に不正プログラムを作成し、攻撃を仕掛けるゼロデイ攻撃にexploitコードが利用される危険もある。

 

SYN Flood

ここではDoS/DDoS攻撃の一種であるSYN Flood攻撃と、その対策について分析する。SYN Flood攻撃はTCPの接続開始処理を狙った攻撃である。

SYN Flood攻撃は、3ウェイ・ハンドシェイクでやり取りされる最後のACKパケットが何らかの方法でサーバに届かないようにすることで、サーバに未完了の接続開始処理(ハーフオープン)を大量に発生させる。多くの場合、ACKパケットがサーバに届かないようにするために、SYNパケットの送信元IPアドレスを詐称する方法が使われている。

インターネット側からWebサーバに対するTCP SYNパケットは通過させる必要がある。正規のユーザーのアクセスか、攻撃者のアクセスかを判別することはできず、サーバはSYN/ACKパケットを送り返す必要がある。ACKパケットが送信されなければ、サーバはコネクション管理のためにメモリなどの資源を確保したまま、応答を待つ。

SYN Flood攻撃を受けると、大量のハーフオープンがホストBの資源を占有してしまう。この結果、正当な利用者がホストBに接続できず、または接続に時間がかかってしまう。TCPの接続開始処理が未完了のものは、Webサーバのアクセスログに記録されない。そのため、Webサーバのアクセスログ上のアクセス数は増えないのに、パケット量が増えることになる。

SYN Flood攻撃への対策として以下の2つの方法が考えられるが、いずれも難がある。

第一に正当なTCPの接続開始処理かどうかを判断し、不正な接続開始処理であれば破棄する。しかし、正当な接続開始処理であるかを判断するためには、ACKパケットを受け取るまで待たなければならない。SYNパケットを受け取った時点で判断することは困難である。

第二にハーフオープン状態になっている接続開始処理と同じ送信元IPアドレスからの接続要求を拒否する。しかし、同じ送信元IPアドレスを使って接続要求するとは限らず、効果が得られないことが多い。

このため、以下の対策でSYN Flood攻撃の対象サーバへの不正な接続開始処理を抑制する。

第一にハープオープン状態の継続時間を制限するためのタイムアウト時間を短くする方法である。

第二にTCP SYNパケットの流量を制限する方法である。一定数以上のTCP SYNパケットが入ってくると、超過分のパケットをファイアウォールで破棄または保留にする。これによって、宛先のサーバには接続要求が到達せず、サーバのメモリ資源を食いつぶすことがなくなる。

 

リスクマネジメント

法令違反や情報漏えいなど様々なリスクが存在する現代社会ではリスクマネジメントが重要になる。リスクマネジメントでは最初にリスクを分析し、分析したリスクを評価した上で、リスク対応を行う。リスク分析では情報資産の重要度、脅威、脆弱性をレベルで表し、それぞれのレベルの積をリスク値として算定する。算定されたリスク値が一定値を超えたものが対応すべきリスクとなる。

対応すべきリスクとして決定されたものについては、個々に対応を検討する。リスク対応にはリスク制御、リスク受容、リスク回避、リスク移転の4つの選択肢がある。

リスク制御(risk control)は適切なコントロール(統制手続き)を採用することで、リスクを許容範囲内に収める方法である。リスクを起こりにくくする予防策や、発生時の被害を最小化・局所化するなどリスクによる損害を小さくする対策である。リスクを減少させるものであるため、リスク軽減・リスク低減とも呼ばれる。例えば以下の方法がある。

・情報漏えいを防ぐためにデータを暗号化する。

・スタンバイシステムを構築する。

リスク受容(risk acceptance)は対策しないことである。リスクの発生に伴う損害が小さく、事業遂行上も問題にならない場合、リスクをそのまま放置する。これは組織の方針やリスク受容基準から判断する。

リスク回避(risk avoidance)は、リスクの存在する状況から撤退することにより、リスクを回避する方法である。リスク発生原因となる業務の廃止や情報資産の廃棄のようにリスクの根本的な要因を排除する。例えば重要情報を保持しないようにデータベース上のデータを全て削除することである。

リスク移転(risk transfer)は関連する事業上のリスクを保険会社や供給者などの他者に転嫁する方法である。火災保険により建物の火災時の金銭的な損失をカバーすることが典型である。システムのアウトソーシング(外部委託)もリスク移転の具体例である。

この中でリスク対応の花形となるものはリスク制御である。リスクが問題にならなければ受容することになるが、問題になるからリスクとして認識されることが大半である。リスクを回避や移転できるならば、それが望ましい。しかし、全てを回避・移転するならば「No Risk No Gain」となり、ビジネスは成り立たない。たとえば店に商品を並べなければ万引きされる危険はないが、販売もできなくなる。

そのためにリスクマネジメントではリスク制御が重要になる。但し、リスク制御はリスクを限りなく減少させるものであっても、根絶することはできない。そのため、リスク制御に保険加入などのリスク移転を組み合わせて、リスク対応を検討することも多い。

上記4つのリスク対応とは別次元の概念にリスクファイナンス(risk finance)がある。これは顕在化したリスクに対して損失を補填する資金対策である。リスク受容のリスクファイナンスには、損失を補填する資金を自社内で保有することがある。リスク移転のリスクファイナンスには以下がある。

・保険に加入して事故の損失を補填する。

・システム運用をアウトソーシングして契約で損失責任を第三者に転嫁する。

具体的なリスク対応策として外部記憶媒体への不正書き出しと通信回線における盗聴のリスクを検討する。

外部記憶媒体(USBメモリなど)への不正書出しは大きなリスクである。社内セキュリティーポリシーなどでUSBメモリなどの使用を禁止することは第一歩である。しかし、ポリシーで禁止することと、実態としてポリシーが遵守されることは別問題である。ルールを作って終わりではなく、社内教育と内部監査で徹底する必要がある。

加えて技術的な対応策も検討すべきである。強硬策として、外部記憶媒体を物理的に使えなくする方法がある。しかし、読込みができなくなると業務に支障が出る場合もある。その場合はセキュリティツールを導入して外部記憶媒体への書出しだけを禁止する方法がある。また、外部記憶媒体への書出しができないドライバソフトに入れ替える方法もある。

通信回線における盗聴のリスクには2種類ある。

第一に第三者がネットワークアナライザをネットワーク機器や通信回線に接続して通信データを盗聴するリスクである。回線を切断して新たに分配器を接続し、ネットワークアナライザを接続する方法が考えられる。分配器などの機器が不正に接続されていない光回線の場合は、光回線の状態を監視することで、リスクをもたらす脅威の発生を検知できる。

第二に通信回線から漏えいする電磁波を解析することで通信データを盗聴するリスクである。この方法による盗聴は光回線の場合は困難である。

内部ネットワークに盗聴用の危機を接続させない方法として、MACアドレス認証と呼ばれる機能がある。これはネットワーク機器に登録されていないMACアドレスをもつ機器は未登録機器とみなし、ネットワークへの接続を拒否するものである。しかし、登録済のMACアドレスを未登録機器に設定することで、LANに接続できてしまう可能性がある。

現代は過去に比べてリスクというものに敏感になったことは事実である。焼け野原から経済大国にするようなゼロからの再チャレンジを許容するほど甘くはない。このことを肯定的に捉えるかは否定的に捉えるかは価値観によるが、失えないものが多くなった豊かさの証と肯定的に捉えたい。