20. ネットワークセキュリティに関する知識 II

シラバス: 

1. 科目の概要

ネットワークにおけるセキュリティのリスクとそれらに対する対策手法の具体的な方法として、パケットフィルタリングや侵入検知システムの利用、DeMilitarized Zoneの構築といった各種の対策方法について解説する。

2. 習得ポイント

本科目の学習により習得することが期待されるポイントは以下の通り。

3. IT知識体系との対応関係

「20.ネットワークセキュリティに関する知識Ⅱ」とIT知識体系との対応関係は以下の通り。

[シラバス:http://www.ipa.go.jp/software/open/ossc/download/Model_Curriculum_05_02.pdf]

<IT知識体系上の関連部分>

4. OSSモデルカリキュラム固有の知識

OSS モデルカリキュラム固有の知識として、ネットワーク・Webシステムの脆弱性評価に関する実践的な知識がある。IDSやIPSの具体的なOSSに基づいた説明を行う。

(網掛け部分はIT知識体系で学習できる知識を示し、それ以外はOSSモデルカリキュラム固有の知識を示している)

II-20-1. パケットフィルタリングによるセキュリティ確保

Netfilterやiptablesなどのソフトウェアを利用したパケットフィルタリングによりセキュリティを確保する方法について解説する。また、xinetdのフィルタリング設計や、実際のtelnetサーバでフィルタリングをどのように設定するかといった具体的な手法を説明する。

【学習の要点】

* Linuxのネットワークシステムにはnetfilterと呼ばれるサブシステムが含まれ、これはパケットフィルタリングとNAT機能を提供する。

* netfilterは、通過するパケットのヘッダを見て、そのパケットをアクセプトするかドロップするかを決定するカーネル内のフレームワークである。iptablesはフィルタリングまたはNATルールを読みこんで、netfilterを制御するツールである。

* xinetdは、ACL (Access Control List) により自ホストへの接続を制御する。また、特定のホストからの同時接続数や接続率を制限することにより、応答機能の停止を狙った攻撃に対処することができる。

図II-20-1. iptablesとnetfilterを用いてパケットフィルタリングを行なう例

【解説】

1) netfilterとは

* netfilterは、Linuxカーネル内のネットワークサブシステムに対して、一連のフック関数を定義するカーネル内のフレームワークである。

* netfilterの定義するフック関数は、Linuxカーネルモジュールから利用できる。これを利用したカーネルモジュールはいくつかあるが、最も知られた実装には、パケットフィルタリングモジュールやNATモジュールがある。

2) iptablesとは

* iptablesは、Linuxカーネル内のネットワークサブシステムに対してパケットフィルタリングルールとNATルールを指定するためのコマンドラインツールである。

* iptablesは、同コマンド(とそれに対応するカーネル内のサブシステム)の実現できるパケットフィルタリング機能を指して、カーネル内ファイアウォールの呼称として用いられることがある。

* 使用方法

- iptablesコマンドで、パケットフィルタリングルールとNATルールを指定する。これは即座に反映されるが、OSの再起動によりリセットされる。 例えばtelnetの使用するポート23への接続を拒否するには以下のようにする。

iptables –A INPUT –p tcp –dport 23 –j DROP

- iptables-saveコマンドで、現在カーネルに対して指定されているルールをダンプすることができる。これをファイルに出力することでルールを永続化することができる。

- iptables-saveコマンドにてダンプしたルールは、iptables-restoreコマンドにて再度カーネルに指定することができる。一部のディストリビューションでは、デフォルトで用意されている起動スクリプトにてiptables-restoreコマンドを実行する(ルールは指定の書式でファイルとして予め記述しておく)。

3) xinetd

* xinetdは、各種デーモンプロセスが自身でポートをリッスンする代わりに、xinetdが代表して必要なポートをすべてリッスンすることでシステムのリソースを節約することを目的に設計されたデーモンである。前身としてinetdがあるが、xinetdはこれを改良したものであり、共にスーパーサーバと呼ばれることがある。

* 各種デーモンプロセスの代わりにxinetdがこれを代表することで、接続制御やログ機能をxinetdが一手に引き受けることができる。xinetdは、予め指定されたACL(アクセスコントロールリスト)を読み込んで、接続制御を行なう。

