[an error occurred while processing this directive]
Contents
Sambaとは?
Samba日本語版
ドキュメント
技術情報
紹介&リンク
Community
プロジェクト
メーリングリスト
イベント
ユーザー会
etc...
お問合せ
ご支援・ご協力
日本 Samba ユーザ会 (Samba Users Group Japan)

Samba 暗号化パスワード問題

Samba 暗号化パスワード問題

2002.04.15改定

解説

クライアントからサーバのファイル/プリンタを使用するために接続する時、ユーザ名とパスワードがクライアントからサーバへ送られますが、この送り方には以下の2つの方法があります。

  • 平文パスワード(Plain Text Password)
    TELNETやFTPと同じように、ネットワーク上にパスワードをそのまま流します。
    ネットワーク上のパケットを盗聴することでパスワードを知ることが容易にできます。
  • 暗号化パスワード(Encrypt Password)
    ネットワーク上にパスワードを暗号化して流します。
    (Windows 2000同士の認証ではKerberos(ケルベロス)認証が使われることがありますが、 SambaやWindows NT/9x/Meでの認証は公開キーによる暗号化ではなく、LANMAN(MD4)ハッシュが使用されます)
    ネットワーク上のパケットを盗聴してもすぐにパスワードが判るわけではありませんが、LANMANハッシュは単純な暗号方法なので安易なパスワードを使用していると解析されてしまう可能性があります。

Windows 95/98/Me/NT/2000/XP は暗号化パスワードと平文パスワードの両方で認証が可能

ですが、しかし、Sambaのデフォルト設定である

encrypt passwords = noでは平文パスワードでしか認証できない

という事実があります。

初期のWindows (95やNT3.51など)は、(Samba)サーバが平文でしか認証できないと応答を返すと平文パスワードを送信しました。
このためUNIX側の/etc/passwd(shadow)を使って認証ができました。

これではパケットを盗聴されるとパスワードが漏洩するため、Windows NT4.0SP3 以降からデフォルトでは平文パスワードを送信せず、暗号化パスワードしか送信しないように修正されました。

これにより、Sambaの設定がencrypt passwords = noのままでは、WindowsNT4.0の場合、接続で

「そのアカウントは、このワークステーションからのログインを許可されていません」

というエラーになります。

よってデフォルトのSamba設定で接続できるクライアントは以下だけになります。

  • 平文パスワード(Plain Text Password)を送信可能なクライアント
    • パスワードセキュリティ強化の修正情報(*注1)を適用していない初期の Windows 95 , Windows 95 OSR2 , Windows 95 OSR2.1
    • WindowsNT 4.0 SP2 以前のもの
    • WindowsNT 3.51以前
    • Winodws3.1 の LANMANクライアント
       

*注1)  http://www.microsoft.com/japan/win95/security/ にあるパッチはWin95で暗号化パスワードを使用できるようにするパッチではなく、デフォルトで平文パスワードを送信しないようにするパッチです。
(もともとWin95/NTは暗号化パスワードに対応しているのです)

つまり最近のWindowsクライアントは暗号化パスワードしか送信しないので、Sambaを使用できるようにするには、以下の2つうちいずれかの対処をする必要があります。


対処方法1. Samba 側で暗号化されたパスワードを扱うことができるようにする

Samba 側で 暗号化したパスワードを認証できるようにします。 

この方法をとっても古いWindows 95/NT3.51などからSambaが使用できなくなることはありません。

平文パスワードが送信可能なWindows 95などでも、サーバ側から要求されない限り、平文パスワードを送信することはないからです。
どんなWindowsも最初の送信は、常に暗号化パスワード前提で行なわれます。
その際にサーバ側が平文パスワードを要求するフラグをセットしてレスポンスを返却すると、平文パスワード送信が可能なクライアントは、改めて平文でパスワードを送信します。

Samba 1.9.17以前の場合は、以下の方法は適用されません

  1. smb.conf を変更する

    [global] セクションに以下の 行を追加して下さい。

    encrypt passwords = yes

  2. パスワードファイルを用意する

    encrypt passwords = yes とした場合、Samba側のユーザ認証は UNIX の認証方法を用いず、 Windows認証が使用されます。その為、Samba専用のパスワードファイルを用意する必要があります。

    コンパイル時に SMB_PASSWD_FILE で指定したファイルを作成します。
    (デフォルトは、/usr/local/samba/private/smbpasswd です。 RedHat系Turbo系Linuxの場合は /etc/smbpasswd で、 RedHat7.x以降は/etc/samba/smbpasswdです。)

    UNIX のパスワードファイルから、Samba 用のパスワードファイルを作成するスクリプトが用意されています。
    作成は root ユーザになって、Samba の source/script ディレクトリにある mksmbpasswd.sh を使って行います。

    # cat /etc/passwd | sh mksmbpasswd.sh > /usr/local/samba/private/smbpasswd

    これにより、smbpasswd ファイルとして以下の様な内容のファイルが生成されます。
    *注:Samba 1.9.18と2.0では以下の形式が異なります

    foo:111:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:user foo:/home/foo:/bin/csh
    bar:112:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:user bar:/home/bar:/bin/sh

  3. smbpasswd ファイルはrootユーザ以外からはアクセスできないようにする
    # chown -R root /usr/local/samba/private
    # chmod 500 /usr/local/samba/private
    # chmod 600 /usr/local/samba/private/smbpasswd

    Linuxの場合は以下です。

    # chmod 600 /etc/samba/smbpasswd

    または

    # chmod 600 /etc/smbpasswd

  4. smppasswdファイルを作成したら、各ユーザのパスワードを設定

    パスワードの設定を行うには、SMB_PASSWD で指定したパスワード変更プログラムにより、各ユーザのパスワードを設定します。
    (デフォルトは、/usr/local/samba/bin/smbpasswd です。Linuxでは、/usr/bin/smbpasswdです)
    # smbpasswd ユーザ名
    New SMB Password: <パスワードの入力>
    Repeat New SMB Password: <パスワードの再入力>

