9. ネットワークサーバ管理に関する知識 II

シラバス: 

1. 科目の概要

OSSが動作するネットワークサーバについて、比較的高度なサーバについて紹介する。さらにサーバ運用管理の概要と具体的な手順、ログの管理やセキュリティ対策など実際のサーバ運用に求められる知識を解説する。

2. 習得ポイント

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

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

「9.ネットワークサーバ管理に関する知識Ⅱ」とIT知識体系との対応関係は以下の通り。

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

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

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

OSS モデルカリキュラム固有の知識として、Linux 上で動作するサービスの管理が挙げ

られる。サービスにはスーパーサーバ、プロキシサーバ、ログ管理などが含まれる。ここでは、OSS 実装を通してインターネットで利用されるサービス管理手法について習得する。

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

II-9-1. スーパーサーバの仕組みと構築・設定方法

リクエストに応じてサービスを割り振るために用意されたスーパーサーバの仕組みについて概説する。さらにスーパーサーバの構築例として、xinetdの導入と設定の手順を示す。telnetやftpによる接続を例として、スーパーサーバの具体的な動作について述べる。

【学習の要点】

* スーパーサーバは、クライアントからの要求に応じて、対応するサービスプログラムに対して起動をかけるプログラムである。

* 代表的なスーパーサーバであるxinetdの設定を行う。

* xinetdではアクセス可能なホストの制限をかける等、セキュリティを考慮した設定を行うことができる。

* telnetやftpによる接続を例にしてスーパーサーバの具体的な動作を理解する。

図II-9-1. スーパーサーバの役割

 

【解説】

1) スーパーサーバとは

ネットワークサーバにて各種サービスを提供するには、クライアントからの要求に応答するためサービスごとにプログラムを起動し常駐させておく必要がある。提供するサービスが増えると常駐するプログラムも増え、常にCPUやメモリが消費された状態となってしまう。

スーパーサーバは、ネットワークサービスへの要求を代表して受け付け、サービスの種類によって対応するサービスのプログラムを起動することで、CPUやメモリの消費を抑えるためのプログラムである。

2) xinetdとは

代表的なスーパーサーバとしてはinetdが利用されていたが、現在ではinetdにセキュリティ機能などの機能拡張を行った、xinetdが利用されている。

xinetdの特徴的な機能としては以下のような点があげられる。

* アクセス可能なクライアントの制御

ホスト名、IPアドレスやネットワークアドレスを指定することにより、アクセスを許可または不許可とするクライアントの指定を行う。

* アクセス可能時間の設定

ネットワークサービスの提供可能な時間帯を設定する。

* 接続回数の制限

同時に起動できるサーバプログラムの数や、1秒あたりの接続数の制限を設定する。

* 独自のログ出力

syslogに出力する他、出力する項目や出力方法をを指定して独自のファイルへの出力を設定する。

3) xinetdの設定

xinetdの設定は、/etc/xinetd.confgと/etc/xinetd.d/以下にあるサービスごとの設定ファイルにて行う。/etc/xinetd.confではxinetdから実行されるプログラム全体に適用する基本的な設定を行い、/etc/xinetd.d/以下にある設定ファイルはプログラムごとに設定を行う。

各ファイルの書式は以下のように記述する。

 
 

service サービス名(または「default」)

{

属性名 代入演算子 設定値

}

 

属性として指定できる項目としては、「プログラム(デーモン)の動作タイプ」「ソケットタイプ」「サービスを実行するユーザ/グループ」「サーバプログラムのパス」「サービスの有効/無効」などがある。

II-9-2. プロキシサーバの仕組みと構築・設定方法

Linuxで動作するプロキシサーバであるSquidを導入、構築し、設定を行う手順を解説する。プロキシサーバ運用のメリットを示し、プロキシサーバが実際に動作する状況について解説する。

【学習の要点】

* プロキシサーバは外部ネットワークが提供するサービスを、内部ネットワークに存在するクライアントへ提供するための代理サーバとして利用される。

* プロキシサーバにてキャッシュを行うことにより内部ネットワークから外部ネットワークへのトラフィックを低減することができる。

* 内部ネットワークへの不正侵入などを防ぎながら、内部ネットワークから外部ネットワークへのアクセスができる。

* 代表的なプロキシサーバであるSquidの設定を行いプロキシサーバの実際の動作を確認する。

図II-9-2. プロキシサーバの動作

【解説】

1) プロキシサーバとは

