728x90

AWS IAM

IAM의 보안 모범 사례 I - 루트 계정

  1. 루트 액세스 키 삭제
  2. MFA 활성화
  3. IAM 사용자 및 그룹 관리 (개별 IAM 사용자 생성, 그룹을 사용한 권한 할당)
  4. IAM 비밀번호 정책 적용

루트 액세스 키 삭제

루트 계정에 해당하는 보안 항목

 

루트 계정으로 로그인 > IAM 콘솔 접속
AWS 계정 생성 후 첫 로그인 시에는 취약한 보안 상태를 확인할 수 있음

 

추후 모범 사례에 따른 보안 설정을 마친다면 안전한 상태가 됨

 

액세스 키 존재 여부 확인

 

액세스 키가 존재한다면 해당 키를 삭제한다.

 

MFA 활성화

루트 계정과 사용자 계정 모두 적용되는 항목

 

MFA 호환 앱 확인

AWS 공식 홈페이지에서 안내하는 가상 MFA 디바이스 설정과 호환되는 애플리케이션 목록 확인

 

여러 개의 애플리케이션 중 한 가지를 선택하여 설치

 

루트 계정에서 MFA 활성화

 

가상 MFA 디바이스 선택

 

다운로드한 어플리케이션 실행 > 바코드 스캔

 

QR 코드 표시 > QR 코드 스캔 > MFA 코드 두 번 입력 > MFA 할당
MFA 활성화 완료

 

IAM 사용자 및 그룹 관리

 

결제 정보에 대해 IAM 사용자 접근 권한을 부여하는 설정 (루트 계정에서만 설정 가능)

 

내 계정

 

편집

 

IAM 액세스 활성화 체크 > IAM 사용자가 결제 대시 보드에 액세스할 수 있음

 

사용자와 그룹을 직무 또는 역할따라 생성하고 그룹 단위로 정책을 할당하여 관리한다.

AWS에서는 루트 계정 사용을 최소화하고 IAM 사용자와 그룹을 이용하여 관리자 IAM 사용자 및 그룹을 생성하여 사용하는 것을 권장한다. (단, AdministratorAccess 정책은 관리자 사용자 및 그룹에게만 부여할 것을 주의한다)

 

관리자 사용자 추가
관리자 그룹 생성
AdministratorAccess 정책을 연결하여 관리자 권한 부여
.csv 파일은 추후 액세스 키 재발급 등으로 주기적인 교체를 해주는 것을 권장한다.

 

IAM 비밀번호 정책 적용

 

 

 

728x90
728x90

Amazon VPC

VPC Flow Logs 구성

  1. CloudWatch 로그 그룹 생성
  2. IAM 역할 생성
  3. Flow Logs 생성
    - VPC, 서브넷, 게이트웨이 등 네트워크 인터페이스

 

VPC Flow Logs란?

VPC의 네트워크 인터페이스에서 전송되고 수신되는 IP 트래픽에 대한 정보를 수집하는 기능

 

로그 정보

  1. 보안 그룹 및 NACL 규칙에 의해 허용 및 차단된 트래픽 정보
  2. 소스&목적지 IP 주소, 포트, 프로토콜 번호 패킷 바이트 모니터링 간격 시간
  3. ACCEPT 또는 REJECT 액션 정보

 

Flow Logs를 생성할 수 있는 다른 AWS 서비스

  • Elastic Load Balancing
  • Amazon RDS
  • Amazon ElastiCache
  • Amazon Redshift
  • Amazon WorkSpaces
  • NAT 게이트웨이
  • 전송 게이트웨이

 

CloudWatch 로그 그룹 생성

 

ClouWatch 콘솔 접속 > CloudWatch Logs > 로그 그룹 > 로그 그룹 생성

 

로그 그룹 이름 입력 후 생성

 

CloudWatch Logs에 Flow Log를 게시하기 위한 IAM 역할 생성

 

