Open Directory にバインドされた Mac がホストする SMB 共有をマウントできない場合
SMB 3 のセキュリティ要件で、SMB を使った共有ポイントのマウントが認められない場合があります。
接続設定を確認する
macOS でサーバに接続する場合、Server Message Block (SMB) 3 がデフォルトの方法になっています。この接続方法では、認証後に Validate Negotiate リクエストを実行する必要があります。SMB 3 のセッションはすべて、ゲスト接続または匿名接続でない限り、署名が必要です。
macOS ファイルサーバが Open Directory クライアントであり、Lightweight Directory Access Protocol (LDAP) サーバに匿名バインドで接続されている場合は、次のいずれかの方法で接続してください。
LDAP サーバへの接続時に認証バインドを使う。
ファイルサーバのロールを Open Directory レプリカに変更する。これに伴い、サーバに kerberos も設定されます。
クライアントで Validate Negotiate リクエストを無効にする。
SMB 2 だけを使うように SMB サーバまたはクライアントを設定する。
セッション署名について
SMB 3 でセッションに署名するには、バインドされているコンピュータが、ディレクトリサーバのユーザ全員の md4 (パスワード) にアクセスできなければなりません。そのため、SMB 3 では、「信頼された」コンピュータへのクライアント接続しか許可されません。たとえば、ディレクトリ管理者 (diradmin) の資格情報を使って認証バインドされるコンピュータが該当します。
ユーザの認証に使うアカウントがあるディレクトリサーバに対し、diradmin でサーバを認証バインドできない場合は、クライアントの Validate Negotiate リクエストを無効にするか、セキュリティの低い SMB 2 接続だけを認めるようにサーバを調整することができます。その場合は、SMB サーバ設定、クライアント設定、またはその両方を変更してください。
クライアントで Validate Negotiate リクエストを無効にする
Validate Negotiate を無効にすると、中間者攻撃の被害に遭いやすくなります。Validate Negotiate リクエストを無効にするのは、クライアントとサーバの両方が安全なネットワーク上にある場合に限ってください。
「/etc」ディレクトリの「nsmb.conf」ファイルで validate_neg_off 設定の値を設定するには、テキストエディタまたはターミナルを使います。クライアントサイドの SMB 構成オプションについて詳しくは、「nsmb.conf」の man ページを参照してください。
「nsmb.conf」ファイルで Validate Negotiate リクエストを無効に設定した場合、以下のようになります。
[default]
validate_neg_off=yes
SMB 3 接続を拒否するように macOS Server を設定する
Validate Negotiate リクエストは SMB 3 の機能で、クライアントが送信します。クライアントがこうしたリクエストを送信できないようにするため、SMB 2 接続だけを受け入れるように macOS Server を設定しておけます。サーバの環境設定ファイルのビットフィールドで、サーバのダイアレクトを指定します。このビットフィールドのキーワードは ProtocolVersionMap です。以下の 3 つのビットだけを使います。
値 | 意味 |
1 | SMB 1 をサポートする |
2 | SMB 2 をサポートする |
4 | SMB 3 をサポートする |
複数のダイアレクトをサポートするには、ビットを組み合わせます。
以下の例では、SMB 2 を許可するように ProtocolVersionMap を設定します。具体的には、ProtocolVersionMap を「2」に設定します。
sudo scutil --prefs com.apple.smb.server.plist
get /
d.add ProtocolVersionMap # 2
set /
commit
apply
quit