筆者は職業柄,コンピュータをセキュアに保つためのヒントを覚書として残している。読者の中にも同様のことをしている方が多いかもしれない。自分自身の備忘録として役立つことはもちろん,他人にノウハウを伝えるためにも役に立つ。例えば,筆者が不慮の事故に遭遇した場合,覚書などが残っていれば筆者が担当していた作業を他の者が続行できる可能性がある。しかし,そういったものが存在せず,ノウハウが筆者の頭の中にしか存在しなければ作業は間違いなく止まってしまうだろう。

 このように考えると,覚書は必須であろう。では,その覚書はどのように作成するべきか。自分が試行錯誤した結果から得たノウハウだけではなく,書籍や雑誌などから得たノウハウも盛り込んでいくべきだろう。今回筆者が紹介したいのは,OS の要塞化 *1 用パッケージ(ソフトウエア)から得られる情報である。OSの要塞化のために,パッケージがどのような処理をするのかが分かれば,とりも直さずそれは要塞化のノウハウとなる。覚書に含むべき貴重な情報だ。

 OSの要塞化用パッケージは複数存在する。今回は Brad M. Powell氏,Dan Farmer氏,Matthew Archibald氏らによるパッケージ「TITAN」を取り上げ,その処理について紹介したい。なお,TITANのバージョン 3.x の対応 OS は Sun OS 1.1.4,Solaris 2.X-8 であるが,4.x 系列では FreeBSD および Linux にも対応する。

*1 要塞化:セキュリティ・ホールをふさいだり,不要の機能を停止したり,適当なアクセス・コントロールを行うなどの対策を施して,セキュリティを強化すること。

TITANの基本思想

 パッケージの具体的な処理を説明する前に,TITANの“基本思想”を紹介しておこう。TITANの作者らは以下のような考えをベースに,このパッケージを作成している。

  • このパッケージは各々のニーズにあった再調整が可能である
  • UNIX とは面倒なものである,との理解が必要である
  • UNIX のベンダーは,デフォルトではセキュアでない設定でOSを出荷している
  • セキュアな設定ができるようになるためには十分な時間,資源,経験が求められる
  • 一度はセキュアに設定できたとしても,運用を続けるうちにセキュアではなくなる。また,新規のセキュリティ上の問題は発見され続ける
  • TITAN を使ったからといって,他のセキュリティ・ツールやパッチの適用が不要になるわけではない(セキュリティは単一のツールで守られるのではないという原則を思い出してほしい)

 特に最後の項を強調したい。OS やアプリケーションに対して適切なアクセス・コントロールやパッチを施して(場合によっては他のセキュア化の手段も加えて),初めてTITANが意味あるものになることを忘れないでほしい。

