Table of Contents | ||
---|---|---|
|
개요
...
DB 취약점 진단 항목 별 점검 방법에 대한 가이드입니다.
진단 항목은 고객의 문의 항목을 기준으로 작성하였습니다.
계정 관리
...
계정의 목록화(비인가자의 접근 차단을 위한 사용자 계정 관리)
...
Code Block | ||
---|---|---|
| ||
-- 사용자 삭제 DROP USER user_name ; -- 사용자와 사용자가 생성한 모든 객체 삭제 DROP USER user_name CASCADE; |
취약한 패스워드 사용 (기본 계정 및 패스워드 변경)
...
Info |
---|
SYS 사용자 패스워드 변경 방법은 'sys 유저 패스워드 변경 방법' 페이지를 참고하세요. |
권한 관리
...
DBA 권한 관리(System Privilege 권한 제한)
...
Code Block | ||||
---|---|---|---|---|
| ||||
REVODE '시스템 권한' FROM 사용자; -- 수행 예 REVOKE CREATE TABLE FROM USER1; |
WITH GRANT OPTION 사용
...
WITH GRANT OPTION은 객체 접근 권한을 부여 받은 사용자가 해당 권한을 다른 사용자에게 부여할 수 있으므로 객체 접근 권한을 DBA 관리 없이 남용할 수 있습니다.
...
Code Block | ||||
---|---|---|---|---|
| ||||
-- user6 사용자가 employees 테이블의 SELECT, DELETE 권한을 다른 사용자에게 부여할 수 있는 권한을 가지고 있는 경우 REVOKE SELECT, DELETE ON employees FROM user6; GRANT SELECT, DELETE ON employees TO user6; |
환경 파일 점검
...
altibase.properties 파일 접근 권한 설정
...
Code Block | ||||
---|---|---|---|---|
| ||||
$ ls -l $ALTIBASE_HOME/conf/altibase.properties -rw-r--r-- 1 heejung.lee heejung.lee 27652 2014-09-26 12:52 /data/heejung.lee/63119/conf/altibase.properties $ find $ALTIBASE_HOME -name altibase.properties -exec chmod 600 {} \; $ ls -l $ALTIBASE_HOME/conf/altibase.properties -rw------- 1 heejung.lee heejung.lee 27652 2014-09-26 12:52 /data/heejung.lee/63119/conf/altibase.properties |
Log Anchor, Logfile, Datafile 접근 권한 설정
...
Code Block | ||||
---|---|---|---|---|
| ||||
$ ls -l $ALTIBASE_HOME/logs/loganchor* -rw-r----- 1 heejung.lee heejung.lee 14156 2014-09-26 12:53 /data/heejung.lee/63119/logs/loganchor0 -rw-r----- 1 heejung.lee heejung.lee 14156 2014-09-26 12:53 /data/heejung.lee/63119/logs/loganchor1 -rw-r----- 1 heejung.lee heejung.lee 14156 2014-09-26 12:53 /data/heejung.lee/63119/logs/loganchor2 $ find $ALTIBASE_HOME --name loganchor* -exec chmod 600 {} \; $ ls -l $ALTIBASE_HOME/logs/loganchor* -rw------- 1 heejung.lee heejung.lee 14156 2014-09-26 12:53 /data/heejung.lee/63119/logs/loganchor0 -rw------- 1 heejung.lee heejung.lee 14156 2014-09-26 12:53 /data/heejung.lee/63119/logs/loganchor1 -rw------- 1 heejung.lee heejung.lee 14156 2014-09-26 12:53 /data/heejung.lee/63119/logs/loganchor2 |
iSQL 명령 쉘 히스토리 검사
...
iSQL을 사용하여 데이터베이스에 접속 할 때 계정 및 패스워드를 함께 입력하면 쉘 히스토리(.history 또는 .sh_history) 파일에 기록이 남기 때문에 패스워드가 유출될 수 있습니다.
...
Code Block | ||
---|---|---|
| ||
$ chmod 600 ~/.sh_history |
DBMS 보안 설정
...
Public Synonym 사용
...
점검 방법
Code Block | ||||
---|---|---|---|---|
| ||||
SELECT OBJECT_OWNER_NAME, SYNONYM_NAME FROM SYSTEM_.SYS_SYNONYMS_ WHERE OBJECT_OWNER_NAME = 'SYSTEM_'; |
...
Code Block | ||||
---|---|---|---|---|
| ||||
DROP PUBLIC SYNONYM synonym_name; |
로그인 실패 횟수에 따른 잠금시간 등 계정 잠금 정책 설정
...
Code Block | ||||
---|---|---|---|---|
| ||||
ALTER USER USER1 LIMIT (FAILED_LOGIN_ATTEMPTS 3, PASSWORD_LOCK_TIME 3); |
패스워드 복잡도 설정
...
적용 버전
- ALTIBASE HDB 4.3.9.211 부터
- ALTIBASE HDB 5.3.3.89 부터
- ALTIBASE HDB 5.5.1.5.1 부터
- ALTIBASE HDB 6.1.1.2.1 부터
- ALTIBASE HDB 6.3.1
...
Code Block | ||||
---|---|---|---|---|
| ||||
CREATE OR REPLACE FUNCTION pwd_verify_function ( username varchar(20), password varchar(20)) RETURN varchar(100) AS result varchar(100); pwdLength integer; isDigit boolean; isChar boolean; isPunction boolean; digitArray varchar(20); punctionArray varchar(25); charArray varchar(52); BEGIN digitArray := '0123456789'; charArray := 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; punctionArray :='!"#$%&()``*+,-/:;<=>?_'; -- Check if the password is same as the username IF LOWER(password) = LOWER(username) THEN result := 'Password same as or similar to user'; RETURN result; END IF; -- Check for the minimum length of the password IF LENGTH(password) < 4 THEN result := 'Password length less than 4'; RETURN result; END IF; -- Check if the password is too simple. IF LOWER(password) IN ('welcome', 'database', 'account', 'user', 'password', 'altibase', 'computer', 'abcd') THEN result := 'Password too simple'; RETURN result; END IF; -- Check if the password contains at least one letter, one digit and one -- punctuation mark. -- 1. Check for the digit isDigit := FALSE; pwdLength := length(password); FOR i IN 1...10 LOOP FOR j IN 1...pwdLength LOOP IF substr(password,j,1) = substr(digitArray,i,1) THEN isDigit := TRUE; GOTO findchar; END IF; END LOOP; END LOOP; IF isDigit = FALSE THEN result := 'Password should contain at least one digit, one character and one punctuation'; RETURN result; END IF; -- 2. Check for the character <<findchar>> isChar := FALSE; FOR i IN 1...length(charArray) LOOP FOR j IN 1...pwdLength LOOP IF substr(password,j,1) = substr(charArray,i,1) THEN isChar := TRUE; --GOTO findpunct; END IF; END LOOP; END LOOP; IF isChar = FALSE THEN result := 'Password should contain at least one digit, one character and one punctuation'; RETURN result; END IF; -- 3. Check for the punctuation <<findpunct>> isPunction := FALSE; FOR i IN 1...length(punctionArray) LOOP FOR j IN 1...pwdLength LOOP IF substr(password,j,1) = substr(punctionArray,i,1) THEN isPunction := TRUE; GOTO endsearch; END IF; END LOOP; END LOOP; IF isPunction = FALSE THEN result := 'Password should contain at least one digit, one character and one punctuation'; RETURN result; END IF; <<endsearch>> result := 'TRUE'; RETURN result; END; / |
패스워드의 주기적인 변경
...
적용 버전
- ALTIBASE HDB 4.3.9.211
- ALTIBASE HDB 5.3.3.89
- ALTIBASE HDB 5.5.1.5.1
- ALTIBASE HDB 6.1.1.2.1
- ALTIBASE HDB 6.3.1
...
Code Block | ||||
---|---|---|---|---|
| ||||
ALTER USER USER1 LIMIT (PASSWORD_LIFE_TIME 7); |
ALTIBASE HDB 서비스 포트 기본값 변경
...
$ALTIBASE_HOME/conf/altibase.properties 에서 PORT_NO 의 값을 변경 후 알티베이스 서버 프로세스를 재시작
세션 IDLE_TIMEOUT 설정
...
IDLE_TIMEOUT 은 세션 별로 설정 변경이 가능하여 접속 시 ALTIBASE HDB 서버 프로퍼티의 영향을 받더라도 세션에서 변경할 수 있습니다.
...
- 알티베이스 서버 프로세스 재시작 시에도 변경 값을 반영하려면 $ALTIBASE_HOME/conf/altibase.properties 에서 IDLE_TIMEOUT 프로퍼티의 값을 변경해야 합니다.
기본적인 감사(사용자 문장, 권한, 객체 등) 설정
...
감사 설정이 안되어 있는 경우 Administrator's Manual 의 '14. 데이터베이스 감사 (Database Auditing)' 부분과 SQL Reference 매뉴얼의 '5. 데이터 제어' 부분을 참고하여 설정하세요.
매뉴얼 다운로드 페이지 : http://support.altibase.com/kr/manual
원격에서 DB 서버로의 접속 제한
...
이 기능은 ALTIBASE HDB 5 부터 제공합니다.
...
- 알티베이스 서버 프로세스 재시작 시에도 변경 값을 반영하려면 $ALTIBASE_HOME/conf/altibase.properties 에서 REMOTE_SYSDBA_ENABLE 프로퍼티의 값을 변경해야 합니다.
보안 패치
...
최신 패치 적용
...
ALTIBASE HDB 최신 버전은 고객지원서비스포털 에서 확인할 수 있습니다.
...
- 메이저 버전 릴리즈 시
- 크리티컬한 버그가 반영된 경우