Sambaのパスワードハッシュをプログラム的に生成する


0

SMBパスワードハッシュを生成するための標準的なLinux / Ubuntuコマンドがあるかどうか疑問に思いました。 stdout。好奇心旺盛なのは、Samba経由のアクセス(今のところ、LDAPのような一般的なものは使用していない)を含む、(Puppetを使用して)複数のマシンにわたるユーザー名とパスワードのセットを管理したいことです。より具体的には、私がLinuxパスワードエントリを生成するために使用しているSMB / Samba用のこのコマンドと同等のもの:

openssl passwd -1

を使用してアカウントを追加する方が良いでしょうか。 smbpasswd? Sambaの内部データストレージを台無しにすることは、あまりお勧めできません。
grawity

私はsmbpasswdを介してそれを行うことができますが、それから私たちは人形劇の平文のパスワードを持つ必要があるでしょう。これはやや望ましくありません。
Alex Wilson

Afaik、サンバ店 同じMD4ハッシュ Windowsがそうであるように。このハッシュは パスワード相当 それを知っていれば、パスワードを知っているのと同じ方法で認証が可能になります。それと、MD4の脆弱性は、リポジトリにハッシュを含めるというあなたの考えを悪いことにしています。
grawity

Sambaのパスワードハッシュが弱いことはわかっていました。それがそれほどひどいことを知りませんでした。それにもかかわらず、私たちは平文よりもハッシュを持つ方がかなり良いと思います。
Alex Wilson

回答:


6

内部的には、Sambaは同じものを保管する LMおよびNTハッシュ Windowsと同じように、NTLM認証に使用されます。

  • NTハッシュは、UTF-16リトルエンディアンエンコーディングのパスワードに適用されるMD4アルゴリズムを使用します。あなたはそれを計算するために普通の道具を使うことができます、例えば:

    #!/usr/bin/env perl
    use Digest::MD4 qw(md4_hex);
    use Encode qw(encode);
    chomp(my $pw = <STDIN>);
    print md4_hex(encode("UTF-16LE", $pw)), "\n";
    

    またはOpenSSL:

    printf '%s' "$pw" | iconv -t utf16le | openssl md4
    
  • LMハッシュは数秒で解読できます。誰もそれをも​​う使いません。使用しないでください。最新のWindows版、そして(うまくいけば)Sambaは、入力に関係なく、 '空白の'パスワードのLMハッシュだけを保存する。

ただし、スクリプトの一部としてハッシュを含める とても悪い考えです パスワード自体を保持するよりもはるかに良いわけではありません。元のパスワードを入手したい場合、無塩MD4ハッシュは解読するのが非常に簡単です。それがなくても、ハッシュはパスワードと同等です - ハッシュを持っている人なら誰でもパスワード自体を必要とせずにNTLM認証を実行できます。 (Windowsは、管理者でさえも誰にも直接SAMにアクセスすることを許可していないので、最初はsaltは不要であると考えられていました。)


良くて徹底的な返事。ありがとう。あなたの警告の結果として、私達は代わりの、より安全な認証/承認システムとしてldap /ケルベロスを再検討するかもしれないと思います。
Alex Wilson

@アレックス:LDAP /ケルベロスはUnixネットワークのための通常の選択です。しかし、ほとんどのクライアントがWindowsを使用している場合は、特にSMB共有の認証に関しては、Active Directory(Samba 4をドメインコントローラとして使用)の方が古いOpenLDAP + krb5よりはるかに簡単です。
grawity
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.