パッケージの具体的な処理

 それでは,このパッケージが行う具体的な処理(設定)を見てみよう。パッケージは主モジュールと個別の処理や前処理,設定の書き戻しや再設定を担当する副モジュールから構成される。以下の処理の一部だけを行うことも可能である。以下に列挙する設定項目は Solaris 8 に対するものである。若干分かりにくいものもあるかもしれないが,投げ出さずに読んでみてほしい。

  • デフォルト umaskを「022」に設定
  • Solaris Automated Security Enhancement Tool を有効化
  • automounter の実行を抑制
  • Basic Security Module (BSM) を有効化
  • リモートから X 環境への XDMCP による接続を無効化
  • ログイン時にユーザーに表示されるバナーを設定
  • cron で実行されるプログラムを指定する設定ファイルのパーミッションを「444」に設定
  • cron で実行されたプログラムの実行結果について,ログを作成するように設定
  • /etc/aliases 内での uuencode の呼び出しを無効化
  • パスワードの有効期限の規定値を設定(これは各サイトごとに再設定が必要である)
  • Break 信号を送られた際に OpenBoot の状態にならないように設定
  • NFS が非特権ポートを利用するように設定(ただし,NFS そのものに起因する問題があるので,この対策だけでは不十分であると筆者は考える)
  • bin や sys などの,実際にはユーザーがログインしないアカウントのログイン・シェルを無効化
  • デフォルトでは core を作成しないように設定
  • ブロードキャスト・アドレスに対する ping 応答を抑止
  • ソース・ルーティングされたパケットの受け取りを拒否
  • IP フォワーディングを拒否
  • ルーターとしての動作を抑止
  • DMI 機能を抑止
  • /usr 以下の実行ファイルの所有者を「root」に設定
  • root が実行する cron job を root の所有と権限に設定
  • 上記以外のファイル,ディレクトリについてもrootが所有すべきものについては所有者を root に設定
  • FTPを利用させたくないユーザーを /etc/ftpusers に明記
  • /etc/hosts.equiv 内で定義されているホスト間の不適当な信頼関係を削除
  • inetd.conf 内の項目を整理(ただしTITANでは削除されない項目があるので,それらについては手動で削除する必要がある)
  • /etc/init.d/inetsvc 内の項目を整理 (ただしTITANでは削除されない項目があるので,それらについては手動で削除する必要がある)
  • ログイン失敗時の結果についてログを作成するように設定
  • 印刷機能を抑止
  • NFS ポート・モニターを有効化
  • デフォルトの名前解決は /etc/hosts のみを参照するように設定
  • Name Service Cache(nscd)を抑止 (筆者の環境では nscd を停止した場合,通常の名前解決すべてが不安定になった。これを避けるためにはnscd のキャッシュ機能だけを停止すればよい。セキュリティ上はそれだけでも問題ないと考えられる)
  • /etc/pam.conf 内から rlogin に関する項目を削除
  • 各ユーザー・アカウントのパスワード設定の有無を確認
  • vold がフロッピ・ディスク,あるいは CD-ROM へ nosuid オプション付きで mount 処理を行うように /etc/rmmount.conf を設定
  • root 用の PATH に root の所有と権限があるディレクトリだけを含めるように設定
  • in.routed から無用の情報が出ないように設定
  • OS 付属の sendmail の配送ルールから .forward 機能を抑止
  • OS 付属の sendmail の配送ルールへ goaway オプションを追加
  • OS 付属の sendmail の配送ルールにバナー情報の抑制機能を追加
  • リモートからの syslog メッセージの受け入れを禁止
  • snmpdx デーモン群の起動を抑止
  • すべてのコンソール (/dev/console) 用メッセージのログを採取
  • RFC 1948 準拠のシーケンス番号の採番を行うように設定
  • Telnet サーバーが表示するバナーを変更
  • /tmp が swap 領域と共有の場合の DoS 防止策
  • 新規に作成される一般ユーザー向けのデフォルト・プロファイルの umask を「022」に設定
  • utmpx の権限を適切に設定(デフォルトではいかなるユーザーでも書き込み可)
  • vold を無効化
  • root,あるいは staff グループのユーザーのみが OS 内の機能を利用できるように設定
◇ ◇ ◇ ◇ ◇

 さて,これらの項目はどの程度皆さんの覚書に反映されただろうか。すべてを反映させる必要はないが,有用な情報は多いと思う。上記の項目を例えば「必須の要塞化」,「作業時間に余裕があれば行う要塞化」,「作業時間がかなり余った場合に行う要塞化」のように,優先順位を付けておくとさらに便利なものとなるだろう。

 今回取り上げた TITAN 以外にも,要塞化パッケージや要塞化のための資料が公開されている。それらを参照することもお勧めしたい。例えば,類似の著名なパッケージとしては「Yet Another Solaris Security Package(YASSP)」「Bastille Linux」が挙げられる。組織内で手順書や覚書をまとめる場合や要塞化パッケージを作成するような場合に,これらの情報は大変役に立つ。ぜひ活用してほしい。


坂井順行 (SAKAI Yoriyuki)
株式会社ラック コンピュータセキュリティ研究所
sakai@lac.co.jp


 IT Proセキュリティ・サイトが提供する「今週のSecurity Check [一般編]」は,その週に起きたUNIX関連およびセキュリティ全般のニュースや動向をまとめた週刊コラムです。セキュリティ・ベンダーである「株式会社ラック」のスタッフの方を執筆陣に迎え,専門家の立場から解説していただきます。