DB보안

DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!

DB 취약점 분석 설계

DB 보안 실무
작성자
admin
작성일
2021-02-15 17:44
조회
3349

2. DB 취약점 분석 설계

DB의 취약점을 보안 관리자 또는 DBA가 일일이 찾아낼 수도 있지만 이는 엄청난 시간과 노력이 필요하다. 이러한 단점을 보안하고 업무의 효율성을 높이기 위해 일반적으로 DB 취약점 분석 솔루션을 사용한다.
DB 취약점 분석 솔루션은 빠른 시간안에 방대한 DB를 분석하여 DB의 취약점을 도출하여 해당 DB의 보안 대책을 마련하는 기초 자료를 제공한다. 또한, 보안 관리자 및 DBA에게 현재 운영 중이거나 향후 구축될 DB의 취약점을 미연에 방지하도록 사전 가이드성 정보를 제공한다.
다음은 DB 취약점 분석 솔루션의 도입시 고려할 사항이다.

■ 사용자 편의성과 점검시간 단축(Easy operating and time saving)
?시스템 내에 에이전트(Agent)나 별도의 컴포넌트(Component) 설치를 요구하지 않음
?점검대상 DB의 IP 대역과 포트 정보만으로 점검 수행 가능
?단 한번의 정보수집으로 대상 네트워크 정보자산의 파악 가능
■다각적 분석(Fine granularity diagnosis on database security)
?단편적인 보안도구(In-house ware)를 조합한 보안점검은 일부 항목이 누락될 위 험 상존
?국제 보안 기준(STIG, SANS, CIS)에 입각한 다각도의 점검과 분석 가능
■모의해킹과 내부 보안감사 병행(Double-faced security check)
?보안관리자 및 감사자 측면을 고려한 다각도의 보안점검 수행 가능
?외부로부터의 침입을 가상한 모의해킹 수행
?DB가 보안상 안전하게 설치·운영되는 가를 점검하는 내부 보안 감사 수행
■사용자 정의 진단 (Adaptable user-defined operating)
?간편하고 직관적인 유저 인터페이스(User Interface)
?점검자의 필요에 의한 점검항목 정의 후 점검 수행 가능
?비밀번호 체크(Password Checking)와 같은 개별 점검항목에 대한 신속한 점검 수 행 가능
다음 그림은 DB 취약점 분석을 위한 절차를 나타낸 것이다.

대상 DB 설정 대상 DB 설정 DB 자산 조사 내부감사 정책 설정 모의해킹 정책 설정 DB 내부 접속 취약점 Scan 번복수행 Fix Script 생성 결과 검출 리포트 생성 [그림 3-4-3] DB 취약점 분석 절차

다음은 본 절에서 자주 사용되는 키용어에 대한 설명이다.

키워드 - 설명 / Access Control - 입력 시스템 또는 인증되지 않는 사용자가 컴퓨터, 컴퓨터 네트워크 또는, 파일 등에 접근하는 것을 제한하는 것을 의미한다. / Affected Version - 직접 영향을 받는 버전을 의미한다. / Alias - 리스너(Listener)의 별칭을 의미한다. / Application Integrity - 애플리케이션에서 현실 세계의 상황과 동일하게 데이터의 값을 유지하는 것으로 무결성의 유지는 애플리케이션의 구축 및 운영에 있어 중요한 항목이다. / Attack - 정보시스템 또는 저장된 정보에 불법적으로 접근하거나 그 기능을 마비시키기 위하여 정보시스템의 보안 기능을 우회하거나 파괴 또는 무력화 시키고자 하는 각종의 행위를 의미한다. / Auditing - 사용 및 보안정책에 준하여 안전하게 운용되고 있는지 확인하기 위하여 정보시스템 내에 기록 저장되어 있는 각종 사용자 행위에 대한 상세 내용을 조사 분석하는 방법을 의미한다. / Authentication - 1) 임의의 정보에 접근할 수 있는 주체의 능력이나 자격을 검증하는데 사용되는 수단으로 이를 통해 시스템의 부당한 사용이나 정보의 부당한 전송 등에 대한 방어 가능 2) 전송, 메시지, 혹은 발신자 등을 증명하기 위한 보안대책 혹은 특정 범주를 가진 정보를 수신할 자격이 있는지를 검증하는 수단 / Availability - 정보 보안의 네 가지 기본 요구 사항 중 하나인 가용성은 인가를 받은 사용자가 정보나 서비스를 요구할 경우, 정보시스템에 대한 사용 가능 여부에 대한 요구 사항이다. 가용성의 유지는 보안 시스템의 주요 기능 중 하나이다. 정보 자원의 가용성에 대한 공격을 서비스 거부(DoS) 공격이라고 한다. ※ 정보 보안의 4가지 기본 요구 사항 : 책임추적성, 기밀성, 무결성, 가용성 / Backup - 시스템 내의 데이터가 파괴 또는 변형되었을 경우를 대비하여 기록 매체에 복사해 두는 것으로 완전 백업은 데이터 전체를 완전히 복사하는 것이고 부분 백업은 최종 안전 백업으로부터 변경된 부분만 복사해 두는 것이다. 중요 데이터를 보조의 하드디스크나 플로피 디스켓 또는 테이프로 전송하는 것은 시스템 장애 시 중요 파일이나 데이터의 손상을 막아주는 매우 유용한 방법으로 널리 사용되고 있다. / Backup Plan - 위급한 상황에서 중요한 자원들의 가용성을 보증하고 동작의 지속성을 용이하게 할 보호프로그램으로 유지보수되는 긴급 응답, 백업 운용, 재앙 후 회복 등에 대한 계획을 의미한다.