ファイアウォールなどを設置して外部のネットワークと切り離している場合、プロキシサーバの機能としては大きく以下の2つに分けられる。

* 代理アクセス

ファイアウォールなどによって直接外部のネットワークと通信することが出来ない場合、ネットワーク内のコンピュータの代わりに外部のネットワークと通信を行う。

また、外部のネットワークとの通信をプロキシサーバだけに制限することで通信の管理が容易となり、セキュリティを向上することができる。

* キャッシング

ネットワーク内のコンピュータが外部のネットワークと通信を行った結果を保存することにより、他のコンピュータが同じサーバと通信を行う際に保存されているデータを利用する。これにより、外部のネットワークとの通信量を減らし、見かけ上のデータ転送速度を向上することができる。

2) Squidとは

プロキシサーバの1つで、主にHTTPを利用した通信に対してプロキシサービスを提供するプログラム。

ネットワーク内のコンピュータが外部のネットワークにあるWebサーバへデータを要求する際、SquidによってWebサーバのデータがキャッシングされていない場合には、SquidがWebサーバと通信しデータを取得後、要求のあったコンピュータへ送信する。

要求のあったWebサーバのデータがSquidにキャッシュされていた場合、Webサーバへキャッシュされているデータが更新されていないか確認を行い、更新されていなければキャッシュの内容を要求のあったコンピュータへ送信する。

Squidの特徴的な機能としては以下のようなものがある。

* 分散キャッシュ

同一ネットワーク内に複数のプロキシサーバを設置し、あるプロキシサーバのキャッシュに要求するデータが存在しない場合、他のプロキシサーバのキャッシュを利用してデータの送信を行うことにより、外部のネットワークからデータを取得するよりも速くデータの送信を行うことができる。

* httpdアクセラレータ

Squidが存在するネットワーク内にあるWebサーバの内容をキャッシングし、外部のネットワークからの要求に対してデータの送信を行うことにより、Webサーバの負荷を低減することができる。

* 透過型プロキシ

プロキシサーバを利用するためには、ネットワークに接続されたコンピュータに設定をする必要があるが、外部のネットワークへ通信があった場合、デフォルトゲートウェイにてプロキシサーバへ直接転送することにより、各コンピュータで設定を行わずにプロキシサーバを利用するようにできる。

4) Squidの設定

Squidの設定は、/etc/squid/squid.confによって行い、キャッシュ、アクセスコントロール、パケットフィルタリング、ログなどに関する設定を行う。

II-9-3. その他の様々なネットワークサーバ

実際のネットワークで様々に利用されているネットワークサーバを解説する。インターネット向けにはNTPサーバとニュースサーバ、イントラネット向けにはLDAPサーバ、NISサーバ、Netatalkサーバ、NFSサーバ、プリントサーバといった各種サーバの機能を説明する。

【学習の要点】

* インターネット向けのサーバとしては、NTP、ニュースサーバ等がある。

* NTPはネットワーク上に存在するホストのシステムクロックを同期するために使用する。

* ニュースサーバはネットニュースの蓄積と他のニュースサーバへの伝播を行う。

* イントラネット向けのサーバとしては、LDAP、NIS、Netatalk等がある。

* LDAPサーバはネットワークを利用するユーザ情報や、利用可能なサーバと提供しているサービス、プリンタなどの利用可能な機器などを一括管理するために使用する。

* NISはネットワークに接続しているホスト間でパスワードファイルを一括管理したり、 hostsファイル等の共有行う時に使用する。

* NetatalkはLinuxとMacintoshとの間でファイルやプリンタの共有を行う時に使用する。

図II-9-3. その他のネットワークサーバ

【解説】

ネットワークサービスを提供するサーバプログラムとしては、主に外部のネットワークへサービスを行うものと、内部のネットワークにて利用するものに大別することができる。

1) インターネット向けサービス

主に外部のネットワークへサービスを行うサーバとしては以下のようなものがある。

* NTPサーバ

ネットワークを介してクライアントがサーバへ時刻の問合せを行うときに利用するNTP(Network Time Protcol)を利用するためのサーバで、サーバとクライアント間で時刻の同期を行うために使用する。クライアントから時刻の問合せがあると、NTPサーバで管理している時刻をクライアントへ提供することにより、時刻の同期を行う。

NTPサーバは、ntpパッケージを導入し、ntpdサービスを起動することにより使用できる。

* ニュースサーバ

