BastilleでLinuxシステムのセキュリティ設定を強化する

 システム管理者は、各自が担当するシステムに充分なセキュリティ設定を施す必要があるが、あまりに制限を厳しくするとシステムの実用性を損なうことになってしまう。そして本稿で紹介するBastilleは、Linuxシステムについてのセキュリティ設定を簡単化するためのツールである。実際このソフトウェアを実行すると、各種ロックダウン用のオプションが提示されるので、ユーザは各自のセキュリティ要件に応じて必要なものを選択すればいい。つまり、Linuxシステムのセキュリティを強化する際には多種多様なオプション設定をする必要があるのだが、このツールではそうした設定変更用の諸機能が1つのパッケージにまとめられているのである。

 Bastilleの実体は一連のPerlスクリプト群であるが、その実行時には、システムセキュリティの強化設定プロセスをインタラクティブに行う1つのプログラムとして動作するようになっている。スクリプト群で実行される各ステップについては、設定対象となるセキュリティ機能やそうした設定変更の意味およびその結果生じる影響の説明が、個々の操作時に表示される。なおBastille上で各ユーザの指定した設定内容については、別ファイルへの書き出し機能を介して他のマシン上で流用することも可能である。

 Bastilleが現状で対応しているディストリビューションは、Red Hat、Fedora、SUSE、Debian、Ubuntu、Gentoo、Mandrivaであるが、HP-UXで使用することもできる。またベータバージョンではあるがMac OS Xで利用できるものも存在している。Bastilleのサポートするこれらディストリビューションの大部分では、各ディストリビューションごとに用意されているデフォルトのパッケージマネージャから単一のパッケージとしてBastilleをインストールできるようになっている。インストール後のBastilleを実行するにはroot権限が必要であるが、その際には次のような各種オプションが指定できる。

 「 bastille --assess 」と指定すると、Bastilleはassessment(評価)モードで実行される。このモードでは、ユーザの指定するウェイト(重み付け)セットに応じた相対的なセキュリティレベルが判定され、現行のシステム設定におけるセキュリティのグレード評価が行われる。個々の評価対象に対するウェイト指定は、Bastilleのデフォルト設定をそのまま使うことも、ユーザが個別に指定することもできる。ただし、このオプションが利用できるディストリビューションはRed HatとSUSE Linuxだけである。

 「 bastille -x 」を指定するとBastilleはPerl-Tkを使用したデフォルトのGUIモードで実行されるが、「 bastille -c 」を指定するとコンソールモードで実行される。

 「 bastille --log 」を指定すると、ユーザの指定した変更内容を実際に適用することなく、Bastilleを介して行われるシステム設定の変更がログとしてのみ記録される。

 Bastilleによる設定変更が完了すると、TODOというリストが/var/log/Bastille/TODOに作成されるが、この中には現状以上のセキュリティ強化に使えるその他の設定オプションが提示されている。

 Bastilleで行った変更結果が意に反したものであった場合は、「 bastille -r 」を実行することで変更前の設定を復帰させることができる。ただしこの操作に関しては、Bastilleによる設定変更から長時間が経過していたり、ユーザの手作業による多数の設定変更を追加していた場合はうまく機能しない可能性もあるので注意が必要だ。

実行前の準備

 各自のシステムでBastilleを実行する際には、セキュリティ関連を始めとする最新のパッチが適用済みであるかを事前に確認しておく必要がある。

 また、こうしたシステムのセキュリティ強化用設定を施す場合は、いくつかの基本原則が存在する。

  • コンピュータにインストールするプログラムは実際に必要なものだけに限定しておくべきであり、特にサーバの場合はこの原則が当てはまる。これは仮にシステムに侵入された際に、被害を受ける範囲を局限化させるための措置である。
  • 複数のセキュリティ機構をシステムコンポーネントに施して、総合的なセキュリティを確保することを検討しておく。この場合は仮に1つのセキュリティが突破されても、他のセキュリティがバックアップとして機能する。例えば、印刷サービスを侵入路とする手口に対しては、防御網の第一陣としてファイヤーウォールを展開しておく。そして第二陣としては特定のIPアドレスだけが印刷サービスを利用できるようにして、その危険度を可能な限り下げておくことが考えられる。また第三陣として、印刷サービスを必要としないシステムに関しては、同サービスの実行そのものを停止しておくことも可能である。
  • アクセス権限の適用範囲は最小限に留めておく。個々のユーザ、サービス、システムコンポーネントがアクセスできる範囲は、必要最小限のリソースのみとしておくべきである。
セキュリティに関するその他の情報源
 Linuxシステムのセキュリティ強化に関するその他の情報については、下記のサイトから入手することができる。