키워드 - 설명 / Buffer Overflow - 버퍼 또는 저장 영역에 더 많은 데이터가 입력되어 버퍼에서 처리할 때 발생하는데 버퍼 초과는 생산과 소비 과정 사이의 비율을 처리하는데 있어서 발생하는 불일치에서 비롯된다. 버퍼 초과는 시스템 충돌이나 시스템 접근을 유도하는 백 도어의 생성을 초래한다. / Connection Node - 점검 대상에 대한 커넥션 개체(IP/listener Port)를 의미한다. / Criticality - 취약점에 관한 심각도이다. / Database Node - 점검 대상에 대해 검색된 DB 개체이다. / Denial of Services - 1) 시스템의 정상적인 기능을 방해하여 인증된 사용자에 의한 합법적인 접근을 방해하기 위해 의도된 공격. 2) 시스템의 일부에서 의도된 목적과 일치하여 기능하지 못하도록 방해하는 일련의 조치로 인증되지 않은 파괴, 수정, 또는 서비스 지연을 유발하는 모든 행위도 포함한다. DoS는 공격자가 이익을 얻는 것은 아니지만, 정당한 사용자에 대한 서비스가 거부된다. 또한 데이터 파괴 또는 수정이나 시스템 손상, 인증 된 사용자에 대해 서비스 지연/방해되는 등, 시스템의 서비스를 과부화 시킴으로써 일어날 수 있다. DoS는 대개 원격 통신(인터넷을 통한)을 사용하는 외부 소스나 회사에 대해 자신의 손상을 회복 또는 복수하려는 의도로 이루어지는 경우가 많으며, 다루기 가장 어려운 공격 중 하나이다. / Fix Script - 취약점을 해결하기 위한 SQL Script. / Host Name - 호스트명이란 네트워크 상에서 어떤 컴퓨터를 유일하게 인식할 수 있는 이름을 가리킨다. 인터넷 상에서의 호스트명은 흔히 "www.terms.co.kr"과 같은 형태를 갖는데, 만약 그 주소에 하나의 인터넷 사이트만 있다면 호스트명과 도메인 이름은 같다고 볼 수 있다. 하지만, 한 컴퓨터에 하나 이상의 인터넷 사이트가 수용되어 있다면 그 사이트는 여러 개의 호스트명을 가질 수 있다. 예를 들어, "mall.terms.co.kr"와 "news.terms.co.kr"이라는 주소가 있다고 가정할 때, "mall"과 "news"등은 컴퓨터명이며, "terms.co.kr"은 도메인 이름이 된다. / IP Address - 인터넷상에서 라우팅을 효율적으로 하기 위하여 물리적인 네트워크 주소와 일치하는 개념으로 부여된 32 비트의 주소가 IP 주소이다. IP 주소를 이용하면 네트워크상의 유일한 호스트를 식별하는 것뿐만 아니라, 호스트가 있는 네트워크를 식별할 수 있다. IP 주소는 클래스로 나뉘어 있으며 하나의 네트워크에서 모든 호스트는 동일한 prefix를 고유한다. / Instance_name - Instance의 이름, 즉 SID를 의미한다.