NNTP(Network News Transfer Protocol)を利用してネットニュースの投稿や配信を行うためのサーバである。ネットニュースはテーマごとに階層化されたニュースグループ(掲示板)の集合で、管理しているニュースグループへのニュースの投稿の受付やクライアントへの配信のほか、他のニュースサーバへからのニュースの受信や他のサーバへの配信を行う。

ニュースサーバとしてはINN(InterNetNews)があり、innおよびinewsの2つのパッケージをインストールし、inndサービスを起動することにより使用できる。

2) イントラネット向けサービス

内部のネットワークにて利用する主なサーバとしては以下のようなものがある。

* LDAPサーバ

LDAP(Lightweight Directory Access Protocol)はネットワークを介して、ユーザID、パスワードやメールアドレス等のユーザ情報を管理・提供する「ディレクトリサービス」を行う時に利用するプロトコルである。LDAPサーバはこのプロトコルを利用してユーザ認証やクライアントへユーザ情報の提供を行う。

LDAPのプログラムとしてはOpenLDAPがあり、openldap-serverおよびopenldap-clientsをインストールすることにより使用できる。

* NISサーバ

NIS(Network Information Service)はネットワーク内のユーザ情報やコンピュータ情報などのシステム情報を管理するためのサービスある。NISサーバでシステム情報を一元管理することにより、各コンピュータにて同じユーザ名とパスワードでログインすることが可能となり、またネットワーク内に接続されているコンピュータの名前解決を行うことができる。

NISサーバはypserv、yppasswdd、ypxfrdサービスで構成され、これらをインストールすることにより使用できる。

* Netatalkサーバ

NetatalkはLinuxへAppleTalk Networkの機能を組み込むためのソフトウェアである。Netatalkを利用するとLinuxをMac OSクライアントに対するファイルサーバとして利用することが可能となり、Mac OSクライアントからLinux上のファイルシステムの共有や、プリンタを利用することができる。

Netatalkパッケージをインストールし、atakサービスを起動することにより使用できる。

II-9-4. ルーティングとパケットフィルタリング

ネットワークサーバにおけるルーティングとフィルタリングの処理を理解させる。ルーティングにおいては静的なルーティングの設定を示し、フィルタリングにおいてはパケットフィルタリングの概念とNetfilterやiptablesにおける設定方法を示す。

【学習の要点】

* サーバからデータを送信する通信経路を見つけ出す方法のことをルーティングと呼ぶ。ルーティングは通信先がどこに接続されているかを定義する「ルーティングテーブル」で管理を行う。

* 静的ルートはルーティング設定ファイル(/etc/sysconfig/static-routes)へ経路情報を記述する他、routeコマンドにて経路情報の追加や削除を行うことができる。

* サーバに送られてきたパケットのヘッダにはプロトコルや送信元アドレス、送信先アドレスやポート番号などの情報が含まれており、これを参照して通過するかどうかを決定することをパケットフィルタリングという。

* Netfileterのパッケージとしてiptablesがあり、iptablesコマンドで設定するか、フィルタリングのルールを/etc/sysconfig/iptablesに記述することにより設定する。

図II-9-4. 静的ルートとパケットフィルタリング

 

【解説】

1) ネットワークサーバのルーティング

ネットワークサーバにて内部のネットワークと外部のネットワークへ同時にサービスを提供する場合など、要求のあったコンピュータへ返信を行うためには、要求元のコンピュータがどちらのネットワークに接続されているか経路情報がわからなくてはいけない。

この経路情報を見つけ出す方法のことを「ルーティング」と呼び、「ルーティングテーブル」によって管理されている経路情報を使用して通信経路を決定する。

経路情報としては、静的ルーティングと動的ルーティングがあるが、ネットワークサーバでは主に静的ルーティングにて経路情報の設定を行う。

2) 静的ルーティングの設定

設定ファイルまたはrouteコマンドにて、宛先のネットワークアドレスまたはホストアドレスがどのゲートウェイを経由してデータを送出するのかを設定する。

* 設定ファイルによる設定の例

/ etc/sysconfig/static-routes

 any net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1<br />
any host 192.168.0.10 gw 192.168.0.1

* routeコマンドによる設定の例

# route add –net 192.168.1.0 255.255.255.0 eth1

# route add –host 192.168.1.10 eth1

3) パケットフィルタリング

パケットフィルタリングはネットワークインタフェースを通過するデータ(パケット)のプロトコルや送信元アドレス、送信先アドレスやポート番号などを参照し、データを通過させるかどうか決定することで、ネットワークサーバおよびネットワーク内のセキュリティを高めるために使用する。

