관리 메뉴

JHLBLUE

주요통신기반시설 DBMS 취약점진단 점검 및 조치(oracle) 본문

기타

주요통신기반시설 DBMS 취약점진단 점검 및 조치(oracle)

JHLBLUE 2018. 7. 26. 17:01

oracle 계정으로 로그인한 뒤에 실행

sqlplus로 실행

centos 6.9, oracle 11g 기준으로 진행

취약점진단 항목은 2017년 12월 주요정보통신기반시설 기술적 취약점 분석 평가 방법 상세가이드 참고(URL)


1.1 기본 계정의 패스워드, 정책 등을 변경하여 사용

1) dba 계정중 사용 가능한 계정들만 조회

select username||'::'||profile||'::'||password from dba_users where account_status='OPEN';

dba 계정 전체의 리스트 및 계정의 상태 조회

select username||'::'||profile||'::'||password||'::'||account_status from dba_users;




2) 기본 패스워드를 사용하는 계정 리스트 출력

select * from dba_users_with_defpwd


1.2 scott 등의 Demonstration 및 불필요 계정을 제거하거나 잠금 설정 후 사용

1.1의 dba 계정 전체의 리스트 및 계정의 상태 조회 쿼리를 이용하여 조회


1.3 패스워드의 사용기간 및 복잡도를 기관 정책에 맞도록 설정

패스워드 정책 확인

select profile||'::'||resource_name||'::'||resource_type||'::'||limit from dba_profiles where resource_name like '%PASSWORD%' order by profile;


1.4 데이터베이스 관리자 권한을 꼭 필요한 계정 및 그룹에 허용

DBA 권한을 가지고 있는 계정 확인

select grantee||'::'||granted_role from dba_role_privs where granted_role='DBA';


1.5 패스워드 재사용에 대한 제약의 설정

1.3의 패스워드 정책 확인 쿼리를 이용하여 조회, PASSWORD_REUSE_MAX, PASSWORD_REUSE_TIME 설정값 참고


1.6 DB 사용자 계정의 개별적 부여 및 사용

1.1의 dba 계정 전체의 리스트 및 계정의 상태 조회 쿼리를 이용하여 계정 리스트 조회


2.1 원격에서 DB 서버로의 접속 제한

1) REMOTE_OS_AUTHENT 파라미터의 값 확인, FALSE인 경우 원격 OS 인증방식을 사용하지 않고 있음

select name||'::'||value from v$parameter where name='remote_os_authent' 또는 show parameter remote_os_authent



2) OS(CentOS) 방화벽을 통한 원격 접근 IP 주소 제한


2.2 DBA 이외의 인가되지 않은 사용자가 시스템 테이블에 접근할 수 없도록 설정

DBA만 접근 가능한 테이블의 권한 확인, 결과가 없는 경우 접근할 수 없도록 설정되어 있음

select grantee||'::'||privilege||'::'||owner||'::'||table_name from dba_tab_privs

where (owner='SYS' or table_name like 'DBA_%')

and privilege <> 'EXECUTE'

and grantee not in('PUBLIC','AQ_ADMINISTRATOR_ROLE','AQ_USER_ROLE','AURORA$JIS$UTILITY$','OSE$HTTP$ADMIN','TRACESVR','CTXSYS','DBA','DELETE_CATALOG_ROLE','EXECUTE_CATALOG_ROLE','EXP_FULL_DATABASE','GATHER_SYSTEM_STATISTICS','HS_ADMIN_ROLE','IMP_FULL_DATABASE','LOGSTDBY_ADMINISTRATOR','MDSYS','ODM','OEM_MONITOR','OLAPSYS','ORDSYS','OUTLN','RECOVERY_CATALOG_OWNER','SELECT_CATALOG_ROLE','SNMPAGENT','SYSTEM','WKSYS','WKUSER','WMSYS','WM_ADMIN_ROLE','XDB','LBACSYS','PERFSTAT','XDBADMIN','SH','PM','OWBSYS','SYSMAN','OLAP_XS_ADMIN','ADM_PARALLEL_EXECUTE_TASK','APPQOSSYS','AQ_ADMINISTRATOR_ROLE','APEX_030200','DBFS_ROLE','HS_ADMIN_SELECT_ROLE','IX','OE','OLAPI_TRACE_USER','ORACLE_OCM','OWB$CLIENT','EXFSYS')

and grantee not in(select grantee from dba_role_privs where granted_role='DBA');


2.3 리스너의 패스워드를 설정하여 사용

1) 리스너 동작 상태 확인, Security 설정값이 ON으로 되어있으면 패스워드 적용

$ORACLE_HOME/bin/lsnrctl status


