취약점 진단 가이드/DBMS 취약점 진단 가이드

D-04(상) 데이터베이스 관리자 권한을 꼭 필요한 계정 및 그룹에 허용

H.J.World 2021. 7. 19. 17:50
728x90
반응형

※ 해당 가이드는 2017년 기준입니다.

주요정보통신기반시설 관리기관은 -정보통신기반 보호법- 제9조에 따라, 주요정보통신기반시설로 신규 지정된 후 6개월이내, 그리고 매년 취약점 분석/평가를 실시하여야 한다. 취약점 분석/평가는 453개의 관리적/물리적/기술적 점검항목에 대한 주요정보통신기반시설의 취약여부를 점검하여, 악성코드 유포, 해킹 등 사이버 위협 대응을 위한 종합적 개선과정이다.


주요정보통신기반시설 취약점 네트워크 장비 점검 항목

■ 취약점 개요

○ 점검개요 : 관리자 권한이 필요한 계정 및 그룹에만 관리자 권한을 부여하였는지 점검

○ 점검목적 : 관리자 권한이 필요한 계정과 그룹에만 관리자 권한을 부여하였는지 점검하여 관리자 권한의 남용을 방지하여 계정 유출로 인한 비인가자의 DB 접근 가능성을 최소화

○ 보안위협 : 관리자 권한이 필요한 계정 및 그룹에만 관리자 권한을 부여하지 않을 경우 관리자 권한이 부여된 계정이 비인가자에게 유출될 경우 DB에 접근 할 수 있는 위험이 존재

○ 점검대상 : Oracle, MSSQL, MySQL, ALTIBASE, TIBERO 

○ 판단기준

- 양호 : 관리자 권한이 필요한 계정 및 그룹에만 관리자 권한이 부여된 경우

- 취약 : 관리자 권한이 필요 없는 계정 및 그룹에 권한이 부여된 경우

 

■ 점검방법 및 조치방안

ORACLE

Step 1 SYSDBA 권한 점검
SQLSELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME NOT IN (SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE='DBA') and USERNAME !=‘INTERNAL’ and sysdba=‘TRUE’; (어떠한 계정이 라도 나오는 경우 취약)
Step 2 Admin에 부적합 계정 존재 여부 점검
SQL> select grantee, privilege from dba_sys_privs where grantee not in (‘SYS’, ‘SYSTEM’, ‘AQ_ADMINISTRATOR_ROLE’, ‘DBA’, ‘MDSYS’, ‘LBACSYS’, ‘ SCHEDULER_ADMIN’, ‘WMSYS’) and admin_option=‘YES’ and grantee not in (select
grantee from dba_role_privs where granted_role=‘DBA’); (어떠한 계정이라도 나오
는 경우 취약)
Step 3 관리자 권한이 불필요한 계정에서 관련 권한을 제거
 
불필요하게 시스템 권한을 부여한 계정의 권한 변경 필요
시스템 권한 부여가 필요한 경우 필요한 테이블별 권한 부여
인가된 사용자는 관리자 권한에 rolegrant 한 후, 시스템 권한을 grant 하고 role을 인가된 사용자에게 grant

○ MSSQL

Step 1 sysadmin 서버 역할의 계정 목록을 확인 후 해당 서버 역할에 불필요한 계정이 있는 경우 서버 역할에서 삭제
 
sysadmin 서버 역할에서 불필요한 계정 삭제
(명령어)Exec sp_droprolemember ‘user_name’, ‘sysadmin’;
()Exec sp_dropsrvrolemember ‘user01’, ‘sysadmin’;
(user01 계정을 sysadmin 서버 역할에서 삭제)

○ MySQL

Step 1 mysql.user 테이블에 적용된 권한은 모든 데이터베이스에 적용되므로 host, user, password를 제외한 나머지 권한은 허용하지 않음('N')으로 설정
 
사용자 등록
mysql> insert into mysql.user (host, name, password) values (‘%’, ‘user name’, password (‘password’);
디폴트로 모든 권한 ‘N’ 설정
 
권한 변경
mysql> update mysql.user set <권한>=‘N’ where user=‘user namer’;
Step 2 각 사용자는 접근하고자 하는 DBmysql.db에 등록 후 접근 권한을 부여하여 사용
 
DB등록 시 권한 부여
mysqlinsert into mysql.db values (‘%’, ‘DB name’, ‘username’ , ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’);
mysql> flush privileges;
 
DB권한 업데이트
mysql> update mysql.db set <권한>=‘Y’ where db=<DB name> and user=‘user
name’;
mysql> flush privileges;

○ Altibase

Step 1 계정별 부여된 시스템 권한 목록 확인 후, 아래 명령어 모두 입력
 
select * from system_.sys_grant_system_;
select * from system_.sys_users_;
select * from system_.sys_privileges_;
Step 2 sys_users_ 결과값에서 user_id 확인
Step 3 sys_grant_system_ 결과값에서 user_id와 동일한 grantee_id 확인하여 priv_id 확인
Step 4 일반사용자 계정 생성 시 시스템에 의해 부여되는 기본 권한 외 입력되어 있을 경우
해당 권한 삭제
 

○ Tibero

Step 1 계정별 부여된 시스템 권한 목록 확인 후, 아래 명령어 모두 입력
 
select * from dba_users;
select * from dba_sys_privs;
 
Step 2 dbs.users 결과값에서 시스템 계정, 일반 계정 확인
Step 3 dba_sys_privs 결과값에서 일반 계정임에도 시스템 권한을 불필요하게 부여받고 있는지 확인
Step 4 일반 계정에 불필요한 시스템 권한이 부여되어 있을 경우 권한 삭제
 

 

■ 조치 시 영향

일반적으로 무관

 

728x90
반응형