* 特定のサービスに対する接続要求が来ると、xinetdは対応するサーバを起動する。各種サーバの設定は、/etc/xinetd.confにて行なう。一部のディストリビューションでは、/etc/xinetd.d/ディレクトリ内にサービス毎のファイルを用意し、デフォルトでこれらをすべて読み込むよう構成されているものもある。

* xinetdの制御は、同時接続数や接続率を基に行なうことができる。この機能によって、DoS(Denial of Services)攻撃からの被害を抑えることができる。

II-20-2. ネットワークの脆弱性調査

ネットワーク脆弱性調査の必要性、目的と意義について説明する。また、脆弱性調査に利用できるツールを紹介し、脆弱性調査の実施体制や評価結果をネットワーク設計に反映させる方法について解説する。

【学習の要点】

* ネットワークへの攻撃を試みる者からすると、サービスのタイプや、そのサービスの利用するポートやバージョンを知ることは難しいことではない。通常知られても問題ない情報であっても、ソフトウェアのバグにより危険要素となることがあることを念頭に置いておく必要がある。

* ネットワークの脆弱性を調べるツールを利用すると、広く使用されているソフトウェアの特定のバージョンの含むバグによる危険因子などを突き止めることができる。

* しかし、ツールに頼りすぎることもよくない。管理しているネットワークの特徴を理解し、ツールの検出した危険因子を再度確認することを怠ってはいけない。

図II-20-2. 脆弱性への対応

【解説】

1) ネットワークの脆弱性

* インターネットに対してサービスを公開しているサーバは常に危険と隣り合わせである。ネットワークやシステムが脆弱であれば、クラッカーの手によっていとも簡単に侵入され、root権限を取得されてしまう。

* ネットワークを経路して侵入されてしまうケースで最も多いのは、公開中のサービスを実現するソフトウェアのバグ、脆弱なパスワードの漏洩、設定の誤りなどへの攻撃によるものである。

* Linuxの多くのディストリビューションでは、利便性のため、デフォルトで多くのソフトウェアパッケージがインストールされ、起動された状態になっている。これはまったくの無防備状態であり、必要なデーモンのみを起動するようにしなければならない。

* クラッカーは、ポートスキャンによってそのサーバのオープンしているポートを簡単に知ることができる。Nessusのようなツールを用いて実際に試してみることができるが、使用しているソフトウェアのバージョンや、OSを特定することはとても容易なことである。

* ソフトウェアのバージョンが特定されると、クラッカーはそのバージョンに存在するバグに対して攻撃することができるようになる。一見無害な情報でも、特定の条件下では脆弱性因子になることを知っておく必要がある。

2) ネットワーク脆弱性調査に使用できるツール

* nmap

nmapは、ホストがどのようなタイプのサービスを提供しているかをスキャンするツールである。nmapは、UDP、TCP connect、TCP SYN、ICMPなど、さまざまな種類のリクエストに対応しており、その応答によりサービスの有無を調べることができる。オプションで、OSの推測を行なったり、スキャンするポートの範囲を指定したりといったことが可能である。

* Nessus

Nessusは、脆弱性調査のためのフリーの統合ツール(最新バージョンではソースは非公開)であり、nmapの機能も含んでいる。Nessusは、一般的な情報から、特定のOSの特定のプログラムの持つ脆弱性を知らせてくれる機能を持つ。プラグインをインストールすることで、最新のセキュリティホールに対応することができる。また、実際に侵入を試みる機能も持つ。GUIによるわかりやすいインタフェースを利用することができるという点も特徴のひとつである。

3) 脆弱性に対する考え方

* 公開されている脆弱性に加え、ツールでは発見できない脆弱性も実際には存在する。これらを検知するのは非常に難しいため、ツールでの調査を100%信頼してよいわけではないことを念頭に置いておく必要がある。

II-20-3. Webシステムの脆弱性

ネットワークサーバの中でも主流のWebシステムに関して、その脆弱性評価の方法とリスク、対処方法を説明する。ApacheやOpenSSLといった個別の実装に関する脆弱性に加え、パラメータ操作による攻撃やOSコマンド/SQLインジェクションといった攻撃に対する対策、Webアプリケーションを監査するツールについて述べる。

【学習の要点】

* Webシステムは、ユーザの入力できる値(フォームフィールド、クエリパラメータ)から脆弱になることが多い。入力値を常に適切にサニティチェックを行う必要がある。