パケットフィルタリングはデータの入力、出力や転送などが行われるタイミングごとにチェインと呼ばれるルールセットによりフィルタリングを行う。

5) パケットフィルタリングの設定

Linuxでは主としてNetfilterを利用してパケットフィルタリングを行い、iptablesサービスを起動することにより使用することができる。

Netfilterは、PREROUTING、FORWARD、INOUT、OUTPUTおよびPOSTROUTINGの5つのチェインによってパケットフィルタリングを行う。

Netfilterで設定する項目は、ルールを設定する場所を設定する「テーブル」、ルールに一致したデータの扱いを設定する「ターゲット」、各チェインのデフォルトのターゲットを設定する「ポリシー」がある。

フィルタリングのルールはiptablesコマンドを使い、各チェインで使用するルールを追加することにより設定を行う。また、/etc/sysconfig/iptables へ記述しておくことによりサービスの起動した時に自動的にパケットフィルタリングのルールを設定することができる。

II-9-5. インターネット接続の設定方法

インターネットにサービスを提供するために必要な知識、行うべき作業と設定方法を解説する。ドメインとIPアドレスの取得、インターネットに接続するための設定、信頼性とセキュリティを確保するための運用管理方法などについて説明する。

【学習の要点】

* 独自のLinuxサーバをインターネットに接続してサービスを行う場合、ドメインおよびグローバルIPを取得しておく必要がある。

* インターネットへ接続したサーバを公開するためには、取得したドメイン名を外部ネットワークで管理しているDNSサーバへ登録する必要がある。また、外部ネットワークとの通信を行うためにはDNSサーバの設定を行い、ドメイン情報を取得できるようにする。

* インターネットへ接続する方法としては、モデムとサーバを直接接続する方法と、モデムとサーバをファイアウォールを介して接続する方法がある。モデムとサーバを直接接続する場合、サーバにPPPoEクライアントにて接続方法の設定を行う。

* ネットワークサーバをインターネットへ公開することで不正アクセスなどの脅威にさらされることになる。TCP Wrapperなどでサーバへのアクセス制限を設定することが必須である。

図II-9-5. インターネットへの接続

【解説】

1) インターネット接続に必要な情報

ネットワークサーバをインターネットへ接続してサービスを提供する場合、ネットワークサーバの所属を識別する「ドメイン名」とインターネット上で利用可能な「グローバルIPアドレス」を取得しておく必要がある。

取得したドメイン名とグローバルIPアドレスで他のネットワークからアクセスできるようにするにはISPなどで管理しているDNSサーバへドメイン情報を登録する必要がある。

2) 接続方法

インターネットへ接続する方法としては、モデムとサーバを直接接続する方法と、ファイアウォールを介してモデムとサーバを接続する方法がある。

* モデムとサーバを直接接続

モデムを介してネットワークサーバを直接インターネットへ接続する方法で、不正アクセスなどを内部ネットワークのセキュリティを確保するため、サーバに必ずファイアウォールを設定する。

インターネットとの接続は、サーバにPPPoEクライアントをインストールし、ISPなどからグローバルIPアドレスを取得できるようにする。

* ファイアウォールを介してモデムとサーバを接続

インターネットとの接続はファイアウォールが行い、インターネットへ公開するサーバはDMZ(DeMilitarized Zone)へ配置する。内部のネットワークは、更にDMZとファイアウォールを介して接続することにより、内部ネットワークのセキュリティを確保する。

ファイアウォールのPPPoEクライアント機能を使用して、ファイアウォールにグローバルIPアドレスが取得し、公開するネットワークサーバはDMZのプライベートIPアドレスを設定する。公開するネットワークサーバはファイアウォールのIPマスカレード(内部の複数のIPアドレスを外部に対しては1つだけに見えるようにする方法)を利用して外部との通信を行う。

3) サーバの設定

ネットワークサーバをインターネットへ接続する場合、以下のような設定を行う必要がある。

* グローバルDNSの設定

外部のDNSサーバへ公開するサーバ自身のDNS情報の設定と、DNS情報の転送を許可するDNSサーバやクライアントの設定を行う。

* アクセス制限

外部へ提供するサービスごとにアクセス制限を設定する。スーパーサーバから起動されるサービスはスーパーサーバのアクセス制限を利用し、それ以外のサービス単体でアクセス制限を実行することが出来ないサービスについてはTCP Wrapperを利用してアクセス制限を行う。

また不要なサービスを停止することにより、無用なアクセスを受け付けないようにする。

* 外部からのアクセス手段

