4.3. パスワードのセキュリティ

パスワードは、Red Hat Enterprise Linux がユーザー識別を検証する主要な手段です。これは、パスワードセキュリティがユーザー、ワークステーション、ネットワークの保護にとって非常に重要であることが理由です。

セキュリティの目的で、インストールプログラムはシステムが メッセージダイジェストアルゴリズム(MD5)とシャドーパスワードを使用するよう設定します。これらの設定を変更しないようお願いいたします。

MD5パスワードがインストール中にはずされる場合、古い Data Encryption Standard (DES) 形式が使われます。この形式はパスワードを8文字の英数字パスワードに制限し (句読点及び他の特殊文字は受け付けない)、適度な56ビットレベルの暗号化を提供します。

シャドーパスワードがインストール中に外される場合、 すべてのパスワードは world-readable な/etc/passwdファイルに一方向ハッシュとして格納されます。オフラインのパスワードクラッキング攻撃に対してシステムが攻撃を受けやすくなります。侵入者が正規のユーザーとしてマシンヘのアクセス権を取得した場合、 /etc/passwdファイルを自分のマシンにコピーしてこれに何度でもパスワードクラッキングプログラムを実行することができるようになります。ファイルにセキュアではないパスワードがある場合、パスワードクラッカーがそれを発見するのは時間の問題です。

シャドーパスワードは、パスワードハッシュを/etc/shadow ファイルに格納して、この種の攻撃を排除します。これは、rootユーザーによってのみ読み取り可能です。

これにより、攻撃者は SSH や FTP などマシン上のネットワークサービスにログインして遠隔からパスワードをクラックしようとします。この種の brute-force(総当たり)攻撃は非常に緩慢で、数多くのログイン試行の失敗がシステムファイルに書き込まれるといった明らかな痕跡を残します。もちろん、攻撃者がいくつものパスワードを使って深夜にシステム攻撃を開始した場合には、夜明けまでにはアクセス権を取得して痕跡を消すためにログファイルを編集してしまう可能性もあります。

形式や格納以上に、内容が問題となります。ユーザーがパスワードクラッキング攻撃に対してアカウントを守ることができる唯一最も重要なことは、強固なパスワードを作成することです。

4.3.1. 強固なパスワードを作成する

堅固なパスワードを作成する際は、次のようなガイドラインに従うとよいでしょう。

次のようなことを行なわないでください

  • 単語または数字だけを使わない — パスワードに数字だけ、または単語だけを使用しないようにしてください。

    次のような例は危険です。

    • 8675309

    • juan

    • hackme

  • わかりやすい単語は使わない — 固有名、辞書にあるような単語、テレビ番組や小説に出て来るような言葉などは避けてください。これらの末尾に数字を付けただけのものも使用しないでください。

    次のような例は危険です。

    • john1

    • DS-9

    • mentat123

  • 外国語の単語を使わない — パスワードクラッキングプログラムは、数多の言語の辞書に含まれた単語リストでチェックします。堅固なパスワードとして外国語に頼っても意味がありません。

    次のような例は危険です。

    • cheguevara

    • bienvenido1

    • 1dumbKopf

  • ハッカー用語を使わない — パスワードにハッカー用語 —l337 (LEET)とも呼ばれる— を使えるからエリートだと考えるなら、もう一度考えなおしてみてください。多くの単語一覧にはLEETが含まれています。

    次のような例は危険です。

    • H4X0R

    • 1337

  • 個人情報を使わない — 個人の情報は一切使わないでください。攻撃者がユーザーの身元を知っている場合、パスワードを推測するのは簡単なことになります。パスワードを作成する際に避けるべき情報タイプを以下に一覧にします。

    次のような例は危険です。

    • ユーザーの名前

    • ペットの名前

    • 家族の名前

    • 誕生日

    • ユーザーの電話番号や郵便番号

  • わかりやすい単語を逆さにして使わない — 優秀なパスワードチェッカーは常に一般的な単語を逆さにしてみますから、悪い例のパスワードを逆さにしても堅固なパスワードにはなりません。

    次のような例は危険です。

    • R0X4H

    • nauj

    • 9-DS

  • パスワードを記録しない — 祇などにパスワードを書いておかないようにしてください。記憶しておく方がずっと安全です。

  • すべてのマシンに同じパスワードを使わない — それぞれのマシンごとに異なるパスワードを作成することが重要です。この方法だと、ひとつのシステムが感染しても、他のマシンがすぐには危険な状態になりません。

