本ドキュメントでは,Linux システムをより安全にするための方法と,よく使 われるソフトウェアについて解説します.具体的な内容に入る前に,基本的な 概念について議論し,セキュリティの基礎を押えておくことにしましょう.
常に変化し続ける,グローバルなデータ通信,安価なインターネット接続,速 いペースのソフトウェア開発の世界の中で,セキュリティはより重要になりつ つあります.グローバルコンピューティングは本質的に危険なので,セキュリ ティは今や基本的な要件です.例えばデータが A 地点から B 地点までインター ネット上で送られる場合を考えると,データは経路の途中で他の地点を通るの で,他人がデータを傍受や改竄さえしてしまう可能性があります.同じシステ ム上のユーザでさえ,あなたのデータを悪意を持って意図しないようなものに 変えてしまうかもしれません.「クラッカー」として知られる侵入者に,シス テムのアクセス権を不正に得られてしまうかもしれません.クラッカーはあな たになりすますために高度な知識を用い,あなたからデータを盗んだり,あな たが自分自身のデータにアクセスできないようにしてしまいます.あなたが 「ハッカー」と「クラッカー」の違いが分かっていないようであれば,Eric Raymond 氏の書かれた「ハッカーになる方法(How to Become A Hacker)」を御 覧ください.( http://sagan.earthspace.net/~esr/faqs/hacker-howto.html で入手 できます.)
訳注: 「ハッカーになる方法(How to Become A Hacker)」の日本語訳は http://www.linux.or.jp/JF/JFdocs/hacker.txt または http://www.post1.com/home/hiyori13/freeware/hacker.html で入手できます.
最初に,「完全に安全な」コンピュータシステムは存在しないことを覚えてお いてください.ただ,何者かがシステムを悪用することをより困難にすること しかできません.普通の Linux のホームユーザならば,偶然やってくるクラッ カーを防ぐのはそれほど大変ではありません.Linux を重要な仕事に使ってい る場合(銀行,通信業者など)には,ずっと多くの作業が必要になるでしょう.
考慮に入れるべき別の要素として,セキュリティを高めれば高めるほど,セキュ リティが邪魔になることが挙げられます.そこで,目的に対して十分使いやす くかつ安全なシステムとなるように,バランスをとってやらなければなりませ ん.例えば,あなたのシステムに電話回線で接続してくる全てのユーザにコー ルバックモデムを使ってもらい,彼らの家にコールバックするようにすること ができます.これによって安全な運用をすることができますが,ユーザが家に いないようなケースではログインが困難になってしまいます.Linux システム をネットワークやインターネットに繋がない設定も可能ですが,これでは便利 さも損なわれてしまいます.
大規模あるいは中規模のサイトならば,サイトがどの程度のセキュリティを必 要としていて,これをチェックするためどんな監査を行うのかというセキュリ ティポリシーを決めるべきです.有名なセキュリティポリシーの例は http://core.ring.gr.jp/pub/doc/rfc/rfc2196.txtです.これは最近改定され ており,会社のセキュリティポリシーを作る際の良い枠組になります.
訳注: 日本語訳が http://www.ipa.go.jp/SECURITY/rfc/RFC2196-00JA.html にありま す.
システムを安全にしようとする前に,まず,どの程度のレベルの脅威から自身 を守るのか,どの程度のリスクを冒すべきなのか(あるいは冒すべきでないの か),結果的にシステムはどの程度脆弱なままにするのかを決めなくてはなり ません.何を守るのか,なぜそれを守るのか,それにどんな価値があるのか, データや他の財産に対しての責任は誰が負うのかを知るために,システムを解 析すべきです.
加えて,安全でないアカウントがシステム上に1つあれば,結果的にネットワー
ク全体が悪用される可能性があります..rhost
ファイルを使ったロ
グインを許可しているユーザがいたり,tftp
のような安全でないサー
ビスを使っている場合,侵入者がこれらを利用して「ドアの中に足を踏み入れ
る」危険を背負うことになります.いったん侵入者があなたや他の誰かのシス
テムのアカウントを手に入れれば,それは他のシステムや他のアカウントにア
クセスするために利用されるかもしれません.
侵入者にはいくつかのタイプがあります.その特徴を知っておくと,システム を安全にするのに役立つでしょう.
何者かがシステムに侵入した場合,何が問題となるのでしょうか? 当然なが ら,家庭から PPP でダイアルアップ接続しているユーザの問題と,会社のマ シンをインターネットや他の大規模ネットワークに繋いでいる人々の問題は異 なります.
失ったデータを復旧あるいは再び作成するのにどれくらいの時間が必要でしょ うか? ちゃんと初期投資をしておけば,後で失ったデータを再作成するはめ になったときにかかる時間は10分の1に節約できます.バックアップの計画を チェックし,あとでデータの検証をしていますか?
ユーザが容易に理解して守ることができる,簡単で一般的な方針を決めましょ う.この方針は大切なデータやユーザのプライバシーを守ってくれるでしょ う.これに加えて考えるべきことは,誰がシステムにアクセスできるのか(自 分の友人に自分のアカウントを使わせていいのでしょうか?),誰がシステム にソフトウェアをインストールすることができるのか,誰がどのデータを所有 するのか,それから事故時の復旧やシステムの適切な使いかたについてです.
一般に受け入れられているセキュリティポリシーは次の言葉から始まります.
"許されていないことは禁止されている"
これは,あるサービスをユーザに対して認めていない場合,許可を出すまでは ユーザはそのサービスを使うべきではないということです.正規ユーザアカウ ントに適用するポリシーを確認しましょう.「えっと,パーミッションの問題 がわからないので,root で実行しよう」などと言うことは,明らかなセキュ リティホールになりますし,今まで不正使用されたことのないセキュリティホー ルにさえなるかもしれません.
rfc1244 は独自のネットワークセキュリティポリシーを作るための指針が書かれたドキュ メントです.
rfc1281 はセキュリティポリシーの例を示したドキュメントであり,各ステップの詳細 な説明が付いています.
最後に, ftp://coast.cs.purdue.edu/pub/doc/policy にある COAST ポリシー アーカイブを調べ,実生活でのセキュリティポリシーがどのようなものかを見 ると良いでしょう.
本ドキュメントでは,あなたが作ってきた貴重な財産(ローカルマシン,デー タ,ユーザ,ネットワーク,あなたの評判)を守るための方法を議論します. 侵入者があなたのユーザのデータを消してしまったら,あなたの評判はどうな るでしょう? あなたのウェブページに落書きをされてしまったらどうなるで しょう? また,あなたの会社の次の四半期の計画をばらされてしまったら? ネットワークのインストールを考えているならば,1 台のマシンをネットワー クにつなぐ前に考慮すべき要素はたくさんあります.
あなたがダイアルアップ PPP アカウントを使っていたり,ごく小規模なサイ トを運営している場合であっても,侵入者があなたのシステムに興味は持たな いとは限りません.標的にされるのは,大規模で有名なサイトだけではありま せん.多くの侵入者は規模に関係なくできるだけ多くのサイトを不正使用しよ うとします.加えて,侵入者はあなたが接続する先のサイトにアクセスするた め,あなたのサイトのセキュリティホールを突くかもしれません.
侵入者は時間を持て余しており,あなたがどんなにシステムを隠蔽しても,推 測するのではなく,単に全ての可能性を試してしまいます.侵入者があなたの システムに興味を持つ理由は他にもたくさんありますが,それについては後で 議論します.
管理者が最も集中するセキュリティの分野は,たぶんホストに基づく部分 でしょう.これは基本的に,自分自身のシステムの安全を確保し,自分のネッ トワーク上の他のホストも同様であることを期待することです.良いパスワー ドを選び,LAN へのサービスを安全に行い,きちんとログを取り,セキュリティ に問題があることが知られているプログラムのバージョンアップを行うことは, ローカルのネットワーク管理者が責任を持って行うべきことです.これは絶対 に必要なことなのですが,ネットワークの規模が数台規模より大きくなると実 際に行うことが大変になってしまいます.
ネットワークのセキュリティもローカルのホストのセキュリティと同様に必要 です.何百,何千,あるいはそれ以上のコンピュータが同じネットワークにあ る場合,そのそれぞれが安全であると信頼することはできません.許可された ユーザしか自分のネットワーク資源にアクセスできないようにし,防火壁を構 築し,強力な暗号を使用し,「たちの悪い」マシンや安全でないマシンがネッ トワーク上に無いようにすることは,全てネットワーク管理者の任務です.
本ドキュメントではサイトを安全にするために使われる技術のいくつかについ て議論し,守るべきものを侵入者にアクセスさせないようにする方法をいくつ か示します.
議論すべきセキュリティのタイプの 1 つは「隠蔽によるセキュリティ」です. これは例えば,セキュリティ的な弱点が知られているサービスを標準でないポー トに移動させ,攻撃者に存在がばれないようにして悪用を避けようとするもの です.このようなものは心配しなくても攻撃者が見つけて悪用してくれます. 隠蔽によるセキュリティは,セキュリティ的には全く無意味です.単に小規模 なサイトや比較的無名なサイトであるからといって,侵入者があなたの持って いるものに興味を持たないわけではありません.次の章で,あなたが守るもの について議論します.
本ドキュメントはいくつもの章に分かれています.各章でセキュリティの おおまかな話題を押さえます.最初の話題は 物理的なセキュリティで,マシンそ のものを物理的にいじられないようにするための方法です.第 2 の話題は ローカルのセキュリティで,ローカルユー ザがシステムを改竄するのを防ぐ方法です.3 番目の話題は ファイルとファイルシステムのセキュリティ で,ファイルシステムとファイルのパーミッションの設定の方法を示します. 次の話題は パスワードのセキュリティと暗号化で, マシンやネットワークをより安全にするための暗号の使い方を議論します. カーネルのセキュリティでは,マシンを より安全にするために設定あるいは意識すべきカーネルオプションについて議 論します. ネットワークのセキュリティでは, Linux システムを外部ネットワークからの攻撃に対してより安全にする方法を 解説します. セキュリティの準備では,マシ ンをネットワークに繋ぐ前の準備のやりかたについて議論します.次の システムに侵入された/されている場合の対応 では,システムに侵入されつつあることや侵入が最近に起こったことに気づい た場合にすべきことを議論します. セキュリティに関する情報源では,セキュリティ に関する基本的な情報源をいくつか示し, Q & A の章である よく聞かれる質問ではよく 聞かれる質問いくつかに対する回答を示します.最後に 最後に の章で結びの言葉を述べます.
本ドキュメントを読んで理解していただきたいポイントは主に2つあります.
/var/log/messages
等のシステム
ログをチェックし,システムを見張りましょう.