ネットワークに所属するユーザが外部のネットワークからアクセスを行う必要がある場合、SSHやSSLによるアクセスやクライアント証明書を利用することにより、よりセキュアな方法でアクセスを行うように設定を行う。

II-9-6. サーバ運用管理の目的と内容

ネットワークサーバを運用管理する作業の内容と、管理対象とする項目、運用管理自体の重要性などについて述べる。運用管理業務の目的としてシステムやサービスの品質を維持することとそのために構成管理、ログ管理、セキュリティ管理、障害管理等の様々な管理が必要であることを示す。

【学習の要点】

* サーバ運用管理の業務としては、サーバが正常に動作しているかを確認する業務、サーバで定期的に実行される管理操作を実行する業務が挙げられる。

* ログ監視、ネットワーク監視、サービス監視やパフォーマンス/リソース監視などを行い、サーバが正常に動作していることを確認する。

* システムのバックアップやログ収集、設定変更、パッチの適用、ソフトウェアインストールなど定期的に作業を行いサーバの維持を行う。

図II-9-6. サーバの運用管理

【解説】

1) ネットワークサーバの運用管理

ネットワークサーバは安定して継続したサービスを提供することが求められているが、ハードウェアやネットワーク障害、不正アクセスなどの発生を完全に防ぐことは困難である。

このため、ネットワークサーバ運用を円滑に行い、問題の発生した場合には迅速に発見し、問題解決を行うために以下のような管作業を行う必要がある。

2) 構成管理

ハードウェアやソフトウェアの構成・設定・登録・変更を管理する業務でサーバの設計から導入、運用中の作業が必要となる。

運用中の主な作業としては、利用するユーザやサーバアプリケーションの追加・変更やOSやアプリケーションのアップグレードが行われた場合の更新作業がある。

また、パフォーマンスやリソースの監視を行い、これらが不足していた場合、最適なシステム構成を設計し変更作業を行う。

3) ログ管理

ネットワークサーバでは運用中に発生する様々な事象をログへ出力される。出力されるログを監視することにより、障害や不正アクセスなどを発見することが可能となる。

ログ監視では、主に「ログ取得対象の設定」「ログの取得」「ログローテーションの設定」「ログのスケジューリングの設定」「ログの解析」などの作業を実施する。

4) セキュリティ管理

セキュリティ管理を行うためには、どのようなサービスを誰に提供するかなどを設定した「セキュリティポリシー」を作成しておく必要がある。セキュリティ管理では、ログやネットワーク、サービスの監視を行い、セキュリティポリシーに沿って運用がされているか確認を行う。

セキュリティポリシーに沿っていない状態が発見された場合は、ネットワークの設定変更やサービスの停止などを行う。

5) 障害管理

ネットワークサーバでは障害が必ず発生することを前提とし、発生を早期発見し被害を最小限に抑え、早く復旧することが必要である。

障害を早期発見するには、障害を検出するための処理を自動化して定期的に実行し、異常があった場合速やかに通知を行う仕組みを構築することが有効である。

障害の解決には、障害発生時の状況や対応方法などの手順やツールをまとめておき、障害が発見された時は、この手順に従って速やかに障害解決の作業を行うことで被害を最小限に抑え、復旧までの時間を短く抑えることが必要である。

6) 管理作業の自動化

管理作業で頻繁に使用する監視用のコマンドやデータのバックアップ処理などはスクリプトを作成し、確実にコマンドが実行するようにすることが必要である。

また定期的に実行する管理作業はcrontabでスケジューリングしておき、指定した日時にコマンドが実行されるようにする。

II-9-7. サーバにおけるログ管理

ネットワークサーバの管理業務を構成する重要な作業であるログ管理について解説する。syslogの導入と管理の説明に加え、logwatch、logrotate、swatchといった様々なログ管理ツールの導入と設定方法を説明する。

【学習の要点】

* サーバで出力されるログには、サーバの異常を示すログ、ユーザのログイン履歴や認証時のログ、プログラムの動作ログなど、さまざまな種類が存在し、多くはログ制御システム(syslog)を介して出力される。

* syslogはサーバのプログラムsyslogdで出力し、出力する内容は設定ファイル(syslog.conf)により決定する。

* syslogにより出力されるログから異常値を発見することは困難であり、logwatch等で特定の情報が出力された時に自動的に通知を行うことが有効である。

* syslogにより作成されるログファイルには膨大な量のログが出力される。cronでlogrotateを実行すログファイルを何世代かに分割し肥大化を防ぐ。