* 定評のあるApache, OpenSSLにも潜在的な不良が存在する可能性がある。報告されている脆弱性に対するパッチを適切なタイミングで適用する必要がある。

* Webに限らず、ソフトウェアに対してすべての脆弱性を発見できるとは限らないが、パターン化された攻撃に対しては必ず対策を講じる必要がある。Webアプリケーションの場合、SQLインジェクション、クロスサイトスクリプティング、セッションハイジャックなど、よく知られた攻撃は確実に避けられるべきである。

図II-20-3. インジェクション攻撃への対策

【解説】

1) Webシステムの潜在的危険性

* Webシステムは、CGIやSSIといった、ユーザが実行できるプログラムを含むことができる。プログラムが脆弱であったり、不適切なパーミッションであれば、悪意のある者が任意のプログラムを実行できてしまうことがある。

* Webシステムの使用するディレクトリツリーは、適切な所有権とパーミッションを設定し、不用意にCGIやSSIの実行を許可するべきではない。

2) Webアプリケーションの脆弱性

* 多くのWebアプリケーションは、HTMLのフォームに入力された値をGETまたはPOSTメソッドで受け取る。受け取った値について十分な検証が行なわれるべきである。

* Webアプリケーションの実体がシェルによるCGIであったり、Webアプリケーションから外部プログラムを起動していたり、SQLでデータベースに問い合わせを行なっているような場合、悪意のある者によって任意のプログラムが実行されたり、不適切な情報を取得されたりすることがあり得る。これらについて十分に対策を施す必要がある。

* Webアプリケーション内で、バッファオーバーフローを発生させるような関数を使用するべきではない。よく知られたバッファオーバーフローを発生させる関数には、gets(), strcpy(), getwd(), scanf(), sprintf()などがある。

* PerlやPHPを使用しているからといって、バッファオーバーフローの問題を無視してよいわけではない。これらの言語が内部的にC言語のgets()やstrcpy()を使用する拡張関数を定義する場合はとりわけ注意が必要である。

3) パターン化されたWebアプリケーションへの攻撃

* Webアプリケーションの受け取るリクエストパラメータの値に巧みに制御文字を含ませることにより、任意のOSコマンドを実行したり、任意のSQL文を発行することが可能である。これらは、OSコマンドインジェクション、SQLインジェクトションとして知られる。

* インジェクション攻撃は、Webアプリケーション内で、リクエストパラメータの値に対してサニティチェックを行い、無害化することで避けることができる。具体的には制御文字を含むかどうかを検査し、含んでいる場合はエスケープ処理により無害化するか、アクセスを禁止する。

* リクエストパラメータの値を適切に無害化しないことによる被害は他にもある。JavascriptやJavaアプレット、ActiveXのコードを起動するコードの書かれた値がリクエストパラメータとして送信され、サーバ側で無害化を行なわずにブラウザにそのまま入力値を表示することにより、ユーザのブラウザ上で悪意のあるスクリプトが実行される。この手口はクロスサイトスクリプティング(XSS)として知られる。

* XSSによる具体的な被害として、セッションハイジャック、フィッシングなどが挙げられ、被害は利用者側に及ぶ。

II-20-4. ネットワークセキュリティの新たな要件

ネットワークセキュリティに対する要件として、モバイルアクセスや移動端末など新たに考慮すべき要素を説明する。さらに検疫ネットワークやハニーポットといった新しいセキュリティ対策の実装について解説する。

【学習の要点】

* モバイル端末の小型化によって、ネットワークへのセキュリティ要件は複雑化している。モバイル端末はネットワークを渡り歩くことになるので、盗聴やウィルスの感染をはじめとする危険因子は多い。モバイル端末からの接続を許可するときは、従来とは違った検査が必要となる。

* 検疫ネットワークは、接続してきた端末を隔離、検査し可能であれば治療する。これにより、有害端末が重要なネットワークに接続されるのを防ぐ。

* ハニーポットとは、トラップとなるホスト、データ、ネットワークを用意し、重要なリソースが攻撃されるのを防ぐ技術の総称である。

図II-20-4. 検疫ネットワーク

【解説】

1) モバイル端末に対するセキュリティの考え方

* 近年の、ノート型PCの小型化、Wi-Fi標準装備端末の普及などにより利便性の高まる反面、モバイル環境でのセキュリティリスクが高まっている。

