AWS Systems Manager를 통한 VPC내 Windows 인스턴스 패치 방법
프라이빗 서브넷에 있는 Windows 인스턴스를 패치하는 작업은 해당 Amazon EC2 인스턴스가 인터넷에 연결되어 있지 않기 때문에 쉽지 않습니다. 이 블로그 게시물에서는 AWS Systems Manager 및 WSUS(Windows Server Update Services)를 사용하여 해당 인스턴스를 업데이트된 상태로 유지하는 방법을 설명합니다.
적절한 엔드포인트, 보안 그룹 및 네트워크 ACL(액세스 제어 목록)을 사용하여 새 VPC를 만듭니다. 이러한 방법으로 프라이빗 서브넷의 인스턴스가 인터넷에 연결되지 않더라도 동시에 소프트웨어 업데이트로 최신 상태를 유지할 수 있습니다.
기본 설정하기
1. VPC 및 엔드포인트 만들기
이 실습을 위해 Amazon Virtual Private Cloud(Amazon VPC)의 VPC 시작 마법사를 사용하여 새 VPC를 만들려고 합니다. 그러나 VPC를 만들기 전에 먼저, VPC 생성의 일환으로 프로비저닝할 NAT 게이트웨이에 대해 탄력적 IP(EIP) 주소를 할당해야 합니다.
AWS 관리 콘솔을 열고 Amazon VPC 콘솔로 이동합니다. VPC 만들기 페이지의 왼쪽 탐색 창에서 탄력적 IP를 선택하고 새 EIP 주소를 할당합니다.
다음으로 퍼블릭 및 프라이빗 서브넷이 있는 VPC 옵션을 선택하여 VPC를 만듭니다. 기본 설정을 사용하여 VPC를 만들고, 이전에 NAT 게이트웨이용으로 예약한 EIP를 탄력적 IP 할당 ID 항목에 지정합니다.
자세한 내용은 설명서에서 VPC 만들기 부분을 참조하십시오. AWS CloudFormation을 사용하여 VPC를 만들려면 이 VPC 템플릿을 참조하십시오.
VPC를 만든 후에는 System Manager용 VPC 엔드포인트를 프라이빗 서브넷에 추가해야 합니다. VPC 엔드포인트를 사용하면 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 AWS Direct Connect 연결 없이도 PrivateLink에서 제공하는 AWS 서비스 및 VPC 엔드포인트 서비스에 VPC를 비공개로 연결할 수 있습니다. VPC의 인스턴스는 서비스의 리소스와 통신하는 데 퍼블릭 IP 주소가 필요하지 않습니다. VPC와 다른 서비스 간 트래픽은 Amazon 네트워크 내에서 전송됩니다. Systems Manager에 대한 VPC 엔드포인트 설정 설명서를 참조하십시오. 다음 단계에서는 아래와 같은 엔드포인트를 만듭니다.
- ssm – Systems Manager API의 엔드포인트
- ec2messages – Run Command 메시징 서비스의 엔드포인트
- ec2 – 연결된 Amazon EBS 볼륨을 열거하는 데 사용되는 엔드포인트
- ssmmessages – Session Manager 메시징 서비스의 엔드포인트
- s3 – 로그 및 문서에 사용되며 Systems Manager 에이전트를 업데이트하는데 사용되는 Amazon S3의 엔드포인트
AWS Systems Manager 서비스에 com.amazonaws.region.ssm 엔드포인트를 사용합니다.
com.amazonaws.region.ec2messages 엔드포인트를 사용하여 SSM 에이전트에서 Systems Manager 서비스를 호출합니다.
Systems Manager를 사용하여 VSS가 활성화된 스냅샷을 생성할 경우 EC2 서비스에 대한 엔드포인트가 있는지 확인해야 합니다. EC2 엔드포인트를 정의하지 않은 경우 연결된 EBS 볼륨을 열거하는 호출이 실패하므로 Systems Manager 명령이 실패하게 됩니다.
com.amazonaws.region.ec2는 EC2 서비스의 엔드포인트입니다.
다음 엔드포인트는 Session Manager를 사용하여 보안 데이터 채널을 통해 인스턴스에 연결할 경우에만 필요합니다.
com.amazonaws.region.ssmmessages는 EC2 서비스의 엔드포인트입니다.
마지막으로 VPC에 Amazon S3 게이트웨이 엔드포인트를 만듭니다. Systems Manager는 Amazon S3 출력 로그를 업로드하고 SSM 에이전트를 업데이트하는데 이 엔드포인트를 사용합니다.
2. 보안 – 보안 그룹 및 네트워크 ACL 만들기
퍼블릭 서브넷을 위한 보안 그룹을 만들고 프라이빗 서브넷을 위한 다른 보안 그룹을 만듭니다. 퍼블릭 서브넷의 인바운드 규칙은 프라이빗 서브넷 및 RDP용 TCP 포트 3389의 모든 트래픽(알려진 IP 주소에서 전송된)을 허용해야 합니다.
퍼블릭 서브넷의 아웃바운드 규칙은 모든 대상에 대한 트래픽을 허용해야 합니다.
프라이빗 서브넷의 인바운드 규칙은 퍼블릭 서브넷에 오가는 TCP 포트 3389 트래픽을 허용해야 합니다.
이렇게 하면 퍼블릭 서브넷의 “점프 박스/배스천 호스트” 사용이 허용되므로 원격 데스크톱을 사용하여 프라이빗 서브넷의 Windows 인스턴스에 연결할 수 있습니다. 이 단계는 원격 데스크톱을 사용하여 프라이빗 서브넷의 인스턴스에 연결하려는 경우에만 필요합니다. AWS Session Manager를 사용하는 고객은 이 단계를 건너뛸 수 있습니다. 자세한 내용은 AWS Session Manager를 참조하십시오. 퍼블릭 서브넷에서 WSUS를 실행하는 Windows 인스턴스를 이 목적으로 사용할 수 있습니다. 프라이빗 서브넷의 아웃바운드 규칙은 퍼블릭 서브넷에 대한 모든 트래픽을 허용해야 합니다.
Windows 인스턴스에 원격으로 연결하는 방법에 대한 자세한 내용은 Windows 인스턴스 연결 설명서 및 Windows 인스턴스의 인바운드 트래픽 권한 부여 설명서를 참조하십시오.
프라이빗 서브넷에서 실행 중인 SSM 에이전트는 에이전트가 인스턴스를 스캔 및 패치할 수 있게 해주는 Windows PowerShell 모듈을 설치하기 위헤 Amazon S3에 연결해야 합니다. SSM 에이전트가 Amazon S3에 연결되도록 하려면 프라이빗 서브넷 네트워크 ACL에 S3 접두사를 추가해야 합니다. S3 접두사는 리전에 따라 다릅니다. 예를 들어 us-west-2 AWS 리전의 S3 접두사를 확인하기 위해서는 AWS CLI에서 다음 명령을 실행할 수 있습니다.
CLI 명령의 출력에서 다음과 같이 S3에 대한 정보를 확인할 수 있습니다.
"PrefixListName": "com.amazonaws.us-west-2.s3", "Cidrs": [ "54.231.160.0/19", "52.218.128.0/17", "52.92.32.0/22" ],
S3 접두사에 대해 자세히 알아보려면 describe-prefix-lists에 대한 AWS CLI 참조 설명서 및 게이트웨이 VPC 엔드포인트에 대한 Amazon VPC 설명서를 참조하십시오.
프라이빗 서브넷의 아웃바운드 규칙에서 S3 접두사 각각에 대한 HTTPS(포트 443) 트래픽을 구성합니다. 다음은 프라이빗 서브넷의 아웃바운드 규칙의 예입니다.
3. 퍼블릭 서브넷에 WSUS 서버 설치
퍼블릭 서브넷에 Windows Server 인스턴스를 설치하고 이 인스턴스에 퍼블릭 서브넷 보안 그룹을 할당합니다. Windows 업데이트에서 패치 데이터를 주기적으로 다운로드하도록 WSUS 역할을 설치 및 구성합니다. WSUS 업데이트 폴더에 150GB 이상의 하드 드라이브 공간이 있어야 합니다. WSUS 설치 및 구성에 대한 자세한 내용은 Microsoft 설명서를 참조하십시오.
4. 프라이빗 서브넷에 Windows 인스턴스 설치
프라이빗 서브넷에서 Windows 인스턴스를 만들고 프라이빗 서브넷 보안 그룹 과 기본 VPC 보안 그룹을 이 인스턴스에 할당합니다. 인스턴스에 기본 VPC 보안 그룹을 할당하는 것이 매우 중요합니다. 이를 통해 SSM 에이전트가 Systems Manager 서비스와 통신할 수 있습니다. Windows 업데이트 에이전트가 퍼블릭 서브넷의 WSUS 서버를 사용하도록 구성합니다. 이 작업은 인스턴스의 레지스트리를 편집하거나 그룹 정책을 사용하여 수행할 수 있습니다. 또한 State Manager와 새 PowerShell DSC를 사용하여 서버를 구성할 수도 있습니다. 자세한 내용은 PowerShell DSC와 DSC 레지스트리 리소스를 참조하십시오. 또한 자동 업데이트에 대한 그룹 정책 설정 구성 및 레지스트리 설정을 사용하여 자동 업데이트 구성과 관련한 Microsoft 설명서를 참조하십시오.
다음은 레지스트리 구성의 예제입니다.
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsWindowsUpdate] "WUServer"="http://10.0.0.126:8530" "WUStatusServer"="http://10.0.0.126:8530" "AcceptTrustedPublishersCerts"=dword:00000001 "TargetGroups"="Servers" "TargetGroupEnabled"=dword:00000000 "UpdateServiceUrlAlternate"="" [HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsWindowsUpdateAU] "AUOptions"=dword:00000004 "NoAutoUpdate"=dword:00000000 "UseWUServer"=dword:00000001 "ScheduleInstallDay"=dword:00000000
최신 WSUS는 포트 80 및 443 대신 HTTP 포트 8530 또는 HTTPS 포트 8531을 사용한다는 점에 유의해야 합니다. 또한 WSUS 관리 콘솔을 사용하여, WSUS가 인스턴스를 스캔 또는 패치하기 전에 Windows 업데이트와의 동기화가 완료되었는지 확인해야 합니다.
프라이빗 서브넷에서 Windows 인스턴스 스캔 및 패치
1. SSM 에이전트가 Systems Manager와 통신 중인지 확인
이제 프라이빗 서브넷의 Windows 인스턴스가 Systems Manager에 표시됩니다. 이를 확인하려면 Systems Manager 콘솔을 연 후 관리형 인스턴스 페이지로 이동합니다. Windows 인스턴스 목록이 표시되는데 Ping 상태가 Online이어야 합니다.
2. Run Command
Windows 인스턴스를 스캔 또는 패치하려면 AWS Systems Manager Run Command에서 AWS-RunPatchBaseline 문서를 사용합니다. AWS-RunPatchBaseline은 Windows의 기본 패치 기준을 실행합니다. AWS-DefaultPatchBaseline은 기본 Windows 패치 기준입니다. 여기에는 모든 중요 업데이트와 중대하거나 중요한 심각도의 보안 업데이트가 포함됩니다. WSUS는 기본적으로 동일한 패치 범주 및 심각도를 자동으로 승인하도록 구성됩니다. 기본 AWS 패치 기준이 환경에 적합하지 않은 경우 AWS Systems Manager Patch Manager를 사용하여 새로운 패치 기준을 만들 수 있습니다. 자세한 내용은 기본 및 사용자 지정 패치 기준을 참조하십시오. 새 패치 기준을 Windows의 기본 기준으로 설정하고 요구 사항에 따라 WSUS 자동 승인을 구성하거나, 패치 그룹 태그를 사용하여 적절한 인스턴스에 대한 새 패치 기준 대상으로 지정합니다.
스캔을 수행하려면 AWS Systems Manager 콘솔의 명령 실행 페이지에서 AWS-RunPatchBaseline 문서를 선택하고 작업에서 스캔 옵션을 선택합니다. 대상을 지정하고 S3에 대한 쓰기를 활성화할지 여부를 선택한 후 명령을 실행합니다. 이 명령은 AWS-DefaultPatchBaseline에 포함된 패치를 스캔하고 규정 준수를 보고합니다. 명령이 성공적으로 실행되면 규정 준수에서 스캔 결과를 확인합니다. 다음은 실행 결과의 한 예입니다.
Windows 인스턴스를 수동으로 패치하려면 AWS-RunPatchBaseline 문서를 다시 실행합니다. 그러나 이번에는 작업으로 설치를 선택합니다. 이 작업을 수행하면 Windows 인스턴스는 구성된 패치 기준에서 누락된 패치를 적용합니다. Windows 인스턴스는 WSUS 서버로 이동해서 필수 패치를 다운로드하여 설치한 후 재부팅합니다.
3. 상태 관리자
패치가 정기적으로 수행되도록 예약하기 위해서 AWS Systems Manager 유지 관리 기간 기능 또는 AWS Systems Manager 상태 관리자를 사용할 수 있습니다. 패치가 수행된 후 인스턴스 재부팅 시기를 완벽하게 제어하려면 유지 관리 기간 기능을 사용하는 것이 좋습니다. 재부팅을 특별히 중요하게 여기지 않는 경우 상태 관리자를 사용하여 패치 적용을 원하는 상태 구성의 한 형태로 수행할 수 있습니다. 또한 콘솔에 패치 적용을 위한 새롭고 쉬운 온보딩 환경을 추가했습니다(AWS Systems Manager 콘솔의 패치 관리자 섹션에서 패치 적용 구성 버튼 참조). 패치 적용 구성을 통해 고객은 자동 패치 적용을 쉽게 설정할 수 있습니다.
상태 관리자는 자동 패치 적용에 사용할 수 있습니다. 연결은 대상 집합에 적용할 상태를 정의합니다. 여기에는 세 가지 구성 요소, 즉 상태, 대상 및 일정을 정의하는 문서가 포함됩니다.
예를 들어 스캔 및 설치 모드에서 AWS-RunPatchBaseline을 매일 실행하도록 연결을 생성할 수 있습니다.
AWS Systems Manager 콘솔에서 상태 관리자 페이지로 이동하고 연결 생성의 문서 섹션에서 다음과 같이 AWS-RunPatchBaseline 문서를 검색한 후 선택합니다.
스캔 옵션을 선택하는 경우 AWS-RunPatchBaseline은 인스턴스의 패치 규정 준수 상태를 확인하고 이 정보를 패치 관리자에 보고합니다. 스캔은 설치할 업데이트 또는 재부팅할 인스턴스를 즉시 표시하지 않습니다. 대신 이 작업은 인스턴스에 승인되고 적용 가능한 업데이트가 누락된 경우를 식별합니다.
설치 옵션을 선택하는 경우 AWS-RunPatchBaseline은 인스턴스에대해 승인되고 적용 가능한 업데이트 중에 누락된 항목을 설치 시도합니다.
또한 CRON 형식의 일정을 지정하여 연결을 실행할 수도 있습니다.
4. Systems Manager의 기능은 패치 적용에 한정되지 않음
SSM 에이전트는 Windows 인스턴스에 설치되므로 수행 가능한 작업이 패치 적용에 한정되지 않습니다. 인스턴스에서 태그 기반 인벤토리를 수집하거나 Run Command를 사용하여 다른 문서를 실행하는 등의 작업을 수행하는 것과 같은 Systems Manager의 전체 기능을 활용할 수 있습니다. AWS Systems Manager의 다양한 용도에 대한 자세한 내용은 다음 블로그 게시물을 참조하십시오.
- 태그를 이용해서 AWS Systems Manager 인벤토리 사용
- Systems Manager를 이용한 S3 동기화 기능 사용
- AWS Systems Manager 자동화를 이용하여 중앙 집중식 다중 계정 및 다중 리전 패치 적용
이 연습을 위해 AWS의 프라이빗 서브넷을 사용했지만, 여러분의 프라이빗 클라우드에서 Windows를 패치하는 데도 동일한 개념을 사용할 수 있습니다. Systems Manager는 하이브리드 환경에서 서버 및 가상 머신을 관리할 수 있습니다. AWS Systems Manager 정품 인증 및 하이브리드 환경에서 AWS Systems Manager 설정에 대해 자세히 알아보려면 설명서의 다음 항목을 참조하십시오.
이 글은 AWS Management Tools 블로그의 How to patch Windows EC2 instances in private subnets Using AWS Systems Manager의 한국어 번역으로 김순근님이 감수하였습니다.