LinuxWorld Torontチュートリアル:セキュリティとRed Hat認定試験
Tony Howlett氏は、テキサスを拠点に成長を続けるNetwork Security Servicesの社長であり、オープンソース・セキュリティツールに関する著書も出している。彼のチュートリアルの聴講者は30名ほどだった。このセッションが彼の著書のダイジェスト版であるとの前置きの後、書面での許可を得ることなく、ここで説明するツールや手法をシステムに用いてはならない、という注意をまず受けた。口頭での許可だと問題が生じた際に責任者がしらを切るおそれがある。そうなると、システムに障害を起こすような方法でセキュリティツールを使用した責任を問われ、懲戒処分を受けたり解雇される破目になるのはあなたたち自身だ、というのだ。
なお、Howlett氏の講演資料と著書の内容はMandriva 10.1に基づいているが、彼の講演の大部分はなぜかWindows XPの環境を使って進められた。プロジェクタに取り付けられたKVMスイッチには2台のノートPCがつながっていたのだが。
本題に入るにあたり、Howlett氏は次のように述べた。Linux用のオープンソース・セキュリティツールほどではないがWindows用のオープンソース・セキュリティツールも存在し、その数は増えつつある。一方、Linuxでは、セキュリティのほぼすべての領域に優れたオープンソースのツールが存在する。
多くのセキュリティベンダは、製品のベースとしてオープンソースのツールを使っている、とHowlett氏は話していた。また、類似の高価な独占的ソフトウェアをしのぐオープンソースのツールが数多く存在する、としてSnortを例に挙げた。
「オープンソースと独占的ソフトウェアのどちらが安全か」という昔からの疑問もHowlett氏は取り上げた。彼の答えは中立的なものだった。要は、考え方は違うがセキュリティの点で大差はないということだ。彼は次のように述べている。Windowsの場合、最近までセキュリティが最優先事項ではなかった。Microsoftが優先してきたのはリリースを行うことであり、セキュリティを優先し始めたのはごく最近のこと。今ではWindowsもセキュリティ面でLinuxに追いつきつつある。
では、オープンソース・セキュリティツールを使う利点は何だろうか。Howlett氏は、コスト削減がその1つだと語る。同じことができる無料のソフトウェアがあるのに、わざわざ15,000ドルのソフトウェアを買う必要があるだろうか。「経費の削減によって組織に貢献することだ」と彼はアドバイスする。オープンソースのソリューションを推奨することにより、組織で認められて昇進の道を開く。独占的ソフトウェアの代わりに無料のものを導入して経費を大幅に削減した功績があれば、リストラが起きても職を失わずに済むかもしれない、とも話していた。
またHowlett氏は、複数のツールを利用するように、とも忠告している。1つのツールではすべてをカバーできない。ツールに弱点があってもほかのツールで補えるというわけだ。
専門の仕事としてネットワークセキュリティに取り組む最善の方法は、オープンソースの世界に入っていくことだとHowlett氏は語る。Sourceforge.netやfreshmeatから適当なツールを見つけ出し、その開発に加わることを彼は勧めている。コードを読み、ツールが動作するしくみを学ぶ。適切なメーリングリストでほかの人の役に立ち、ベータテストに参加し、名前を売る。セキュリティに関して十分な知識があれば、履歴書にも箔がつくという。
なお、メーリングリストについては、2時間も電話の前に拘束され、海外各地の技術サポート担当者の間をたらい回しにされるようなビジネスのやり方よりずっと効率的だと話していた。電話でそうしている時間があれば、電子メールの返信が届いて問題は解決されるだろう、というのがHowlett氏のコメントだ。
セキュリティツールを使うなら、安全なオペレーティングシステム上にセキュリティを構築する必要がある、とHowlett氏は述べている。安全でないオペレーティングシステム上に構築するのは、砂の上に城を建てようとするようなもの。安全なシステムを構築する一番よい方法は、まっさらな状態のシステムから始めて、サービスを追加する際にセキュリティツールを用意することだ、と説明していた。彼が推奨していたのは、Bastille Linuxという、システムのロックダウンに役立つよう設計された一連のスクリプトを利用することだ。Perlとその他の関連ツールを必要とするBastilleをサポートしている環境としては、Debian、Red Hat、Mandriva、Mac OS X、HP-UX、Solarisがあるそうだ。Bastilleは、システムの使用目的を対話的に質問し、それ以外の用途でシステムが使われるのを回避するようにセキュリティの適用を行うことによって動作する。
オープンソースソフトウェアとして登場したファイアウォールは、ネットワークセキュリティの最も基本的なレベルにあたるもの、とHowlett氏は説明する。Linuxの場合、カーネル2.0のipfw、同じく2.2のipchainsに続き、カーネル2.4リリース以降はiptablesが標準のファイアウォールになっている。iptablesでは、ルールの設定を随時行うことができ、起動スクリプトに書くこともできる。商用ファイアウォールの多くは内部でiptablesを利用していることにも彼は触れ、その例としてWatchguard Fireboxを挙げた。
Turtle Firewallも、Webminを用いたWebインターフェイス付きのiptablesだという。Turtle Firewallでは、すべてのファイアウォールルールを参照でき、iptablesの機能を持つこのツールは、Linksysハードウェアのファイアウォール機能と同等かそれ以上だそうだ。
また彼は、オープンソースの便利なファイアウォールとしてSmoothwall Expressも挙げていた。Smoothwallはすぐに使えるファイアウォールシステムだという。Smoothwallを実行中のシステムでは、その他のどんなものも実行すべきではない。Smoothwallには、市販の製品版と(Smoothwall Expressという)無料ダウンロード版があるが、いずれもファイアウォール機能に不可欠なものだけを残し、それ以外をそぎ落としたシステムになっている。
次に話題になったセキュリティツールは、ポートスキャナだ。ポートスキャナはセキュリティの専門家にとってもシステムに害を与えようとする者にとっても重要なツールだという。彼によると、ポートスキャナとしては、Insecure.orgが提供するNmapが「断トツで」最良のツールらしい。Nmapは、軽量なポートスキャナで、各種Unix、Linux、Windowsで動作し、コマンドラインとGUIのどちらからでも実行できる、と彼は説明する。また、Nmapは、ネットワーク上のIPアドレス全体に対してpingを実行して接続状況を確認するpingスウィープや、OSの識別にも便利で、システム上でどんなサービスが有効になっているかを判断できるという。彼は、自分自身のシステムをスキャンしてみるように勧めている。ほかの人々は進んでやろうとはしないだろうから、あなた方がシステムの状況を確認するのがよい、というわけだ。
OS識別については、ネットワーク化されたシステムのオペレーティングシステムをパケット収集により判断する方法として、TCP fingerprintが取り上げられた。TCP fingerprint処理の精度は80%ほどだとHowlett氏は説明している。また、システムのオペレーティングシステムに関して何か問い合わせる場合にNmapがその素性を知らないときには、将来ほかの誰かがオペレーティングシステムを識別できるよう既存のデータベースにfingerprintを登録することもできる、と述べている。なお、オペレーティングシステムの識別は「良からぬことをする者」にとっても役立つという。
ポートスキャンはコンピュータ上で意味もなく実行されているサービスを見つける場合に便利だ、とHowlett氏は説明する。また、実行中のスパイウェアや、リソースを無駄使いし、サービス拒否攻撃を被るおそれのあるレガシーサービスを突き止め、特定するのにもポートスキャンが使えるという。ポートスキャンツールの例としてはchargenがある。このツールは、ポート19番で動作し、問い合わせを受けたときにはただランダム文字列を生成する。
話の流れからポートスキャナに続いて取り上げられたのが、脆弱性スキャナだ。脆弱性スキャナはポートスキャナをさらに発展させたものだと説明して、彼はお気に入りのNessusを取り上げた。脆弱性スキャナは、公開ポートを見つけ出すと、そのポートを利用するソフトウェアを参照して、その結果をセキュリティの脆弱性に関するデータベースと照合する。オプションの設定によって、システムに脆弱性がないかを判断するために、検出箇所の悪用を試みることもできる。
Nessusを提供している会社は、現行バージョンをもはやオープンソースとしては開発していないという。その結果、数々の派生ツールが生まれたが、なかでも最もよく知られているのがOpenVASだ。Nessusは依然としてフリーだが、ライセンスが限定されている。それでもすばらしいツールであることには変わりないが、オープンソースでないのが残念だ、とHowlett氏は語った。
NessusとOpenVAS、それにHowlett氏が開発した関連アプリケーションやNCCと呼ばれるアプリケーションについて議論が続いた後、侵入検知システムと侵入予防システムの話題に移った。簡単に言うと、侵入検知システムとは、悪用された脆弱性の特定など、ほかのタスクも行う複雑なパケットスニファである。これに対し、侵入予防システムは、可能性のある攻撃が発見された場合に予防策を講じるものだが、誤って過剰な検出が行われた場合にはネットワークやシステムに問題が起こるおそれがある。
またHowlett氏は、無線ネットワークの危険性と、不用意な無線の利用によってセキュリティ上の危険がいかに多くもたらされているか、についても警告している。Kismetというツールを使って、我々のいる会議室から安全でない無線アクセスポイントが37も見つかったことを彼は示してくれた。この中には、今回のカンファレンス用に用意されたものではない無線接続もあった。
さまざまなツールを使って、無線ネットワーク上の情報 ― ハッシュ化されたパスワードも含めて ― が容易に取得でき、悪用できるというデモンストレーションも行われた。
この午前のセッションでHowlett氏が取り上げた話題は非常に多岐にわたり、すべてをここで紹介することはできない。彼は、引き続き午後の3時間のセッションでもさらに詳しい内容を扱っていた。全体として、コンピュータシステムとネットワークのセキュリティ確保に興味を持つすべての人 ― 本当は誰もがそうあるべきだが ― にとって大変役に立つ内容だった。
Red Hatの認定資格
午後は、Red Hat認定テクニシャン(RHCT)およびRed Hat認定エンジニア(RHCE)の各試験に合格するには何をすべきかを取り上げたDee-Ann LeBlanc氏のセッションに出席した。
認定資格が本当に重要かどうかは資格に何を求めるかに依存する、とLeBlanc氏は述べている。Linuxのシステム管理を何年も行ったという経験は、資格と少なくとも同等の価値があるはずだが、それとは関係なく、社員に資格の取得を求める会社もあるかもしれない。
RHCTまたはRHCEの試験準備としては、Red Hatが公開している試験の目的を読み、Red Hatのシステム管理を実践する機会を数多く得ることから始める必要がある、とLeBlanc氏は言う。試験の場では、インターネットにはアクセスできないが、標準インストールに含まれるすべてのドキュメント、つまりmanページや/usr/share/doc下にある情報は参照できる。
受験を考える前に、ファイルの作成、修正、参照の方法を理解し、コンソールのテキストエディタや、少なくともコンソールWebブラウザ ― グラフィックシステムが動作しない場合に備えて習得すべき代替のブラウザ ― の基本的な使い方に慣れておく必要があるだろう、と彼女は説明する。
また、awk、sed、grepや、viのようなテキストエディタのほか、コマンドラインでの入出力のリダイレクトについても知っておく必要がある。さらに、TCP/IPネットワーク処理、ファイル圧縮およびアーカイブツール(具体的にはtarとgzip)、電子メールクライアント、ユーザ切り換え(su)コマンドについての基本的な知識と理解も必要だ。最後に、コンソールのftpクライアントに関することも自分で処理できなければならない。
RHCTとRHCEの各試験は、問題解決および保守と、インストールおよび設定、という2つの部分に分かれているという。以前Red Hatでは両試験に筆記試験を含めていたが、合否にあまり影響しないことがわかって廃止したという。
初級技術者を対象とするRHCT試験の問題解決および保守の部分では、シングルユーザモードなど特定の実行レベルへのブート、ネットワーク問題の診断、Xウィンドウやデスクトップ環境の設定、ファイルシステムの作成、といった作業を行う能力、コマンドライン周りの知識が求められる。
インストールおよび設定の部分では、ネットワーク経由でのRed Hatシステムのインストール、ハードディスクのパーティション設定、GUIおよびコンソール環境での印刷の設定、cronを使ったプログラムのスケジュール実行の各方法や、未知のコマンドについて調べる方法をまずは知っていなければならない、とLeBlanc氏は説明している。
また、Lightweight Directory Access Protocol(LDAP)とNetwork Information Service(NIS)の設定および実行、常時マウントしておく必要のないファイルシステムのためのオートマウンタの使用、ユーザおよびグループクォータの管理、共同プロジェクトで必要になるファイルのパーミッションと所有権の変更、手動でのRPMパッケージのインストール、カーネルRPMの正しい ― つまり、以前のバージョンを削除することなく ― アップデート、ブートローダ設定の変更、インストールの途中またはその後のソフトウェアRAIDの設定、/proc内またはsysctlを使ったカーネルパラメータの設定や変更、といった方法も知っておく必要がある。
一方、Red Hat認定エンジニア(RHCE)の試験では、上記のすべてのスキルに加えてさらにいくつかの点が要求される。試験向けの実地訓練と合格に必要なスキルの習得のために、使い捨てにできるシステムの設定を行い、壊しては直すという行為を繰り返してみるとよい、と彼女は提案している。たとえば、ブートローダの設定で故意にタイプミスをし、その結果を観察してみることを勧めていた。何事も実際に調査して理解するというわけだ。
RHCTやRHCEの試験は、詰め込み式の勉強では太刀打ちできない。ただ実践あるのみ、だそうだ。
原文