키워드 - 설명 / Instance_status - 현재 Instance의 상태를 의미한다. / Logging - 정보시스템 사용자의 행위에 대한 증거가 되는 데이터를 시간 순으로 기록 저장하는 방법을 의미한다. / OS Integrity - OS에 대한 정보 및 자원의 불법적인 변경으로부터 보호하는 항목을 의미한다. / Password Attack - Default Account나 패스워드에 대한 brute-force, 사전 파일에 의한 공격기법 및 Password Cracking 기법 등을 통칭한다. / Penetration Test - 시스템 소유자의 허가를 받아 시스템의 보안에 대해 합법적으로 침투를 시도하는 보안 테스트의 일종이다. 침투자들은 모든 시스템 설계 및 구현 문서를 사용할 수 있는 것으로 가정할 수 있으며, 여기에는 시스템 소스 코드 목록, 설명서 및 회로 다이어그램등이 포함될 수 있다. 침투자들은 일반 사용자들에게 적용되는 제약과 달리 아무런 제약도 받지 않고 작업을 한다. 침투 테스트의 목적은 해커들이 이용할 수 있는 취약점들을 찾아내어 제거하는 것으로, 테스트를 위한 침투자들은 타이거 팀이라고도 불리며, SATAN과 같이 자동화 소프트웨어 피캐지를 사용하기도 한다. / PID - Process ID를 의미한다. / Privilege - 사용자, 프로그램, 프로세서에 부여된 권한으로 Privilege는 시스템의 접근통제보다 우선한다. / Risk - 예상되는 위협에 의하여 자산에 발생할 가능성이 있는 손실의 기대치, 이러한 위험은 자산의 가치 및 취약성과 위협요소의 능력, 보호대책의 효과 등에 의해 영향을 받는다. / SQL Injection - 웹 클라이언트의 반환 메시지를 이용하여 불법 인증 및 정보를 유출하는 공격으로 웹 응용 프로그램에 강제로 구조화 조회 언어(SQL) 구문을 삽입하여 내부 Database(DB) 서버의 데이터를 유출 및 변조하고 관리자 인증을 우회할 수도 있다. 이 공격은 MS SQL 서버뿐만 아니라 모든 관계형 Database 관리 시스템(RDBMS)에서 가능하다. / Threat - 1) 자산에 손실을 발생시키는 원인이나 행위를 의미한다. 2) 보안에 해를 끼치는 행동이나 사건을 의미한다. / TNS Attack - 가장 보편적인 Oracle 공격 중 하나로 리스너에 대한 공격으로 예를 들면 TNS Denial of Services Attack이다. / VSNNUM - 10진수로 패스워드화된 버전 번호를 의미한다. / Vulnerability - 1) 위협에 의하여 손실이 발생하게 되는 자산의 약점을 의미한다. 2) 기능명세, 설계 또는 구현단계의 오류나 시동, 설치 또는 운용상의 문제점으로 인하여 정보시스템이 지니게 되는 보안 취약점을 의미한다.


가. DB 환경 제안

DB 설치 항목 중 무엇이 필요한 요소인지가 확실하지 않다면 일반적인 구성으로 설치하게 되는데 대체로 DB의 대표적인 취약점은 사용하지 않는 모듈의 취약점을 통해 공격하는 사 례가 많기 때문에 DB는 처음 설치할 때 반드시 필요한 요소만 설치하여야 한다.
예를 들어, 오라클 DB의 데이터 딕셔너리(Data Dictionary)에 대한 공격을 살펴보면, 오 직 적절한 권한을 가진 사용자(DBA 권한으로 접속을 생성한 사용자)만이 데이터 딕셔너 리 상의 ANY 시스템 권한(ANY System Privilege)를 사용할 수 있게하여야 한다. 만약 ANY 시스템 전환을 앞에서와 같이 설정하지 않는다면, DROP ANY TABLE 시스템 권 한을 가진 사용자는 누구라도 데이터 딕셔너리 내용을 악의적으로 이용할 수 있을 것이다.
따라서, 데이터 딕셔너리를 조회해야만 하는 사용자에게는 SELECT ANY DRCTIONARY 시스템 권한을 주어 데이터 딕셔너리 뷰(Data Direction View)로의 접근만을 허용하도 록 해야 한다.
오라클에서 데이터 딕셔너리를 보호하기 위해서는 파라미터 파일(Parameter File)인 init.ora의 내용을 OS가 제공하는 에디터를 이용하여 다음과 같이 수정하여 주면 된다.

[스크립트 3-4-1] 데이터 딕셔너리 보호 조치 07_DIRCTIONARY_ACCESSIBILITY=FALSE

