② IAM 사용자 암호 정책 변경 편
“에이, 설마 우리 비밀번호가 유출되겠어?”라는 생각은 이제 그만!
잠깐의 방심으로 클라우드 계정을 탈취당할 수 있습니다🔓
C사 클라우드인프라팀은 서비스 운영을 위해 AWS 계정을 공유하고 있습니다. 회사 내에서도 클라우드인프라 팀원 10명만이 접근할 수 있는 관리자 계정입니다.
클라우드인프라팀은 계정 비밀번호를 지키려고 노력했습니다. 신뢰할 수 없는 사이트에 들어가서 아이디와 비밀번호를 입력한 적도 없고, 의심되는 메일의 파일을 다운받은 적도 없죠. 비밀번호를 포스트잇에 적어서 모니터 아래 붙여둔 적도 없이 안전하게 관리했습니다.
Q. 그렇다면 C사 클라우드인프라팀 계정은 안전할까요?
A. 안타깝게도 안전하지 않습니다…😔
왜 안전하지 않은 걸까요? 클라우드인프라팀은 내부에서 계정 정보를 유출한 것도 아니고 팀원들도 관리에 최선을 다했습니다. 하지만 해커는 언제나 새로운 방법을 찾아서 공격을 시도해 오기 마련입니다.
계정 비밀번호 탈취에는 웹사이트의 취약점을 파고들거나 피싱 사이트를 통해 사용자가 직접 입력하는 것 외에도 다양한 방법이 있습니다. 그중 대표적인 방법이 ‘무차별 대입 공격’입니다.
무차별 대입 공격이란?
무차별 대입 공격(Brute Force Attack)이란 비밀번호가 될 수 있는 모든 값을 대입하는 방식입니다. 수학 문제를 풀 때 답이 될 수 있는 숫자를 하나하나 넣어보는 방법과 동일한 원리죠.
만약 집 비밀번호가 여섯 자리이고 무차별 대입 공격을 하게 된다면 000000부터 999999까지 가능한 모든 숫자 조합을 대입하게 됩니다.
무차별 대입 공격은 단순하고 원시적인 방법이지만 비밀번호를 찾는데 효과적이라는 특징이 있을뿐더러 최근 컴퓨터 성능의 발전으로 위험성이 커지고 있습니다.
만약 조직에서 비밀번호로 쉬운 단어를 반복적으로 사용하고 있다면 ‘사전 대입 공격’에 처할 가능성도 높습니다.
사전 대입 공격이란?
사전 공격(Dictionary Attack)은 문자 그대로 사전에 있는 단어를 입력하는 것입니다. 사용자들이 흔히 사용하는 단어나 문장 숫자를 조합해서 비밀번호를 탈취합니다.
많은 사람이 응원하는 스포츠팀, 좋아하는 가수 이름 등의 흔한 단어를 비밀번호로 사용하기 때문에 쉽게 추측이 가능하고 탈취될 가능성이 높습니다.
비밀번호 관리자 서비스 노드패스(NordPaas)에 따르면 전 세계 사람들이 습관처럼 비밀번호로 사용하는 카테고리별 단어는 아래와 같습니다.
- 음식
- 1위: fish (8,574,307회)
- 2위: poke (5,032,869회)
- 3위: rice (3,639,357회)
- 4위: chicken (2,438,246회)
- 5위: chocolate (2,093,961회)
- 자동차 🚗
- 1위: mini (8,201,410회)
- 2위: kia (8,118,950회)
- 3위: ford (5,539,753회)
- 4위: vw (4,902,158회)
- 5위: audi (4,024,628회)
- 패션 브랜드 👢
- 1위: tiffany (14,767,880회)
- 2위: aldo (3,908,102회)
- 3위: gap (2,87,377회)
- 4위: nike (2,210,441회)
- 5위: adidas (1,845,285회)
- 영화 🎬
- 1위: leon (6,399,136회)
- 2위: coco (4,492,091회)
- 3위: joker (2,170,367회)
- 4위: matrix (1,823,329회)
- 5위: starwars (1,682,225회)
- 비디오 게임 🎮
- 1위: arma (6,265,169회)
- 2위: nba (5,251,923회)
- 3위: rust (4,458,423회)
- 4위: raft (4,316,143회)
- 5위: gta (2,004,156회)
해커가 사전 공격과 무차별 대입 공격을 함께 사용하는 경우도 있습니다. 비밀번호로 많이 사용되는 단어와 숫자를 조합하는 방식입니다.
사람들이 흔히 문자 뒤에 숫자를 추가한다는 사실을 악용하여 nike1234, starwars5678, nba0227 이런 식으로 계정 비밀번호를 추측하고 탈취합니다.
심지어 어떤 단어 조합도 아닌 단순한 숫자의 나열이나 키보드 배치 순서대로 비밀번호를 만드는 일도 비일비재합니다. 아래 표와 같은 비밀번호의 경우 순식간에 계정 정보가 탈취될 수 있기 때문에 사용하지 않는 것이 권장됩니다.
전 세계적으로 자주 사용되는 비밀번호
순위 | 비밀번호 | 공격에 걸리는 시간 | 해당 비밀번호가 사용된 횟수 |
1위 | password | 1초 | 4,929,113회 |
2위 | 123456 | 1초 | 1,523,537회 |
3위 | 123456789 | 1초 | 413,056회 |
4위 | guest | 10초 | 376,417회 |
5위 | qwerty | 1초 | 309,679회 |
6위 | 12345678 | 1초 | 284,946회 |
7위 | 111111 | 1초 | 229,047회 |
8위 | 12345 | 1초 | 188,602회 |
9위 | col123456 | 11초 | 140,505회 |
10위 | 123123 | 1초 | 127,762회 |
출처: NordPass ‘Top 200 most common passwords’ (2022)
그렇다면 비밀번호가 쉽게 탈취되지 않기 위해서는 어떻게 해야 할까요? 🤔
다행히 복잡하고 강력한 비밀번호를 사용할수록 해킹 공격을 막을 가능성이 커집니다. 단어와 숫자의 길이가 길어지거나, 특수 문자를 포함하는 등 여러 옵션이 늘어날수록 탈취하는 데 시간이 들기 때문입니다.
한 가지 패스워드를 여러 계정에 똑같이 사용하지 않는 것도 방법입니다. 주기적으로 비밀번호의 안정성을 점검하는 것도 또 다른 방법이죠.
AWS 계정 비밀번호 탈취를 막는 방법
이제까지 비밀번호 안정성에 대해 알아보았습니다. 그렇다면 조직에서 공용으로 사용하는 클라우드 계정 비밀번호는 어떻게 안전하게 관리할 수 있을까요?
종량제 형태로 비용이 청구되는 클라우드 특성상, 계정이 탈취된 이후 해커의 악용으로 막대한 금액을 부담해야 할 수도 있습니다.
피해 범위가 크기 때문에 비밀번호뿐만 아니라 계정에 등록된 결제 정보와 사용자별 리소스 권한도 함께 관리하는 것이 가장 안전합니다.
AWS 계정 정보를 안전하게 보호하기
- IAM 사용자를 생성해서 일상적인 작업에 사용하고 루트 사용자는 안전하게 보호하기
- IAM 사용자 암호 정책 변경을 통해 안전한 비밀번호 만들기
방금까지 분명 비밀번호 얘기하고 있었는데 갑자기 IAM 사용자는 뭐고 루트 사용자는 뭘까요? 😵 처음 보는 용어가 많이 등장해서 헷갈리시는 분들을 위해 AWS 계정 체계에 대해서 먼저 알아보겠습니다. 아래는 AWS 로그인 화면 이미지입니다.
루트 사용자란?
루트 사용자(Root User)는 AWS 계정을 처음 생성할 때 만들어지는 사용자로 모든 권한을 가진 사용자를 의미합니다. AWS 서비스와 리소스뿐만 아니라 결제 정보 등 모든 권한을 가지기 때문에 AWS에서는 ‘루트 사용자가 필요한 AWS 작업’을 따로 분리하는 것을 권장하고 있습니다.
일상적인 작업, 심지어 관리 작업의 경우에도 루트 사용자를 사용하지 않을 것을 강력히 권장합니다.
출처: AWS 계정 루트 사용자
대신, IAM 사용자를 처음 생성할 때만 루트 사용자를 사용하는 모범 사례를 준수합니다. 그런 다음 루트 사용자 자격 증명을 안전하게 보관하고 몇 가지 계정 및 서비스 관리 태스크를 수행할 때만 사용합니다.
IAM이란?
IAM(Identity and Access Management)이란 다수의 사람에게 AWS 계정 접근 제한과 권한 부여를 관리할 수 있는 AWS의 기능입니다.
루트 사용자는 IAM 기능을 통해 어떤 사용자가 AWS 계정에 접근할 수 있는지, 접근한다면 Amazon EC2에 접근할지, 아니면 S3에 접근할지를 결정할 수 있습니다.
따라서, IAM 사용자는 루트 사용자로부터 권한 일부를 부여받은 또 다른 사용자 입니다. AWS 계정 안에 존재할 수 있는 사용자인 거죠. 루트 사용자는 여러 개의 IAM 사용자를 생성할 수 있고 IAM 사용자는 개별 액세스 암호와 키를 가질 수 있습니다.
루트 사용자와 IAM 사용자 두 사용자의 관계를 그림으로 나타내면 다음과 같은 체계를 가지게 됩니다. 루트 사용자가 상위에 있고 IAM 사용자가 여러 명 있는 구조를 갖추게 됩니다.
IAM 사용자는 별도의 액세스 키를 공유하지 않고 권한 설정만으로 AWS 계정을 공유할 수 있습니다. 하나의 조직에서 여러 팀 또는 팀원들이 AWS 계정을 사용한다면 필수적으로 사용해야 하는 기능이죠.
따라서, AWS 계정을 안전하게 보호하기 위해서는 일상적인 작업에는 루트 사용자가 아닌 IAM 사용자를 사용하는 것이 권장됩니다. 조직은 IAM 사용자에게 작업에 필요한 최소 권한만 부여함으로써 AWS 계정 정보를 지킬 수 있습니다.
사용하지 않는 IAM 사용자는 정기적으로 검토하고 제거하는 활동 또한 필요합니다. 더 이상 필요하지 않은 IAM 사용자, 역할, 권한, 정책 등을 제거함으로써 모니터링해야 하는 수를 줄일 수도 있습니다.
안전한 AWS IAM 비밀번호 정책
여러 사람이 AWS를 사용하고 있다면 IAM 사용자를 생성한 데에서 더 나아가, IAM 사용자가 복잡한 비밀번호를 사용할 수 있도록 독려해야합니다. 조직 차원에서 비밀번호 정책 설정이 필요한 이유죠.
AWS 계정에서는 아래와 같이 IAM 사용자 암호의 최소 길이, 강도, 만료 기간 등을 설정할 수 있습니다.
IAM 사용자 암호 정책 설정
- 암호 최소 길이
- 최소 6자 ~ 최대 128자 설정 가능
- 암호 강도
- 1개 이상의 라틴 알파벳 대문자(A-Z) 필수
- 1개 이상의 라틴 알파벳 소문자(a-z) 필수
- 1개 이상의 숫자 필수
- 영숫자를 제외한 문자 1개 이상 필수 (! @ # $ % ^ & * ( ) _ + – = [ ] { } | ‘ )
- 암호 만료 활성화
- 최소 1일 ~ 최대 1,095일
- 암호 만료에 대한 경고 알림 발송
- IAM 사용자 암호 만료 시 관리자 재설정 필요
- IAM 사용자에게 자신의 암호 변경 허용
- IAM 사용자가 이전 암호를 재사용하지 못하도록 제한
- 최소 1개 ~ 최대 24개 지정
AWS의 대표 MSP 가비아가 제공하는 IAM User의 비밀번호 복잡도를 높게 설정 매뉴얼을 참고하시면 쉽게 따라 해보세요!
혹시 IAM 사용자 비밀번호를 복잡하게 설정했는데도 해킹이나 보안 사고가 불안하신가요? 추가적인 보안 서비스나 솔루션을 사용하는 것도 대안입니다.
가비아는 과학기술정보통신부 인증을 받은 보안관제 전문기업으로서 AWS를 위한 보안 서비스를 제공하고 있습니다. 🛡
가비아 AWS의 보안 서비스
보안 서비스 | 서비스 제공 범위 |
관제 운영 | · 24X365 실시간 관제 서비스 · 고객 요청에 따른 정책 변경 및 적용 · 위험 상황 발생 시 즉시 보고 |
침해사고 대응 | · 침해사고 분석 보고 / 피해 최소화 / 재발 방지 대책 수립 · 침해 사고 발생 시 초동 대응 및 보고 |
취약점 점검 | · 취약점 및 개인정보 노출 여부 점검 · 신규 시스템 도입 및 기존 시스템 개선 시 취약점 점검 · 주요 보안 이슈 발생 시 비정기적 취약점 점검 |
모의 해킹 | · 모의 해킹 실시 후 결과 보고 · 모의 해킹 결과에 의한 취약점 조치 및 이행 점검 |
보안 컨설팅 | · 보안 네트워크 구성 컨설팅 · 내∙외부 보안 이슈 점검 컨설팅 |
가비아 AWS 보안 서비스에 대해 상세 지원 범위가 궁금하시거나 상담이 필요하신 경우 아래 버튼을 통해 확인해 보세요! 😉
AWS 보안 가이드 시리즈 보러 가기
AWS 보안 가이드 ① AWS 계정이 해킹됐는데 AWS 책임이 아니라고요?
AWS 보안 가이드 ② 지금 사용하는 비밀번호, 과연 얼마나 안전할까? (현재글)
Summary
무차별 대입 공격이란 무엇인가요?
무차별 대입 공격(Brute Force Attack)이란 비밀번호가 될 수 있는 모든 값을 대입하는 방식입니다. 수학 문제를 풀 때 답이 될 수 있는 숫자를 하나하나 넣어보는 방법과 동일한 원리죠. 무차별 대입 공격은 단순하고 원시적인 방법이지만 비밀번호를 찾는데 효과적이라는 특징이 있을뿐더러 최근 컴퓨터 성능의 발전으로 위험성이 커지고 있습니다.
사전 대입 공격이란 무엇인가요?
사전 공격(Dictionary Attack)은 문자 그대로 사전에 있는 단어를 입력하는 것입니다. 사용자들이 흔히 사용하는 단어나 문장 숫자를 조합해서 비밀번호를 탈취합니다. 많은 사람이 응원하는 스포츠팀, 좋아하는 가수 이름 등의 흔한 단어를 비밀번호로 사용하기 때문에 쉽게 추측이 가능하고 탈취될 가능성이 높습니다.
AWS 루트 사용자란 무엇인가요?
루트(Root) 사용자는 AWS 계정을 처음 생성할 때 만들어지는 계정으로 모든 권한을 가진 사용자를 의미합니다. AWS 서비스와 리소스뿐만 아니라 결제 정보 등 모든 권한을 가지기 때문에 AWS에서는 ‘루트 사용자가 필요한 AWS 작업’을 따로 분리하는 것을 권장하고 있습니다.
AWS IAM 사용자란 무엇인가요?
IAM(Identity and Access Management)이란 AWS에서 다수의 사람에게 AWS 계정 접근 제한과 권한 부여를 관리할 수 있도록 제공하는 기능입니다. 따라서, IAM 사용자는 루트 사용자로부터 권한 일부를 부여받은 또 다른 사용자입니다. AWS 계정 안에 존재할 수 있는 사용자인 거죠. 루트 사용자는 여러 개의 IAM 사용자를 생성할 수 있고 IAM 사용자는 개별 액세스 암호와 키를 가질 수 있습니다.
안전한 AWS 비밀번호를 만들려면 어떻게 해야 하나요?
AWS 계정에서는 암호의 최소 길이, 암호의 강도, 암호 만료 활성화 등을 설정할 수 있습니다. 암호 길이는 최소 6자부터 최대 128자까지 설정할 수 있습니다. 알파벳 대문자와 소문자, 숫자, 특수 문자 포함을 지정할 수 있습니다. 암호 만료 기간은 최소 1일부터 최대 1,095일까지 정할 수 있으며 만료에 대한 경고 알림 또한 발송됩니다.