企業環境におけるBastilleの利用

 BastilleによるSOE(Standard Operating Environment)のセキュリティ強化は、こうしたシステムを実働させる前の段階で行えれば理想的である。またBastilleを利用したセキュリティ強化を行う場合は、要件の異なる部門ごとにSOEの設定を使い分けることができる。例えば財務部門の人間にとって、システムへのCコンパイラのインストールやターミナルセッションに対するrootアクセスは必要としないはずだが、印刷サービスは不可欠のはずである。同じくソフトウェア開発チームは、システムに対するより柔軟なアクセス設定を必要とするであろうし、ラップトップを利用するモバイルユーザについては特殊なセキュリティ設定を必要とすると考えられる。またサーバシステムに関してはケースバイケースで個別的な設定を施すものだが、Bastilleでは、個々の要件ごとに設定を切り替えたセキュリティ強化を施すことができる。

 セキュリティ強化後のSOEについては、必要なテストを施してから、System Imagerなどのツールを用いて所定の位置に配備することになる。SOEの配備については、Novell ZenworksやRed Hat NetworkなどのLinuxサーバ用の配備/管理ソリューションが各種販売されているが、オープンソース系のサーバ管理/監視用ツールとしてはmonitやSystem Imagerなどが利用でき、あるいはLinux環境で古くから使われているsshやscpなどのツールを使用することもできる。

 sshおよびscpを利用する場合は、下記のコマンド指定によってBastilleの実行を自動化できる。

scp /etc/Bastille/config root@ターゲットホスト:/etc/Bastille
ssh root@ターゲットホスト "bastille -b"

 ここでターゲットホストには、接続先のIPアドレスまたはホスト名を指定しておく。上記のコマンドで行っているのは、リモートコンピュータにBastilleの設定ファイルをコピーしてからBastille本体をバッチモードで起動させ、システムに対して施すべき変更内容を先の設定ファイルから読み込ませるという処理である。ただしこれを実行するリモートコンピュータに関しては、事前にBastilleをインストールしておかなければならない。また対象となるリモートホストが多数存在する場合、前述のコマンドを中央のサーバから一元的に実行させるためのスクリプトをシェルないしPerl形式で用意しておくこともできるが、その際には各システムのホスト名に関する情報をLDAPディレクトリから取得させることも考えられる。

 それでは、こうしたセキュリティの強化をするシステムが、既に実稼働環境での日常的な使用下にある場合はどうすればいいのだろう? そうしたケースでもBastilleを使用するのは可能であるが、それには対象となるシステムに対する入念な状況把握および、一連の試験の実行が必要となる。

 このようにBastilleは、Linuxシステムのセキュリティを強化する際の優れたツールとして機能するが、個々のシステムが必要とするセキュリティ要件のすべてを常にこれ1つで賄えるという訳ではない。その他に追加すべきセキュリティ機構としては、SnortやTripwireなどの侵入検出システムおよび、Nessusなどのネットワーク脆弱性スキャナを挙げられるが、特にメールサーバとして運用するシステムで必要となるのがアンチウィルス用アプリケーションである。またシステムによってはマニュアル操作による設定変更が必要となる場合もあり、例えば大規模な商用データベースや高容量Webサーバといった特殊な措置を必要とするアプリケーションについては、こうした要件が顕著となる。

セキュリティと利便性のバランス

 Bastilleの設定オプションの中には、実際に使用してみると想定外の結果をもたらして、エンドユーザが扱うシステムの操作性を必要以上に使いにくくするものもある。例えば、root以外のユーザが実行できないように、一部のファイルからSUIDパーミッションを削除しておく場合がある。こうしておくと、これらのプログラムに潜んでいたセキュリティホールを悪意あるユーザに突かれてrootとしてシステムにアクセスされる事態を防止できるのだが、SUIDの削除がmountおよびumountに対して行われると、エンドユーザによる、CD-ROM、USBキー、外付けハードドライブの接続や取り外しが不可能になってしまう。同じくSUIDの削除がpingやtracerouteに対して行われると、エンドユーザによるpingコマンドを使ったネットワーク接続の検証などができなくなる。その他、GRUBプロンプトにパスワード保護が施されると、デュアルブートシステムが正しく機能しなくなる可能性がある。またrootによるターミナルへのログインが無効化されていると、rootユーザの行う多数のタスクが行いにくくなり、ファイヤーウォールによる制限を過度に厳しくしておくと、NovellのiFolder、内部Webサービス、Bonjour/Zeroconfサービス、Windowsファイル共有などの内部ネットワークサービスにエンドユーザがアクセスできなくなる。

 こうしたユーザにとっての利便性とセキュリティ的な要件とのどちらを優先すべきかは、ケースバイケースで変わってくる性質のものである。

まとめ

 Bastille Linuxの存在は、Linuxを扱うシステム管理者にとって大きな恩恵をもたらすはずである。このアプリケーションでは、システムのセキュリティ強化に必要な様々なオプションが、操作性に優れた1つのツールとしてパッケージ化されているからだ。特に企業で使用する場合は、多数のLinuxシステムに対して一貫性のあるセキュリティ設定を簡単に施せるというメリットを享受することができる。この種のソフトウェアの例に漏れず、Bastilleについても完璧なセキュリティ強化を施せるという訳ではないが、Linuxシステムのセキュリティ設定を理想的な状況に近づける上で有用なツールとして機能することに間違いはないはずだ。

Peter Enseleitはオーストラリア出身のソフトウェア開発者であり、Linuxの使用歴は8年以上に及んでいる。

Linux.com 原文