2) listener.ora 파일 확인(생성이 안되어있음...)


2.4 불필요한 ODBC/OLE-DB 데이터 소스와 드라이브 제거 후 사용

Windows OS에만 해당됨


2.5 일정 횟수의 로그인 실패 시 이에 대한 잠금정책 적용

로그인 관련 정책 확인

select profile||'::'||resource_name||'::'||resource_type||'::'||limit from dba_profiles where resource_name like '%LOGIN%' order by profile;


2.6 DB 계정의 umask를 022 이상으로 설정

umask 명령으로 확인


2.7 주요 파일(설정파일, 패스워드 파일 등)들의 접근 권한 설정

생략, 주요정보통신기반시설 가이드라인 참조


2.8 관리자 이외의 사용자가 리스너 로그 및 trace 파일에 대한 변경을 제한

2.3 lsnrctl status 명령의 결과로 나온 Listener Log File의 권한 확인


3.1 응용프로그램 또는 DBA 계정의 Role이 Public으로 설정되지 않도록 설정

Role이 Public으로 설정된 계정 찾기, 결과가 나오는 경우 취약

select granted_role||'::'||grantee from dba_role_privs where grantee='PUBLIC';


3.2 OS_ROLES, REMOTE_OS_AUTHENTICATION, REMOTE_OS_ROLES를 FALSE로 설정

os_roles, remote_os_authentication, remote_os_roles 파라미터의 값 확인

select name||'::'||value from v$parameter where name='os_roles' or name='remote_os_authent' or name='remote_os_roles';



3.3 패스워드 확인함수의 설정 및 적용

1) 패스워드 확인함수 관련 설정 확인

select profile||'::'||resource_name||'::'||resource_type||'::'||limit from dba_profiles where resource_name like '%FUNCTION%';


2) 패스워드 관련 파라미터 확인

1.3의 패스워드 정책 확인 쿼리를 이용하여 조회


3.4 인가되지 않은 Object Owner의 제한

select distinct owner from dba_objects

where owner not in

('SYS','SYSTEM','MDSYS','CTXSYS','ORDSYS','ORDPLUGINS','AURORA$JIS$UTILITY$','HR','ODM','ODM_MTR','OE','OLAPDBA','OLAPSYS','OSE$HTTP$ADMIN','OUTLN','LBACSYS','MTSYS','PM','PUBLIC','QS','QS_ADM','QS_CB','QS_CBADM','DBSNMP','QS_CS','QS_ES','QS_OS','QS_WS','RMAN','SH','WKSYS','WMSYS','XDB', 'SCOTT', 'OWBSYS_AUDIT', 'FLOWS_FILES', 'OWBSYS', 'ORACLE_OCM', 'EXFSYS', 'APEX_030200', 'SYSMAN', 'IX', 'APPQOSSYS', 'ORDDATA','BI','SI_INFORMTN_SCHEMA')and owner not in (select grantee from dba_role_privs where granted_role='DBA');



3.5 grant option이 role에 의해 부여되도록 설정

select grantee||'::'||owner||'::'||table_name from dba_tab_privs where grantable='YES'

and owner not in ('SYS', 'SYSTEM', 'MDSYS', 'ORDSYS', 'ORDPLUGINS', 'WMSYS', 'SDB', 'LBACSYS', 'OLAPSYS', 'CTXSYS', 'FLOWS_FILES', 'XDB')

and grantee not in(select grantee from dba_role_privs where granted_role='DBA');



3.6 데이터베이스의 자원 제한 기능을 TRUE로 설정

select name||'::'||value from v$parameter where name='resource_limit';



4.1 데이터베이스에 대해 최신 보안패치와 벤더 권고사항 모두 적용

패치 버전 확인

$ORACLE_HOME/OPatch/opatch lsinventory -detail



4.2 데이터베이스의 접근, 변경, 삭제 등의 감사기록이 기관의 감사기록 정책에 적합하도록 설정

담당자와 인터뷰를 통해 관련 정책 확인



4.3 보안에 취약하지 않은 버전의 데이터베이스를 사용

4.1의 패치버전 확인 명령 또는 버전확인 관련 sql 구문으로 확인 가능

$ORACLE_HOME/OPatch/opatch lsinventory -detail

select * from v$version where banner like 'Oracle%'



5.1 Audit Table은 데이터베이스 관리자 계정으로만 접근하도록 제한

select owner||'::'||table_name from dba_tables where table_name='AUD$';, SYS, SYSTEM 이외의 계정이 조회되는 경우 취약



'기타' 카테고리의 다른 글

ajax request response  (0) 2018.03.06
virtualbox kali linux fullscreen  (0) 2017.11.02
Comments