예를 들어, 오라클 9i에서는 디폴트로 O7_DIRCTIONARY_ACCESSIBILITY=FALSE 가지지만 오라클 8i에서는 디폴트로 O7_DIRCTIONARY_ACCESSIBILITY=TRUE 로 설정되어 있으므로 반드시 수정하여야 한다.


나. 계정 관리

오라클 DB를 설치하면 다수의 디폴트 사용자 아이디가 생긴다. 만약, 수동으로 DBCA를 사용하지 않고 오라클을 설치하는 경우라면 디폴트 사용자 아이디는 모두 열린다. 즉, 잠 기지 않는 상태가 되므로 보다 세심한 주의가 필요하다.
이러한 이유로 수동으로 설치한 DB는 SQL문을 통하여 디폴트 사용자 아이디를 잠그고 기간을 만료시켜야 한다. 물론 상기의 SYS, SYSTEM, SCOTT, OUTLN, 그리고 3개의 JSERV 사용자 아이디들은 제외해야 한다.
다음과 같은 SQL문을 통하여 DB 사용자 아이디 목록과 아이디별 상태를 알 수 있다.

[스크립트 3-4-2] DB 사용자 아이디 및 상태 조회 SQL>SELECT username, account_status FROM dba_users; Username ACCOUNT_STATUS / SYS OPEN / SYSTEM OPEN / OUTLN OPEN / DBSNMP OPEN / TRACESVR OPEN / AURORA$JIS$UTILITY$ OPEN / OSE$HTTP$ORB$UNAUTHENTICATED OPEN / ORDSYS OPEN / ORDPLUGING OPEN / MDSYS OPEN / USERNAME ACCOUNT_STATUS / USER1 OPEN / USER2 OPEN

특정 사용자 아이디를 잠그고 기간을 만료시키는 SQL문장은 다음과 같다.

[스크립트 3-4-3] 특정사용자 차단 설정 SQL>ALTER USER test ACCOUNT LOCK PASSWORD EXPIRE; 또한 불필요한 사용자 아이디를 삭제하는 것도 좋은 방법이 될 수 있다. 예를 들어, USER1을 삭제하고자 한다면 다음 SQL 문장을 이용한다. [스크립트 3-4-4] 특정사용자 아이디 삭제 SQL > DROP USER user1;


다. 패스워드 관리

앞서 언급한 디폴트 사용자 아이디인 SYS, SYSTEM, SCOTT, DBSNMP, 그리고 3개 의 JSERV 사용자 아이디들은 패스워드를 변경해 주어야 한다. 오라클 DB를 공격하는 가 장 손쉬운 방법은 설치 당시의 디폴트 패스워드를 사용하는 사용자 아이디를 사용하는 것 이므로 패스워드의 변경은 설치 직후에 지체 없이 이루어져야 한다.

[스크립트 3-4-5] 디폴트 패스워드를 사용한 접속 $sqlplus SQL *Plus: Release 8.1.7.0.0 - Production on Mon may 12:00:00 2003-08-06 ©Copyright 2000 Oracle Corporation. All rights reserved. Enter user name: SYSTEM Enter password: MANAGER Connected to: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production With the Partitioning option JServer Release 8.1.7.0.0-Production SQL> exit

앞의 접속 상황은 디폴트 사용자 아이디인 SYSTEM의 디폴트 패스워드인 MANAGER로 접 속이 이루어짐을 알 수 있다. 이렇게 디폴트 패스워드로 접속이 가능하다면 해당 DB는 디폴트 사용자 아이디를 알고 있는 누구든지 DB에 접근하여 자료를 파괴할 수 있다는 것을 의미한다. 디폴트 사용자 아이디의 디폴트 패스워드는 다음 표와 같다.

[표 3-4-1] 디폴트 사용자 아이디와 패스워드 Default User ID - Default Password / SYS - CHANGE_ON_INSTALL / SYSTEM - MANAGER / SCOTT - TIGER / DBSNMP - DBSNMP / DEMO - DEMO / MDSYS - MDSYS

JSERV의 사용자 아이디는 임의로 생성된 패스워드를 사용한다. 또한, DB는 영문자의 대 소문자를 구별하지 않음을 기억해야 한다. 다음은 USER2의 사용자 아이디의 패스워드를 'new_passwd'로 변경하는 SQL문장이다. 다른 디폴트 사용자 아이디도 동일한 방법으로 변경할 수 있다.

[표 3-4-6] 패스워드 변경 SQL > ALTER USER USER_2 IDENTIFIED BY new_password;

