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

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。