* 企業において最も身近で大きな無線ネットワークによる危険リスクは、モバイル端末を経由した社内LANへの不正侵入、ウィルスやマルウェアの混入、また経路盗聴による情報流出であろう。

* 様々なネットワークへの接続を頻繁に繰り返すモバイル端末の接続を許可する場合には、従来とは違った検査が必要である。他のネットワーク経由で端末のOSやソフトウェアが汚染されている可能性があるからである。

* モバイルセキュリティリスクに対する技術的な対策アプローチは数多く提案されており、有効に利用するべきである。同時に利用者のセキュリティに対する意識や知識を高めさせる教育もまた不可欠であることを知っておく必要がある。

2) 無線LANセキュリティ

* 現在流通しているほとんどのノート型PCは、標準で無線LANへ接続することができる。企業LANへの接続に適切に認証、暗号化が施されていても、PCの設定によっては、PCを踏み台にしてLANに侵入される恐れがある。

* 有線の場合と違い、建物構造による物理的なセキュリティは期待できないため、ネットワーク設計者とその利用者は、従来よりもセキュリティを意識する必要がある。

* 企業の無線LANの場合、利用者が限定されるため、MACアドレスを予めアクセスポイントに登録し、登録済みの端末からのみ接続を許可する方法が一般的である。この場合も、アクセス制御のみでは経路の暗号化は施されないためこれには別の仕組みが必要である。

* Wi-Fi CERTIFIEDを名乗るデバイスでは、WPA/WPA2セキュリティプロトコル実装している。これらは認証と暗号化、メッセージ認証符号を含む。それぞれPersonalとEnterpriseがあり、認証方法が異なる。PersonalはPre Shared Keyを用いて認証を行い、EnterpriseはIEEE 802.1x認証サーバにより認証を行なう。

* ネットワークレイヤ3より上位のデータの保護には、依然としてSSL, SSH, GPG, PGPなど、アプリケーションレベルの暗号化機構が有効である。

3) 検疫ネットワークとハニーポット

* 社内のネットワークへ接続しようとするPCに対して、一旦隔離し、接続したPCの安全性を検査するネットワークのことを検疫ネットワークという。検疫ネットワークの目的は、悪意のある者の侵入を防止することや、PC内のウィルスやワームがネットワークに侵入することを防ぐことである。

* ハニーポットとは、いわば囮である。悪意のある者が本当に重要な情報にアクセスするのを防ぐため、偽の情報で悪意のある者をおびき寄せる仕組みである。ハニーポットには、OSやソフトウェア、サーバをエミュレートするものなど、いくつかの種類が存在する。

II-20-5. 侵入検知システム(IDS)の仕組み

ネットワークサーバへの不正アクセスを検知する侵入検知システム、Intrusion Detection System (IDS)の原理、機能と効果、侵入検知を行う必要性について解説する。またIDSが持つ課題として検知ポリシーの問題点やIDSを意識した攻撃への対策について説明する。

【学習の要点】

* 侵入検知システム(IDS)は、ファイアウォールで防ぐことのできない不正プログラムの侵入や行為を発見する仕組みである。

* ファイアウォールは、サービスを行っていない接続ポートに対してのパケット侵入を遮断するものである。サービスを行っているポートへの不正パケットを検出するIDSは、ファイアウォールとは別に必要である。

* 現在のIDSによる不正パケット侵入検知のアルゴリズムには精度の問題がある。また、設計によってIDSシステムに負荷が集中し、その性能がサービスへ影響することも考えられる。

図II-20-5. ネットワーク型IDSの例

【解説】

1) 侵入検知システムの原理

* 侵入検知システム(IDS)は、インターネットなどを経由して不正にネットワークに侵入しようとする行為を検知するような機構である。

* ファイアウォールによる保護とは違い、公開サービスのために解放しているポートを使って不正に侵入されたことを検知することがIDSの目的である。

* 侵入検知システムは、侵入行為をブロックすることはしない。侵入行為が検知されると、管理者にメールなどで知らせる。管理者はこれを受けて手動で対応することになる。

* ホストへの侵入検知に対する対策の歴史は長い。例えば、定期的にsyslogを監視し、内容をメールやその他の方法で外部に保管し、ログをその場でトランケートするといった方法は、単純であるが非常に有効な手段であり、侵入検知に対する考え方として重要である。

