콘텐츠로 이동

D-05: 비밀번호 재사용에 대한 제약 설정

분류: DBMS

중요도: 중


개요

점검 내용

비밀번호 변경 시 이전 비밀번호를 재사용할 수 없도록 비밀번호 제약 설정이 되어있는지 점검

점검 목적

비밀번호 재사용 제약 설정 적용 여부를 점검하여 비밀번호 변경 시 이전 비밀번호 재사용을 제약하여 형식적인 비밀번호 변경을 원천적으로 차단하기 위함

보안 위협

비밀번호 재사용 제약 설정이 적용되어 있지 않을 경우 비밀번호 변경 전 사용했던 비밀번호를 재사용함으로써 비인가자의 계정 비밀번호 추측 공격에 대한 시간을 더 많이 허용하여 비밀번호 유출 위험이 증가함

참고

비밀번호 제약 설정

비밀번호 변경 시 이전에 사용했던 비밀번호를 재사용할 수 없게 하는 설정으로써 이전 암호 재사용 가능 기간(PASSWORD_REUSE_TIME), 이전 암호 재사용 가능 횟수(PASSWORD_REUSE_MAX) 등이 있음

점검 대상 및 판단 기준

대상

Oracle DB, Altibase, Tibero 등

판단 기준

✅ 양호: 비밀번호 재사용 제한 설정을 적용한 경우

❌ 취약: 비밀번호 재사용 제한 설정을 적용하지 않은 경우

조치 방법

PASSWORD_REUSE_TIME, PASSWORD_REUSE_MAX 파라미터 설정

조치 시 영향

일반적인 경우 영향 없음

점검 및 조치 사례

Oracle DB

Step 1) SQL*Plus 설정 확인

-- Check for both reuse max and reuse time not set
SELECT profile FROM DBA_PROFILES WHERE (resource_name = 'PASSWORD_REUSE_MAX' AND limit IN ('UNLIMITED', 'NULL')) OR (profile IN (SELECT profile FROM DBA_PROFILES WHERE resource_name = 'PASSWORD_REUSE_TIME') AND limit IN ('UNLIMITED', 'NULL'));

-- Check for reuse max with value that is less than allowed minimum
SELECT profile FROM DBA_PROFILES WHERE resource_name = 'PASSWORD_REUSE_MAX' AND limit NOT IN ('UNLIMITED', 'NULL') AND REGEXP_LIKE(limit, '^[0-9]+$') -- Only consider numeric values
AND TO_NUMBER(limit) < 10;

-- Check for reuse time that is less than allowed minimum
SELECT profile FROM DBA_PROFILES WHERE resource_name = 'PASSWORD_REUSE_TIME' AND limit NOT IN ('UNLIMITED', 'NULL') AND REGEXP_LIKE(limit, '^[0-9]+$') -- Only consider numeric values
AND TO_NUMBER(limit) < 365;

Step 2) PASSWORD_REUSE_TIME 및 PROFILE 파라미터 수정

SQL> ALTER PROFILE default LIMIT password_reuse_time 365 password_reuse_max 10;
SQL> ALTER PROFILE [프로파일명] LIMIT password_reuse_time DEFAULT password_reuse_max default;

Altibase

Step 1) 다음 명령어를 통해 비밀번호 정책 설정 여부 확인

SELECT * FROM system_.sys_users_;

Step 2) 아래 Property에 대해 비밀번호 정책 설정

  • CASE_SENSITIVE_PASSWORD
  • FAILED_LOGIN_ATTEMPTS
  • PASSWORD_LOCK_TIME
  • PASSWORD_LIFE_TIME
  • PASSWORD_GRACE_TIME
  • PASSWORD_REUSE_TIME
  • PASSWORD_REUSE_MAX
  • PASSWORD_VERIFY_FUNCTION

정책 적용 시 다음 명령어를 사용

ALTER USER [계정명] LIMIT (Property 숫자);
-- 예시)
ALTER USER TESTUSER LIMIT (FAILED_LOGIN_ATTEMPTS 7, PASSWORD_LOCK_TIME 7);

Tibero

Step 1) 사용자별 비밀번호 PROFILE 적용 여부 확인

SELECT * FROM dba_users;

사용자별 비밀번호 PROFILE 적용 여부 확인

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

SELECT * FROM dba_users;

PASSWORD_REUSE_TIME, PASSWORD_REUSE_MAX 파라미터값 확인

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

다음 명령어를 사용

CREATE PROFILE prof LIMIT
-- 예시)
CREATE PROFILE prof LIMIT
failed_login_attempts 3
password_lock_time 1/1440
password_life_time 90
password_reuse_time unlimited
password_reuse_max 10
password_grace_time 10
password_verify_function verify_function;