콘텐츠로 이동

D-14: 데이터베이스의 주요 설정 파일, 비밀번호 파일 등과 같은 주요 파일들의 접근 권한이 적절하게 설정

분류: DBMS

중요도: 중


개요

점검 내용

데이터베이스의 주요 파일들에 대해 관리자를 제외한 일반 사용자의 파일 수정 권한을 제거하였는지 점검

점검 목적

데이터베이스의 주요 파일에 관리자를 제외한 일반 사용자의 파일 수정 권한을 제거함으로써 비인가자에 의한 DBMS 주요 파일 변경이나 삭제를 방지하고 주요 정보 유출을 방지할 수 있음

보안 위협

데이터베이스 주요 파일에 비인가자가 접근하여 수정 및 삭제 시 데이터베이스 운영에 장애가 발생할 수 있으며 계정 비밀번호 정보 등 중요 정보의 유출 위험이 존재함

참고

데이터베이스의 주요 파일

orapw.ora, listener.ora, init<SID>.ora, redo 파일, 데이터베이스 설정 파일, 네트워크 설정 파일 등

점검 대상 및 판단 기준

대상

Oracle DB, PostgreSQL, Cubrid 등

판단 기준

✅ 양호: 주요 설정 파일 및 디렉터리의 권한 설정 시 일반 사용자의 수정 권한을 제거한 경우

❌ 취약: 주요 설정 파일 및 디렉터리의 권한 설정 시 일반 사용자의 수정 권한을 제거하지 않은 경우

조치 방법

주요 설정 파일 및 디렉터리의 권한 설정 변경

조치 시 영향

일반적인 경우 영향 없음

점검 및 조치 사례

Oracle DB

[Unix OS]

Step 1) 디렉터리 또는 파일의 권한 점검

  • $ORACLE_HOME/bin/oracle (755)
  • $ORACLE_HOME/bin/[ ] (755)
    • sqlplus, sqlldr, sqlload, proc, oraenv, oerr, exp, imp, tkprof, tnsping, wrap
  • $ORACLE_HOME/bin/[ ] (750)
    • svrmgrl, lsnrctl, dbsnmp
  • $ORACLE_HOME/network (755)
  • $ORACLE_HOME/network/admin/[ ] (755)
    • listener.ora, sqlnet.ora
  • $ORACLE_HOME/lib (755)
  • $ORACLE_HOME/network/admin/[ ] (644)
    • tnsnames.ora, protocol.ora, sqlpnet.ora
  • $ORACLE_HOME/dbs/init.ora (640)
  • $ORACLE_HOME/dbs/init<SID>.ora (640)
  • Find $ORACLE_HOME –name init*.ora –print
    • 파일 및 디렉터리의 권한 설정 변경
      # chmod <적용 권한> <파일명>
      

Step 2) redo 파일, 데이터베이스 설정 파일, 데이터 파일 위치 확인(SQL*Plus)

SQL> Select value from v$parameter where name='spfile';
SQL> Select 'Control Files: '||value from v$parameter where name='control_files';
SQL> select 'Control Files: '||value from v$parameter where name='spfile';
SQL> select 'Logfile: '||member from v$logfile;
SQL> select 'Datafile: '||name from v$datafile;
  • 파일 및 디렉터리의 권한 설정 변경
    # chmod <적용 권한> <파일명>
    

[Windows OS]

Step 1) 패스워드 파일(orapw) 접근 권한은 administrators, system group, owner group, oracle service count, DBA에게 모든 권한 또는, 그 이하로 설정하고 다른 그룹은 제거함

MySQL

[Unix OS]

Step 1) 설정 파일 (my.cnf, my.ini)의 접근 권한 설정

설정 파일 (my.cnf, my.ini)의 접근 권한을 설정 파일에 대한 보호를 위하여 600 또는 640으로 설정

  • my.cnf 파일 위치: /etc/my.cnf, <각 홈디렉터리>/my.cnf
    # chmod 600 ./my.cnf
    

[Windows OS]

Step 1) 설정 파일의 접근 권한은 Adminisrators, SYSTEM, Owner에게 모든 권한 또는 그 이하로 설정하고 다른 그룹은 제거함

PostgreSQL

[Unix OS]

Step 1) 주요 설정 파일 위치 확인

  • postgresql.conf 파일 위치: [$datadir]
  • DB 접속 통제 설정 파일 위치: /postgres/data/pg_hba.conf, /postgres/data/pg_ident.conf
  • log_directory : /log_directory/pg_log

Step 2) 주요 설정 파일의 권한 설정

  • 환경설정 파일(postgresql.conf)의 권한을 640 이하로 설정
    # chmod 640 [$datadir]/postgresql.conf
    
  • DB접속 통제 설정 파일(pg_hba.conf, pg_ident.conf)의 권한을 640 이하로 설정
    # chmod 640 ./pg_hba.conf
    # chmod 640 ./pg_ident.conf
    
  • 히스토리 파일 (.psql_history)의 권한을 600 이하로 설정
    $ chmod 600 .psql_history
    
  • Log 파일(pg_log)의 권한을 640 이하로 설정
    # chmod 640 [Log 파일]
    

[Windows OS]

Step 1) 주요 환경설정 파일의 접근 권한은 Administrators, SYSTEM, Owner에게 모든 권한 또는 필요 권한만 부여하여 설정하고 기타 다른 그룹은 권한 제거

Cubrid

Step 1) cubrid.conf 파일 권한 확인

# ls –l $_CUBRID_DATABASES/conf/cubrid.conf
-- 또는
# ls –l /root/CUBRID-11.2.8.0824-bf70ab7-Linux.x86_64/conf/cubrid.conf
-- (설치경로 직접 입력)

Step 2) cubrid.conf 파일 권한 설정

# sudo chmod 640 /root/CUBRID-11.2.8.0824-bf70ab7-Linux.x86_64/conf/cubrid.conf

참고

cubrid.conf 파일의 권한이 600 또는 640일 경우 양호함