第4回:Turbolinuxのセキュリティに対する取り組み (2/3)

Linuxディストリビュータが紐解くセキュアOS
Linuxディストリビュータが紐解くセキュアOS

第4回:Turbolinuxのセキュリティに対する取り組み

著者:ターボリナックス  高橋 功至   2005/12/26
前のページ  1  2   3  次のページ
Turbolinux 10 Serverのセキュリティ対策

   Turbolinux 10 Serverではセキュリティ対策として、前項であげた基本方針をはじめとして、様々なサポートを提供しています。

   どのようなソフトウェアであれども人が作っています。できあがったソフトウェアの品質は開発者の熟練度に左右されることが多く、経験豊富な開発者が作成したソフトウェアなら型チェックや例外処理がきちんと施されていますが、未熟な開発者だと動くのを優先して熟練者が行なうような対策を後回しにするなどということがあります。

   一見ソフトウェアは動作するのでユーザから見ると違いがないように思ってしまいますが、セキュリティホールの観点からすると大きな問題となります。

   通常、システムは千差万別な開発者が書いたコードが混在しています。ターボリナックスのディストリビューションには約1,000近くのパッケージが含まれています。プログラムの数でいうと数万になるかもしれません。これらのプログラムはディストリビューションとして出荷する前に様々な動作のチェックを行っていますが、そこにある不具合を完全に排除することは不可能です。

   また、侵入者は常に新しい方法を考えています。あるセキュリティホールを閉じると、必ずそれに変わる方法を考えます。それゆえ、セキュリティの対策は侵入者とのいたちごっこともいわれています。このためターボリナックスでは、リリース後に発見された不具合をユーザに提供するために、いくつかの方法を提供しています。

   自動アップデート機能では、メンテナンスアップデートの有無をチェックし、自動アップデートを実施可能です。またアップデートをチェックして、それを管理者へメールで通知する機能も備えています。

   自分のシステムにどのような変更が加えられるか逐次確認しながら、アップデートを行いたいシステム管理者のために、TurboUpdateという機能も提供しています。TurboUpdateではそれぞれのパッケージのどのような変更が加えられたかの情報を参照しながら、必要なものだけアップデートをすることもできます。

   サーバ管理者は最低限これらのアップデートをチェックし、もしセキュリティメンテナンスがリリースされた場合には必ずそれを適用するようにするだけで、自身が把握したセキュリティ対策をとることができます。


対策から予防へ

   Turbolinux 10 Serverでは、アップデートをはじめとしたセキュリティ上の問題が発見された後の対策とともに、万が一ソフトウェアに不具合があった場合でも侵入による被害をできる限り押さえる予防策としてSELinuxを提供しています。

   SELinuxは、米国NSA(米国家安全保障局)が開発したセキュアOSを実現するためのフレームワークです。サービスで使われるプログラムやファイルに強制アクセス制御を掛けることで、クラックなどの行為による被害を最小限に抑えることができます。SELinuxそのものに関しては、色々な文献があると思いますので、今回は詳しい説明は割愛させていただきます。


Turbolinux 10 ServerでのSELinuxの提供

   Turbolinux 10 ServerではデフォルトでSELinuxの全機能がインストールされますが、先ほど説明したポリシーに則り、SELinuxの機能は使用できないようになっています。後述しますが、SELinuxはシステムにあわせて設定を行ってから起動しないと、逆に様々な不具合を起こす可能性があるためです。

   Turbolinux 10 ServerでSELinuxを使用するには、kernelに「SELinux=1」のパラメータを与えて起動する必要があります。最初はPermissiveモードで起動してください。Permissiveモードは強制アクセス制御をすることなく、セキュリティチェックに違反したところだけをログに書き出します。稼動させるシステムと同様の環境で、Permissiveモードでテスト稼動を行って、システムにあわせてポリシーを変更した後にenforcingモードへ移行して実運用を行います。