次のことを行なってください

  • パスワードは少くとも8文字の長さにする — パスワードが長ければ長いほど堅固です。MD5パスワードを使う場合は、15文字以上にしてください。DESパスワードの場合は最大長にします(8文字)。

  • 大文字と小文字を組み合わせる — Red Hat Enterprise Linuxは大文字と小文字を区別するので、パスワードの強度を高めるために大文字と小文字を組み合わせて使います。

  • 文字と数字を組み合わせる — パスワードに数字を入れると、特に中間に入れると(先頭または末尾ではなく)、パスワードの強度が増します。

  • 英数字以外の文字を入れる — &、$、>などの特殊文字がパスワードの強度を大幅に向上させます (DESパスワードを使用する場合は不可)。

  • 憶えられるパスワードを選ぶ — どんなに堅固なパスワードであっても憶えられなければ役に立ちません。略語や憶えやすいデバイスを使ってパスワードを忘れないようにします。

これらすべてのルールを考慮して、悪い例のパスワードを使わないようにしながら堅固なパスワードをこれらの基準すべてに合うよう作成するのは難しいことのように思えます。そこで、憶えやすい堅固なパスワードを生成することができる手順を示します。

4.3.1.1. 堅固なパスワードの作成体系

堅固なパスワードを作成するのに使われる方法は人により数多くあります。なかでも一般的な方法のひとつが略語です。例えば、

  • 憶えやすい言回しを使います。例えば、

    "over the river and through the woods, to grandmother's house we go. (小川を渡り、木々の間を抜け、おばあちゃんの家へ行くんだ)"

  • 次に、略語に変換します(句読点を入れる)。

    otrattw,tghwg.

  • 略語の文字を数字やシンボルに置き換えて複雑にします。例えば、7tの代わりに置き換えて、@aの代わりに置き換えます。

    o7r@77w,7ghwg.

  • さらに複雑にするために、少くとも1文字を大文字に変えます、例えばHなど。

    o7r@77w,7gHwg.

  • 最後に、上記に紹介したパスワードの例をそのまま使わないでください

堅固なパスワードを作成することは避けられないことですが、そのパスワードを適切に管理することも重要です。大規模の企業におけるシステム管理者にとっては特に重要になります。次のセクションでは、企業においてユーザーのパスワードを作成/管理するための実践について説明して行きます。

4.3.2. 企業内のユーザーのパスワードを作成する

企業内にかなりの数のユーザーがいる場合、システム管理者にとって強固なパスワードを使用させるための 2つの基本オプションがあります。管理者がユーザーのパスワードを作成する、またはユーザーに自分のパスワードを作成させ、一方でそのパスワードが条件に合ったものになっているか確認します。

ユーザーの代わりにパスワードを作成すると確実にパスワードを堅固なものにできますが、企業が大きくなるにつれ厄介な作業となってきます。また、ユーザーがそのパスワードをどこかに書き留めてしまう危険も増します。

これらの理由から、システム管理者はユーザーに自分のパスワードを作成させる方を好みますが、積極的にパスワードが堅固であるか確認し、場合によっては、一定期間経過したパスワードはパスワードエージングで定期的に変更させるようにします。

4.3.2.1. 堅固なパスワードを作成させる