2) 侵入検知システムの種類

* 侵入を検知するアルゴリズムの観点から、通常作業との比較により異常を検出するもの(anomaly型)と、予め用意した不正行為パターンへのマッチングを行うもの(signature型)の2種類にわけられる。

* ネットワーク型IDS、ホスト型IDSという分類を行なうこともある。ネットワーク型はネットワークの境界に設置され、ウィルスの侵入やDoS攻撃を検知する。ホスト型は、サーバにインストールされるソフトウェアエージェントであり、OS上での不正な行為を検知する。ファイルの改竄を検知するものもある。

3) 侵入検知システムの性能・精度

* IDSの検知は、100%信用できるとは限らない。signature型でパターンをすべて網羅することは現実的に不可能であるからである。つまり、未知の攻撃には対応できない。また、多くのパターンへのマッチングには多くの計算リソースを消費する。検知アルゴリズムの精度向上や、性能の問題は今後の課題である。

* anomaly型IDSの誤った検知は、False PositiveとFalse Negativeとして知られる。前者は問題のないイベントを異常として誤って検知することで、後者は問題のあるイベントを見過ごしてしまうことである。

* サーバ運用を行なっていると、悪意のある者からのポートスキャンや、不正ログインの試みは日常茶飯事である。こういったパターン化した攻撃に対しては侵入検知システムは非常に有効である。

* 構成方法としては、ファイアウォールと組み合わせるのが一般的である。ファイアウォールによって不正なポートへのパケットを遮断し、ファイアウォールを通過したパケットの中身をIDSによって検査する。

II-20-6. IDSの導入と設定方法

代表的なIDSであるSnortやTripwireを例としてその導入や設定方法について説明する。またネットワークIDSとサーバIDSといった概念の違いを説明する。さらに検知ルールやアクションの設定と行った実際の運用方法について言及する。

【学習の要点】

* ネットワークベースのIDSは、監視対象ネットワークの境界やDMZなど、すべてのパケットが通過するネットワークの入口に置かれる。

* ホストベースのIDSは、あるホストにインストールされるソフトウェアであることが多い。ホスト内で行われる行為がIDSによって監視されることになる。

* Snortはネットワーク型IDS、Tripwireはホスト型IDSとして有名である。

図II-20-6. Tripwire

【解説】

1) Tripwire

* Tripwireは、ホストにインストールするホスト型IDSである。Tripwireは商用バージョンもあるが、オープンソースバージョンは特にOpen Source Tripwireと呼ばれている。

* Tripwireを用いれば、ホストにあるファイルの改竄を監視することができる。ファイルのMD5チェックサムを計算し、前回分と比較することによりこれを行なう。

* Tripwire使用の大まかな流れは以下の通りである。

- インストール

- ポリシーファイルの設定(twpol.txtの編集)

- ポリシーファイルの暗号化

- データベースの初期化

- 整合性チェック

- レポートの作成

* Tripwireに類似したソフトウェアには、AIDE (http://www.cs.tut.fi/~rammer/aide.html) やAFICK (http://afick.sourceforge.net) などがある。

2) Snort

* Snortは、ネットワーク型、signature型のIDSである。つまり、Snortは不正アクセスのパターンデータベースと照らし合わせて、そのアクセスが不正であるかを判断する。

* Snortの処理の流れは、入ってきたパケットをプリプロセッサによりフィルタリングし、その後に検知エンジンを呼び出す。警告出力用のフィルタの種類も豊富である。

* Snortをインストールしたら、設置場所の決定と、用途に合わせた設定を行なう必要がある。ファイアウォールの外側に置くか、内側に置くかで設定も異なる。

* 設定は、signatureとプリプロセッサの決定である。誤った検知を減らすためにこれらは適切に設定しておきたい。また、不要な設定は処理の負荷となるだけでなく、誤った検知を誘発することになるので注意が必要である。

3) 現状のIDSソフトウェアの問題点

* TripwireにしてもSnortにしても、現状それ自身を保護する仕組みはない。DoS攻撃などにより、これらのプログラムの効果を無効化されることがないわけではない。

