티스토리 뷰
퍼블릭클라우드/AWS
[CIS AWS v1.3.0] 1.10 Ensure multi-factor authentication (MFA) is enabled for all IAM users that have a console password
Turtle1000 2021. 2. 20. 00:01aws 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/
IAM(Identity and Access Management)에 존재하는 사용자들 중 콘솔 패스워드를 갖고 있는 사용자들에게 MFA(Multi-Factor Authentication)이 적용되어 있는지 체크하는 내용입니다.
위와 같이 확인이 가능합니다.
turtle1000.tistory.com/84 <- 해당 글에서 명시한 것과 같이 '내 보안 자격 증명' -> '자격 증명 보고서' -> '보고서 다운로드' 를 통해서 확인 가능합니다.
다운로드한 csv 파일에서 확인할 부분은 user, password_enabled, mfa_active 입니다.
조건을 잘 보셔야합니다.
계정명(user) | 패스워드설정여부 (password_enabled) |
mfa설정여부(mfa_active) | 결과 |
<root_account> | not_supported | TRUE | 안전 |
<root_account> | not_supported | FALSE | 취약 |
일반계정 | TRUE | TRUE | 안전 |
일반계정 | FALSE | TRUE | 미해당 |
일반계정 | TRUE | FALSE | 취약 |
일반계정 | FALSE | FALSE | 미해당 |
의식의 흐름대로 썻더니 순서가 좀 이상하긴 하군요. 조건에 명시되어있는대로 python으로 코딩하면,
import subprocess
import base64
def get_string(b_obj, idx=0):
str_tmp = b_obj.decode()
# -1이 들어올 경우 전체 값 반환
if idx == -1:
return str_tmp.splitlines()
else:
return str_tmp.splitlines()[idx]
if __name__ == '__main__':
cmd = (
'aws iam generate-credential-report '
'--query "State" --output text'
)
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)
del gcr_result[0]
for gr in gcr_result:
tmp_data = gr.split(',')
if '<r' in tmp_data[0]:
if tmp_data[7] == 'true':
print(f'{tmp_data[0]} is safe.')
else:
print(f'{tmp_data[0]} is vuln.')
elif tmp_data[3] == 'true':
if tmp_data[7] == 'true':
print(f'{tmp_data[0]} is safe.')
else:
print(f'{tmp_data[0]} is vuln.')
else:
print(f'{tmp_data[0]} is not applicable.')
오늘은 좀 급하게 작성하느라 코드가 좀 그렇네요. 참고만 부탁드립니다.
감사합니다.
'퍼블릭클라우드 > AWS' 카테고리의 다른 글
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Cloud
- REACT
- scp
- CIS
- IAM
- JavaScript
- 계정정보저장
- opensource
- web
- steampipe
- ControlTower
- teplate
- compliance
- terraform
- defaulttheme
- 2xx
- cloudsecurity
- .get()
- security
- ViaAWSService
- aws
- AWS #CIS
- conftest policy
- 우주와컴퓨터
- fleet manager
- stateType
- 4xx
- temlate
- platform
- findinglatestversion
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함