안녕하세요, 누리클라우드입니다. AWS 사용자가 증가함에 따라 AWS 계정 정보를 탈취하여 남용(Abuse)하는 피해사례가 발생하고 있습니다. 특히, 루트계정의 Access Key를 탈취하여 고비용의 리소스를 생성하거나 고비용의 서비스를 신청하여 단기간에 수만 달러에 달하는 비용을 발생시키는 피해를 주기도 합니다.
이번 글에서는 이러한 악용사례를 예방하기 위해 확인하고 설정해 두어야 하는 가장 필수적인 것들에 대해서 알아보도록 하겠습니다.
루트 사용자 MFA 설정
AWS 콘솔에 로그인할 때 아이디/패스워드 외 추가 인증을 더하는 것인데요, 다소 귀찮기는 해도 이 방법은 계정 탈취로 인한 피해를 예방할 수 있는 가장 효과적인 방법입니다. 지정된 장소에서 자주 콘솔에 로그인하는 경우에는 사용하지 않는 구 스마트폰을 MFA 인증 전용으로 모니터 앞에 갖다 놓으면 조금 편리하게 쓸 수 있겠습니다.
MFA 설정 화면은 좀 찾기 어려울 수 있는데요, 일단 루트계정으로 로그인해야만 루트계정의 MFA를 설정할 수 있는 메뉴가 보입니다. 화면 상단 우측에 계정을 드롭다운 해보면 “내 보안 자격 증명” 메뉴가 보입니다. 클릭하면,
아직 MFA를 설정하지 않았다면 “MFA 활성화” 버튼이 보이고, 클릭하면,
MFA 디바이스 선택 창에서 “가상 MFA 디바이스”를 선택합니다. 다음 단계를 진행하기 전에 스마트폰에서 MFA 앱을 설치해야 합니다. MFA 앱으로는 “Google OTP”를 비롯해서 OTP로 검색하면 많은 앱이 있습니다. 대부분의 OTP 앱이 기능이 대동소이한데, 여러 OTP를 자주 사용해야 한다면 적은 터치로 한화면에서 여러 코드를 확인할 수 있는 앱이 좋겠습니다.
MFA 앱이 준비되었다면 팝업창에 보이는 QR코드를 스캔하여 스마트폰에 간단히 OTP 등록을 합니다. 혹 여러 기기에서 OTP를 등록해야 한다면 QR 코드나 OTP 등록 비밀키를 임시로 복사해 두어야 하겠습니다. (노출 주의!)
이후에는 루트 로그인 마지막 단계에서 OTP 코드를 입력해야만 로그인할 수 있습니다.
만약, MFA를 분실하였다면 루트 아이디/패스워드로 로그인 후 MFA 코드 입력 화면에서 “대체인증방법”을 사용하여 인증을 통과할 수 있습니다.
대체인증방법은 3단계를 거치게 되는데, 먼저 1단계에서는 등록된 이메일로 확인 링크가 발송되고, 이메일을 확인하여 링크를 클릭하면 2단계로 넘어가서 등록된 전화번호로 인증코드를 확인받습니다. 마지막 3단계에서 아이디/패스워드로 로그인하면 MFA 인증 없이 로그인할 수 있고, 분실한 MFA를 삭제하고 새 MFA로 재설정하면 됩니다.
루트 사용자 Access Key 삭제
액세스 키는 아이디/패스워드 인증과 동일한 권한을 갖지만 AWS CLI, PowerShell용 도구, AWS SDK 또는 직접 AWS API 호출을 통해 AWS를 프로그래밍 방식으로 호출할 수 있도록 해줍니다. 반드시 필요한 용도이지만 액세스 키가 루트 사용자 권한으로 사용될 때는 그 용도 만큼이나 매우 강력해서 탈취되어 악용하면 광범위한 영역에서 피해를 줄 수 있습니다. 따라서, 특별한 이유가 없다면 루트 사용자 계정에는 반드시 액세스 키를 삭제하거나 비활성화되어 있어야 합니다.
루트 사용자의 액세스 키의 활성화 여부도 역시 위의 MFA 설정을 위해 진입하였던 “보안 자격 증명” 페이지에서 확인할 수 있습니다.
위와 같이 액세스 키가 존재하지 않아야 루트 사용자의 안전한 보안 설정입니다. 만약, 위 페이지에서 액세스 키가 하나라도 존재하고 활성화되어 있다면 반드시 제거해 주시는 것이 좋습니다.
루트 사용자 자격이 필요한 작업이 몇 가지 있습니다. 계정의 이름, 이메일 주소, 암호 변경, 결제/비용에 대한 IAM 액세스 활성화, 지원 플랜 변경/취소, S3 버킷의 일부 설정, 계정 해지 등의 작업은 루트 사용자 권한이 필요합니다. 그 외에는 권한이 부여된 IAM 사용자 자격으로 모든 작업을 할 수 있습니다. 따라서, 위에서 루트 사용자에 대한 기본 보안 설정을 완료한 다음에는 적절한 자격을 부여한 IAM 사용자를 생성하고 주로 IAM 사용자로 모든 작업을 하는 것이 좋습니다.
IAM 사용자 설정
규모가 큰 조직은 도입 초기부터 AWS IAM을 조직의 특성을 반영하여 어떻게 구성하고 관리할 것인지를 설계해야 합니다. 이것은 또 다른 영역의 큰 프로젝트가 될 것이므로 여기서는 다루지 않고, 기본적인 구성에 대해서 살펴보고자 합니다.
IAM 그룹 생성
먼저 IAM 그룹을 만들고 이 그룹의 역할에 맞게 정책을 적용해 줍니다. 예를 들면, 전체 관리자의 역할을 맡을 “AdminGrp”라는 그룹을 만들고 이 그룹에 “AdminstratorAccess” 정책을 부여하여 전체 리소스에 대한 모든 작업을 수행할 수 있는 그룹으로 사용합니다.
계정에 대한 전체 모니터 역할을 맡기기 위해서는 “MonotorGrp” 그룹을 만들고 “ReadOnlyAccess” 정책을 부여해주면 됩니다.
또, 요금업무를 위해 “BillingGrp”을 그룹으로 만들고 이 그룹에 “Billing” 정책을 부여하여 전체 리소스에 대한 요금과 예산 및 구매관련 작업을 할 수 있는 그룹으로 사용합니다.
IAM 사용자 생성
IAM그룹을 생성하였다면 이제 구체적으로 이 그룹의 권한으로 작업을 수행하게 될 IAM 사용자를 생성하여 해당 그룹에 귀속시켜줍니다.
맺음말
이상으로, AWS 계정의 탈취/악용을 예방하기 위해 설정해야 할 필수적인 보안 조치 사항에 대해서 알아보았습니다. AWS를 사용하고 있는 분들이 요금 피해 등을 예방하는데 이 글이 도움이 되길 바랍니다. 감사합니다.