* また、これらのソフトウェアは多くのコンピュータリソースを消費する。特にSnortをファイアウォールの外側に置いた場合、入ってくるすべてのパケットを検査する必要があるため、保護対象のホストやネットワークの提供するサービスに影響が及ぶ場合もあるだろう。

II-20-7. IDSによるネットワーク監視の作業手順

IDSを用いたネットワーク監視の作業手順として、セキュリティリスクの検討、セキュリティポリシーの検討、ネットワーク構成への反映、IDSが受信した不正アクセスのブラックリスト化といった具体的な作業手順を説明する。

【学習の要点】

* IDSには未だ精度の問題があり、侵入検知が必ず正しいものとは限らない。このため、管理者はIDSからの通知を確認する必要である。また、通知が大量に発生した場合の人員確保、確認体制も整えておく必要がある。

* IDSを導入したら、通知ポリシーを決める必要がある。通知ポリシーは組織のセキュリティポリシーに依存する。ポリシーに従って適切にチューニングを行わないと、通知確認がボトルネックとなり、せっかくのシステムが意味を成さなくなる場合がある。

* IPSは、管理者に検知内容を通知するのではなく、直ちにそのアクセスを禁止する。管理者が手動で対応する必要がない点がIDSと異なる。

図II-20-7. IPS配備の例

【解説】

1) IDSを使った監視

* 侵入を検知することは、IDSを利用することだけではない。実際になぜそれが必要か、既存のものの何を補うために使用するか、セキュリティポリシーに沿っているかなどを考慮するべきであろう。

* syslogを定期的に監視することで侵入の検知ができる場合も多くある。Linuxのauditdはそもそも監査目的のデーモンである。このような標準のツールの役割をよく考えた上でIDSを導入するべきであろう。

* syslogやauditdの抱える問題と同様の問題をIDSが含んでいることもある。ツールの選択の際にはその弱点もよく見極める必要がある。

2) IDSを使った監視の体制

* IDSは、侵入を検知するものでありそれを防ぐものではないことをよく知っておく必要がある。不正な侵入を検知したら、IDSは管理者に通知する。管理者はこの通知を受けて手動で対応策を施さなければならない。

* 管理者がIDSの発する通知をすべて確認し、対応するのは現実的ではない場合がある。IDSは適切にチューニングしておかないと、誤った検知により多量の警告を発する。

* 多量の警告の中から、不正アクセスを見つけ適切な対策を行なうことは困難である。意味のある検知を行なうためには適切なフィルタリングを行なわなければならない。

* 運用開始後には事前に設定したポリシーを見直したり、チューニングを適切に行っていくという作業が発生する。

3) IPS

* IPS(Intrusion Prevention System)は、IDSの考え方を発展させたもので、不正アクセスを検知したら、そのアクセスを防止するものである。

* 不正アクセスを検知した場合に、管理者に通知するだけではなく、リアルタイムにアクセスを遮断するところがIDSとの違いである。このことで、IDSでは管理者が手動で対応しなければならなかった作業を自動的に行なうことができるようになる。

* アクセスを遮断するという観点からは、ファイアウォールと似ているが、ファイアウォールはIPやポートに対して検査が行なわれるのに対して、IPSはパケットの内容を検査する。例えば、多くのIPSソフトウェアは、HTTPやSMTPといった上位レイヤのプロトコルを理解する。

* IPSもIDSと同様に、主にネットワーク型とホスト型に分けられる。Snortは、IPSとしての機能も実装している。

* IPSの導入によって、IDSの持つ問題がすべて解決できるわけでは決して無い。例えば誤った検知や多くのコンピュータリソースを必要とするなど、依然として問題は存在する。

II-20-8. ネットワークセキュリティ要件の分析

サーバのセキュリティ要件、クライアントのセキュリティ要件、ネットワークセキュリティ要件といったそれぞれのケースに関して、実際のケースを想定し、具体的なセキュリティの問題と対応策をまとめる。

【学習の要点】

* 重要なリソースを保護するためには、サーバ、クライアント、ネットワークそれぞれが適切なセキュリティ要件を満たしている必要がある。クライアントはセキュリティを確保するのが最も難しく、これによる被害が昨今多く報告されている。

* セキュリティと利便性は背反する二つの概念である。サーバ、クライアント間が接続する場合には、それぞれがデータ保護に対して必要十分な配慮がなされている必要がある。このことは、不要なサービスの徹底排除、適切なテクノロジーによる利便性の確保を大前提とする。

