티스토리 뷰
[CIS AWS v1.3.0] 1.7 Eliminate use of the root user for administrative and daily tasks
Turtle1000 2021. 2. 15. 21:58aws cli 버전 : aws-cli/2.1.11 Python/3.7.9 Windows/10 exe/AMD64 prompt/off
python 버전 : 3.8.5
CIS Benchmark 다운로드 링크 : www.cisecurity.org/blog/foundational-cloud-security-with-cis-benchmarks/
어? 왜 1.6 hardware MFA가 없나요?
답변 : 어차피 1.5랑 비슷하기도 하고, 그 정돈 찾아서 해보셔도 될 것 같아 스킵했습니다.
이번 내용은 루트 계정이 사용중인지 체크하는 내용입니다.
위와 같이 콘솔에서 확인 가능하며 '보고서 다운로드' 클릭 시 콘솔에서는 파일이 다운로드 됩니다.
다운로드된 csv 파일을 열면 아래와 같이 나오는데 저희 확인할 부분은 A(1), E(5), K(11), O(16) 열 입니다.
각각 user, password_last_used, access_key_1_last_used_date, access_key_2_last_used_date 값 입니다.
조건은 user가 <root_account>이고 나머지 값이 모두 N/A 면 안전한 것으로 판단 가능합니다.
위와 같이 결과가 나옵니다.
원래 최초에 aws iam generate-credential-report를 사용하면 State가 STARTED로 나옵니다.
aws iam get-credential-report 명령을 통해 출력되는 Content 값을 base64 디코딩해서 사용하면 될 것 같습니다.(이건 직접 해보세요.)
aws iam generate-credential-report
aws iam get-credential-report --query "Content"
아래는 python으로 코딩해서 사용할 때,
import subprocess
import base64
# idx를 추가한 이유는 <root_account>를 가져오기 위해
# 기본 0이라서 필요없으면 아무 값도 전달 X
def get_string(b_obj, idx=0):
str_tmp = b_obj.decode()
return str_tmp.splitlines()[idx]
if __name__ == '__main__':
# output text를 안주면 COMPLETE가 아닌 "COMPLETE"가 출력됨
cmd = (
'aws iam generate-credential-report '
'--query "State" --output text'
)
# COMPLETE 가 나올때 까지 무한루프
while True:
gcr_state = get_string(subprocess.check_output(cmd, shell=True))
if gcr_state == 'COMPLETE':
print('[+] CREDENTIAL REPORT GENERATED!')
break
else:
print('[*] CREDENTIAL REPORT GENERATING...')
tmp_list = []
cmd = (
'aws iam get-credential-report '
'--query "Content"'
)
gcr_result = get_string(base64.b64decode(subprocess.check_output(cmd, shell=True)), 1)
tmp_list = gcr_result.split(',')
if tmp_list[0] == '<root_account>' and \
(tmp_list[4] == 'N/A' and tmp_list[10] == 'N/A' and tmp_list[15] == 'N/A'):
print('safe')
else:
print('vuln')
이 외에도 다른 값들을 활용해서 일전에 제가 쓴 것들을 확인 가능한 것도 있습니다. 확인해보세요.
'퍼블릭클라우드 > AWS' 카테고리의 다른 글
- Total
- Today
- Yesterday
- fleet manager
- 우주와컴퓨터
- 2xx
- CIS
- terraform
- security
- teplate
- platform
- 계정정보저장
- aws
- steampipe
- web
- scp
- REACT
- compliance
- cloudsecurity
- Cloud
- findinglatestversion
- ControlTower
- IAM
- conftest policy
- AWS #CIS
- opensource
- JavaScript
- ViaAWSService
- stateType
- temlate
- .get()
- 4xx
- defaulttheme
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |