윈도우 서버간 통신을 자동스크립트를 생성하여 파일 배포 및 명령어 실행 시 패스워드를 하드코딩해서 넣으면 보안취약점으로 지적을 받습니다.
이때 패스워드를 파일로 암호화하여 저장해 두고, 변수로 선언하여 사용하는 방법이 있네요.
암호화 파일 만들기
PS C:\WINDOWS\system32> Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File -FilePath c:\cred.txt
************* # 패스워드 입력
PS C:\WINDOWS\system32>
cred.txt 내용 보기
01000000d08c9ddf0115d1118c7a00c04fc297eb010000000b464dafe9afab4a8b426b3595128ba00000000002000000000003660000c000000010000000be62cdae82fc8a4f2cd7bf2ea3089ac60000000004800000a000000010000000a2b5f4768a73d76011a84bc70dd5e9c610000000c73efee628af3c133ad0e42befb36257140000001d386d28f83d911c3b4aac2f323d824a1627c2a6
암호화된 파일 읽어오기
$cred = Get-Content c:\cred.txt -ErrorAction Stop | ConvertTo-SecureString
$cred = [System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($cred)
$cred = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($cred)
다른 서버에서 cred.txt 파일을 복호화 하니까 오류가 나네요.
PS C:\Users\Administrator> $cred = Get-Content c:\cred.txt -ErrorAction Stop | ConvertTo-SecureString
ConvertTo-SecureString : Key not valid for use in specified state.
At line:1 char:53
+ ... = Get-Content c:\cred.txt -ErrorAction Stop | ConvertTo-SecureString
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [ConvertTo-SecureString], CryptographicException
+ FullyQualifiedErrorId : ImportSecureString_InvalidArgument_CryptographicError,Microsoft.PowerShell.Commands.Conv
ertToSecureStringCommand
PS C:\Users\Administrator>
활용 방안
#powhershell에서만 적용
# 변수에 저장된 패스워드 파일로 해당 서버의 자격증명을 생성
cmdkey /generic:192.168.000.000 /user:administrator /pass:$cred
# 생성한 자격증명의 서버에 패스워드 없이 접속하기
mstsc /v 192.168.000.000
'기술 노트 > Windows' 카테고리의 다른 글
Windows 로그인 OTP 적용하기 (1) | 2024.10.10 |
---|---|
출력문에서 필드 변수 선언하기 (0) | 2024.01.18 |
virtualbox 설치하기 (0) | 2023.09.27 |
Windows PC 시간 예약해서 끄기 (0) | 2023.06.23 |
가상 OS 설치하기 (0) | 2023.05.10 |