CNAMEでSMB共有にアクセスしたい (2/2)
前回の続きです。
wanderingengineer.hatenablog.com
本投稿ではファイルサーバをCNAMEでアクセスさせる際の、具体的な設定手順を解説していきます。
- 作業環境
- DNSサーバにCNAMEレコードを作成する
- ファイルサーバのコンピュータアカウントに、DNSエイリアスに対応するSPNを追加する
- "SPNターゲット名検証レベル"をオフに設定する
- DNSエイリアスをファイルサーバの代替名として登録する(Windowsのみ)
- 接続確認(Kerberos認証)
- 接続確認(NTLM認証)
作業環境
ドメイン名 = domain1.local
DNSエイリアス = nas-alias.domain1.local
ホスト名 | OS | 役割 |
ad1 | Windows Server 2019 | ADサーバ、DNSサーバ |
nas-real | Windows Server 2019 | ファイルサーバ |
client1 | Windows Server 2019 | SMBクライアント |
ファイルサーバのコンピュータアカウントに、DNSエイリアスに対応するSPNを追加する
適当なドメインコンピュータから、Domain Admins権限で setspn コマンドを実行します。
サービスクラスは"HOST"を指定します。
setspn -A HOST/< DNSエイリアス > < ファイルサーバのコンピュータアカウント名 >
* "HOST" は "cifs" を含む複数のクラスのマッピングのようです。*1 動作確認時に問題が発生した場合は "cifs/" のSPNを追加してみてください。
FQDNとホスト名の2個分を登録します。
PS > setspn -A HOST/nas-alias.domain1.local nas-real ドメイン DC=domain1,DC=local を確認しています CN=NAS-REAL,CN=Computers,DC=domain1,DC=local の ServicePrincipalNames を登録しています HOST/nas-alias.domain1.local 更新されたオブジェクト PS > setspn -A HOST/NAS-ALIAS nas-real ドメイン DC=domain1,DC=local を確認しています CN=NAS-REAL,CN=Computers,DC=domain1,DC=local の ServicePrincipalNames を登録しています HOST/NAS-ALIAS 更新されたオブジェクト
SPN追加後のファイルサーバのSPNを確認します。
setspn -L < ファイルサーバのコンピュータアカウント名 >
PS > setspn -L nas-real 次の項目に登録されている CN=NAS-REAL,CN=Computers,DC=domain1,DC=local: HOST/NAS-ALIAS HOST/nas-alias.domain1.local WSMAN/NAS-ALIAS TERMSRV/NAS-ALIAS RestrictedKrbHost/NAS-ALIAS WSMAN/nas-real WSMAN/nas-real.domain1.local TERMSRV/nas-real TERMSRV/nas-real.domain1.local RestrictedKrbHost/nas-real HOST/nas-real RestrictedKrbHost/nas-real.domain1.local HOST/nas-real.domain1.local
"SPNターゲット名検証レベル"をオフに設定する
ADサーバでポリシーの結果セットを出力して、該当ポリシーが"未実装"または"オフ"になっていることを確認します。
またはファイルサーバと適当なクライアント上で、レジストリの SmbServerNameHardeningLevel の値が"0"になっていることを確認します。
PS > Get-ItemProperty -PATH "Registry::HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name SmbServerNameHardeningLevel SmbServerNameHardeningLevel : 0 PSPath : Microsoft.PowerShell.Core\Registry::HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\P arameters PSParentPath : Microsoft.PowerShell.Core\Registry::HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer PSChildName : Parameters PSProvider : Microsoft.PowerShell.Core\Registry
DNSエイリアスをファイルサーバの代替名として登録する(Windowsのみ)
*この手順はWindowsベースのファイルサーバのみ実施します。アプライアンスNASについては、類似の対応が必要か個別に確認してください。
ファイルサーバにログインし、Domain Admin権限で netdom コマンドを実行します。
netdom computername $(hostname) /add:< DNSエイリアス >
PS > netdom computername $(hostname) /add:nas-alias.domain1.local nas-alias.domain1.local をコンピューターの代替名として 正常に追加しました。 コマンドは正しく完了しました。
登録されている全てのホスト名を表示し、DNSエイリアスが追加されていることを確認します。
netdom computername $(hostname) /Enumerate
PS > netdom computername $(hostname) /Enumerate コンピューターのすべての名前: nas-real.domain1.local nas-alias.domain1.local コマンドは正しく完了しました。
念のためWindowsを再起動しておきます。
接続確認(Kerberos認証)
ドメインユーザでSMBクライアントにログインし、キャッシュされているサービスチケットを削除します。
PS > klist purge
現在のログオン ID: 0:0x77438
すべてのチケットを削除しています:
チケットが削除されました。
DNSエイリアスでUNCパスを指定し、共有を参照できること、サービスチケットをキャッシュ出来ていることを確認します。
"net use"コマンドの場合はNTLM認証が使用されたので、エクスプローラか、"Get-ChildItem"コマンドを使用してください。
キャッシュされたチケットは"klist tickets"で確認できます。
PS > Get-ChildItem -Directory -Path \\nas-alias.domain1.local\project ディレクトリ: \\nas-alias.domain1.local\project Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2/21/2020 5:04 PM プロジェクトフォルダ1 PS > klist tickets ... #1> クライアント: administrator @ DOMAIN1.LOCAL サーバー: cifs/nas-alias.domain1.local @ DOMAIN1.LOCAL Kerberos チケットの暗号化の種類: AES-256-CTS-HMAC-SHA1-96 チケットのフラグ 0x40a10000 -> forwardable renewable pre_authent name_canonicalize 開始時刻: 2/23/2020 0:40:48 (ローカル) 終了時刻: 2/23/2020 10:40:48 (ローカル) 更新期限: 3/1/2020 0:40:48 (ローカル) セッション キーの種類: AES-256-CTS-HMAC-SHA1-96 キャッシュ フラグ: 0 呼び出された Kdc: ad1.domain1.local
接続確認(NTLM認証)
ローカルユーザでSMBクライアントにログインします。
エクスプローラか"net use"コマンドを使用し、アクセス権を有するドメインユーザで共有を参照します。
DNSエイリアスでUNCパスを指定し、共有を参照できること、サービスチケットをキャッシュしていないことを確認します。
PS > net use z: \\nas-alias.domain1.local\project /user:domain1\administrator コマンドは正常に終了しました。 PS > Get-ChildItem -Directory -Path Z: ディレクトリ: Z:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2/21/2020 5:04 PM プロジェクトフォルダ1 PS > klist tickets 現在のログオン ID: 0:0x965de5 キャッシュされたチケット: (0)
以上です。
参考にした情報:
Using Computer Name Aliases in place of DNS CNAME Records - Microsoft Tech Community - 259064
The service principal name (SPN) target name validation level will be turned off.