図II-20-8. クライアントのセキュリティ

 

【解説】

1) サーバ、ネットワーク、クライアントのセキュリティ

* サーバやネットワークのセキュリティについては、II-20-1~7にて述べた。システム全体のセキュリティは、サーバやネットワークのセキュリティ確保だけでは不十分である。サーバへ接続するクライアントもセキュリティを正しく確保する必要がある。

* Webシステムにおいては、サーバプログラムの不備によりクライアントが被害を受ける場合が多い(XSSなど)。このような場合も、クライアント側で適切なセキュリティ対策をしていれば防ぐことできる。

2) クライアントのセキュリティ対策

* サーバの場合と同様に、クライアントの場合も不要なサービスやアプリケーションの存在によって、セキュリティホールを生むことが多い。最近では、企業のクライアント端末に、社員が追加でソフトウェアをインストールできないような対策が施されていることが多くなってきている。

* クライアント端末からインターネットへの接続を、ファイアウォールによって遮断するようなセキュリティポリシーが定義されることがある。

* ノートPCを社外に持ちだすワークフローを持つ企業では、社員へのセキュリティ対策を徹底する必要がある。自宅のインターネット接続環境からウィルスを無意識に持ち込んでしまうことも多い。

* 企業のPCに接続されるリムーバルメディアの取り扱いにも注意する必要がある。ウィルスに感染した実行形式ファイルが混入する恐れは十分にあるからである。USBフラッシュメモリの接続を禁止している企業も多いだろう。

* 持ち込んだノートPCを企業のネットワークに接続する前に、検疫ネットワークに一度接続するのも良いアイデアである。

* クライアントPCは多くの場合Windows OSがインストールされている。利用者の多いOSではウィルスに感染する恐れが多い反面、パターン化されているウィルスなどを検出するには検疫ネットワークやアンチウィルスソフトを利用する効果は高い。

3) セキュリティと利便性

* セキュリティと利便性は背反する概念だと考えられることがある。セキュリティを厳しくすればするほど、利用者の利便性は損なわれてしまう。逆に利便性を追求するあまり、セキュリティ意識を低下させることも大きな問題である。

* セキュリティと利便性、業務の効率性を十分に考慮したセキュリティポリシーの定義が必要である。

* 社員に対するセキュリティ教育、採用する技術とその意義の理解促進は企業のセキュリティを守る上で非常に重要である。

II-20-9. DeMilitarized Zone (DMZ)の設計方法

インターネットとLANの間にファイアウォールを設けてセキュリティを確保すると共に、外向きのサービスを集中的に配置して管理するDeMilitarized Zone (DMZ)の設計と構築する。DMZに配置したサーバを適切に運用するためのフィルタリングルールの設定について解説する。

【学習の要点】

* DeMilitarized Zone (DMZ)は、サービスをインターネットのような組織外のネットワークに対して公開するために設置されたサブネットワークである。

* DMZは、社内ネットワークの全面に配備されるため、これを守る意味もある。たとえ、DMZが攻撃されても、社内ネットワークはダメージを受けないように設計される必要がある。

* Webサーバ、メールサーバ、DNSサーバなどは、DMZに配備される主たるサービスである。

図II-20-9. DMZ

【解説】

1) ネットワーク境界の保護

* LANとWANを接続するネットワークの境界では、不正な侵入を防ぐために強固なセキュリティによって保護する必要がある。一般的に次の仕組みが使用される。

- ファイアウォール

- DMZ (DeMilitarized Zone) の設置

- IPS (Intrusion Prevention System)

* セキュリティポリシーによって、上記の仕組みはしばしば組み合わされたり省略される場合がある。

2) ファイアウォールとDMZ

* ファイアウォールは、IPアドレスやポートによってパケットのフィルタリングを行なう技術である。

* DMZとは、LANとWANの間に置かれるサブネットワークのことで、メールサーバやウェブサーバなど、外部にサービスを行なう公開サーバが設置されることが多い。

* DMZに置かれるサービスには、外部ネットワークから接続することができる。多くの場合、DMZの前面にはファイアウォールが設置され、不要なパケットはファイアウォールにより破棄される。また、ファイアウォールからDMZへの接続には、NAT (PAT) が掛けられることが多い。

