티스토리 뷰
퍼블릭클라우드/AWS
[CIS AWS v1.3.0] 1.9 Ensure IAM password policy prevents password reuse
Turtle1000 2021. 2. 17. 22:53aws 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/
사용한 패스워드를 몇 개 기억시키고 있는지 체크하는 내용입니다.
위와 같이 콘솔에서 확인하고 설정 가능합니다.
주의해야 할 것은 값이 없으면 null 문자열이 반환된다는 것입니다.
aws iam get-account-password-policy --query "PasswordPolicy.PasswordReusePrevention"
아래는 python으로 코딩해서 사용할 때,
import subprocess
def get_string(b_obj, idx=0):
str_tmp = b_obj.decode()
return str_tmp.splitlines()[idx]
if __name__ == '__main__':
cmd = (
'aws iam get-account-password-policy '
'--query "PasswordPolicy.PasswordReusePrevention"'
)
# 암호 정책이 아예 없으면 예외가 발생함!
try:
# 오류 문자열 가져오기 위해 stderr을 stdout으로 리다이렉션
get_reuse_cnt = get_string(subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT))
except subprocess.CalledProcessError as e:
error_msg = get_string(e.output, 1)
# 암호 정책 없는 경우 'NoSuchEntity' 문자열 포함되어 있음
if 'NoSuchEntity' in error_msg:
# 오류 문자에서 숫자(ID) 추출
aws_acct = [int(tmp) for tmp in error_msg.split(' ') if tmp.isdigit()]
print(f'[-] AWS ACCOUNT{aws_acct} has no password policy.')
exit(0)
# 설정 자체가 안걸려있으면 null이 반환됨
if get_reuse_cnt == 'null':
print('no reuse count')
elif int(get_reuse_cnt) >= 24:
print('safe')
else:
print('vuln')
감사합니다.
'퍼블릭클라우드 > AWS' 카테고리의 다른 글
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- CIS
- steampipe
- temlate
- fleet manager
- security
- .get()
- teplate
- platform
- defaulttheme
- stateType
- scp
- 4xx
- 우주와컴퓨터
- ViaAWSService
- AWS #CIS
- ControlTower
- JavaScript
- REACT
- findinglatestversion
- 2xx
- terraform
- opensource
- aws
- 계정정보저장
- cloudsecurity
- compliance
- conftest policy
- web
- IAM
- Cloud
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함