CentOS6のSambaでSMB2を有効にしてパスなし参照フォルダを設定した手順


以下をやりましたので記事とします。

  • CentOS 6系で
  • samba 3.6を使って
  • SMB2も有効にした(元々はSMB1だった)

最近は古いサーバの延命的なSomethingもやっていて、この記事もその一環のネタです。
CentOS6はWikiによると 2020-11-30 にEOLとなりますが、古い社内共有サーバの1台がCentOS6で稼働していまして、それでも クライアント側はセキュリティ面などからSMB1は利用不可としたい という要望がありました。

設定値

/etc/samba/smb.confを以下の様に変更しました。

[global]
         max protocol = SMB2

         security = user
         map to guest = Bad User

設定のポイント

  • max protocol = SMB2
    • これに関してはすぐに記事が見つかり、設定を入れたのですがクライアントはSMB1で接続してしまい、一向に効果がありませんでした
  • security = user
    • デフォルトの値ですが重要です。弊社の既存環境では security = share が設定されており、これはdeplicatedなパラメータです。security = shareの目的はパスワードなしで共有フォルダを参照させるためでしたが、これを行うとSMB1しか動作しない様で大ハマりしました
  • map to guest = Bad User
    • security = user をしつつ、フォルダをパスワードなしで誰でも参照させたい場合に必要です。後述する記事に当たるまで全く対応方法がわからず困りました

その他

環境

具体的には以下の環境です。

  • CentOS release 6.10 (Final)
  • samba-common-3.6.23-53.el6_10.x86_64

参考記事

以下の記事で map to guest = Bad User を知り大変助かりました。
* ubuntuforum.org - (Samba) Warning: security=share is deprecated

SMBのバージョンを調べる方法

クライアント側にWiresharkを入れて、 smb or smb2 のフィルタで見れば一発です。
もう少し具体的にいうと
1. クライアントから Negotiate Protocol RequestRequested Dialects で話せるSMB一覧を送る
2. サーバ側から Negotiate Protocol Response が来て
   * SMB1の場合 Selected Index フィールドが NT LM 0.12 の様になりました
   * SMB2の場合 Dialect: SMB 2.0.2 の様になりました

SMB1しかできないパケキャプ結果

SMB2に成功したパケキャプ結果

以上、もうすぐ役目を終えるCentOS6のSambaの設定でした。個人としても大変お世話になったCentOS6の長きにわたる活躍に敬意を表します。