* 内部ネットワークからもDMZにアクセスすることが可能である。これは内部ネットワークに接続している管理者の端末から、DMZ上のホストをメンテナンスするのに便利である。

* しかしながら、DMZからは内部ネットワークへの接続は禁止する。このことにより、万が一ファイアウォールを突破してDMZに不正に侵入された場合でも、被害が内部ネットワークに及ぶことを阻止する。

* DMZを前後二つのファイアウォールによって保護するアーキテクチャもある。異なるベンダのファイアウォールを採用することで、不正な侵入をより困難にすることができる。

3) 具体的な構成方法

* ファイアウォールやDMZ(あるいはIPS)を構成するには、それぞれの機能をもった別々のデバイスを用意するか、またはそれほど大きくないネットワークである場合は、中規模用ルータを用意すればこれらの機能をすべて1台でまかなうことが可能である。

* 限定的であるが、一部パケットの内部を理解し、動的にアクセス制御を行なうことのできるルータ製品もある。

* Linuxを用いてソフトウェアでこれらを実装することも可能である。このような場合は複数のNICを用意し、カーネルのnetfilterやSnortを用いて実現することができる。

II-20-10. モバイル環境のセキュリティ

モバイルコンピューティングの活用について論じ、そのリスクについて解説する。リモートアクセスのリスク、不正アクセスの問題と対処方法、認証サーバの利用やワンタイムパスワードの仕組みと利用方法などを説明する。

【学習の要点】

* モバイル端末の普及により、外部ネットワークから組織内ネットワークへの接続できる必要性が出てきた。リモートから組織ネットワークへの接続時にセキュリティを担保する技術として、各種VPNが広く利用されている。

* モバイル端末が、公衆無線LANなどを使用して重要なデータのやり取りを行う際には、通信経路やデータの暗号化が徹底されている必要がある。VPN, SSL, SSHによる暗号化を利用して、利便性との釣り合いを考慮する。

* パスワードの漏洩による不正アクセスを防ぐにあたって、ワンタイムパスワードを利用することが多い。

図II-20-10. 典型的なインターネットVPN接続の例

【解説】

1) モバイルアクセスのリスク

* ノートPCを利用する局面が増えてくると、それに伴ってセキュリティリスクが高まってくる。もっとも危険な要因は、利用者のセキュリティ意識の低さと知識不足である。

* モバイルアクセスが多用されるようになってくると、このような危険因子は従来以上にクリティカルである。他のネットワークの接続形態を知らないまま接続し、その後社内のネットワークへ接続することが、この上なく危険な行為であることを知らない利用者は多い。

* 技術的な問題で解決できない部分は、利用者に喚起するしかないことを知っておく必要がある。

2) モバイルアクセスのリスクを軽減させる技術

* 外部から社内のネットワークへ接続する場合は、VPNが用いられることが多い。よく利用されるVPN技術は、ネットワークレイヤ3を暗号化する。

- PPTPは、リモートアクセスVPNを実現する技術であるが、WindowsやMac OS XといったクライアントOSで始めから利用することができる。

- IPSecは、拠点間を接続するためによく利用されるVPN技術である。CiscoやYamahaのルータ間で、互いに暗号経路を構築することができる。

* より高レイヤのVPN技術には、例えばSSHやSSLを利用したものがある。

- SSHはLinuxなどのOSではほぼ標準でインストールされており、アプリケーションレイヤで動作する。各種TCP/UDPパケットを容易にトンネリングさせることができる。

- SSL-VPNは、SSLを利用して汎用VPNを構築する技術である。ほとんどのブラウザやメールクライアントはSSLに対応しているため、これらのソフトウェアの暗号接続を通して任意のパケットをトンネリングすることにより暗号経路を確立する。

* ワンタイムパスワード

- 上記VPN接続と組み合わせて、ワンタイムパスワードが用いられることがある。ワンタイムパスワードは、認証に必要なパスワードを固定的なものではなく、時間とともに変化するものを使用する。利用者は配付されるトークンに表示されるワンタイムパスワードと暗証番号を入力して認証を受ける。

- VPNの暗号経路確立時の認証に、ワンタイムパスワードを利用することがある。ワンタイムパスワードは、時間とともに変化するため、万が一パスワードが破られた場合でも、次のパスワード変化の時刻が来ると同時に無効となるため、被害の拡大を抑えることができる。