SELinuxのポリシー

   SELinuxのポリシーに関しては、StrictとTargetedの2種類のポリシーを提供しています。Strictポリシーはほとんどのシステムプログラムに関してアクセス制御を行って、許されているプログラム以外の動作ができないようになっています。それに対してTargetedは、特定のプログラム(例えば、bindなどのDNSサーバ)だけをSELinux制御にして、それ以外のプログラムは自由に動作させるようにできています。

   それぞれのポリシーではNSAで公開されているものをTurbolinuxの機能にあわせて、調整しています。SELinux導入の困難さの一因として、配布されているポリシーをそのままインストールすると通常使用できていたサービスまで使えなくなることがあります。これはディストリビューションによる設定ファイルの位置の違いや、プログラムファイルの格納されている場所にポリシーが依存しているためです。

   オープンソースのプログラムをインストールした場合、デフォルトでは"/usr/local/bin/"にプログラムがインストールされますが、RPM系のディストリビューションではこれを"/usr/bin/"以下にインストールするように変更します。また、設定ファイルを"/etc/"以下に直接置くか、その下にディレクトリを作成してまとめて格納するかというのもディストリビューションによって違います。

   SELinuxの強制アクセス制御は細部にわたり強力な抑制を行います。このことは設定ファイルの位置やログファイルの位置までをもSELinuxが把握して、そのアクセス権を管理していることを意味します。

   しかしプログラムにカスタマイズをすると、これらのポリシーの変更が必要になります。Turbolinux 10 ServerでSELinuxを実装するにあたり、一番時間がかかったのはこのポリシーの調整でした。Turbolinuxでは、インストール時の状態で各種のサービスを正常に動作させるために、ポリシーに各種のパッチを加えています。

   SELinuxのポリシー設定の問題点の1つがここにあります。ポリシーを変更するためには、プログラムの動作に関しての細かい知識が要求されます。それぞれの設定ファイルをどのように読み書きするのかとか、どのようなデバイスやソケットを使用しているのかなどの知識がないと、実際にポリシーを正しく設定するのが困難であるというのが現状です。

   Linuxはソースが公開されているので、ソースファイルを追っていくことで細かい動作までわかる訳ですが、ソースコードに関する知識が必要とされることはSELinuxのポリシー設定の大きな壁になっていると思われます。


SELinuxポリシー変更の必要性

   セキュリティはそれぞれのシステムがおかれた環境により、細かく調整していく必要があります。

   Webサーバを例に取りましょう。静的なページだけを提供するWebサーバとCGI(ここでは、perl)を使ってデータベースにアクセスして動的にページを生成するシステムがあったと仮定します。前者のシステムでは、ApacheからperlなどCGIプログラムやデータベースへアクセスが行われたら、なんらかの不正アクセスがあったと見るべきです(たぶん、クラッカーがなにか悪さをしているんでしょう)。それに対して後者のシステムでは、この動作は正常と見なければいけません。つまりシステムによって、Apacheがアクセスできるシステムの要素を変更しないといけません。

前のページ  1  2   3  次のページ


ターボリナックス 高橋 功至
著者プロフィール
ターボリナックス  高橋 功至
2000年ターボリナックスジャパン(株)入社。一貫して、Turbolinuxディストリビューションの開発業務に携わる。開発エンジニアとして、インストーラMongooseをはじめ、各種ツールの開発を行う。その後、開発責任者として、ディスクトップ、サーバの両ラインのディストリビューションを設計・開発している。


INDEX
第4回:Turbolinuxのセキュリティに対する取り組み
  はじめに
Turbolinux 10 Serverのセキュリティ対策
  SELinuxトレーニングについて
Linuxディストリビュータが紐解くセキュアOS
第1回 セキュアOSの動向
第2回 Red Hat Enterprise Linuxセキュリティの概要と特徴
第3回 MIRACLE LINUXのセキュリティへの取り組み
第4回 Turbolinuxのセキュリティに対する取り組み
個人情報保護法から見るセキュアOSの必要性
第1回 個人情報保護法とセキュリティ対策
第2回 セキュアOSとは
第3回 セキュアOS紹介(1)〜 MIRACLE HiZARDとLIDS
第4回 セキュアOS紹介(2)〜 Trusted SolarisとPitBull
第5回 セキュアOS紹介(3)〜 SELinux

人気記事トップ10

人気記事ランキングをもっと見る