対処方法2. WindowsドメインにSambaサーバを参加させる

この方法は、Windows NT/2000 Serverによって構築されたWindowsドメインに認証してもらう方法です。

Samba 2.0以降でないと適用できないので注意下さい。

以下を参照下さい。

Samba 2.0 ドメイン・クライアント・サポート

この方法で認証はWindowsサーバにしてもらうことができますが、UNIX/Linuxアカウントは別途作成する必要があります。

これを解決するのが、Samba 2.2.3a以降でサポートされたWinbnind機能です。

Windowsサーバにユーザ・アカウントを作成するだけで、Sambaですぐ利用できるのはもちろんUNIX/Linuxもssh,telnet,ftpなどがすぐに利用可能になります。


以下の方法は古い方法なので使用することはお勧めしません
参考情報として掲載します。

参考>対処方法3. WindowsNTにユーザ認証をしてもらう

Sambaではユーザ認証をせずに、WindowsNT(サーバでもワークステーションでもOK)に認証してもらう方法です。

Sambaは、パスワードをWindowsにそのまま渡すだけなので、encrypt passwords = yesとする必要はありませんし、smbpasswdも作成する必要もありません

 (Windowsマシンに登録されておらず、Sambaマシンに登録されているUNIXユーザで認証するなら、encrypt passwords = yesとして、smbpasswdを作成する必要があります)

smb.confの[global]セクションを以下のように変更します。

security = server
workgroup = DOM
password server = DOMPDC DOMBDC1 DOMBDC2

ここで、DOMはNTドメイン名、DOMPDCはNTのプライマリ・ドメイン・サーバ名、DOMBDC1 DOMBDC2はバックアップ・ドメインコントローラ名です。(NTワークステーションでも1台だけでもOK)

 


参考>対処方法4. Windows 側で平文パスワードを送信可能にする

望ましいやり方とはいえませんが、Windows 側で平文パスワードを送信可能にできます。

以下の方法によって、暗号化パスワードが送信されなくなるようなことはありません。

先に述べたようにサーバ側から要求されない限り、平文パスワードを送信することはありません。
最初の送信は、常に暗号化パスワード前提で行なわれます。
その際にサーバ側が平文パスワードを要求するフラグをセットしてレスポンスを返却すると、平文パスワード送信が可能なクライアントは、改めて平文でパスワードを送信します。

設定は以下のようにします。

  • Windows 2000 / XPの場合
    Samba ソースを展開してできる samba-xxxx/docs/Registry/Win2000_PlainPassword.reg をエクスプローラから実行するかREGEDITで取り込みます。
  • Windows Me の場合
    Samba ソースを展開してできる samba-xxxx/docs/Registry/WinME_PlainPassword.regをエクスプローラから実行するかREGEDITで取り込みます。
  • Windows 98 の場合
    Samba ソースを展開してできる samba-xxxx/docs/Registry/Win98_PlainPassword.reg をエクスプローラから実行するかREGEDITで取り込みます。
  • Windows NT 4.0 の場合
    Samba ソースを展開してできる samba-xxxx/docs/Registry/NT4_PlainPassword.reg をエクスプローラから実行するかREGEDITで取り込みます。
  • Windows 95 の場合
    Samba ソースを展開してできる samba-xxxx/docs/Registry/Win95_PlainPassword.reg をエクスプローラから実行するかREGEDITで取り込みます。

この場合、Samba と Windows 間で接続時にパスワードが暗号化されずにネットワーク上を流れます。

そして、この方法には加えて以下の問題があります。

  • WindowsNTおよびWindows2000で Samba のホームディレクトリをネットワークドライブに割り当て、「ログイン時に再接続」チェックを有効にしても、Windows を再起動してネットワークドライブにアクセスしようとすると、エラーになったり、パスワードが違います、と言われてしまう。
  • Samba プリンタの使用で毎回パスワードの入力が必要になる。
  • Samba マシンがブラウジングできない(ネットワークコンピュータ一覧に表示されない)ことがある。

セキュリティの面や操作性などでいろいろな問題がでるのでこの方法はお勧めしません。


小田切 耕司 odagiri@samba.gr.jp


ミラーサイト: [ WWW: master ] [ FTP: ring | kddilabs | plathome | mex | master ]

Copyright © 1999-2016 日本 Samba ユーザー会 (Samba-JP)
2011-12-19 01:17:51 JST 更新