
ドメイン参加していないコンピューターがドメインユーザーの認証情報でファイル共有にアクセスできるか確認してみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
普段はドメイン参加していないけどCIFSファイル共有にはアクセスしたい
こんにちは、のんピ(@non____97)です。
皆さんは「普段はドメイン参加していないけど、たまにCIFSファイル共有にアクセスしたい」と思ったことはありますか? 私はあります。
一般的にファイルサーバー上の共有にアクセスする際は、ドメイン参加しているコンピューターから行うことが多いと思います。ふと、ドメイン参加していないコンピューターからファイルサーバーにアクセスする場合は正常に処理されるのか気になりました。
ADの認証で使われるKerberos認証はクライアントがドメインコントローラーにチケットを発行してもらい、そのチケットに基づいてアクセス先で許可をします。ドメイン参加していない場合、もっと言うとドメインコントローラーに対して問い合わせる経路がない状態では、ドメイン参加していないコンピューターからもファイルサーバーにアクセスすることができるのでしょうか。
そういえば、試したことなかったので確認してみました。
いきなりまとめ
- ドメイン参加していないコンピューターがドメインユーザーの認証情報でCIFSファイル共有にアクセスすることは可能
- ドメインユーザーの認証情報さえ知っていればアクセスできる
- NTFS ACLは認証する際に使用したドメインユーザーに基づいて動作する
検証環境
検証環境は以下の通りです。

ドメイン参加しておらず、AD DCへの通信が許可されていないEC2インスタンスを用意し、FSx for ONTAP上に作成したCIFSファイル共有にアクセスできるか確認します。また、ドメイン参加していないEC2インスタンスからAD DCへの通信は許可していません。
AD DCについては以下記事の検証で使用したものを流用します。
やってみる
CIFSファイル共有の用意
それではやってみます。まずはCIFSファイル共有を作成します。作成するCIFSファイル共有はcifs-shareです。
# SSHでFSx for ONTAPファイルシステムに接続
> ssh fsxadmin@management.fs-05116a70e90917f04.fsx.us-east-1.amazonaws.com
Password:
This is your first recorded login.
Unsuccessful login attempts since last login: 1
# CIFSサーバーがドメイン参加していることを確認
FsxId05116a70e90917f04::> cifs show -instance
                                          Vserver: SVM
                         CIFS Server NetBIOS Name: SVM
                    NetBIOS Domain/Workgroup Name: CORP
                      Fully Qualified Domain Name: CORP.NON-97.NET
                              Organizational Unit: OU=FSxForONTAP,DC=corp,DC=non-97,DC=net
Default Site Used by LIFs Without Site Membership:
                                   Workgroup Name: -
                             Authentication Style: domain
                CIFS Server Administrative Status: up
                          CIFS Server Description:
                          List of NetBIOS Aliases: -
# CIFSファイル共有を作成
FsxId05116a70e90917f04::> cifs share create -vserver SVM -share-name cifs-share -path /vol1
# 作成したCIFSファイル共有の確認
FsxId05116a70e90917f04::> cifs share show
Vserver        Share         Path              Properties Comment  ACL
-------------- ------------- ----------------- ---------- -------- -----------
SVM            c$            /                 oplocks    -        BUILTIN\Administrators / Full Control
                                               browsable
                                               changenotify
                                               show-previous-versions
SVM            cifs-share    /vol1             oplocks    -        Everyone / Full Control
                                               browsable
                                               changenotify
                                               show-previous-versions