또한, 오라클 엔터프라이즈 에디션을 사용한다면 Kerberos, 토큰 카드(Token Card), 스마트 카드, X.509 등과 같은 강화된 인증 기능을 이용할 수도 있다.


라. 권한 관리

사용자에게는 반드시 필요한 최소권한(Least Privilege)만을 부여해야 한다. 예를 들어, PUBLIC 사용자 그룹에서 불필요한 권한을 회수하여야 한다. PUBLIC은 오라클 DB의 모든 사용자에게 디폴트로 적용된다. 따라서, 모든 사용자는 PUBLIC에 권한 부여(Privilege Grant)된 것은 어떤 일이든 할 수 있다. 이런 경우 사용자가 교묘하게 선택된 PL/ SQL 패키지를 실행시켜 보낼 자신에게 권한 부여된 권한 범위를 넘어서는 작업을 할 수도 있을 것이다.
부적절한 권한 관리로 PL/SQL 보다 강력한 다음과 같은 패키지들도 오용될 소지가 있으 므로 주의해야 한다.

[표 3-4-2] 패키지의 오용 예시 / 패키지 명 - 패키지의 역할 - 발생할 수 있는 문제점 / UTL_SMTP - 임의의 메일 메시지를 임의의 사용자 간에 전송할 수 있도록 하는 패키지 - 이 패키지를 Public 그룹에서 사용할 수 있도록 권한 부여하면 허가 받지 않은 메일 전송이 발생할 수 있음 / UTL_TCP - 외부의 Network 서비스로 TCP 컨넥션을 열수 있도록 하는 패키지 - 임의의 데이터가 DB 서버와 외부의 Network 서비스 사이에 오갈 수 있음 / UTL_HTTP - HTTP를 통한 데이터 검색 등을 가능케 하는 패키지 - HTML 형식의 임의의 데이터가 전송될 수 있음

패키지 명 - 패키지의 역할 - 발생할 수 있는 문제점 / UTL_FILE - 파일 처리와 관련된 패키지 - 설정이 잘못된 경우, 정보시스템상의 모든 파일에 TXT LEVEL의 접근이 가능할 수 있음 / DBMS_RANDOM - 저장된 데이터를 패스워드화하는데 사용되는 패키지 - 일반적으로 대부분의 사용자들은 데이터를 패스워드화하는 권한을 가져서는 안됨

앞의 표와 같은 패키지들은 특정한 응용프로그램에 아주 유용하게 이용될 수 있다. 바꾸어 말하면, 모든 경우에 이러한 패키지들을 필요로 하는 것이 아니라는 것이다. 따라서, 필요 하지 않는 패키지들의 사용권한을 PUBLIC에서 제거해야 한다. 즉, 'Run-time Facilities' 에 제약된 퍼미션을 주어야 한다.
오라클 자바 버추얼 머신(OJVM, Oracle Java Virtual Machine)이 DB 서버의 Runtime Facility의 예가 될 수 있다. 어떠한 경우라도 이러한 Run-time Facility에 모든 권한을 주어서는 안된다. 또한, DB 서버 외부에서 파일이나 패키지를 실행할 수 있는 Facility에 어떤 퍼미션을 줄 때는 반드시 정확한 경로를 명시하여야 한다. 다음은 이에 대한 예시들이다.

[스크립트 3-4-7] 취약한 Run - time Call의 예시 call dbms java.grant permission('SCOTT', 'SYS:java.io.FilePermission', '<<ALL FILES>>','read'); [스크립트 3-4-8] 안전한 Run - time Call의 예시 call dbms_java.grant_permission ('SCOTT', 'SYS;java.io.FilePermission','<<actual directiory path>>', 'read');


마. 인증 관리

클라이언트에 대한 철저한 인증이 필요하다. 예를 들러, 오라클 9i는 원격 인증 기능을 제 공한다. 만일 해당 기능이 활성화(True)되면 원격의 클라이언트들이 오라클 DB에 접속할 수 있다. 즉, DB는 적절하게 인증된 모든 클라이언트를 신뢰한다. 그러나 일반적으로 PC 의 경우에는 적절한 인증 여부를 보장할 수 없다. 따라서, 원격인증 기능을 사용하면 보안 이 대단히 취약해진다.
원격 인증기능을 비활성화(False)한다면 오라클 DB에 접속하려는 클라이언트들은 Server-base 인증을 해야 하므로 보안이 강화될 것이다.
원격 인증을 제한하여 클라이언트의 인증을 DB 서버가 행하도록 하려면 오라클 파라미터 파일(Parameter File) 인 init.ora의 내용을 다음과 같이 수정하면 된다.