IAM 콘솔 접속 > 역할 > 역할 생성 > AWS 서비스: EC2

 

역할 이름 및 설명 입력 후 생성 완료

 

생성한 역할에 인라인 정책 추가

 

더보기

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

 

위와 같은 최소 권한 필요

 

정책 생성 완료

 

Flow Logs의 역할을 허용하는 신뢰 관계 편집

 

더보기

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "vpc-flow-logs.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Flow Logs 생성

 

플로우 로그를 수집할 VPC 선택 후 플로우 로그 생성

 

플로우 로그 구성

 

플로우 로그 생성 완료

 

Flow logs 확인

플로우 로그 작성 후 약 15분 후에 새로운 로그 그룹이 생성되고 로그를 확인할 수 있음

 

 

728x90
728x90

Amazon Route 53

가비아에서 구입한 도메인 AWS에서 사용하기

  1. Route 53에서 호스팅 영역 생성
  2. 가비아에서 도메인 정보 변경
  3. 네임 서버 변경 적용

 

Route 53에서 호스팅 영역 생성

 

Route 53 콘솔 > 호스팅 영역 생성

 

가비아에서 구매한 도메인 이름 입력 후 호스팅 영역 생성

 

생성된 레코드에서 네임 서버 모두 복사

 

가비아 홈페이지로 접속하여 해당 도메인의 도메인 정보 변경

 

복사한 네임 서버로 변경하여 적용

728x90
728x90

AWS Certificate Manager

인증서 등록

  1. 인증서 요청
  2. DNS 또는 이메일 검증
  3. 발급 완료

 

인증서 요청

인증서 요청

 

도메인 이름 추가

 

DNS 또는 이메일 검증

DNS 또는 이메일 검증 선택

 

도메인 이름 및 검증 방법 검토 후 요청

 

DNS 검증을 위해 Route 53에서 레코드 생성 선택

 

Route 53에서 레코드가 생성된 것을 확인할 수 있음

 

생성된 레코드는 추후 인증서 갱신에 이용되므로 삭제 금지

 

발급 완료

레코드가 생성되고 몇 분 후 발급 완료 상태가 된 것을 확인할 수 있음

728x90
728x90

Amazon RDS

DB 인스턴스의 서브넷 변경

Overview

퍼블릭 서브넷에 있는 RDS DB 인스턴스를 동일한 VPC내의 프라이빗 서브넷으로 이동하는 방법

  1. DB 인스턴스에서 다중 AZ 배포 및 퍼블릭 액세스 가능 여부 비활성화
  2. DB 인스턴스의 IP 주소 검색
  3. 퍼블릭 서브넷 제거 및 DB 인스턴스에 프라이빗 서브넷 추가
  4. DB 인스턴스에서 다중 AZ 활성화
  5. 장애 조치를 통한 DB 인스턴스 재부팅 및 다중 AZ 배포 비활성화
  6. 퍼블릭 서브넷 제거

해당 방법의 이점

  • 새 DB 인스턴스 생성 필요 X
  • 스냅샷 복원 프로세스 사용 필요 X
  • 새 인스턴스 생성 및 트래픽 전환과 관련된 다운타임 최소화, 장애 조치 시에만 다운타임 발생

 

DB 인스턴스에서 다중 AZ 배포 및 퍼블릭 액세스 가능 여부 비활성화

 

RDS 콘솔 접속 > 생성한 DB 인스턴스 선택

 

DB 인스턴스의 연결 & 보안 탭에서 퍼블릭 액세스 가능성 확인(아니요)

 

구성 탭에서 다중 AZ 옵션 확인(아니요)

 

퍼블릭 액세스 가능성과 다중 AZ의 파라미터 값이 아니요라면 수정할 필요 없음

 

다중 AZ의 옵션 해제

 

퍼블릭 액세스 불가, 변경 사항은 즉시 적용하여 DB 인스턴스를 수정함

 

