Azure

VDI용 windows master image 만들기

killhun 2022. 12. 7. 12:42

VDI란? 

데이터센터에 연결하는 개인용 박스(컴퓨터) 이다.

 

VDI는 전통적인 데스크톱PC에 대한 대안으로 고안되었으며 이론적으로 VDI는 사용자의 PC에 OS와 SW를 설치하지 않고

클라우드 데이터센터와 연결된다.

 

데이터센터의 대규모 서버, 스토리지 팜에서 모든 SW 구동이 이뤄지며, 사용자는 자신의 단말기를 이미지 뷰어로 이용하는 것이다.

 

VDI를 사용하는 이유?

문서보안의 혜택과 데이터센터에 모든 정보를 저장하고 사용자 단말기 저장을 최소화하므로 중요한 기업정보의 유출우려가 적다.

 

비밀번호 관리만 잘 한다면 완벽에 가깝다. , 기업 IT 관리자의 직원PC 관리에 대한 비용과 수고를 덜어준다.

 

Master image란?

여러 VDI Client들이 동일한 버전의 OS를 사용할수 있게 하기 위한 원본 image 이다.

 

 

01. Hyper-V  사용 및 가상 머신 설치 

Azure 가상머신으로 만들어도 되지만 로컬 컴퓨터의 Hyper-V를 사용해서 만들면 더 빠르기 때문에 Hyper-V를 사용

 

VM을 만든 후 VM 설정창에 들어가 검사점을 꼭 제거 해줘야 함!

 

설치 후 부팅 디스크를 제거해줘야 함

 

 

참조 문서: https://learn.microsoft.com/ko-kr/azure/virtual-machines/windows/prepare-for-upload-vhd-image

02. PowerShell 스크립트 작성

PowerShell 관리자 모드로 들어간 후 SFC 명령 실행.

sfc.exe /scannow

 

WinHTTP 프록시 제거

netsh.exe winhttp reset proxy

 

DiskPart 열기

diskpart.exe

 

디스크 SAN 정책을 Onlineall로 설정

DISKPART> san policy=onlineall

DISKPART> exit

 

Windows UTC 시간 설정 및 시간 서비스인 w32time의 시작 유형을 자동으로 설정

Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -Name RealTimeIsUniversal -Value 1 -Type DWord -Force

 

Set-Service -Name w32time -StartupType Automatic

 

전원 프로필을 고성능으로 설정

powercfg.exe /setactive SCHEME_MIN

powercfg /setacvalueindex SCHEME_CURRENT SUB_VIDEO VIDEOIDLE 0

 

TEMP TMP 환경 변수가 기본값으로 설정되어 있는지 확인

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' -Name TEMP -Value "%SystemRoot%\TEMP" -Type ExpandString -Force

 

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' -Name TMP -Value "%SystemRoot%\TEMP" -Type ExpandString -Force

 

Windows 서비스가 Windows 기본값으로 설정되어 있는지 확인

Get-Service -Name BFE, Dhcp, Dnscache, IKEEXT, iphlpsvc, nsi, mpssvc, RemoteRegistry |

 

Where-Object StartType -ne Automatic |

    Set-Service -StartupType Automatic

 

Get-Service -Name Netlogon, Netman, TermService |

  Where-Object StartType -ne Manual |

    Set-Service -StartupType Manual

 

RDP(원격 데스크톱 프로토콜) 활성화 확인

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections -Value 0 -Type DWord -Force

 

Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services' -Name fDenyTSConnections -Value 0 -Type DWord -Force

 

기본 3389 사용하여 RDP 포트 올바르게 설정되어 있는지 확인

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp' -Name PortNumber -Value 3389 -Type DWord -Force

 

수신기가 모든 네트워크 인터페이스에서 수신 대기 하는지 확인

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp' -Name LanAdapter -Value 0 -Type DWord -Force

 

 

RDP 연결의 NLA 모드를 구성

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 1 -Type DWord -Force

 

