treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

sambaサーバにアクセス出来ないんですが…

sambaサーバにアクセス出来なくなった、と言う話がやってきました。
対処した内容についてご報告です。

結論からいうとサーバとPCの認証方式の問題でした。
ちょっと前の話なのですが、内容をよく理解していなかったので、改めて調べてまとめた内容になります。

症状

一言で言うと、「今でアクセス出来ていたファイルサーバを開くと、ユーザIDとパスワードが要求される」という話が持ちかけられ、対処を依頼されました。

以前は出来ていた、けどある日から出来なくなったよ、とのこと。
タイミングを聞いてみると…

Debianサーババージョンアップ(Stretchへ) - treedown’s Report

dist-upgrade後にapt --fix-broken installが要求された - treedown’s Report

で実施したdist-upgradeを実施した後で出来なくなった(と思われる)タイミング。
サーバアップグレードが原因?

そのPC環境はWindows8.1(無印)、稼働している他のPCはProfessionalエディションがほとんどなのですが、このPCだけはワケありで8.1の無印(いわゆるHome Edition)が使われているPC。
そのPCでsambaサーバの共有フォルダにアクセスしようと、サーバにアクセスしたら、

f:id:treedown:20190602181436p:plain
こんなエラー画面になる、という状況。
※ただ、その画面を取り忘れてしまったため、ちょっと画面が違っていて、画面中の「アクセスが拒否されました」の箇所は「ユーザ名とパスワードが違います」(ユーザ名かパスワードが違います。だったかも)というメッセージでした。

しかし、そのユーザ名とパスワードはWindowsのログインユーザID&パスワードで、dist-upgrade以前にはなんの問題もなくアクセス出来ており、そこから一切変更はない、という状況。そうなると、なんだかPCが怪しくなってくるものです。

しかし、切り分けると…

思い当たる節がサーバのアップグレードだったため、サーバの問題だろうか?と思ったモノの、うーん、でも…、そのPC以外では起きてないんですよね…。
ここで迷いが。

まずは切り分けるために、別のPCで同一ユーザ&パスワードでログインして、問題のsambaサーバにアクセスしてみる=アクセス可能、ちゃんとsambaサーバの共有フォルダを開いて閲覧することができました。

ん?…となると、PC側の問題ということになります。

さっそく、PC側を調べてみる、しかし、なにも悪くねぇ…。ここで、行き詰まってしまいました。

さまよった結果

sambaのオプションが
デフォルトでNTLM v1が有効だったのが
デフォルトでNTLM v1が無効に変わったのが
原因らしい。

症状としては、

www.atmarkit.co.jp

まったくこれ。(※XP時代の古い記事ですが、動作としては全く同じでした。)
と、なると、「dist-upgradeのタイミングでsambaのバージョンも変わったことで、デフォルト設定値が変更になった」と考えるのがよさそう。
と考えたタイミングで、

mag.osdn.jp

このSamba 4.5.0リリースの記事に出会い、「最新版ではNTLMv1はデフォルト無効ですよ」という話と、「"ntlm auth"オプションがデフォルトyesからnoに変更になっていますよ」ということと、「NTLMv2だけですよ」って話が記載されています。

dist-upgrade前のDebian Jessieで稼働していたsambaバージョンは4.2.14、一方dist-upgrade後のDebian Stretchで稼働するsambaバージョンは4.5.16。
「Samba 4.5.0リリース」時に「最新版ではNTLMv1はデフォルト無効」ということなので、
問題のPCだけはNTLMv1でsambaサーバと通信していて、このエラーになった、ということが考えられます。

これだ。たぶん、これだ。

根本的な対策は、PC側がNTLMv2でsambaサーバと通信することになります。
(実際このPC以外の全台はNTLMv2で通信しているので問題が起きていないことから考えても、これが正しいと思えます。)
しかし、このPCはちょっと…イロイロ難しいことがあって時間が掛かるため、ひとまず当該PCがしばらく業務利用可能になるよう、暫定措置としてサーバ側にオプションを追加することにしました。
--------------------------------------------------------------
smb.conf(のglobalセクション)
--------------------------------------------------------------
#======================= Global Settings =======================
[global]


ntlm auth = yes

--------------------------------------------------------------
※単純にglobalセクションに「ntlm auth = yes」という行を追記します。
--------------------------------------------------------------

こんな感じ。明示的にNTLM v1のオプションをyesで有効化するようにしました。
※dist-upgradeでDebian9になったsambaサーバのみこれが必要となります。正確にはNTLMv1が廃止されたバージョンのsambaが稼働するファイルサーバで必要になる、というところです。

しかし、根本的に正しくは、他のPCと同様に
NTLM v1のオプションが拒否されるようになった新バージョンのsambaサーバであっても正しく認証し共有フォルダにアクセスできる状態
が正しいと言えますので、対象のPCがNTLMv2を使うような対処をしなければ。

つまり、遅かれ早かれ、このWindows8.1には手を入れないといえないね、というのは結論としてあります。

ただ、ユーザPCに手を入れるにはなかなかに準備時間を要します。ひとまずサーバで旧オプションを復活させ、PC対処後にサーバの旧オプションを廃止するよう動きを取るようにします。

19-06-12追記:根本的にちゃんと対処しました。

必要な対処をPC側で実施したので、その対処を別記事にアップしました。

blog.treedown.net

本ページの対処は暫定的な対処なので、根本的な対処方法としては、この記事の対処法が正しいことになります。