Azure上にADサーバを構築してみた

Azure VirtualMachine

Azure上にADサーバを構築してドメイン参加させてみました。
また、なるべくPowershellを利用してコマンドで構築してみました。

広告

ADサーバを構築する

以下のような構成でADサーバを構築していきます。

Azure上でADサーバを構築する際の構成図

1.Azureリソースの構築

以下のAzureCLIで構築します。

#任意のパラメータを定義
$rg_name = "RG-Test-AD"
$location = "japaneast"
$vnet_name = "Vnet-Test-AD"
$vnet_address = "10.8.0.0/24"
$subnet1_name = "Subnet-Client"
$subnet1_address = "10.8.0.0/26"
$subnet2_name = "Subnet-AD"
$subnet2_address = "10.8.0.64/26"
$nsg1_name = "NSG-Test-Client"
$nsg2_name = "NSG-Test-AD"
$nsgrule_name = "AllowRDP"
$my_gip =  (Invoke-WebRequest https://ipinfo.io/ip).content
$nsgrule_sourceip = $my_gip + "/32"
$nsgrule_port = 3389
$nsgrule_priority = 200
$pip1_name = "PIP-VM-Test-Client"
$nic1_name = "NIC-VM-Test-Client"
$pip2_name = "PIP-VM-Test-AD"
$nic2_name = "NIC-VM-Test-AD"
$vm1_name = "VM-Test-Client"
$vm2_name = "VM-Test-AD"
$vm_image = "Win2022Datacenter"
$vm_size = "Standard_B2ms"
$vm_authtype = "password"
$vm_adminname = "xxxxxxx"

#リソースグループの作成
az group create `
 -l $location `
 -g $rg_name

#仮想ネットワークの作成とクライアント用サブネットの追加
az network vnet create `
 -n $vnet_name `
 -g $rg_name `
 -l $location `
 --address-prefix $vnet_address `
 --subnet-name $subnet1_name `
 --subnet-prefix $subnet1_address

#web用サブネットの追加
az network vnet subnet create `
 -g $rg_name `
 --vnet-name $vnet_name `
 -n $subnet2_name `
 --address-prefixes $subnet2_address

#NSGの作成
az network nsg create `
 -n $nsg1_name `
 -g $rg_name

az network nsg create `
 -n $nsg2_name `
 -g $rg_name

#NSGのルール追加
az network nsg rule create `
 -g $rg_name `
 --nsg-name $nsg1_name `
 -n $nsgrule_name `
 --source-address-prefixes $nsgrule_sourceip `
 --destination-port-range $nsgrule_port `
 --priority $nsgrule_priority

az network nsg rule create `
 -g $rg_name `
 --nsg-name $nsg2_name `
 -n $nsgrule_name `
 --source-address-prefixes $nsgrule_sourceip `
 --destination-port-range $nsgrule_port `
 --priority $nsgrule_priority

#NSGをサブネットに適用
az network vnet subnet update `
 -g $rg_name `
 -n $subnet1_name `
 --vnet-name $vnet_name `
 --network-security-group $nsg1_name

az network vnet subnet update `
 -g $rg_name `
 -n $subnet2_name `
 --vnet-name $vnet_name `
 --network-security-group $nsg2_name

#パブリックIPの作成
az network public-ip create `
 -n $pip1_name `
 -g $rg_name

az network public-ip create `
 -n $pip2_name `
 -g $rg_name

#ネットワークインターフェースの作成
az network nic create `
 -n $nic1_name `
 -g $rg_name `
 --vnet-name $vnet_name `
 --subnet $subnet1_name `
 --public-ip-address $pip1_name

az network nic create `
 -n $nic2_name `
 -g $rg_name `
 --vnet-name $vnet_name `
 --subnet $subnet2_name `
 --public-ip-address $pip2_name

#仮想マシンの作成
az vm create `
 -n $vm1_name `
 -g $rg_name `
 --image $vm_image `
 --size $vm_size `
 --nics $nic1_name `
 --authentication-type $vm_authtype `
 --admin-username $vm_adminname

az vm create `
 -n $vm2_name `
 -g $rg_name `
 --image $vm_image `
 --size $vm_size `
 --nics $nic2_name `
 --authentication-type $vm_authtype `
 --admin-username $vm_adminname

2.ADサーバの構築(OS内の設定)

2-1.日本語化

VMができたら接続して以下の記事を参考に日本語化します。

言語パッケージだけ手動でインストールして、その他は基本Powershellで設定します。

2ー2.ADサーバの設定

以下のコマンドを実行してADを設定します。

今回はシングルフォレストで、OUを1つ追加して、ユーザーを3名作成します。

# 1.パラメータの定義
$DomainDNSName = "hogehoge.com"
$DomainNetbiosName = "hogehoge"
$Password = "P@ssw0rd"

# 2.ADDSのインストール
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
Import-Module ADDSDeployment

# 3.新規ADフォレストの作成
$params = @{
    DomainName        = $DomainDNSName;
    DomainNetbiosName = $DomainNetbiosName;
    ForestMode        = "WinThreshold";
    DomainMode        = "WinThreshold";
    DatabasePath      = "C:\Windows\NTDS";
    LogPath           = "C:\Windows\NTDS";
    SysvolPath        = "C:\Windows\SYSVOL";
    SafeModeAdministratorPassword = (ConvertTo-SecureString $Password -AsPlainText -Force);
    InstallDns           = $true;
    CreateDnsDelegation  = $false;
    NoRebootOnCompletion = $false;
    Confirm = $false;
    }
Install-ADDSForest @params


  ~~~自動で再起動される~~~

# 1.パラメータの定義(再起動後の再定義)
$DomainDNSName = "hogehoge.com"
$DomainNetbiosName = "hogehoge"
$Password = "P@ssw0rd"
$AdminUserName = "adadminuser"
$OUName = "TestOU"

# 4.新しいActiveDirectory管理ユーザーを作成
$params = @{
    Name                 = $AdminUserName;
    UserPrincipalName    = "$($AdminUserName)@$($DomainDNSName)";
    Description          = "AD admin user";
    AccountPassword      = ConvertTo-SecureString -AsPlainText $Password -Force;
    Enabled              = $true;
    PasswordNeverExpires = $true;
    }
New-ADUser @params
Add-ADGroupMember -Identity "Domain Admins" -Members $AdminUserName

# 5.Active Directoryの組織単位(OU)を作成
New-ADOrganizationalUnit -Name $OUName

# 6.OUにユーザーを追加
$ou = Get-ADOrganizationalUnit -Filter "Name -eq '$($OUName)'"
@(
    [PSCustomObject]@{ Name="testuser01"; PlainPassword = $Password; },
    [PSCustomObject]@{ Name="testuser02"; PlainPassword = $Password; },
    [PSCustomObject]@{ Name="testuser03"; PlainPassword = $Password; }
) | ForEach-Object {
    $params = @{
        Name                 = $_.Name;
        UserPrincipalName    = ("{0}@$($DomainDNSName)" -f $_.Name);
        Description          = ("Test user {0}" -f $_.Name);
        AccountPassword      = ConvertTo-SecureString $_.PlainPassword -AsPlainText -Force;
        PasswordNeverExpires = $true;
        Path = $ou.DistinguishedName;
        Enabled = $true;
     }
     New-ADUser @Params
}

以下でそれぞれのコマンドの解説をします。

2.ADDSのインストール

Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
Import-Module ADDSDeployment

「役割と機能の追加」で起動するウィザードで設定する内容と同じこと実施します。

「役割と機能の追加」で起動するウィザード

3.新規ADフォレストの作成

$params = @{
    DomainName        = $DomainDNSName;
    DomainNetbiosName = $DomainNetbiosName;
    ForestMode        = "WinThreshold";
    DomainMode        = "WinThreshold";
    DatabasePath      = "C:\Windows\NTDS";
    LogPath           = "C:\Windows\NTDS";
    SysvolPath        = "C:\Windows\SYSVOL";
    SafeModeAdministratorPassword = (ConvertTo-SecureString $Password -AsPlainText -Force);
    InstallDns           = $true;
    CreateDnsDelegation  = $false;
    NoRebootOnCompletion = $false;
    Confirm = $false;
    }
Install-ADDSForest @params

「役割と機能の追加」でADサーバをイントールした後にサーバーマネージャーの!マークを選択して「このサーバーをドメインコントローラーに昇格する」をクリックしてウィザードが起動しますが、

ADサーバをイントール後に出る「このサーバーをドメインコントローラーに昇格する」の画面

このウィザードで設定する内容と同じこと実施します。

ActiveDirectoryドメインサービス構成ウィーザードの画面

再起動後にログインする際にはドメインを指定しないとRDPできないので注意ください。

4.新しいActive Directory管理ユーザーを作成

$params = @{
    Name                 = $AdminUserName;
    UserPrincipalName    = "$($AdminUserName)@$($DomainDNSName)";
    Description          = "AD admin user";
    AccountPassword      = ConvertTo-SecureString -AsPlainText $Password -Force;
    Enabled              = $true;
    PasswordNeverExpires = $true;
    }
New-ADUser @params
Add-ADGroupMember -Identity "Domain Admins" -Members $AdminUserName

「Active Directory ユーザーとコンピューター」における設定をPowershellで実施しています。

以下のようにユーザーを作成して、そのユーザーを [Domain Admins] に加えています。

「Active Directory ユーザーとコンピューター」における設定画面

5.Active Directoryの組織単位(OU)を作成

New-ADOrganizationalUnit -Name $OUName

「Active Directory ユーザーとコンピューター」における組織単位(OU)の作成をPowershellで実施しています。

「Active Directory ユーザーとコンピューター」における組織単位(OU)の作成画面

6.OUにユーザーを追加

$ou = Get-ADOrganizationalUnit -Filter "Name -eq '$($OUName)'"
@(
[PSCustomObject]@{ Name="testuser01"; PlainPassword = $Password; },
[PSCustomObject]@{ Name="testuser02"; PlainPassword = $Password; },
[PSCustomObject]@{ Name="testuser03"; PlainPassword = $Password; }
) | ForEach-Object {
$params = @{
Name = $_.Name;
UserPrincipalName = ("{0}@$($DomainDNSName)" -f $_.Name);
Description = ("Test user {0}" -f $_.Name);
AccountPassword = ConvertTo-SecureString $_.PlainPassword -AsPlainText -Force;
PasswordNeverExpires = $true;
Path = $ou.DistinguishedName;
Enabled = $true;
}
New-ADUser @Params
}

「Active Directory ユーザーとコンピューター」において、先ほど作成したOUにユーザーを追加する設定をPowershellで実施しています。

「Active Directory ユーザーとコンピューター」におけるOUへのユーザー追加画面

3.クライアントVMの設定

次にクライアントVMでADサーバにドメイン参加させます。

ドメイン参加させる前にクライアントVMのDNSの向き先をADサーバに変更します。

3-1.DNSの向き先を変更する(Vnetの設定変更)

Azure上のVnetもしくはNICのDNS設定を変更することで、DNSの向き先をADサーバに変更します。

今回はVNetの設定を変更します。

$rg_name = "RG-Test-AD"
$vnet_name = "Vnet-Test-AD"
$dnsserver_address = "10.8.0.68"

# VnetのDNSサーバーの設定を更新
az network vnet update `
 -g $rg_name `
 -n $vnet_name `
 --dns-servers $dnsserver_address

Azureポータル上では以下の項目の設定になります。

Azureポータル上でのVNetのDNS設定変更画面

クライアントVM上でもDNSサーバーの設定が変更されていることを確認できます。

PS C:\> ipconfig /all | sls "dns server"

   DNS Servers . . . . . . . . . . . : 10.8.0.68


PS C:\>

3-2.クライアントVMにてドメイン参加する

以下のPowershellを実行して参加させます。
今回は作成したOUにクライアントVMもコンピューターとして追加します。

# クライアント端末側でADドメインに参加
$DomainDNSName = "hogehoge.com"
Add-Computer $DomainDNSName -OUPath 'OU=TestOU, DC=hogehoge, DC=com'

上記を実行すると認証画面が出てくるのでADの管理者ユーザー(仮想マシン作成時に作成したユーザー)で認証を実施します。

ドメイン参加時に求められる認証画面

認証が完了したら再起動を促す文言が出力されるので「Restart-Computer」で再起動します。

PS C:\> $DomainDNSName = "hogehoge.com"
PS C:\> Add-Computer $DomainDNSName -OUPath 'OU=TestOU, DC=hogehoge, DC=com'

cmdlet Add-Computer at command pipeline position 1
Supply values for the following parameters:
Credential
WARNING: The changes will take effect after you restart the computer VM-Test-Client.
PS C:\>
PS C:\> Restart-Computer

再起動後にログインして確認するとドメイン参加していることが分かります。

PS C:\> Get-WMIObject Win32_ComputerSystem


Domain              : hogehoge.com
Manufacturer        : Microsoft Corporation
Model               : Virtual Machine
Name                : VM-Test-Client
PrimaryOwnerName    :
TotalPhysicalMemory : 8588759040



PS C:\>

OU側にもコンピューターが登録されていることが確認できます。

ADサーバ側でもOUへの参加が確認できる

これにてADサーバの構築からドメイン参加の設定は完了です。

[参考] GUIでのドメイン参加

上記のPowershellコマンドは、GUIでの以下の設定変更と同じことを実施しています。

・[設定]>[システム]>[詳細情報]>[システムの詳細情報]をクリック、[システムのプロパティ]>[コンピューター名]>[変更]をクリックして表示されるドメインの変更画面

GUIでドメイン参加設定をする際の変更箇所

[注意点] DNSサーバの向き先をADサーバにしないとクライアントVMにアクセスできない

DNSサーバの向き先をADサーバにしないと、ADサーバ側で作成したドメインユーザーからクライアントVMにアクセスできません。

以下のようなエラーとなります。

DNSサーバの向き先を変更しないとADユーザーでアクセスできなくなる

ちなみにローカルユーザー(仮想マシン作成時に作成したユーザー)はドメインと関係がないためログインすることが可能です。

PS C:\> # ログインしているユーザー
PS C:\> whoami
vm-test-client\hogeuser
PS C:\>
PS C:\> # 参加しているドメインの確認
PS C:\> Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty Domain
hogehoge.com
PS C:\>
PS C:\> # DNSサーバーのIP
PS C:\> ipconfig /all | sls "dns server"

   DNS Servers . . . . . . . . . . . : 168.63.129.16


PS C:\>

コメント

タイトルとURLをコピーしました