SVM            ipc$          /                 browsable  -        -
3 entries were displayed.
ドメインユーザーの作成
次にドメインユーザーの作成をします。こちらはAD DC上で作業します。作成するドメインユーザーはuser01とuser02です。
# user01の作成 > $userName = 'user01' > New-ADUser ` -Name "$userName" ` -UserPrincipalName "$userName@corp.non-97.net" ` -Accountpassword (Read-Host -AsSecureString "AccountPassword") ` -Path "CN=Users,DC=corp,DC=non-97,DC=net" ` -PasswordNeverExpires $True ` -Enabled $True AccountPassword: ******************************** # user02の作成 > $userName = 'user02' > New-ADUser ` -Name "$userName" ` -UserPrincipalName "$userName@corp.non-97.net" ` -Accountpassword (Read-Host -AsSecureString "AccountPassword") ` -Path "CN=Users,DC=corp,DC=non-97,DC=net" ` -PasswordNeverExpires $True ` -Enabled $True AccountPassword: ******************************** # 作成されたユーザーの確認 > Get-ADUser -Filter 'Name -like "user*"' -SearchBase "CN=Users,DC=corp,DC=non-97,DC=net" DistinguishedName : CN=user01,CN=Users,DC=corp,DC=non-97,DC=net Enabled : True GivenName : Name : user01 ObjectClass : user ObjectGUID : 6cc6754e-516b-4bdb-a4e6-1af227609bd8 SamAccountName : user01 SID : S-1-5-21-38571244-2121234638-1230449559-1134 Surname : UserPrincipalName : user01@corp.non-97.net DistinguishedName : CN=user02,CN=Users,DC=corp,DC=non-97,DC=net Enabled : True GivenName : Name : user02 ObjectClass : user ObjectGUID : 97a3e5f6-3000-42b8-ad58-f2a4b66f7222 SamAccountName : user02 SID : S-1-5-21-38571244-2121234638-1230449559-1135 Surname : UserPrincipalName : user02@corp.non-97.net
ドメインに参加していないEC2インスタンスからドメインユーザーでCIFSファイル共有にアクセス
それでは、本題のドメインに参加していないEC2インスタンスからドメインユーザーでCIFSファイル共有にアクセスしてみます。
まず、ドメインに参加していないEC2インスタンスが参照しているDNSサーバーがAD DC(10.0.1.10)ではない & AD DCをDNSサーバーに指定して名前解決できないことを確認します。
# 現在のユーザーを確認
> whoami
ec2amaz-5fbosni\ssm-user
# ドメイン参加していないことを確認
> Get-WMIObject Win32_ComputerSystem
Domain              : WORKGROUP
Manufacturer        : Amazon EC2
Model               : t3.micro
Name                : EC2AMAZ-5FBOSNI
PrimaryOwnerName    : EC2
TotalPhysicalMemory : 1043886080
# 参照しているDNSサーバーの確認
> nslookup
Default Server:  ip-10-0-1-2.ec2.internal
Address:  10.0.1.2
> exit
# AD DCをDNSサーバーに指定して名前解決できないことを確認
> nslookup dev.classmethod.jp 10.0.1.10
DNS request timed out.
    timeout was 2 seconds.
Server:  UnKnown
Address:  10.0.1.10
DNS request timed out.
    timeout was 2 seconds.
DNS request timed out.
    timeout was 2 seconds.
DNS request timed out.
    timeout was 2 seconds.
DNS request timed out.
    timeout was 2 seconds.