연결 유지 값 설정

Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services' -Name KeepAliveEnable -Value 1  -Type DWord -Force

 

Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services' -Name KeepAliveInterval -Value 1  -Type DWord -Force

 

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp' -Name KeepAliveTimeout -Value 1 -Type DWord -Force

 

다시 연결 옵션 설정

Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services' -Name fDisableAutoReconnect -Value 0 -Type DWord -Force

 

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp' -Name fInheritReconnectSame -Value 1 -Type DWord -Force

 

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp' -Name fReconnectSame -Value 0 -Type DWord -Force

 

동시 연결 수 제한

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp' -Name MaxInstanceCount -Value 4294967295 -Type DWord -Force

 

RDP 수신기에 연결된 자체 서명된 인증서를 모두 제거

if ((Get-Item -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp').Property -contains 'SSLCertificateSHA1Hash')

{

    Remove-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name SSLCertificateSHA1Hash -Force

}

 

세 개 프로필(도메인, 표준 및 공용)에서 Windows 방화벽 킴

Set-NetFirewallProfile -Profile Domain, Public, Private -Enabled True

 

세 개의 방화벽 프로필(도메인, 프라이빗 및 공용)을 통해 WinRM을 허용하고 PowerShell 원격 서비스를 사용하도록 설정

Enable-PSRemoting -Force

Set-NetFirewallRule -Name WINRM-HTTP-In-TCP, WINRM-HTTP-In-TCP-PUBLIC -Enabled True

 

방화벽 규칙을 사용하도록 설정하여 RDP 트래픽을 허용

Set-NetFirewallRule -Group '@FirewallAPI.dll,-28752' -Enabled True

 

VM이 가상 네트워크 내의 ping 요청에 응답할 수 있도록 파일 및 프린터 공유에 대한 규칙을 사용하도록 설정

Set-NetFirewallRule -Name FPS-ICMP4-ERQ-In -Enabled True

 

Azure 플랫폼 네트워크 규칙 만듬

New-NetFirewallRule -DisplayName AzurePlatform -Direction Inbound -RemoteAddress 168.63.129.16 -Profile Any -Action Allow -EdgeTraversalPolicy Allow

 

New-NetFirewallRule -DisplayName AzurePlatform -Direction Outbound -RemoteAddress 168.63.129.16 -Profile Any -Action Allow

 

VM이 다시 시작할 때 디스크를 검사하게 설정

chkdsk.exe /f

 

03. Sysprep

sysprep이란? 다른 PC에 이 OS를 설치할 수 있도록 하기 위해서 PC 관련 정보를 제거 해주는 작업임.

제거를 해주지 않으면 OS는 PC에 종속이 되어서 다른 PC에 설치할수 없음.

 

Sysprep 돌리기

가상 하드 디스크 편집 마법사에서 VHD로 변환(Virtual Box로 했으면 생략)

 

04. Azure Storage Explorer

 

Azure Storage ExplorerAzure 계정을 로그인 후 구독을 켜줌

 

Azure Storage Explorer을 사용하여 파일 업로드를 함.

 

05. 이미지 생성 및 이미지를 사용하여 VM 생성 

Azure 포탈에 접속해서 이미지 검색 후 이미지를 만들어 줌

 

이미지를 사용하여 VM 생성 , 라이선스 형식 체크를 하면 VM 생성 후 원격 접속시 보안 관련해서 에러뜰수도 있음. 공란으로 두는 것을 추천

 

부트 진단을 통하여 이미지 부팅시에 이상이 없는지 확인 , mstsc를 통하여 접속

 

 

06. 번외 Virtual box 사용(Hyper-V로 안될 시)

작성은 Virtual box 6.1 버전이며 안정적인 버전이라 6.1을 추천

 

양방향과 마우스 통합 설치를 해주어야 마우스로 복붙이. Sysprep 돌리기전 통합 설치 삭제.

VM 설치를 다했으면 OS 디스크 제거 후 02번의 Power shell 부터 진행해주면 됨

'Azure' 카테고리의 다른 글

Azure S2S 실습  (1) 2022.12.07