티스토리 뷰

aws 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/

 

Blog | Foundational Cloud Security with CIS Benchmarks

Implementiong foundational cloud security systems to harden environments protect against cyber-attacks and misconfiguration.

www.cisecurity.org

사용한 패스워드를 몇 개 기억시키고 있는지 체크하는 내용입니다.

위와 같이 콘솔에서 확인하고 설정 가능합니다.

주의해야 할 것은 값이 없으면 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')

감사합니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함