DB 인스턴스 수정이 완료되어 사용 가능 상태인지 확인

 

DB 인스터스의 IP 주소 검색

 

현재 DB 인스턴스는 SSH 연결이 불가하므로 EC2 인스턴스를 Bastion Host로 이용하여 접속할 수 있음 (DB 인스턴스 IP 주소 확인 명령어: dig [DB 인스턴스의 엔드포인트])

 

DB 인스턴스의 IP를 통해 DB 인스턴스가 생성된 가용 영역과 서브넷을 확인할 수 있음

 

퍼블릭 서브넷 제거 및 DB 인스턴스에 프라이빗 서브넷 추가

사전 작업

- DB 인스턴스에 할당할 프라이빗 서브넷 추가

- 프라이빗 라우팅 테이블 생성 후 서브넷 연결

- 해당 작업에서는 172.31.0.0/20, 172.31.16.0/20 서브넷에 연결

 

RDS 콘솔 > DB 인스턴스 > 연결 & 보안 탭 > 서브넷 그룹에서 DB 인스턴스의 서브넷 그룹 확인

 

서브넷 그룹 편집

 

생성한 퍼블릭과 프라이빗 서브넷이 있는 가용 영역을 선택하고 프라이빗 서브넷 선택 후 저장

DB 인스턴스에서 다중 AZ 활성화

 

장애 조치 테스트를 위한 다중 AZ 활성화 설정

 

 

다중 AZ 옵션을 수정하였으므로 DB 인스턴스 수정 상태

장애 조치로 DB 인스턴스 재부팅 및 다중 AZ 배포 비활성화

 

장애 조치를 위한 재부팅

 

장애 조치로 재부팅

 

장애 조치가 진행되면 프라이빗 IP를 사용하는 보조 서브넷이 기본 서브넷으로 변경되고 기존의 퍼블릭 서브넷이 보조 서브넷으로 변경됨

 

서브넷 변경 전 가용 영역과 퍼블릭 서브넷 확인

 

재부팅 후 변경된 가용 영역과 프라이빗 서브넷 확인

 

퍼블릭 서브넷 제거

 

퍼블릭 서브넷 제거를 위해 다중 AZ 배포 비활성화

 

퍼블릭 서브넷 제거 후 필요에 따라 다중 AZ 배포를 활성화 하도록 함

 

서브넷 그룹에서 퍼블릭 서브넷을 제거하고 프라이빗 서브넷 추가

 

728x90
728x90

Amazon EC2

시작 템플릿을 이용한 Auto Scaling 및 Application Load Balancer 구성

  1. 인스턴스 이미지 생성
  2. 인스턴스 시작 템플릿 생성
  3. 시작 템플릿으로 Auto Scaling 및 Application Load Balancer 구성

인스턴스 이미지 생성

실행 중이거나 중지 상태인 인스턴스를 선택하고 작업 > 이미지 및 템플릿 > 이미지 생성 선택

 

이미지 생성 파라미터 입력 (재부팅 안 함 옵션은 인스턴스 중지 없이 AMI 생성을 원할 경우에 선택, 단 활성화 시 생성된 이미지의 파일 시스템 무결성은 보장할 수 없음)

인스턴스 시작 템플릿 생성

시작 템플릿 생성 - 시작 템플릿은 인스턴스 구성을 저장하여 추후에 이를 재사용 및 공유할 수 있음

 

시작 템플릿 이름 및 설명 입력, Auto Scaling 옵션 선택

 

시작 템플릿의 세부 정보 지정 - 인스턴스를 시작할 AMI 선택, 인스턴스 유형, 키 페어 선택

 

시작 템플릿의 세부 정보 지정 - 인스턴스에 적용할 보안 그룹 선택, 스토리지 볼륨 추가

 

시작 템플릿으로 Auto Scaling 구성