図II-9-7. syslogによるログ管理

【解説】

1) サーバで出力するログ

ネットワークサーバの各サービスプログラムではサーバの異常を示すログ、ユーザのログイン履歴や認証時のログ、プログラムの動作ログなどをログとして記録している。

このログを検証することにより、サービスが問題なく提供されているか、また不正なアクセスが行われていないかなどの検収が可能となる。

出力するログの多くはsyslogサービスを使用して出力される。またログを管理し検証を行うツールとしてlogwatchコマンドやlogrotateコマンドなどがある。

2) syslog

syslogを使用してログを出力することにより、ログの出力方法をシステム内で統一することが可能となり、ログの解析や問題の発見などが容易となる。

syslogはLinuxに標準で導入されているサービスで、システム起動時に自動的に起動するようになっている。動作の設定は/etc/syslog.confにて行い、以下のように設定を行う。

<ファシリティ>.<レベル>  <アクション>

* ファシリティ

syslogで出力するログをどのカテゴリで出力するかを指定する。

auth(認証時)、cron(クーロン)、daemonm(デーモン)、user(ユーザ)などがある。

* レベル

出力するログの重要度や緊急度を指定する。

emerg(システム不能)、crit(致命的)、err(一般エラー)、warning(警告)などがある。

* アクション

ファシリティとレベルで指定したログのアクションを指定する。

出力するファイル名やメッセージを送信するホスト名、ユーザ名などがある。

syslogはUDPを用いたクライアント・サーバ方式で動作しているため、アクションに送信先ホスト名を指定することにより、特定のサーバでログを集中管理することが可能となる。

3) logwatchコマンド

ログファイルには様々な情報が膨大に出力されるため、その中から問題のある情報を抜き出す作業は大変である。logwatchコマンドを利用することにより、問題のあるログを容易に抜き出すことが可能となる。logwatchではサービスごとに予め問題として判定するログの条件を設定しておき、条件に一致したログだけを抽出し、指定したメールアドレスへ送信する。

問題を迅速に発見するためには、cronにて定期的にコマンドを実行する必要がある。

4) logrotateコマンド

ログファイルを出力したログファイルをそのまま使用していると、サイズが大きくなりすぎて検証を行う際に範囲が広すぎて時間が掛かるなど問題が発生する可能性がある。logrotateコマンドを利用することにより、ログファイルを分割して管理することが可能となる。logrotateコマンドを実行すると現在のログファイルのファイル名を変更し、新規に空のログファイルを作成し、ログファイルのローテーションを行う。

ログファイルのローテーションはcronにて定期的に実行することでログ管理が容易となる。

II-9-8. セキュリティ対策と運用方法

Linuxサーバを運用する上で必須であるセキュリティ確保について説明する。そもそもセキュリティとは何か、セキュリティの定義について触れ、サーバ運用においてサーバをセキュアに保つための設定方法や診断ツールなどを紹介する。

【学習の要点】

* ネットワークサーバを管理する上で、「コンピュータへの不正進入」「コンピュータの不正使用」「情報の漏洩」「コンピュータウィルスへの感染」などセキュリィ上の問題が発生することを認識する。

* ネットワークサーバにおけるセキュリティとは「機密性」「完全性」および「可用性」の維持である。提供するサービスや対象とするユーザを明確にしセキュリティを確保しなくてはいけない。

* セキュリティの確保のためには、セキュリティポリシーにより系統だった対策を策定し、これを実行する必要がある。

* セキュリティ対策としては、各種診断ユーティリティを使用し、サービスの実行状況の確認と設定、システムログのチェック、ネットワークの監視、システムのアップデート、システムパスワードのチェック、システムパスワードの保護などを実施する。

図II-9-8. サーバセキュリティ

【解説】

1) ネットワークサーバのセキュリティ

様々な情報を扱うネットワークサーバにおいて、セキュリティとは「機密性」「完全性」および「可用性」の維持である。

* 機密性 : アクセスを認可された者だけが情報にアクセスできること。

* 安全性 : 情報および処理方法が、正確であることおよび完全であること。

* 可用性 : 許可された利用者が、必要なときに、情報にアクセスできること。

ネットワークサーバにてセキュリティの対策を行うためには、セキュリティ上の問題は必ず発生することを前提とし、どのような問題があるのかを知る必要がある。以下の項目は最低限知っておく必要がある問題である。

* コンピュータへの不正進入

* コンピュータの不正使用

* 情報の漏洩

* コンピュータウィルスへの感染

2) セキュリティポリシーの策定

セキュリティの確保のためには、ネットワークサーバにて提供するサービスの種類や提供のするユーザ、運用方法などを系統立てて策定したセキュリティポリシーを作成することが重要である。

実際のサーバ設計、構築および運用はセキュリティポリシーに沿って作業を実施する必要がある。

3) セキュリティ対策

セキュリティ対策として以下のような管理作業を行う必要がある。

* 各種診断ユーティリティを使用したシステムの監視

Linuxにて提供されている各種診断ユーティリティを使用し、サービスの実行状況の確認、システムログのチェック、ネットワークの監視などを行い問題の早期発見を行う。

サービスの実行状況は、chkconfigコマンドによるサービスの自動起動の確認や、serviceコマンドによるサービスの稼動状態の確認により行うことができる。

ネットワークやサーバ全体の稼動状況は、SNMPやMRTGにより監視することができる。

* ソフトウェアのアップデート

Linuxカーネルやサービスプログラムなどにセキュリティ上の問題が発見された場合、できるだけ早く対策を行う必要がある。

* システムパスワードの保護

パスワードは設定するだけではなく、ある程度の強度を持たせる必要がある。強度の高いパスワードの条件としては以下のようなものがあげられる。

- 文字数が8文字以上

- アルファベット大文字、小文字、数字、記号のうち3種類以上を含む

また、パスワードの解析を防ぐためにはパスワードに有効期限を設定し定期的にパスワードを変更することが必要である。

パスワードの文字数や有効期限は/etc/login.defs で設定することができる。

II-9-9. サービスセキュリティの仕組みと設定方法

Linuxサーバが提供する各種のサービスについてセキュリティを確保するための仕組みを解説する。Linuxサーバにおける具体的な構築事例として、tcp_wrappersの機能や設定方法、xinetdによるアクセス制御など具体的な手順を示す。

【学習の要点】

* Linuxではシステム起動時にrcスクリプトを使用してサービスの起動を行う。rcスクリプトはサービス毎に作成されるシェルスクリプトで、システムのモード(ランレベル)によって起動するサービスを設定することができる。

* ネットワークサーバにてサービスすることはセキュリティ上の問題に直結するため、提供するサービスの種類や利用するユーザの制限・監視を行い安全の利用できる環境を構築する必要がある。

* スーパーサーバ(xinetd)によって起動されるサービスのセキュリティ強化の方法としては、設定ファイルにアクセス可能なホスト、アクセス可能時間、接続数を指定することによるアクセス制御がある。

* スーパーサーバによって起動されるサービス以外(デーモンなど)は、TCP Wrapper によってアクセス制御を行う。TCP Wrapperではサービス(デーモン)毎にアクセスを拒否または許可するするホストやユーザを設定することによりアクセスの制御行う。

図II-9-9. サービスセキュリティ

【解説】

1) サービスのセキュリティ

ネットワークサーバとして運用するには提供するサービスごとにサービスプログラムを起動する必要があるが、サービスが増えるほどサーバへアクセスする方法が増えるため、セキュリティ上の危険も増える。サービスによって発生する問題を回避するには、必要なサービスのみを利用し、必要のないサービスを停止することが最も基本的な対策となる。

また提供するサービスは、利用を許可するコンピュータやユーザなどを制限することによりセキュリティの強化を行う。

2) サービスの起動

Linuxではサービスプログラムを起動する方法としては以下のようなものがある。

* システム起動時に同時に起動

ネットワークの設定を行うデーモンなど、システム起動に必要なサービスや、WWWサーバなどクライアントへのレスポンスの速さが要求されるサービスの起動を行う。

* スーパーサーバ(xinetd)による起動

ユーザに提供するサービスでTELNETやFTPなどクライアントクライアントからの要求によりサービスの起動を行う。

3) システム起動時のサービスプログラムの起動

Linuxではinitプログラムによってシステム起動時にサービスプログラムを実行する。各サービスプログラムの起動はrcスクリプトによって行い、システムの起動モード(ランレベル)によって実行するrcスクリプトを設定することができる。

必要なサービスのみ起動するためには、ランレベルごとに必要なサービスを起動するように設定を行うことが必要となる。起動するrcスクリプトの設定はchkconfigコマンドによって行う。

また、サーバ起動後はserviceコマンドにてサービスの稼動状態を確認し、必要のないサービスが起動されていた場合、サービスの停止を行う。

4) スーパーサーバによるアクセス制限

