AWS Systems Manager의 기능 중 하나인 Patch Manager란?
보안 업데이트와 기타 중요한 소프트웨어 업데이트를 자동으로 관리해주는 서비스입니다.
이 글에서는 Patch Manager의 주요 개념과 간단한 실습을 통해 이를 활용하는 방법을 공부해보았습니다.
Systems Patch Manager란?
AWS 공식 문서에 따르면 Patch Manager는 "보안 관련 업데이트 및 기타 유형의 업데이트로 관리형 노드를 패치하는 프로세스를 자동화"하는 서비스입니다.
간단히 말해, AWS 계정 내에서 운영되는 애플리케이션 및 인스턴스의 패치 버전을 자동으로 관리해주는 편리한 도구입니다.
1. 실습: Quick Setup을 이용한 패치 관리 자동화
간단한 실습을 통해 동작 방식을 확인해보고자 한다.
실습은 AWS 공식 문서에서 권장하는 방식인 'Quick Setup' 기능을 사용할 예정이다.
1. 준비 단계
IAM 준비
- AWS Systems Manager 사용을 위한 필수 정책은 설정 과정에서 자동으로 생성됨
- 필수 정책:
- AmazonSSMManagedInstanceCore
- AWSQuickSetupPatchPolicyBaselineAccess
(참고: AmazonEC2RoleforSSM 정책은 지원 종료 예정)
[참고]
- AmazonEC2RoleforSSM 정책은 곧 지원이 중단될 예정이라 미사용하는 것을 권장한다. (링크)
- Instance Profile Options 를 체크하면 자동으로 생성된다.
EC2 인스턴스 준비
- Amazon Linux 2 AMI를 선택하여 EC2 인스턴스 2개 생성
- 아래 명령어로 SSM Agent 설치 여부 확인:
sudo systemctl status amazon-ssm-agent
3. Action -> Instance settings -> Modify Instance meta data options -> optional 체크 확인
(IMDSv2 에서는 fail 발생, 아마도 토큰값을 넣지 않고 통신하는 것 같은데 원인은 찾는 중이다..)
[참고]
- Amazon Linux2 AMI 를 사용하는 이유는 AWS에서 제공하는 Linux 배포판이기 때문에 AWS 환경에 최적화 되어 있기 때문이다.
- SSM Agent는 기본으로 설치되어 있고, 아래 명령어로 확인 가능하다.
ㄴ sudo systemctl status amazon-ssm-agent
2. Systems Patch Manager 설정
Systems Manager > Quick Setup > Patch Manager로 이동
1. 이름 입력
- 예시) ssm-patch-test
2. scan
- Scan: 누락된 패치를 스캔하여 보고서 제공
3. Patch 기준선 설정
- Patch 기준선: 운영 체제(OS) 및 심각도 등의 기본 정책 사용
4. 로그 데이터 저장
- 보유하고 있는 S3에 로그 데이터 저장 가능 // 이번 실습에서는 다루지 않는다.
5. Target Nodes 설정
- 대상 노드: 패치 정책을 적용할 EC2 인스턴스 선택
6. Rate Control
- Rate Control: 동시 패치 작업 노드 수 및 오류 허용 한도 기본값 사용
7. Local Deployment Roles
- Quick Setup을 사용하기 위한 IAM 권한을 생성하는 설정
8. 생성
- 나머지 설정들은 그대로 둔 채로 Create(생성) 버튼을 클릭
3. Systems Patch Manager 실습
1. 취약한 버전의 RPM 파일 다운로드
- 비교를 위해 생성했던 2개의 EC2 중에 1대에만 설치를 진행
# RPM 파일 다운로드
wget http://vault.centos.org/7.1.1503/os/x86_64/Packages/httpd-2.4.6-31.el7.centos.x86_64.rpm
wget http://vault.centos.org/7.1.1503/os/x86_64/Packages/httpd-tools-2.4.6-31.el7.centos.x86_64.rpm
wget http://vault.centos.org/7.1.1503/os/x86_64/Packages/apr-1.4.8-3.el7.x86_64.rpm
wget http://vault.centos.org/7.1.1503/os/x86_64/Packages/apr-util-1.5.2-6.el7.x86_64.rpm
# 의존성 패키지 설치
sudo yum install -y apr-1.4.8-3.el7.x86_64.rpm apr-util-1.5.2-6.el7.x86_64.rpm
#취약한 버전의 패키지 설치
sudo yum install -y httpd-2.4.6-31.el7.centos.x86_64.rpm httpd-tools-2.4.6-31.el7.centos.x86_64.rpm
# 설치한 패키지 버전 확인
httpd -v
2. Systems Manager의 Run Command 사용하여 패치 적용
- 아래 캡처와 같이 설정, 그 외의 캡처에 없는 설정 부분은 기본값 그대로 둔다.
- 실습 편의를 위해 S3 부분도 비활성화 했다.
- 아래와 같이 Success 결과를 확인이 가능하다.
3. Systems Manager의 Compliance에서 스캔 결과 확인
- 정상적으로 취약 버전을 스캔한 결과 확인
4. Systems Manager의 Patch Manager에서도 스캔 결과 확인
- 취약한 버전으로 설치했던 패키지명 정상 스캔 확인
참고 링크
- https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/patch-manager.html