시작 템플릿 생성 완료 후 해당 페이지에서 Auto Scaling 그룹 생성을 선택하여 Auto Scaling을 바로 적용할 수 있음

 

Auto Scaling 그룹 이름 입력

 

생성한 템플릿 선택

 

인스턴스 구매 옵션 선택

 

시작 템플릿 생성 시 지정한 보안 그룹의 VPC 선택, 해당 VPC에 생성된 서브넷 선택

 

Auto Scaling 구성과 동시에 로드밸런서 구성도 가능함

 

로드밸런서의 유형과 이름, 체계를 선택

 

로드밸런서를 구성할 가용 영역과 서브넷을 선택하고 리스너와 라우팅을 설정함

 

선택 사항을 검토하여 요건에 맞도록 설정

 

Auto Scaling의 그룹 크기 지정 - 원하는 인스턴스 용량, 최소 용량, 최대 용량 설정

 

조정 정책을 선택하여 평균 CPU 사용률에 따라 Auto Scaling이 동적으로 작동하도록 설정

 

Auto Scaling 그룹까지 구성을 마치면 인스턴스가 시작되는 것을 확인할 수 있음

 

로드밸런서의 대상 그룹에서 인스턴스의 상태 확인

 

728x90
728x90

Amazon EC2

Application Load Balancer 생성 및 SSL 인증서 적용

  1. ALB 생성
  2. Route 53 레코드 생성
  3. 인증서 적용 확인

Load Balancer 구성

로드밸런서 이름 입력 및 HTTPS 리스너 추가

 

ACM을 이용하여 등록한 인증서 선택 (인증서는 로드밸런서와 동일한 리전에 있을 경우에만 선택 가능)  

 

HTTP(80), HTTPS(443)에 대해 허용하는 보안 그룹 생성

 

로드밸런서의 대상 그룹 생성 (대상 그룹과는 80 포트로 통신)

 

대상 그룹에 실행 중인 인스턴스 등록

 

HTTP의 모든 요청을 HTTPS로 리디렉션하도록 설정

 

Route 53 레코드 생성

Route 53에서 레코드를 생성하여 도메인으로 접속 시 ALB로 라우팅하도록 설정

인증서 적용 확인

웹 브라우저에서 도메인을 입력하여 접속하면 인증서가 적용된 것을 확인할 수 있음 (자물쇠 아이콘)

728x90
728x90

Amazon CloudWatch

CloudWatch Agent를 사용하여 Amazon EC2 인스턴스 및 온프레미스 서버로부터 지표 및 로그 수집

  • 온프레미스 서버, 하이브리드 환경의 서버로부터 시스템 수준 지표 수집
  • CloudWatch Agent가 수집하는 지표의 기본 네임스페이스 - CWAgent
  • Agent 구성 시 다른 네임 스페이스도 지정 가능
  • CloudWatch Agent에 의해 수집되는 지표는 사용자 지정 지표 요금으로 청구

Overview

  1. Agent가 서버로부터 지표를 수집할 수 있도록 하거나 필요한 경우 AWS 시스템 관리자와 통합할 수 있도록 하는 IAM 역할 또는 사용자 생성
  2. Agent 패키지 다운로드
  3. CloudWatch Agent 구성 파일 수정 및 수집하려는 지표 지정
  4. 서버에 Agent 설치 후 시작
  5. EC2 인스턴스에 Agent 설치 시 1단계에서 만든 IAM 역할 연결
  6. 온프레미스 서버에 Agent 설치 시 1단계에서 만든 IAM 사용자 자격 증명이 포함되어 있는 명명된 프로필 지정