[스크립트 3-4-9] 원격 인중 제한 조치 REMOTE_OS_AUTHENTICATION = FALSE

또한, DB 서버가 있는 시스템의 사용자 수를 제한하여야 한다. 즉, 오라클 DB가 운영되 고 있는 시스템의 사용자 수를 OS차원에서 제한하여야 한다. 제한이란 꼭 필요한 사용자 아이디만 생성하라는 의미로서 관리자 권한을 가진 사용자를 특히 주의해야 한다.


바. 원격 접속관리

■ 방화벽 구축
다른 중요한 서비스와 마찬가지로 DB 서버는 방화벽 뒤에 설치하여야 한다. 오라클 네 트워킹 인프라스트럭쳐인 오라클 Net Service(Net8 and SQL*Net으로 많이 알려져 있음)는 다양한 종류의 방화벽을 지원한다.

■ 기본 서비스 포트 사용 자제
오라클 DB를 외부 네트워크에서 접근할 수 있도록 방화벽의 1521 포트를 열어두면 이 는 치명적인 허점이 될 수 있다. 더 나아가 패스워드 설정 없이 오라클 리스너를 운영한 다면 DB에 대한 중요한 정보들이 노출될 수 있다. 이러한 노출정보가 많으면 많을수록 DB가 공격 당할 가능성이 높아진다. 또한, 원격에서 오라클 리스너의 설정을 변경할 수 없도록 하여야 한다.
다음과 같은 형식으로 오라클의 리스너 설정 파일인 listener.ora 내의 파라미터를 설정 하면 원격에서 오라클 리스너 설정을 바꿀 수 없다.

[스크립트 3-4-10] 원격 리스너 설정 변경 제한 ADMIN_RESTRICTIONS_listense_name=ON

접속을 허용할 네트워크 IP 주소 대역을 지정하는 것이 좋다. DB 서버가 특정한 IP 주소 대역으로부터의 클라이언트 접속을 제어하려면 'Oracle Net valid node checking' 기능 을 이용하면 된다. 이 기능을 사용하려면 protocol.ora 내의 파라미터를 다음과 같이 설 정해야 한다.

[스크립트 3-4-11] 접속 IP 주소 대역 설정 tcp.validnode_checking = YES tcp.excluded_nodes = {list of IP adress} tcp.invited_node = {list of IP address}

앞의 설정은 직관적으로 알 수 있듯이 첫번째 파라미터가 나머지 두 개 파라미터 기능의 활성화를 결정하며, invited_nodes에 포함된 IP 주소 대역의 접속 요구만이 받아들여진 다. 이러한 기능은 DoS 공격의 잠재적인 위협도 경감시켜준다.

■ 네트워크 트래픽(Network Traffic) 암호화
오라클 DB 서버와 클라이언트의 통신은 암호화되지 않은 형태로 이루어진다. 이는 네 트워크상의 악의적인 공격자에 의해 데이터의 읽기, 변경, 삭제가 가능하다는 보안상 의 위협이 존재한다. 따라서, 가능하다면 Oracle Advanced Security를 사용하여 네 트워크 트래픽을 암호화해야 한다.
그러나 오라클 Advanced Security가 Oracle Database Enterprise Edition에서만 제공된다는 점이며 암호화하고 복호화하는 알고리즘으로 인해 속도가 떨어질 수 밖에 없다. (암호화 복호화 알고리즘은 DES, Three-DES, RC4 중에서 선택할 수 있음)

■ DB 서버가 있는 시스템의 OS 강화
불필요한 서비스를 제거하면 DB 서버 시스템이 보다 안전해진다. UNIX와 Windows 를 막론하고 ftp, tftp, telnet 등의 불필요한 많은 서비스들을 디폴트로 제공하는데 제거된 서비스가 사용하는 TCP/UDP 포트는 막아야 한다. 이때, TCP/UDP 포트는 모두 막아야 한다.

■ 보안 패치의 적용
오라클 DB가 운영되고 있는 OS와 DB 자신에 대한 모든 중요한 패치를 정기적으로 실시 하여야 한다. 조직 차원에서 패치와 관련된 업무 프로세스를 만드는 것이 바람직하다. 오라클의 경우 다음의 사이트에서 보안과 관련된 정보를 얻을 수 있다.

■ http://otn.oracle.com
■ http://technet.oracle.com