web-dev-qa-db-ja.com

ログインする特定のUnixアカウントで使用されているパスワードハッシュスキームを確認するにはどうすればよいですか?

私は毎日3つまたは4つの独立したUnixアカウントにssh入ります。私はsshを使用しているという理由で、それらは多かれ少なかれ「同等に安全」であると見なしていましたが、パスワードハッシュスキームの多様性と辞書攻撃に対する耐性について学習した後使用しているシステムの具体的な詳細を学習することに、もっと興味を持つようになりました。

一部のOSがデフォルトで使用するものの簡潔すぎる要約(たとえば こちらを参照 )を見つけましたが、もっと詳細な情報が必要です。さらに重要なのは、ログインして特定のシステムを実行する場合よりも、さまざまなOSが「すぐに使える」ことを行うことに興味がないということです。この情報を見つけるための標準的な方法はありますか?

(この質問が素朴すぎないことを願っています。もちろん、パスワードクラッカーも私が尋ねている情報を知りたいと思っていますが、私の理解では、適切に設計されたパスワード処理スキームは秘密であることに依存しているということです。したがって、 、私が求めている情報は、システムのユーザーがすぐに利用できるはずです。)

11
kjo

ショートバージョン:

  1. / etc/shadowの内容は、各ユーザーが使用する形式を示しますが、それらを表示するにはrootが必要です-@MikeScottはそれを釘付けにします。
  2. /etc/pam.d/*ファイルは、システムが新しいパスワードをどの形式でエンコードするかを示し、通常のユーザーがアクセスできる必要があります。

ロングバージョン:

最近のほとんどのUnixおよびLinuxシステムでは、PAM(Pluggable Authentication Modules)を使用して認証を処理しています。その結果、パスワードの暗号化に使用されるハッシュアルゴリズムは通常、/ etc/pam.d/*ファイルの1つで定義されます。 Ubuntu 14を覗いてみると、/ etc/pam.d/common-passwordファイルにあります。

# Explanation of pam_unix options:
#
# The "sha512" option enables salted SHA512 passwords.  Without this option,
# the default is Unix crypt.  Prior releases used the option "md5".
#
password    [success=1 default=ignore]  pam_unix.so obscure sha512

したがって、このシステムでは、/ etc/shadowファイルのエントリのパスワードは$ 6 $で始まる必要があります。/etc/shadowをrootとして見ると、このシステムのすべての(両方の)パスワードがsha512であることがわかります。

# awk -F: '$2 ~ /^\$/ {print $2}' /etc/shadow | cut -c-10
$6$6I2Lrdb
$6$tvKWuGb
# 

Pamは非常に柔軟であるため、調べるシステムのタイプごとに異なるファイルに含まれていることがわかります。 RedHatでは、たとえば/etc/pam.d/system-authのようです。

これにより、このシステムで新しいパスワードが設定されたときに作成されるパスワードハッシュがわかります。使用される実際のパスワードハッシュは、どこから来たか、いつ来たかによって異なります。システムがMD5を使用し、SHA512に切り替えた場合、すべてのハッシュが変更されるわけではありません。ユーザーが次にパスワードを変更するまで、古いハッシュは使用され続けます。ハッシュが他の場所からコピーされた場合(そうです、それが起こります)、パスワードハッシュの実際のメランジを取得できます。これが、使用される形式がハッシュされたパスワード文字列($ 6 $、$ 1 $など)にエンコードされる理由です。これにより、システムはそれをテストする方法を認識します。

したがって、使用しているハッシュを確認する唯一の方法は、root権限を持っている(および/ etc/shadowでハッシュを確認する)か、システムを確認することですデフォルトは(/etc/pam.d/*内)であり、デフォルトが適用されるようにパスワードを変更します。

Etcetera

コメントで@grawityが指摘したように、古いLinuxシステム/ディストリビューションは、 ENCRYPT_METHOD設定/etc/login.defs ファイルを引き続き尊重する場合があります。 (このファイルと設定はまだ新しいシステムにあります。PAMが使用されている場合は、メッセージが表示されることはありません)。

そして、Solarisが最後にチェックしたPAMを使用していても、デフォルトのパスワードハッシュタイプを変更するには、代わりに /etc/security/policy.confのCRYPT_DEFAULT を変更することを少しグーグルが提案しています。

AIXは、いつもと同じように、最近のUnix標準の成功に直面して笑っています。 /etc/security/login.cfgのpwd_algorithm設定 は、AIX 5.3+のトリックを実行します。

ただし、一般に、DES以上をサポートするすべてのUnixバリアントは、システムのデフォルトを構成するためのいくつかの方法を提供します。ここで言及されていないシステムに遭遇した場合、 このGoogle検索を微調整する 何がわかるか確認してください。

13
gowenfawr

Rootアクセス権がある場合は、それを使用してcat /etc/shadow(ほとんどのUnixフレーバー上)を見てください。ファイルの2番目のフィールドは、各ユーザーのハッシュ化されたパスワードであり、通常は$は、ハッシュアルゴリズム、ソルト、ハッシュ自体の3つの部分にサインインします(最初のセクションがない場合は、デフォルトのハッシュアルゴリズムであるDESを使用します)。 $0$はDES、$1$はMD5、$2$および$2a$はふぐ、$3$はNTハッシュ、$5$はSHA-256であり、$6$はSHA-512です。

10
Mike Scott