Bastille:自学にも適したセキュリティ評価ツール

BastilleはDebian、Fedora、Gentoo、Mandriva、Red Hat Enterprise Linux、SUSEのシステムセキュリティを向上させるためのプログラムである。現在利用できるパケットスニファ、アンチウイルスプログラム、大多数のセキュリティプログラムとは異なり、Bastilleはセキュリティの侵害が起こるのを待って反応するのではなく、システムの脆弱性を取り除くことによってセキュリティ侵害を未然に回避する。多くのディストリビューションでは利便性という名のもとにデフォルトのインストール設定のセキュリティ保護を甘くしているが、このアプローチでは自ずとBastilleが不可欠なプログラムになる。

Bastilleは単にシステムを強固にするだけのものではない。支援ツールを用いることにより、Bastilleではシステムセキュリティの評価が行える。その内容はCenter for Internet Security(CIS)ベンチマークが提供する評価にも匹敵し、個々のセキュリティ施策の相対的効果を確認することができる。さらに、Bastilleは対話的に実行され、それぞれの段階では取りうる選択肢の説明、変更決定の前には必ずその内容を取り消す機会が与えられるため、Bastilleを利用することは、GNU/Linuxセキュリティの入門者を対象としたチュートリアル全体に短時間で目を通すことにも相当する。

システムのセキュリティに真剣に取り組むなら、システムの状態を正確に把握するために、おそらくオペレーティングシステムのインストール中に可能なオプションをすべてカスタマイズすることから始める必要があるだろう。しかし、たとえこのアプローチを時間がかかり過ぎるとして拒否しても、インストールの直後にBastilleをインストールして実行すれば、まだシステムのセキュリティを向上させることが可能だ。

Bastilleのダウンロードページには、対応しているディストリビューションのそれぞれに最新のパッケージが用意されている。グラフィカルなインタフェースを使いたければ、使っているディストリビューションのリポジトリからperl-tkパッケージもインストールする必要がある。Bastille自体もディストリビューションのリポジトリからインストールできるかもしれないが、その場合はバージョン番号を確認しておくことだ。Debianだと、少なくとも最新版の1:3.0.9は実験版のリポジトリにしか含まれていない。幸いなことに、依存関係はあまり重要でないので、不安定版やテスト版を使っていてもインストールによって環境が破壊されるようなことはない。以前にリリースされたものも役には立つが、評価機能など一部の機能が欠けている。この記事ではBastilleの最新バージョンを取り上げるので、一部の説明は以前のバージョンには当てはまらない可能性があることに注意してもらいたい。

まず、rootでログインしてbastille -aと入力すると、セキュリティの現在の状態が10段階で評価される。この評価の尺度は絶対的なものでも累積的なものでもない。つまり10点満点は、すべての予防措置を取っていることを示すだけであって、システムが各種の攻撃に耐えられることを示すわけではない。また、10点と評価されたシステムのセキュリティの高さが5点のシステムの2倍あるわけでもない。

ただし、システムの全体的なセキュリティ性を示す一般的な指標としては確かに役立っている。この評価はサービスの稼働率や新規ファイルのデフォルトパーミッションといった標準的なセキュリティの尺度に沿って行われ、各項目はその重要性に応じて重み付けがされている。セキュリティの専門家であれば重み付けのカスタマイズが可能だが、おそらく大半のユーザはデフォルトの重み付けに不満を感じることはないだろう。

最初の評価結果を記録した後(結果は/var/log/Bastille/AssessmentでテキストおよびHTML形式で参照可能)、Bastilleを対話的に実行してもう一度評価を行えば、セキュリティが正確にどれだけ改善されたのか、また個々のオプションがどれくらい重要かもはっきりわかるだろう。Debianテスト版の2つの環境で私が実施した評価の結果が典型的なものだとすれば、使っているディストリビューションにもよるが、おそらく評価の点数には何の不自由もなく6.0くらいから8.0を上回る程度までの改善 ― インストール直後の状態に比べ明らかに大きな改善 ― が期待できるだろう。

Bastilleの対話的実行

システムのセキュリティ強化プロセスを開始するには、bastille と入力してPerl/TkのGUIを実行するか、bastille -c と入力してテキストベースのPerl/Cursesインタフェースを実行する。どちらの場合も、プログラムによってセキュリティ関連の項目およびオプションについて簡単に説明した一連の画面が表示された後、GUIであれば画面上で選択を、CUIであれば自分で入力を行っていくことになる。

Bastilleのセキュリティ関連オプションは14種類のセクションにグループ分けされている。Perl/Tkインタフェースの場合、これらのセクションは画面の左側にある一覧に表示され、各セクションの設定が終了するとチェックマークが付くようになっている。それぞれのセクションはいくつかの画面に分かれている。たいていのテーマは専用の画面を持っているが、導入画面に配置されているものもいくつかある。

ほとんどの画面には、ユーザの利便性とセキュリティとの適切なバランスをとったデフォルトの選択肢が用意されている。たとえば、新規ファイルのデフォルトパーミッションの設定では、より制限の強い設定がユーザの苦痛になるわけでもシステムを不安定な状態に陥れるわけでもない、というもっともな仮定が採り入れられている。ところが、Bastilleでは可能なら印刷機能をオフにするように勧めながらも、デフォルトの設定は、ユーザはオフにしたがらないだろうとの仮定に従った内容になっている。ひと通りBastilleを実行してもデフォルトの設定しか使わない場合は、セキュリティの高さを限界まで引き出した結果にはならないが、かといって普通にデスクトップが使えないほど低いセキュリティになることもない。

とはいえ、ただデフォルト設定を受け入れるだけでは、セキュリティについて学ぶ機会をみすみす逃していることになる。セキュリティについてまだ知らない人には、なぜブートマネージャGRUBをパスワードで保護する必要があるのか、なぜ少なくともシングルユーザモードではマシンの特定のサービスを無効にすべきなのか、あるいはユーザに利用可能なリソースの上限をどのように設定すればサービス拒否攻撃を防げるのか、といったトピックについてBastilleが説明してくれる。こうしたトピックについてすでに理解して人に対しては、取りうる選択肢の長所と短所をわかりやすくまとめたサマリをBastilleは提供してくれる。どちらにしても、Bastilleは現在利用できるセキュリティ関連の入門書としては最も明解で簡潔なものの1つと言える。

「Explain Less」ボタンを押すと、それぞれのテーマについて概要を示すサマリだけが表示される。また「Explain More」ボタンを押せば、取りうる選択肢に対しての行き届いた考察も表示され、またいくつかの場面では最適な選択肢、少なくともよくわからない場合に選ぶべきものを推奨してくれる。

1、2回は、単なる「はい/いいえ」の選択やラジオボタンによる選択ではなく、Bastilleが何らかの入力を求めてくるが、その場合もたいていはよくある設定例のいくつかをテキストで示してくれる。本当に専門的な知識が要求されるセクションは「Firewall(ファイアウォール)」と「Port Scan Attack Detector(ポートスキャン攻撃検知)」だけである。これらの設定では、ホストまたはイーサネットカードデバイスについての情報とポートの基本的知識が必要かもしれない。だが、こうした場面でもデフォルト設定のままにしておけば、基本的な機能性が損なわれることはない。ただし、Bastilleのアドバイス通りに作業を進めてファイアウォールをすぐに有効にしない場合、ユーザはファイアウォールのテストと起動を行うためのコマンドをコピーする必要がある。

また「Firewall」セクションを出る前に、ファイアウォールの設定を自動的に行わせるのではなく、ファイアウォールがブート時に起動するように、ユーザはそのテストと起動に必要だったコマンドを記録しておく必要もある。

セキュリティについての知識とBastilleによる設定の進め方にもよるが、こうした対話的な処理を完了するには15~45分ほどかかる。このプロセスの最後で、選択内容を破棄するか保存して別の手順に適用するかのどちらかを行うことができる。セキュリティの知識が不十分な人には特にありがたい対策と言えるだろう。実際、初心者であれば最初は試しに動作させてみてBastilleの提供する情報を吸収したいと思うかもしれない。そうしておけば、実際に設定を選択するときには基本的な情報がすんなり理解できるはずだ。

万一、ファイアウォールやその他のオプションの設定に熱が入り過ぎ、誤ってデスクトップを自分の手でロックアウトしてしまった場合には、bastille -rまたはRevertBastilleによってBastilleで行った変更内容をすべて取り消すことができる。

実用と学習の両面で最適

コマンドラインからデスクトップへと向かうユーティリティの趨勢は、システムが何を行っているかの理解をあきらめることを意味する場合が非常に多い。しかし、Bastilleはこの傾向に対する珍しい例外である。セキュリティのアーキテクチャの善し悪しはシステムに何が行われてきたかを理解している管理者に依存するが、専門家でない者にセキュリティのアーキテクチャをまかせるにあたり、Bastilleはこの基本的な原則を放棄していないのだ。1つや2つの例外はあるが、Bastilleは何が行われ、どのファイルが変更されるかを正確に説明している。こうしたやり方はこれまでのBastilleのいくつかのリリースの傾向になっているが、グラフィカルなプログラムの一般的な流れに逆らうかのように、Bastilleの現行バージョンはそうしたやり方を踏襲しているだけでなく、さらにしっかりとした形で適用している。

セキュリティの専門家はほとんどBastilleを必要としないだろうが、彼らでさえ便利なチェックリストだと感じるかもしれない。一方、セキュリティの専門家でない我々にとっては、Bastilleは実用的でセキュリティの知識を授けてくれる存在だ。私は、BastilleをGNU/Linuxにとって絶対に不可欠な数少ないプログラムの1つと考え、もっと私にもわかるように対話的セクションの改善が続けられることを期待する、という控えめな条件付きでこのソフトウェアをお勧めする。

Bruce Byfield氏はセミナーのデザイナ兼インストラクタで、NewsForge、Linux.com、IT Manager’s Journalに定期的に寄稿しているコンピュータジャーナリストでもある。

NewsForge.com 原文