*** Request to UnKnown timed-out
それでは、CIFSファイル共有をドメインユーザー(user01)の認証情報を使ってZドライブにマウントします。
# CIFSファイル共有をドメインユーザーの認証情報を使ってZドライブにマウント > net use Z: \\10.0.1.100\cifs-share The password is invalid for \\10.0.1.100\cifs-share. Enter the user name for '10.0.1.100': user01@corp.non-97.net Enter the password for 10.0.1.100: The command completed successfully. # Zドライブにマウントできていることを確認 > Get-PSDrive Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- Alias Alias C 13.67 16.32 FileSystem C:\ Windows\system32 Cert Certificate \ Env Environment Function Function HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE Variable Variable WSMan WSMan Z 0.00 0.95 FileSystem \\10.0.1.100\cifs-share # ドメインには参加していないことを確認 > Get-WMIObject Win32_ComputerSystem Domain : WORKGROUP Manufacturer : Amazon EC2 Model : t3.micro Name : EC2AMAZ-5FBOSNI PrimaryOwnerName : EC2 TotalPhysicalMemory : 1043886080
ドメインに参加していない かつ AD DCへ通信できないコンピューターでもCIFSファイル共有にアクセスできました。
書き込みできるかも確認してみましょう。
> echo "test user01" > Z:\test-user01.txt
> ls Z:
    Directory: Z:\
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        11/22/2022   6:32 AM             28 test-user01.txt
書き込みも問題なくできますね。
一旦、Zドライブをアンマウントし、別のドメインユーザー(user02)の認証情報で再度マウントしようとしてみます。
# Zドライブをアンマウント
> net use Z: /delete
Z: was deleted successfully.
# Zドライブに再マウント
> net use Z: \\10.0.1.100\cifs-share
The command completed successfully.
# Zドライブ配下を確認
> ls Z:
    Directory: Z:\
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        11/22/2022   6:32 AM             28 test-user01.txt
認証情報を聞かれずにマウントできてしまいました。SSMセッションマネージャーで作業しているので、一度セッションを閉じて再度接続します。
# Zドライブにマウントされていないことを確認
> Get-PSDrive
Name           Used (GB)     Free (GB) Provider      Root                                                 CurrentLocation
----           ---------     --------- --------      ----                                                 ---------------
Alias                                  Alias
C                  13.68         16.32 FileSystem    C:\                                                 Windows\system32
Cert                                   Certificate   \
Env                                    Environment
Function                               Function
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE
Variable                               Variable
WSMan                                  WSMan
# CIFSファイル共有をドメインユーザーの認証情報を使ってZドライブにマウント
> net use Z: \\10.0.1.100\cifs-share
The password is invalid for \\10.0.1.100\cifs-share.
Enter the user name for '10.0.1.100': user02@corp.non-97.net
Enter the password for 10.0.1.100:
The command completed successfully.
# Zドライブ配下を確認
> ls Z:
    Directory: Z:\
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        11/22/2022   6:32 AM             28 test-user01.txt
# 書き込みできることを確認
> echo "test user02" > Z:\test-user02.txt
> ls Z:
    Directory: Z:\
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        11/22/2022   6:32 AM             28 test-user01.txt
-a----        11/22/2022   6:37 AM             28 test-user02.txt
別のセッションであれば別のドメインユーザーの認証情報でマウントできました。
NTFS ACLが動作することを確認する
次にNTFS ACLに従ってアクセスをコントロールできることを確認します。
今回はuser01をフルコントロールで拒否するようなNTFS ACLにします。こちらの作業はAD DCで行います。
まず、現在のCIFSファイル共有のNTFS ACLを確認します。
# ドメインのAdministratorで作業していることを確認
> whoami
corp\administrator
# ドメインに参加していることを確認
> Get-WMIObject Win32_ComputerSystem
Domain              : corp.non-97.net
Manufacturer        : Amazon EC2
Model               : t3.micro
Name                : EC2AMAZ-75JBQCK
PrimaryOwnerName    : EC2
TotalPhysicalMemory : 1043886080
# ZドライブにCIFSファイル共有をマウント
> net use Z: \\SVM.CORP.NON-97.NET\cifs-share
The command completed successfully.
# Zドライブ配下を確認
> ls Z:\
    Directory: Z:\
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        11/21/2022   8:32 PM             28 test-user01.txt
-a----        11/21/2022   8:37 PM             28 test-user02.txt
# 現在のNTFS ACLの確認
> Get-Acl Z:\ | Format-Table -AutoSize -Wrap
    Directory:
Path Owner                  Access
---- -----                  ------
Z:\  BUILTIN\Administrators Everyone Allow  FullControl
現在は、Everyoneに対してフルコントロールで許可されているようです。
こちらにuser01をフルコントロールで拒否するようなACEを追加します。
# CIFSファイル共有の現在のNTFS ACLを取得
> $folder_path = "Z:\"
> $acl = Get-acl $folder_path 
# 拒否したいグループもしくはユーザーの名前
> $group_or_user_name = "user01@corp.non-97.net"
# フルコントロールで拒否
> $permission = ($group_or_user_name, "FullControl", "ContainerInherit" ,"None" ,"Deny") 
# ACEの作成
> $access_rule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
# ACEをNTFS ACLに設定
> $acl.SetAccessRule($access_rule) 
# NTFS ACLの適用
> $acl | Set-Acl $folder_path
# 現在のNTFS ACLを確認
> Get-acl $folder_path | Format-Table -AutoSize -Wrap
    Directory:
Path Owner                  Access
---- -----                  ------
Z:\  BUILTIN\Administrators CORP\user01 Deny  FullControl
                            Everyone Allow  FullControl
user01をフルコントロールで拒否するようなACEを追加されました。
それではドメイン参加していないEC2インスタンスからアクセスできるか確認してみます。
user02で接続した時のセッションが残っていたので、NTFS ACLとZドライブ配下を確認してみます。
# NTFS ACLの確認
> Get-Acl Z:\ | Format-Table -AutoSize -Wrap
    Directory:
Path Owner                  Access
---- -----                  ------
Z:\  BUILTIN\Administrators S-1-5-21-38571244-2121234638-1230449559-1134 Deny  FullControl
                            Everyone Allow  FullControl
# Zドライブ配下の確認
> ls Z:
    Directory: Z:\
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        11/22/2022   6:32 AM             28 test-user01.txt
-a----        11/22/2022   6:37 AM             28 test-user02.txt
user02なのでZドライブ配下のファイルを確認できました。また、ドメインに参加していないのでNTFS ACLにはuser01のSIDS-1-5-21-38571244-2121234638-1230449559-1134に対してフルコントロールで拒否するようなACEがありますね。
それではSSMセッションマネージャーの別のセッションでuser01でマウントします。
# Zドライブにマウントされていないことを確認
> Get-PSDrive
Name           Used (GB)     Free (GB) Provider      Root                                                 CurrentLocation
----           ---------     --------- --------      ----                                                 ---------------
Alias                                  Alias
C                  13.68         16.32 FileSystem    C:\                                                 Windows\system32
Cert                                   Certificate   \
Env                                    Environment
Function                               Function
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE
Variable                               Variable
WSMan                                  WSMan
# CIFSファイル共有をドメインユーザーの認証情報を使ってZドライブにマウント
> net use Z: \\10.0.1.100\cifs-share
The password is invalid for \\10.0.1.100\cifs-share.
Enter the user name for '10.0.1.100': user01@corp.non-97.net
Enter the password for 10.0.1.100:
The command completed successfully.
# マウントできていることを確認
> Get-PSDrive
Name           Used (GB)     Free (GB) Provider      Root                                                 CurrentLocation
----           ---------     --------- --------      ----                                                 ---------------
Alias                                  Alias
C                  13.68         16.32 FileSystem    C:\                                                 Windows\system32
Cert                                   Certificate   \
Env                                    Environment
Function                               Function
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE
Variable                               Variable
WSMan                                  WSMan
Z                   0.00          0.95 FileSystem    \\10.0.1.100\cifs-share
# Zドライブ配下を確認
> ls Z:
ls : Access to the path 'Z:\' is denied.
At line:1 char:1
+ ls Z:
+ ~~~~~
    + CategoryInfo          : PermissionDenied: (Z:\:String) [Get-ChildItem], UnauthorizedAccessException
    + FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
はい、拒否されました。ドメイン参加していなくてもCIFSファイル共有をマウントした時のドメインユーザーでNTFS ACLが動作するようです。
ドメイン参加しなくてもドメインユーザーの認証情報さえ知っていればアクセスできる
ドメイン参加していないコンピューターがドメインユーザーの認証情報でファイル共有にアクセスできるか確認したみました。
ドメイン参加しなくても、ドメインユーザーの認証情報さえ知っていればアクセスできるようです。ファイルサーバーが認証情報を受け付けて、それをAD DCに対して正しいか問い合わせているのでしょう。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!