AWS 시스템 관리자를 사용하여 CloudWatch Agent 설치

  1. CloudWatch Agent와 함께 사용하기 위한 IAM 역할 및 사용자 생성
    - IAM 역할 및 사용자 : CloudWatch Agent가 CloudWatch에 지표를 쓰고 Amazon EC2 및 AWS 시스템 관리자와 통신하도록 하는 데 필요한 권한이 있는 IAM 역할 및 사용자 생성
    - Amazon EC2 인스턴스 : IAM 역할 사용
    - 온프레미스 서버 : IAM 사용자 사용
    - Parameter Store에 쓰는 기능은 광범위하고 강력한 권한이며, 필요 시에만 사용해야 하고, 배포 시 여러 인스턴스에 연결해서는 안 됨
  2. CloudWatch Agent 다운로드 및 구성
  3. Agent 구성을 사용하여 EC2 인스턴스에 CloudWatch Agent 설치
    - CloudWatch Agent 구성을 Parameter Store에 저장하면 다른 서버에 Agent 설치 시 사용 가능
  4. 온프레미스 서버에 CloudWatch Agent 설치

 

CloudWatch Agent를 실행할 IAM 역할 생성

 

IAM 콘솔로 이동
역할 만들기 선택

 

EC2 인스턴스에 연결하여 사용할 역할이므로 EC2 선택

 

CloudWatchAgentServerPolicy 정책 연결 (관리자에게 Parameter Store에 대한 쓰기 권한을 제공할 경우)

 

AmazonSSMManagedInstanceCore 정책 연결(시스템 관리자를 사용하여 Agnet 를 설치하거나 구성할 경우)
해당 역할은 일부 서버에만 연결해야 하며, 관리자만 사용할 것을 주의,  Agent 구성 파일을 생성하여 이 파일을 Parameter Store에 복사한 후에는 이 역할을 인스턴스에서 분리하고 대신 CloudWatchAgentServerRole을 사용해야 함

 

생성한 역할을 EC2 인스턴스에 연결

 

인스턴스 선택 > 작업 > 보안 > IAM 역할 수정

 

생성한 역할 선택

 

역할이 연결된 것을 확인

 

 

 

 

System Manager를 이용한 CloudWatch Agent 설치

 

System Manager 콘솔로 이동

 

왼쪽 탐색창에서 Run Command 선택

 

명령 실행 선택

 

AWS- ConfigureAWSPackage 선택

 

문서 버전 > 런타임 시 최선 버전, 명령 파라미터 Action > Install, Name > Amazon CloudWatch Agent

 

수동으로 인스턴스 선택 > 생성한 EC2 인스턴스 선택

 

명령 출력과 CloudWatch 로그를 S3 버킷으로 저장

 

CloudWatch Agent가 성공적으로 설치됨

 

CloudWatch Agent 구성 파일 생성 및 수정

 

EC2 인스턴스 연결된 역할 확인

 

EC2 인스턴스에 연결

 

Linux: sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

Windows:cd "C:\Program Files\Amazon\AmazonCloudWatchAgent"

CloudWatch Agent 구성 마법사 실행

 

질문에 답을 입력하여 구성 파일 생성

 

아래와 같은 경로로 파일을 저장할 경우 Agent를 설치하려고 하는 다른 서버에 복사가 가능함

Linux: /opt/aws/amazon-cloudwatch-agent/bin/

Windows: C:\Program Files\Amazon\AmazonCloudWatchAgent

 

Agent 구성 파일이 성공적으로 생성된 것을 확인

 

 

CloudWatch Agent 시작

 

AWS System Manager 콘솔로 돌아와 명령 실행

 

A.AmazonCloudWatch-ManageAgent 선택

 

Action > start, 구성 소스 > ssm, 구성 위치 > config.json, 재시작 > yes

 

수동으로 인스턴스 선택 > 실행 중인 인스턴스 선택

 

명령 실행 성공

 

CloudWatch에서 메모리 사용률 사용자 지정 지표 확인

 

CloudWatch 지표 에 생성된 CWAgent 지표 확인

 

인스턴스의 메모리 사용률(mem_used_percent)을 확인할 수 있음

 

728x90

+ Recent posts