티스토리 뷰

 어제 밤 10시 05분 쯤에 실수로 레포지토리에 .env 파일을 올려버렸다. gitignore에 .env라고 적는 것을 잊어버렸었다. 그리고 access key가 유출되었다고 메일이 왔다. 이 메일을 받고 레포지토리에서 .env를 바로 지웠다. 별 문제 없을 거라 생각했는데 오늘 오후 7시 기준으로 요금이 갑자기 46,000원 정도가 나왔다.

 

 

 너무 당황해서 그동안 금액이 누적된 걸 이제 확인한게 아닌가라고 생각했다. 그래서 Cost Explorer를 보니 어제인지 오늘인지 요금이 확 많이 나온 것을 확인할 수 있었다.

 

하지만 이런 경험이 처음이기도 하고 돈과 관련된 거라 신중하게 대처해야 한다 생각했다. 우선, 계정의 비밀번호를 변경하였다. 그리고 모든 액세스 키를 삭제하였다. 그리고 요금이 어디서 발생했는지 확인했다. 그런데 처음 이미지처럼 EC2에서 대부분의 요금이 발생했다. 하지만 나는 EC2를 건든 적도 없었기에 뭘 해야할지 몰랐다. 그래서 일단 aws support의 지원 사례에 어떻게 대처하면 좋을지 다시 한 번 물어보는 내용을 작성한 후 회신을 보냈더니 아래처럼 뭘 하면 될지 알려주었다. 

// 생략
Step 1: Instructions to Terminate EC2 Resources
    Step 1의 절차들
Step 2: Terminate Cloudfront Resources
    Step 2의 절차들
Step 3: Terminate S3 Resources
    Step 3의 절차들
// 생략

 

EC2의 보안 그룹들을 삭제한 후, 나랑 상관 없는 CloudFront와 S3 버킷을 삭제하라고 했다. 우선 CloudFront와 S3 버킷은 크게 달라진 것이 없어서 확인만 하였다. 그리고 EC2의 보안 그룹을 확인하였다.

 

위의 이미지에는 한 개 밖에 없지만 내가 처음 보안 그룹을 보았을 때에는 저 default 말고 한 개가 더 있었다. 그래서 모든 지역들을 확인한 후, default 외의 것들을 전부 삭제했다. 그 후, 알려준 대로 조치했다는 회신을 보내니 아래처럼 답장이 왔다.

 

할 수 있는 것들을 다 한 후 보낸 회신
마지막으로 온 메일

간단히 요약하자면, AWS에서 Access Key가 유출되었을 때 내가 한 것들은 다음과 같다.

  • 계정 비밀번호 변경
  • 모든 액세스 키 삭제
  • EC2의 보안 그룹 확인 및 삭제
  • CloudFront, S3 확인 (및 필요하다면 삭제)

정말 무서운 경험이었다. 그리고 이것과 관련된 궁금한 것들을 chatGPT에 물어보았다.

 

Q. 내가 aws의 액세스 키를 깃허브의 .env 파일에 작성한 후, gitignore에 .env를 적는 걸 잊어버려서 유출이 되었어. 그리고 몇 분 후 바로 env 파일을 지웠어. 이렇게 짧은 시간에, 그리고 나같은 일반인이 액세스 키를 유출해도 악용이 될 수 있는 거야?
A. 네, 그럴 수 있습니다. AWS 액세스 키는 사용자의 AWS 계정에 대한 프로그래밍 방식 액세스를 허용합니다. 이는 리소스 생성 및 삭제, 데이터 읽기 및 쓰기 등의 권한을 포함할 수 있습니다. 따라서 액세스 키가 유출될 경우, 제 3자가 이를 악용해 계정의 리소스를 악의적으로 사용할 수 있습니다.
특히 봇이나 스크립트는 실시간으로 GitHub와 같은 코드 저장소를 스캔하여 액세스 키, 비밀 키, 토큰 등을 찾아냅니다. 따라서 키가 공개적으로 노출된 시간이 매우 짧더라도 이를 찾아내어 악용할 수 있습니다. 이렇게 되면 예상치 못한 요금 청구, 데이터 유출 또는 시스템 손상 등의 결과를 초래할 수 있습니다.
이러한 유출을 방지하기 위해, AWS는 액세스 키를 코드나 구성 파일에 직접 저장하지 않고, AWS Identity and Access Management(IAM) 역할을 사용하여 EC2 인스턴스 등의 서비스에 권한을 부여하는 것을 권장합니다. 또한 AWS Secrets Manager나 환경 변수 등의 안전한 방법을 사용하여 애플리케이션에서 AWS 자격 증명을 관리하는 것이 좋습니다.
만약 액세스 키가 유출되었다면, 가능한 빨리 해당 키를 비활성화하고 새 키를 생성해야 합니다. 또한 AWS에서 제공하는 AWS Trusted Advisor나 AWS CloudTrail을 이용하여 계정의 비정상적인 활동을 모니터링하는 것이 좋습니다.

