본문 바로가기
Security

AWS 보안 - 암호화

by 찻잔속청개구리 2022. 9. 17.

AWS 에서 암호화를 통한 보안취약점 개선방법에 대해 알아보자!

아래와 같이 3가지 방법을 준비했고, EBS 암호화 실습과정 위주로 적어보았습니다.

  1. EBS 암호화
  2. RDS 암호화
  3. S3 암호화

 

1. EBS 암호화

EC2 생성할 때 스토리지에 대한 암호화 기능을 활성화한다.

 

그림에서 KMS key를 선택하라고 나오는데,

KMS key은 볼륨을 암호화하는 역할을 한다.

계정에 기본적으로 암호화가 활성화되어 있으면 암호화가 자동으로 활성화되고 비활성화할 수 없고,

(https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ebs-creating-volume.html).

Amazon EBS는 사용자가 AWS 리소스를 저장하는 각 리전에 고유한 AWS 관리형 키 키를 자동으로 생성하며이 KMS 키에는 별칭 alias/aws/ebs 가 있게 된다. 

결과적으로 아래와 같은 화면이 나오는데,

 

KMS 서비스 들어가서 [AWS 관리형 키]에서 ~~/ebs에 있는 키 ID와 방금 만든 인스턴스의 키 ID가 동일한 걸 눈으로 확인할 수 있다.

그럼, 볼륨 암호화한 건 어떻게 해제할까?

해보자!

1.1. [AWS] 암호화 된 EBS 볼륨 암호화 해제 하는 방법

1.1.1. 암호화 한 EBS 볼륨의 스냅샷을 생성

암호EBS 볼륨에서 암호스냅샷을 만드는 과정이다.

Snapshot status : Completed

 

 

 

다음으로 넘어가자.

1.1.2. 이 스냅샷으로 암호화한 EBS 볼륨 만들기

 

 

여기까지 하면 EC2만들 때 같이 만든 hyeonju_test_ebs가 있고,

위에서 만든 hyeonju_test_ebs를 스냅샷 떠서 만든 Encrypted_hyeonju_test_ebs_volume를 확인할 수 있다.

 

1.1.3. 암호화 안 한 새 EBS 볼륨 만들기

이제 암호화 뺀 EBS 볼륨을 만들 것이다.

암호화한 EBS 볼륨(Encrypted_hyeonju_test_ebs_volume)과 스펙은 동일하게 만들되, 암호화만 하지 않는다.

Encryption : 체크X

 

EBS 볼륨은 다 만들고나서 Size, IOPS를 수정할 수 없으니 만들 때 잘 해야 한다. 정상적으로 만들면 이렇게 된다.

 

1.1.4. 복구용 인스턴스 1대 신규 생성

복구용 인스턴스는 암호화 볼륨 데이터를 비암호화 볼륨으로 옮기는 역할을 한다.

똑같은 스펙으로 hyeonju_test2를 만들었다.

 

1.1.5. 복구용 인스턴스 (hyeonju_test2)에 암호화한 EBS 볼륨(Encrypted_hyeonju_test_ebs_volume)과 비암호화 볼륨(UnEncrypted_hyeonju_test_ebs_volume) 모두 붙여준다.

루트볼륨이 /dev/xvda 에 있어서

(Encrypted_hyeonju_test_ebs_volume) 은 /dev/xvdb로 지정해주었다.

 

(UnEncrypted_hyeonju_test_ebs_volume) 은 /dev/xvdc 로 지정해주었다.

 

결과 : 

 

1.1.6. 복구용 인스턴스에 접속해서 lsblk 명령어를 통해 디스크가 정상적으로 Attach 되었는지 확인

cmd로 ssh 접속한다. 그리고 지정한 경로에 있는지 확인한다 : ls -al /dev | grep xvd

 

1.1.7. 암호화한 EBS 볼륨(Encrypted_hyeonju_test_ebs_volume) 데이터를 비암호화 볼륨(UnEncrypted_hyeonju_test_ebs_volume)으로 복사.

암호화 볼륨에 데이터가 왜 있냐고 물으면 스냅샷 떴기 때문에 기존 데이터 있는 것이다.

이제 복구용 인스턴스에서 이렇게 입력한다.

 
dd if=/dev/xvdb of=/dev/xvdc bs=4096 status=progress
dd if=출발지 볼륨 of=도착지 볼륨 bs=한번에 읽고 쓸 최대 바이트 크기 status=progress(진행률 확인)

 

1.1.8. 복구 인스턴스는 중지하고 볼륨 Dettach

UnEncrypted_hyeonju_test_ebs_volume : Dettach

 

1.1.9. 기본 인스턴스에 비암호화 볼륨(UnEncrypted_hyeonju_test_ebs_volume) Attach

 
 

번외로 비암호화 볼륨(UnEncrypted_hyeonju_test_ebs_volume)이 /dev/xvdc에 마운트되어있는데, 이걸 루트볼륨으로 대체해보자.

hyeonju_test 인스턴스 Stop → 볼륨 다 떼기 → UnEncrypted_hyeonju_test_ebs_volume → /dev/xvda 로 다시 붙이기

끝났다!

1.2. 트러블슈팅하면서 알게 된 것 :

1.2.1. 비암호화 볼륨 파일 시스템 만들기

새 볼륨은 원시 블록 디바이스라서 볼륨 탑재하고 사용하기 전에 해당 볼륨에서 파일 시스템을 만들어야 한다. 볼륨에 파일 시스템이 있는지 여부를 확인: file -s /dev/xvdc 또는 lsblk -f (data만 표시된다면, 디바이스에는 파일 시스템이 없는 것)

1.2.2. UUID 관련 명령어

uuid 확인 : blkid

파일시스템 확인 : df -TH

둘 다 확인 : lsblk -f

2. RDS 암호화

RDS 생성할 때 암호화 기능을 활성화한다.

 

3. S3 암호화

S3 생성할 때 암호화 기능을 활성화한다.

SSE-S3 : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/UsingServerSideEncryption.html

SSE-KMS : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/UsingKMSEncryption.html

3.1.1. S3 Bukcet의 접근 정책

아래 두가지 방법으로 S3의 보안을 강화할 수 있다.

특정 IP 주소에 대한 액세스 제한 : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-use-case-3

미리 서명된 URL을 생성하여 객체 업로드 : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/PresignedUrlUploadObject.html

이상 AWS 보안강화를 위한 EBS, RDS, S3 암호화 방법에 대한 포스팅을 마칩니다.

참조 : 클라우드 AWS 자격증으로 시작하기(행복소프트, 2022), AWS 공식문서

'Security' 카테고리의 다른 글

DNS Flood란  (0) 2022.11.02
보안 - IAM  (0) 2022.10.17
Log4j 보안 취약점 Log4shell  (0) 2022.08.08
웹 서버 버전 노출 방지  (0) 2022.06.02
OpsNow Security  (1) 2022.05.15

댓글