D-03: 비밀번호 사용 기간 및 복잡도를 기관의 정책에 맞도록 설정
분류: DBMS
중요도: 상
개요
점검 내용
기관 정책에 맞게 비밀번호 사용 기간 및 복잡도 설정이 적용되어 있는지 점검
점검 목적
비밀번호 사용 기간 및 복잡도 설정 유무를 점검하여 비인가자의 비밀번호 추측 공격(무차별 대입 공격, 사전 대입 공격 등)에 대한 대비가 되어있는지 확인하기 위함
보안 위협
비밀번호 사용 기간 및 복잡도 설정이 되어있지 않으면 비인가자가 비밀번호 추측 공격을 통해 획득한 계정의 비밀번호를 이용하여 DB에 접근할 수 있는 위험이 존재함
참고
용어 설명
- 무차별 대입 공격(Brute Force Attack): 특정 암호를 해독하기 위해 가능한 모든 값을 대입하는 공격 방법
- 사전 대입 공격(Dictionary Attack): 사전에 있는 단어를 입력하여 비밀번호를 알아내거나 암호를 해독하는데 사용되는 컴퓨터 공격 방법
점검 대상 및 판단 기준
대상
Oracle DB, MSSQL, MySQL, Altibase, Tibero, PostgreSQL 등
판단 기준
✅ 양호: 기관 정책에 맞게 비밀번호 사용 기간 및 복잡도 설정이 적용된 경우
❌ 취약: 기관 정책에 맞게 비밀번호 사용 기간 및 복잡도 설정이 적용되지 않은 경우
조치 방법
기관 정책에 맞게 비밀번호 사용 기간 및 복잡도 정책 설정
조치 시 영향
주기적인 비밀번호 변경 필요
점검 및 조치 사례
Oracle DB
Step 1) PASSWORD_LIFE_TIME Profile 파라미터 변경
Step 2) Profile 값과 관련된 사용자 변경
Step 3) 비밀번호 정책 설정 변경
SQL> ALTER PROFILE <프로파일명> LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LIFE_TIME 30
PASSWORD_REUSE_TIME 30
PASSWORD_VERIFY_FUNCTION verify_function
PASSWORD_GRACE_TIME 5;
FAILED_LOGIN_ATTEMPTS 3(비밀번호 실패 3번 까지만 가능)PASSWORD_LIFE_TIME 30(30일 동안만 비밀번호 사용 가능)PASSWORD_REUSE_TIME 30(사용한 비밀번호 30일 후부터 재사용 가능)PASSWORD_VERIFY_FUNCTION verify_function(비밀번호 복잡성 검증)PASSWORD_GRACE_TIME 5(life time이 끝나고 5일 동안 메시지를 보여줌)
MSSQL
Step 1) 비밀번호 변경 주기는 '암호 만료 강제 적용'을 적용함으로써 주기적으로 변경할 수 있으며, 변경 기간은 OS의 '암호 정책'에서 적용받으므로 '암호 정책 > 최대 암호 사용 기간' 설정도 변경해야 함
Step 2) 암호 만료 강제 적용
보안 > 로그인 > 각 로그인 계정 > 속성 > “암호 만료 강제 적용” 설정

Step 3) OS 암호 정책 설정
[관리 도구] > [로컬 보안 정책] > [보안 설정] > [계정 정책] > [암호 정책] > 최대 암호 사용 기간 : '60일' 설정

MySQL
[비밀번호 복잡도 정책 설정]
Step 1) 비밀번호 정책 확인
참고
component_validate_password가 설치되어 있지 않은 경우 아래와 같이 해당 컴포넌트 설치
Step 2) 비밀번호 정책 설정
다음과 같은 방법으로 각각의 비밀번호 정책을 설정
SET GLOBAL validate_password.policy = 'MEDIUM'; -- 비밀번호 정책의 강도 LOW/MEDIUM/STRONG
SET GLOBAL validate_password.length = 8; -- 비밀번호 최소 길이
SET GLOBAL validate_password.mixed_case_count = 1; -- 포함되어야 하는 영문 대소문자 최소 개수
SET GLOBAL validate_password.number_count = 1; -- 포함되어야 하는 숫자 최소 개수
SET GLOBAL validate_password.special_char_count = 1; -- 포함되어야 하는 특수문자 최소 개수
참고
- Linux계열(
/etc/my.cnf또는/etc/mysql/my.cnf), Windows(C:\ProgramData\MySQL\MySQL Server <설치된 버전>\my.ini)의<mysqld>섹션에 설정을 추가하여 정책 설정 가능 - 비밀번호 신규 적용 및 초기화 시 설정 규칙에 맞추어 관리하고, 저장 시에는 일방향 암호화 알고리즘을 통해 암호화 처리(One-Way Encryption)함
[비밀번호 LifeTime 정책 적용]
Step 1) 비밀번호 정책 확인
Step 2) 비밀번호 LifeTime 설정
기본 값
- 5.7.11 이전 버전 : 0
- 5.7.11 이후 버전 및 8.0 이후 버전 : 360
Step 3) 정책 적용전에 생성된 계정의 LifeTime 변경
Altibase
Step 1) 다음 명령어를 통해 비밀번호 정책 설정 여부 확인
Step 2) 아래 Property에 대해 비밀번호 정책 설정
CASE_SENSITIVE_PASSWORD = 1FAILED_LOGIN_ATTEMPTSPASSWORD_LOCK_TIMEPASSWORD_LIFE_TIMEPASSWORD_GRACE_TIMEPASSWORD_REUSE_TIMEPASSWORD_REUSE_MAXPASSWORD_VERIFY_FUNCTION
정책 적용 시 다음 명령어를 사용
ALTER USER 계정명 LIMIT (Property 숫자);
-- 예시)
ALTER USER TESTUSER LIMIT (FAILED_LOGIN_ATTEMPTS 7, PASSWORD_LOCK_TIME 7);
Tibero
Step 1) 사용자별 비밀번호 PROFILE 적용 여부 확인
비밀번호 설정 규칙에 맞추어 비밀번호를 설정할 수 있도록 시스템 차원에서 기능 제공

Step 2) 설정되어 있을 경우 PROFILE 설정 내용 확인

Step 3) 설정되어 있지 않을 경우 PROFILE 생성 또는 수정 시(ALTER PROFILE) 비밀번호 정책 설정 적용 시
다음 명령어를 사용