Linux Lovers
    Fedora Coreで始めるサーバ構築

Home > セキュリティ対策 > John the Ripper

John the Ripperでパスワードの安全性を確認する

John the Ripperは、パスワードの解析を行なうソフトウェアです。辞書攻撃ブルートフォース攻撃
行なうことができます。ここでは、このJohn the Ripperを用いて、ユーザのパスワードを解析してみます。
その後で、パスワードポリシーについて考えてみます。



John the Ripperの準備

John the Ripperはエクストラパッケージで提供されているので、yumの設定をエクストラパッケージが
利用できる設定にする必要があります。Fedora Core 3の場合は以下を参照してみてください。
→ Fedora Core 3のyumの設定(エクストラパッケージ)

それでは、John the Ripperのインストールを行います。以下のようにします。

# yum -y install john


パスワードの解析を行なう前に、実験用のユーザを作成してみます。
以下のように3つのユーザを作成しました。

ユーザ名 パスワード
test1 test1
test2 clock
test3 5tgn


最近のディストリビューションでは、ユーザのパスワードは、/etc/shadowに保存されます。
従来は、/etc/passwdに保存されていたのですが、/etc/passwdだと全てのユーザが閲覧することが
可能であり、いくらパスワードが暗号化されて保存されているからと言っても、
安全とは言えなかったからです。

そこで、シャドウ化されている場合の/etc/passwdを見てみると以下のようになってます。

# cat /etc/passwd
test1:x:514:515::/home/test1:/bin/false
test2:x:515:516::/home/test2:/bin/false
test3:x:516:517::/home/test3:/bin/false


2番目のフィールドがパスワードの部分なんですが、xとなっています。xとなっていると
シャドウパスワードを採用しています。これで各ユーザのパスワードは/etc/shadowに保存されています。
/etc/shadowのパーミッションは以下のようになっています。

# ls -l /etc/shadow
-r--------  1 root root 2119  5月 31 18:56 /etc/shadow


rootにしか読み込み権限が無いので、一般ユーザが閲覧することはできないのです。

John the Ripperはシャドウパスワードに対応していません。なので、解析を始める前に
/etc/shadowと/etc/passwdを結合して、非シャドウ形式のパスワードファイルを作成する必要があります。
これにはunshadowというコマンドを使用します。以下のようにします。

# unshadow /etc/passwd /etc/shadow > password


これでpasswordというファイルが出来上がります。このファイルは以下のようになっています。

# cat password
test1:$1$HeV3jRIi$t5QUvbt/7n5koDL5T47/p.:514:515::/home/test1:/bin/false
test2:$1$.iOIEs.b$5wE0U3WD5yKcZWxa9ZUjb1:515:516::/home/test2:/bin/false
test3:$1$9lk8Nob7$R8PD6.NTdADp2qJpq2PT3.:516:517::/home/test3:/bin/false


unshadowで結合させているので、第2フィールドに暗号化されたパスワードが表示されています。
このpasswordファイルを使って、John the Ripperで解析を試みます。



>>このページのTOPへ

John the Ripperでパスワード解析

John the Ripperにはいくつかのモードがあります。最初は、シングル・クラック・モード
試すのがいいでしょう。これは、ユーザ名とパスワードが同一だったりする場合は、すぐに
判明してしまいます。

また、実際にJohn the Ripperを実行する場合は、先ほど作成したpasswordファイルを指定するのですが、
このままだと、passwordに記述されている全ユーザに対して解析を試みることになります。
今回は、実験用として3つのユーザを作成しました。この3つのユーザだけを試みるようにします。

シングル・クラック・モードで、ユーザを指定して解析するには以下のようにします。

# john -single -users:test1,test2,test3 password
Loaded 3 passwords with 3 different salts (FreeBSD MD5 [32/32])
test1            (test1)
guesses: 1  time: 0:00:00:00 100%  c/s: 1483  trying: test21969


test1のパスワードが判明しています。先頭がパスワードで、()の中がユーザ名です。
また、解析の結果は以下のようにして後で確認することもできます。

# john -show password
test1:test1:514:515::/home/test1:/bin/false

1 password cracked, 15 left


あと、test2とtest3が残っています。これらは、総当たり攻撃で解析してみることにします。

# john -incremental -users:test2,test3 password
Loaded 2 passwords with 2 different salts (FreeBSD MD5 [32/32])
clock            (test2)
5tgn             (test3)
guesses: 2  time: 0:00:09:15  c/s: 6459  trying: 5tgn


test2のような辞書にある単語はすぐに解析が終わります。開始と同時に終わりました。
test3は4文字で英数字混じりですが、これもすぐに終わりました。

これも-showのオプションをつければ、結果を後で確認することが可能です。

# john -show password
test1:test1:514:515::/home/test1:/bin/false
test2:clock:515:516::/home/test2:/bin/false
test3:5tgn:516:517::/home/test3:/bin/false

3 passwords cracked, 13 left


先ほどと合わせて、今回用意したユーザ3つの解析がこれで終わりました。
以上が終わりましたら、後片付けで今回作成したpasswordとjohn.potを削除しておきます。

# rm -f john.pot password


>>このページのTOPへ

パスワードポリシー

今回のような簡単なパスワードの場合は、すぐに解析できることが判明しました。
ユーザを作成する際は、ユーザ名とパスワードを同一にしてはいけません。
また、辞書にあるような単語や、人名、キャラクターの名前なども厳禁です。
また短いパスワードも厳禁です。

良いパスワードの例としては、上の条件に当てはまらないもので以下のようなものにします。

なぜ8文字以上なのかは、解析の推定時間として8文字の英大小文字+数字の組み合わせは1年です。
1年後には判明してしまう計算になりますので、何ヶ月に1回かはパスワードを変更するようにします。
これによって、解析が終わった頃には、パスワードも変わっています。

ただ、複雑にすればするほどいいのかと言うと、そうでもありません。
複雑になるとどうしても記憶の問題が付きまといます。覚えられないパスワードだと
紙に書いたりしてしまいます。酷いとパソコンの横にその紙を貼り付けたりしてしまいます。
これは非常に危険です。できることなら、覚えられる範囲でパスワードを作成するようにします。

どんなにセキュリティを強化しても、ユーザのパスワードが脆弱ならそこが穴になります。
ただ1人の杜撰なユーザが居るだけで、そのシステムはやられてしまうかもしれないのです。
また、不正侵入の統計では、ソフトウェアのバグによる侵入よりも、パスワードやアクセス管理の
杜撰さのせいで侵入される件数のほうが多い
と報告されているので、今一度パスワードについて
考えてみてください。


■参考文献
『実践 ネットワークセキュリティ監査』 (O'REILLY)
『ネットワークセキュリティ超実践』 (IDG)
『リナックスワールド 2004年8月号』 (IDG)



>>このページのTOPへ

最終更新 : 06/23/2005


Fedoraの設定    SSH    Web    Mail    FTP    DNS    ファイルサーバ    運用管理    システム管理    ネットワーク    セキュリティ対策
Copyright (C) 2004-2007 chibi ,All Rights Reserved