Q. 그리고 요금이 ec2 위주로 많이 나왔던데 ec2로 무엇을 어떻게 악용하는 거야?
A. EC2는 Amazon의 가상 서버 호스팅 서비스이며, 고성능 컴퓨팅, 웹 호스팅, 백업 및 복구, 분산 데이터 분석 등 다양한 용도로 사용될 수 있습니다. 이런 서비스가 유출된 AWS 액세스 키를 통해 악용될 수 있는 주요 방법들은 다음과 같습니다:
1. 비트코인 채굴: 최근에는 암호화폐 채굴에 많은 컴퓨팅 파워가 필요하다는 사실을 악용하여, 악의적인 사용자들이 유출된 액세스 키를 사용하여 EC2 인스턴스를 무제한으로 생성하고 비트코인 등의 암호화폐 채굴에 사용합니다. 이는 계정 소유자에게 큰 비용을 발생시키며, 악용자에게는 비용이 들지 않는 대규모 컴퓨팅 리소스를 제공합니다.
2. 분산 서비스 거부 공격(DDoS): 유출된 액세스 키를 사용하여 대량의 EC2 인스턴스를 생성하고, 특정 웹사이트나 서버에 대한 DDoS 공격을 실행하는 데 사용할 수 있습니다. 이러한 공격은 대상 웹사이트나 서버의 가용성을 저하시키며, 공격을 받는 측에 큰 피해를 입힐 수 있습니다.
3. 데이터 저장 및 전송: 악의적인 사용자는 유출된 키를 사용하여 생성한 EC2 인스턴스를 사용하여 불법적인 데이터를 저장하거나 전송하는데 사용할 수 있습니다. 이렇게 되면 계정 소유자가 법적 문제에 처하게 될 수도 있습니다.
4. 스팸 이메일 전송: 악의적인 사용자는 EC2 인스턴스를 사용하여 대량의 스팸 이메일을 전송할 수 있습니다. 이러한 활동은 또한 계정 소유자에게 비용을 발생시키고, 그들의 AWS 계정이 이메일 블랙리스트에 등재될 수 있게 만듭니다.
이러한 이유로, AWS 액세스 키의 보안은 매우 중요하며, 키가 유출되었을 경우 가능한 빠르게 대응해야 합니다.

Q. EC2의 보안 그룹에 한 개 존재하는, 보안 그룹 이름이 "default"인 것은 기본적으로 존재하는 거지?
A. 네, 맞습니다. AWS에서는 EC2 인스턴스를 생성할 때 각 VPC에 대해 "default"라는 이름의 기본 보안 그룹을 자동으로 생성합니다.
기본 보안 그룹은 인스턴스가 속한 VPC의 모든 다른 인스턴스와 통신할 수 있도록 허용합니다. "default" 보안 그룹에 대한 인바운드 규칙은 그룹에 의해 허용되는 모든 트래픽을 허용하고, 아웃바운드 규칙은 모든 트래픽을 허용합니다.
기본 보안 그룹을 사용하는 것에는 제한이 있을 수 있으므로, 특정 통신 요구를 충족하도록 사용자 정의 보안 그룹을 생성하고 사용하는 것이 일반적으로 권장됩니다. 사용자 정의 보안 그룹을 사용하면, 특정 인바운드 및 아웃바운드 트래픽을 허용하거나 거부할 수 있습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함