AWS 에서 암호화를 통한 보안취약점 개선방법에 대해 알아보자!
아래와 같이 3가지 방법을 준비했고, EBS 암호화 실습과정 위주로 적어보았습니다.
- EBS 암호화
- RDS 암호화
- S3 암호화
1. EBS 암호화
EC2 생성할 때 스토리지에 대한 암호화 기능을 활성화한다.
![](https://blog.kakaocdn.net/dn/D6klw/btrMleqVD2q/1kf0cJ5dXtRPnRRkmYGZH0/img.png)
그림에서 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 볼륨에서 암호스냅샷을 만드는 과정이다.
![](https://blog.kakaocdn.net/dn/bHchjz/btrMjW5St8l/jE5HbMKYzwBCodFr9OXckK/img.png)
다음으로 넘어가자.
1.1.2. 이 스냅샷으로 암호화한 EBS 볼륨 만들기
![](https://blog.kakaocdn.net/dn/Bb4fs/btrMjDS0Xgq/8gXdFTgYriIMZkbRA3or5K/img.png)
![](https://blog.kakaocdn.net/dn/dBMpY5/btrMmgPAkor/pOyX45NxEOOMZVKKalhmf0/img.png)
여기까지 하면 EC2만들 때 같이 만든 hyeonju_test_ebs가 있고,
위에서 만든 hyeonju_test_ebs를 스냅샷 떠서 만든 Encrypted_hyeonju_test_ebs_volume를 확인할 수 있다.
![](https://blog.kakaocdn.net/dn/etlrJ8/btrMkQ4TY4y/kzyUNiJAuiyAbnphAlghr1/img.png)
1.1.3. 암호화 안 한 새 EBS 볼륨 만들기
이제 암호화 뺀 EBS 볼륨을 만들 것이다.
암호화한 EBS 볼륨(Encrypted_hyeonju_test_ebs_volume)과 스펙은 동일하게 만들되, 암호화만 하지 않는다.
Encryption : 체크X
![](https://blog.kakaocdn.net/dn/qB7mc/btrMkGg62Fq/mL9rF0SS9qfrnZkBVfXyeK/img.png)
EBS 볼륨은 다 만들고나서 Size, IOPS를 수정할 수 없으니 만들 때 잘 해야 한다. 정상적으로 만들면 이렇게 된다.
1.1.4. 복구용 인스턴스 1대 신규 생성
복구용 인스턴스는 암호화 볼륨 데이터를 비암호화 볼륨으로 옮기는 역할을 한다.
똑같은 스펙으로 hyeonju_test2를 만들었다.
![](https://blog.kakaocdn.net/dn/lQjTM/btrMjRje4K8/kBKGjUrivGQc8fA59g3gL0/img.png)
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로 지정해주었다.
![](https://blog.kakaocdn.net/dn/JuuJT/btrMjWY4Nxj/O69sTypxkktx1bA08kW2kK/img.png)
(UnEncrypted_hyeonju_test_ebs_volume) 은 /dev/xvdc 로 지정해주었다.
결과 :
1.1.6. 복구용 인스턴스에 접속해서 lsblk 명령어를 통해 디스크가 정상적으로 Attach 되었는지 확인
cmd로 ssh 접속한다. 그리고 지정한 경로에 있는지 확인한다 : ls -al /dev | grep xvd
![](https://blog.kakaocdn.net/dn/StPnb/btrMkeFf9nq/LBpKECSWRool76Jm6HhkIk/img.png)
1.1.7. 암호화한 EBS 볼륨(Encrypted_hyeonju_test_ebs_volume) 데이터를 비암호화 볼륨(UnEncrypted_hyeonju_test_ebs_volume)으로 복사.
암호화 볼륨에 데이터가 왜 있냐고 물으면 스냅샷 떴기 때문에 기존 데이터 있는 것이다.
이제 복구용 인스턴스에서 이렇게 입력한다.
![](https://blog.kakaocdn.net/dn/uOn0I/btrMkuHMyyW/nB91t4KPQxHRDXp6yMwj6k/img.png)
1.1.8. 복구 인스턴스는 중지하고 볼륨 Dettach
UnEncrypted_hyeonju_test_ebs_volume : Dettach
1.1.9. 기본 인스턴스에 비암호화 볼륨(UnEncrypted_hyeonju_test_ebs_volume) Attach
![](https://blog.kakaocdn.net/dn/bzU9mT/btrMnKCP76J/Oe772vJiu9kfXkvZcfikE1/img.png)
번외로 비암호화 볼륨(UnEncrypted_hyeonju_test_ebs_volume)이 /dev/xvdc에 마운트되어있는데, 이걸 루트볼륨으로 대체해보자.
hyeonju_test 인스턴스 Stop → 볼륨 다 떼기 → UnEncrypted_hyeonju_test_ebs_volume → /dev/xvda 로 다시 붙이기
![](https://blog.kakaocdn.net/dn/P22Wc/btrMkhIH1yE/BQnGemO2Ig69JcTsQEpIuk/img.png)
![](https://blog.kakaocdn.net/dn/oDPuU/btrMkhhC4vU/63FRLrtrGIkdnm6t8bAJW1/img.png)
끝났다!
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 생성할 때 암호화 기능을 활성화한다.
![](https://blog.kakaocdn.net/dn/wDOh7/btrMkhu8IM1/d0V3twIxK4gBrKkAuqN351/img.png)
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 |
댓글