スーパーサーバでは起動するサービスを必要なサービスのみに制限することが必要である。

また、スーパーサーバには、アクセス可能なホストやネットワークの設定、アクセス可能時間の設定、接続数の制限の設定などにより、セキュリティを強化する機能が実装されている。

サービスごとアクセス制限の内容を設定ファイルに記述することによりサービスのセキュリティを強化することが可能となる。

5) TCP Wrapperによるアクセス制限

デーモンなどスーパーサーバによって起動されるサービス以外のサービスプログラムはTCP Wrapper によってアクセス制御を行うことができる。

TCP Wrapperは各サービスのアクセス制限を一元管理することができる。設定ファイルに、アクセス制限を行うサービスプログラムと、アクセスを拒否するホストおよび許可するホストを記述することにより、サービスのアクセス制限を行いセキュリティを強化することが可能となる。

II-9-10. セキュアOSの特徴

セキュリティを強化したOSであるセキュアOSについて、その必要性や特性、セキュアOSが満たすべき要件は何かなど、セキュアOSの特徴を解説する。セキュアOSの具体例としてTrusted Solaris、SELinux、LIDSを紹介する。

【学習の要点】

* 従来のセキュリティ対策には限界があり、OSそのものを強化することにより不正侵入などへの耐性を根本的に高められるセキュアOSが求められている。

* セキュアOSとは「強制アクセス制御」と「最小特権」の機能を満たしているOSを指している。

* セキュアOSとしては「Trusted Solaris」や「SELinux」等がある。

* Trusted Solarisは米国家安全保障局で策定されたセキュリティ評価基準に定義されている規約を満たしたTrusted OSを実装したOSである。

* SELinuxは米国の NSAが中心になって開発した,Linuxカーネルの セキュリティ拡張モジュールで、多くのLinuxディストリビューションに組み込まれている。

図II-9-10. セキュアOSの特徴

【解説】

1) セキュアOSとは

Linuxはネットワークやサービスの設定や運用を適切に行うことにより、セキュリティを強化することが可能であるが、セキュリィホールや利用者に依存するパスワードの管理など、従来のOSでは防ぐことが出来ない問題が存在する。

セキュアOSは通常のOSと比べ最低限以下のような点が強化がされているものを指す。

* 強制アクセス制御

Linuxでは、ファイルやディレクトリに対するアクセス権として所有者、グループおよび全てのユーザの3種類の設定を行う。また所有者によってアクセス権が自由に設定できる。

セキュアOSでは、アクセス権の設定をファイルやディレクトリの所有者が行うのではなく、設定ファイルで一元管理することにより、システム管理者がシステム全体のアクセス権の設定状態を把握し管理することができる。

* 最小特権

Linuxではrootユーザがシステムに関する全ての権限を所有しているため、root権限を不正なユーザに取られた場合、システム全体を自由に操作することが可能となってしまう。

セキュアOSでは、root権限を廃止し複数のユーザに権限を分割して割り当てることにより、アカウントやサービスには最低限の権限が付与されるため、ユーザ権限を不正なユーザに取られた場合でも、システムへの影響を少なくすることができる。

2) Trusted Solaris

Trusted Solarisは米国家安全保障局で策定されたセキュリティ評価基準に定義されている規約を満たしたTrusted OSを実装したOSで、主に以下のような特徴がある。

* MLS(Multi-Level Security)

システム内の各情報に機密レベルを設定し上位レベルから下位のレベル、または下位のレベルから上位のレベルへのアクセス制御を行うことで強制アクセス制御を実現している。

* RBAC(Role-Based Access Control)

全てのユーザに対してロール呼ばれる役割を結びつけることにより、管理者権限の分割、root特権の細分化を行い最小特権実現している。

3) SELinux

SELinuxは米国の NSAが中心になって開発した,Linuxカーネルの セキュリティ拡張モジュールで、多くのLinuxディストリビューションに組み込まれている。

セキュアOSとして、セキュリティポリシーファイルによる強制アクセス制御、RBACによる最初権限の他、以下のような特徴がある。

* Type Enforcement

システムの資源に対して「タイプ」と呼ばれる属性情報を割り当て、タイプごとにアクセス権限を割り当てることによりアクセス制御を行う。プロセスなど他の資源へアクセスするものについては「ドメイン」と呼ぶ。

* ドメイン遷移

親プロセスによって起動された子プロセスに対して、親プロセスよりもアクセス権限が小さいドメインを割り当てることにより、アクセス権限を制限する。