侵害行為からネットワークを守るためには、システム管理者はが企業内で使用されているパスワードが堅固であることを確認するとよいでしょう。ユーザーがパスワードを作成/変更するよう求められたとき、コマンドラインアプリケーションのpasswdを使うことができます。これは、PAM (Pluggable Authentication Manager)認識であるため、 pam_cracklib.soPAMモジュールを使ってパスワードがクラックされやすいか、または短すぎないかを確認します。PAM はカスタマイズが可能であるため、pam_passwdqc ( http://www.openwall.com/passwdqc/で入手可能)などのパスワード整合性チェッカーをさらに追加したり、新しいモジュールを書くことも可能です。PAMモジュールの一覧については、 http://www.kernel.org/pub/linux/libs/pam/modules.htmlをご覧ください。PAM についての詳細は、Red Hat Enterprise Linux リファレンスガイドにある PAM(Pluggable Authentication Modules)の章を参照してください。

ただし、パスワードの作成時に行なわれるチェックは、企業内のパスワードに対してパスワードクラッキングプログラムを実行するのと同様の効率で、悪いパスワードを発見するわけではないことに注意してください。

Red Hat Enterprise Linux 稼動環境下で動作するパスワードクラッキングプログラムは数多くありますが、オペレーティングシステムと共に配付されているものはありません。以下に一般的なパスワードクラッキングプログラムのいくつかを簡単な一覧にして示します。

注記注記
 

これらのいずれのツールも Red Hat Enterprise Linux には添付されていません。その理由で Red Hat, Inc.でのサポートはありません。

  • John The Ripper — 高速で柔軟なパスワードクラッキングプログラムです。複数の単語リストの使用が可能で、brutee-force(総当たり)パスワードクラッキングの機能を備えています。オンラインの http://www.openwall.com/john/で入手可能です。

  • Crack — 恐らく、最もよく知られているパスワードクラッキングソフトウェアです。 Crackも高速ですが、John The Ripperほどに使い勝手は簡単ではありません。オンラインのhttp://www.crypticide.com/users/alecm/でご覧ください。

  • SlurpieSlurpieJohn The RipperCrackに似ていますが、複数のコンピュータ上で同時に作動するようデザインされています。配信されているパスワードクラッキング攻撃を作成します。配信されている多くの攻撃セキュリティ評価ツールとともにオンラインの http://www.ussrback.com/distributed.htm にあります。

警告警告
 

社内でパスワードをクラックする前に、必ず文書で許可をとってください。

4.3.2.2. パスワードエージング

パスワードエージングはシステム管理者が使用する別の技術で、企業内の堅固ではないパスワードから守るために使用します。パスワードエージングとは、設定した時間(通常は90日間)を過ぎると、ユーザーが新しいパスワードの作成を求められるものです。背後にある理論は、ユーザーに定期的にパスワードの変更を強制すると、クラックされたパスワードは侵入者にとって限られた時間内でしか役に立たないということです。ただし、パスワードエージングの否定的な面としては、ユーザーがパスワードをどこかに書き留めてしまう可能性があるということです。

Red Hat Enterprise Linux 稼動環境下でパスワードエージングの指定に使われている主要なプログラムには、chageコマンドとグラフィカルなユーザーマネージャ(system-config-users)アプリケーションの2つがあります。

chageコマンドの -Mオプションは、パスワード有効期間の最大日数を指定します。例えば、ユーザーのパスワードの有効期間が90日で切れるように設定するには、次のコマンドを入力します。

chage -M 90 <username>

上記のコマンドで、<username>には、ユーザーの名前を入れます。パスワード有効期間の機能を無効にするには、従来通り、99999の値を -M の後に使います(ほぼ273年余りの有効期限になる)。

グラフィカルなユーザーマネージャアプリケーションを使用してもパスワードエージングポリシーを作成できます。このアプリケーションにアクセスするには、メインメニューボタン(パネル上) => システム設定 => ユーザーとグループと進むか、シェルプロンプトでsystem-config-users コマンドを入力します(例、XTerm や GNOMEターミナルなどで)。ユーザータブをクリックし、ユーザー一覧からユーザーを選びます。ボタンメニューからプロパティをクリックします(または、プルダウンメニューからファイル => プロパティと選ぶ)。

次に、パスワード情報タブをクリックして、図4-1で示すように、パスワードの有効日数を入力します。

図 4-1. パスワード情報のタブ画面

ユーザーとグループの設定についての詳細は(はじめてのパスワードを強制的に作成させる方法など)、Red Hat Enterprise Linux システム管理ガイドにあるユーザーとグループの設定の章を参照してください。ユーザーとリソース管理の概要については、Red Hat Enterprise Linux システム管理入門ガイドにあるユーザーアカウントとリソースアクセスを管理するの章を参照してください。