본문 바로가기

DevOps/AWS

AWS 해킹 시 대처 방법, 해킹 방지하기

🤯 Access Key가 털렸어요!

어느 날 AWS에서 한 통의 메일이 도착했습니다. 별 내용 아니겠지 ~ 하고 가볍게 읽었는데, 생각보다 심각한 내용의 메일이었습니다. 😱

지금 너의 Access Key가 유출된 것 같다. 수상한 내용이 감지되어서 비활성화를 해둔 상태이다. 확인을 해봐라

잔뜩 쌓인 메일들 ...

허겁지겁 쌓인 메일을 보니 이미 Access Key는 유출되어서 정말 많은 리전에서 거대한 인스턴스를 띄운 상태였고, 정~말 다행히도 AWS에서 이를 눈치채고 일찍 비활성화를 해두어서 다른 분들처럼 과금이 발생하진 않았지만, 다른 아티클에서만 있던 일들이 일어나니 머리가 새하얘졌습니다.

저와 같은 상황에 처했던 분들을 위해 사후 대처하는 방법과 보안을 강화하는 방법에 대해 포스팅을 작성해보았습니다. 사실 전 아직도 어디서 Access Key(+ Secret Key)가 유출되었는지 정확한 경황을 알 수 없지만, 앞으로 이런 일이 발생하기 않게 하기 위해서는 보안을 강화해야할 필요성을 절실하게 느꼈습니다… 😢


💪 해야 하는 것들

1. Access Key 비활성화

유출된 Access Key는 그 즉시 비활성화 처리를 해야 합니다. 만약 삭제해도 서비스에 영향을 주지 않는다면 삭제를 하고, 서비스에 영향을 주는 Access Key라면 새로운 Access Key를 발급해서 교체해준 뒤에 정상적으로 작동이 되는지 확인하고 유출된 Access Key는 삭제해야 합니다. 새로운 Access Key는 유출되지 않게 정말!! 조심해서 관리해주셔야 합니다.

 

2. CloudTrail 확인

AWS에서는 어떤 사용자가 AWS에서 어떤 일을 했는지 기록해두는 CloudTrail을 서비스하고 있습니다.

CloudTrail

리전별로 해당 액세스 키로 무슨 일을 했는지 알 수 있기 때문에 확인해보시고 무슨 짓을 했는지 확인하고 생성한 흔적이 있다면 반대로 모두 삭제해주어야 합니다.

저는 다행히(?) 로그를 확인했을 때 채굴 용도로 인스턴스를 띄우는 행위 말고는 특별히 다른 행위를 하지는 않았지만, 개인정보를 탈취해가거나 다른 private key를 탈취할 수도 있기 때문에 로그를 잘 확인해보아야 합니다. 만약 탈취한 기록이 있다면 그 즉시 비밀번호를 바꾸거나 관련 키를 삭제해야 합니다.

 

3. 비밀번호 수정

EC2의 keypair 역시 유출의 위험이 있으니 그 즉시 재발급받는 것이 좋습니다. 이외에도 보안적으로 관리하고 있는 리소스가 있다면 모두 수정해줍니다.

 

4. 과금 환불 요청하기

만약 과금이 발생했다면 환불을 요청할 수 있습니다. 단, 요청하기 전에 리소스가 완전히 정리되어있는지 확인하고 지원 센터를 통해 요청하면 됩니다.

  • 만들어진 인스턴스가 있다면 다 삭제하기 (리전 별로 확인)
  • 확인되지 않은 IAM User가 있다면 삭제하기
  • 유출된 Access Key 삭제
  • 그 외에 CloudTrail을 보며 새로 생성한 리소스들 모두 삭제하기

🚀 하면 무조건 좋은 것들

1. All Open Access Key와 멀어지기

All Open Access Key

모든 곳에서 접근 가능한 Access Key를 만들 수 있는데, 되도록이면 사용하지 않는 것이 좋습니다. 저도 기존에는 2개의 Access Key를 만들어 사용하고 있었는데, 모두 삭제하고 IAM 사용자로 대체했습니다.

 

2. IAM에서도 권한 제어하기

IAM

IAM을 만들 때에도 정말 필요한 권한만 부여해주는 것이 좋습니다. 특정 서비스에서 사용할 목적으로 생성하는 User라면 해당 목적에 맞는 정책만 부여해주는 것이 좋습니다.

 

정책에서도 기본적으로 제공되는 FullAccess를 사용하는 것보다는 위 사진과 같이 세부적인 정책(ex. 리전을 설정한다거나, 인스턴스 타입을 제한한다거나 …)을 적용한 커스텀한 정책을 사용하는 것이 좋습니다.

 

3. Access Key 로테이션 돌리기

All Open Access Key는 되도록이면 거들떠도 보지 않는 게 가장 좋지만, 정~말 부득이하게 생성해야 할 일이 생긴다면 사용 후에 즉시 삭제하거나 주기적으로 모니터링하며 일정 기간 동안 사용한 흔적이 보이지 않는다면 바로 삭제하는 것이 좋습니다. Access Key를 언제 터질지 모르는 시한폭탄이라고 생각하며 조심히 다뤄주어야 합니다.


💛 맺으며

제가 이러한 일을 겪으면서 뼈저리게 느낀 것이 몇 가지 있는데, 첫 번째는 Access Key를 소중하게 여기자, 두 번째는 안전 불감증에 걸리지 말자였습니다. 사실 'Github에만 안 올리면 되겠지?'라는 생각을 했는데, 생각보다 해커들은 훨씬 똑똑했습니다.

앞으로는 보안에 훨씬 더 많이 신경 써야겠다고 생각이 들었습니다. 마지막으로 뼈저리게 얻은 교훈을 세 번 외치면 포스팅 마치도록 하겠습니다. 😭

보안에 신경 쓰자!

보안에 신경 쓰자!

보안에 신경 쓰자!

감사합니다.


👏 참고