Oracle Database Security Checklist v8 r1.3
Oracle Database Security Checklist v8 r1.3
SECURITY CHECKLIST
31 March 2009
UNCLASSIFIED
This page is intentionally left blank.
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
TABLE OF CONTENTS
1. INTRODUCTION ........................................................................................................................... 1-1
1.1 OVERVIEW ................................................................................................................................ 1-1
1.2 ORGANIZATION OF THE CHECKLIST .......................................................................................... 1-1
1.3 SUPPORTED VERSIONS .............................................................................................................. 1-3
1.4 DOCUMENT EFFECTIVE DATE ................................................................................................... 1-3
1.5 REVIEW METHOD ...................................................................................................................... 1-3
1.6 REFERENCED DOCUMENTS........................................................................................................ 1-3
2. ORACLE DATABASE SRR RESULTS REPORT ...................................................................... 2-1
2.1 SITE INFORMATION ................................................................................................................... 2-1
2.2 SYSTEM INFORMATION ............................................................................................................. 2-2
2.3 SRR RESULTS ........................................................................................................................... 2-1
3. ORACLE DATABASE SERVER SECURITY REVIEW PROCEDURES ............................... 3-1
3.1 REVIEW PROCESS NOTES .......................................................................................................... 3-1
3.2 IAVM COMPLIANCE ................................................................................................................. 3-2
3.3 REVIEW TOOLS AND INTERFACES ............................................................................................. 3-2
3.4 SYSTEM SECURITY PLAN OVERVIEW ........................................................................................ 3-3
3.5 AUTOMATED INFORMATION SYSTEM (AIS) FUNCTIONAL ARCHITECTURE DOCUMENT............ 3-4
3.6 SENSITIVE DATA PROTECTION AND DEFINITION ....................................................................... 3-4
3.7 PROCESS NOTES ........................................................................................................................ 3-5
3.8 CHECK REFERENCE NUMBERING SCHEME ................................................................................ 3-5
3.9 DOCUMENTATION CONVENTIONS ............................................................................................. 3-6
3.10 PROCEDURE TABLE DATA......................................................................................................... 3-6
4. ORACLE DATABASE AUTOMATED CHECK PROCEDURES ............................................ 4-8
4.1 DO0240: ORACLE OS_ROLES PARAMETER ............................................................................ 4-8
4.2 DO0241: ORACLE AUDIT_SYS_OPERATIONS PARAMETER................................................ 4-9
4.3 DO0242: ORACLE GLOBAL_NAMES PARAMETER .............................................................. 4-10
4.4 DO0243: ORACLE _TRACE_FILES_PUBLIC PARAMETER .................................................. 4-11
4.5 DO3413: ORACLE AUDIT_TRAIL PARAMETER .................................................................... 4-12
4.6 DO3447: ORACLE OS_AUTHENT_PREFIX PARAMETER..................................................... 4-13
4.7 DO3538: ORACLE REMOTE_OS_AUTHENT PARAMETER .................................................. 4-14
4.8 DO3539: ORACLE REMOTE_OS_ROLES PARAMETER ........................................................ 4-15
4.9 DO3540: ORACLE SQL92_SECURITY PARAMETER ............................................................. 4-16
4.10 DO3546: ORACLE REMOTE_LOGIN_PASSWORDFILE PARAMETER ............................... 4-17
4.11 DO3547: ORACLE UTL_FILE_DIR PARAMETER ................................................................... 4-18
4.12 DO3685: ORACLE O7_DICTIONARY_ACCESSIBILITY PARAMETER ............................... 4-19
4.13 DO3696: ORACLE RESOURCE_LIMIT PARAMETER ............................................................ 4-20
4.14 DO3698: ORACLE DBLINK_ENCRYPT_LOGIN PARAMETER............................................. 4-21
4.15 DO6748: ORACLE SEC_CASE_SENSITIVE_LOGON PARAMETER..................................... 4-22
4.16 DO6749: ORACLE SEC_MAX_FAILED_LOGIN_ATTEMPTS PARAMETER....................... 4-23
4.17 DO6750: ORACLE SEC_PROTOCOL_ERROR_FURTHER_ACTION PARAMETER ........... 4-24
4.18 DO6752: ORACLE SEC_PROTOCOL_ERROR_TRACE_ACTION PARAMETER................. 4-25
4.19 DG0117: DBMS ADMINISTRATIVE PRIVILEGE ASSIGNMENT .................................................. 4-26
4.20 DO0155: ORACLE DEFAULT TABLESPACE ASSIGNMENT ......................................................... 4-27
4.21 DO3451: WITH GRANT OPTION PRIVILEGES ..................................................................... 4-28
4.22 DO3609: SYSTEM PRIVILEGES GRANTED WITH ADMIN OPTION ....................................... 4-29
4.23 DO3612: ORACLE SYSTEM PRIVILEGE ASSIGNMENT ............................................................... 4-30
4.24 DO3473: APPLICATION USER ROLE PRIVILEGES ...................................................................... 4-31
4.25 DO3475: ORACLE PUBLIC ACCESS TO RESTRICTED PACKAGES ............................................ 4-32
4.26 DO3686: ORACLE SYS.LINK$ TABLE ACCESS (10.1 AND EARLIER) ...................................... 4-34
4.27 DO3689: ORACLE OBJECT PERMISSION ASSIGNMENT TO PUBLIC ......................................... 4-35
i V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
10.6 DG0175: DBMS HOST AND COMPONENT STIG COMPLIANCY ............................................ 10-182
10.7 DG0176: DBMS AUDIT LOG BACKUPS ............................................................................... 10-183
10.8 DG0012: DBMS SOFTWARE STORAGE LOCATION .............................................................. 10-184
10.9 DG0019: DBMS SOFTWARE OWNERSHIP............................................................................ 10-185
10.10 DG0092: DBMS DATA FILE ENCRYPTION ........................................................................... 10-187
10.11 DG0195: DBMS HOST FILE PRIVILEGES ASSIGNED TO DEVELOPERS ................................... 10-188
10.12 DO0133: ORACLE CONNECTION CREDENTIAL PROTECTION ................................................ 10-189
10.13 DO3847: ORACLE SPOOLMAIN.LOG FILE (ORACLE 9I) ........................................................ 10-191
10.14 DO5037: ORACLE SQLNET AND LISTENER LOG FILES PROTECTION ................................... 10-192
10.15 DG0140: DBMS SECURITY DATA ACCESS AUDIT ............................................................... 10-195
10.16 DO0145: ORACLE SYSDBA OS GROUP MEMBERSHIP ....................................................... 10-196
10.17 DG0025: DBMS ENCRYPTION COMPLIANCE ...................................................................... 10-197
10.18 DG0093: REMOTE ADMINISTRATION ENCRYPTION FOR CONFIDENTIALITY ......................... 10-199
10.19 DG0103: DBMS LISTENER NETWORK RESTRICTIONS ......................................................... 10-201
10.20 DG0167: ENCRYPTION OF DBMS SENSITIVE DATA IN TRANSIT .......................................... 10-203
10.21 DG0198: DBMS REMOTE ADMINISTRATION ENCRYPTION .................................................. 10-204
10.22 DO0285: ORACLE LISTENER NETWORK PORT ASSIGNMENT ................................................ 10-205
10.23 DO0286: ORACLE CONNECTION TIMEOUT PARAMETER ...................................................... 10-206
10.24 DO0287: ORACLE SQLNET.EXPIRE_TIME PARAMETER ................................................ 10-208
10.25 DO3630: ORACLE LISTENER AUTHENTICATION .................................................................. 10-209
10.26 DO6740: ORACLE LISTENER ADMIN_RESTRICTIONS PARAMETER ............................... 10-213
10.27 DO6746: ORACLE LISTENER HOST REFERENCES ................................................................. 10-214
10.28 DO6747: CONNECTION MANAGER REMOTE ADMINISTRATION ........................................... 10-215
10.29 DO6751: SQLNET.ALLOWED_LOGON_VERSION ..................................................... 10-216
10.30 DG0005: DBMS ADMINISTRATION OS ACCOUNTS ............................................................. 10-217
10.31 DO0120: ORACLE PROCESS ACCOUNT HOST SYSTEM PRIVILEGES ....................................... 10-219
10.32 DO0121: ORACLE SERVICE AND PROCESS DEDICATED ACCOUNTS ...................................... 10-221
10.33 DO0279: ORACLE SOFTWARE OWNER UMASK SETTING ...................................................... 10-223
10.34 DG0016: DBMS UNUSED COMPONENTS ............................................................................. 10-225
10.35 DO6754: ORACLE CONFIGURATION MANAGER .................................................................. 10-227
10.36 DG0104: DBMS SERVICE IDENTIFICATION ......................................................................... 10-228
10.37 DG0106: DATABASE DATA ENCRYPTION CONFIGURATION ................................................. 10-230
10.38 DO0280: ORACLE EXTERNAL PROCEDURE ACCESS ............................................................. 10-231
10.39 DO5036: ORACLE NET TRACE_LEVEL ........................................................................... 10-236
11. ORACLE HOME VERIFY CHECK PROCEDURES........................................................... 11-238
11.1 DG0051: DATABASE JOB/BATCH QUEUE MONITORING ....................................................... 11-238
11.2 DG0090: SENSITIVE DATA IDENTIFICATION AND ENCRYPTION ........................................... 11-240
11.3 DO0360: DBMS MID-TIER APPLICATION ACCOUNT ACCESS ............................................... 11-242
11.4 DG0002: DBMS VERSION UPGRADE PLAN ......................................................................... 11-244
11.5 DO6753: ORACLE APPLICATION EXPRESS .......................................................................... 11-246
11.6 DG0179: DBMS WARNING BANNER ................................................................................... 11-247
11.7 DO0430: ORACLE MANAGEMENT AGENT USE ..................................................................... 11-250
12. APPENDIX A – IAVM BULLETIN COMPLIANCE............................................................ 12-252
14. APPENDIX C – VMS SRR PROCESS GUIDE FOR ORACLE DB SERVER................... 14-254
14.1 VMS TERMINOLOGY .......................................................................................................... 14-254
14.2 DATABASE VMS MAINTENANCE ........................................................................................ 14-255
15. APPENDIX D – VMS KEY AND STIGID CROSS REFERENCE AND INDEX ............... 15-259
1. Introduction
1.1 Overview
The Oracle Database Security Readiness Review (SRR) targets conditions that undermine
the integrity of security, contribute to inefficient security operations and administration,
or may lead to interruption of production operations specific to databases. Additionally,
the review ensures the site has properly installed and implemented the database
environment and that it is being managed in a way that is secure. The items reviewed are
derived from the general requirements listed in the Database Security Technical
Implementation Guide (STIG) as they apply to an Oracle Database Server installation.
The Database STIG requirements are in turn derived from DoD policy documents, most
notably, Department of Defense (DoD) Directive 8500.1 and DoD Instruction 8500.2 and
the Information Assurance (IA) Controls defined therein. This document and the security
check procedures it provides are intended to be used to measure compliance with the
security requirements listed in the Database STIG. Please see the Database STIG for
additional security explanation and discussion to assist in understanding the nature of the
security requirements.
Each security item to review is listed in this document with a procedure for measuring
compliance with the security requirement. The result of the procedure is a status of
compliance with the requirement. Results are assigned as one of the following: O = Open
finding or non-compliance; NF = not a Finding or compliance; NA = Not Applicable or
the item is not applicable to the database version, database use or host platform being
reviewed; and, NR = Not Reviewed or the procedure was not completed so compliance is
not determined.
DISA Field Security Operations (FSO) has assigned a level of urgency to each finding
based on Chief Information Officer (CIO) established criteria for certification and
accreditation. All findings are based on regulations and guidelines. All findings require
correction by the host organization. Category I findings are any vulnerabilities that
provide an attacker immediate access into a machine, super user access, or access that
bypasses a firewall. Category II findings are any vulnerabilities that provide information
that has a high potential of giving access to an intruder. Category III findings are any
vulnerabilities that provide information that potentially could lead to compromise.
NOTE: Security patches required by the DoD IAVM process are reviewed during an
operating system security review.
The Database Security Checklist is composed of five major sections and three
appendices. The organizational breakdown proceeds as follows:
Section 1 Introduction
This section contains summary information about the sections and
appendices that comprise the Oracle Database Security Checklist
V8, and defines its scope. Supporting documents consulted are
listed in this section.
This checklist provides instructions for review of Oracle Database Server versions 9.2
through version 11.1.
This document is current as of the release date. Updates are made to update underlying
DoD policy or to correct errors, omissions, or to clarify guidance.
Reviewer: Date:
Type of Review (Remote,
System: Sample, Full):_____________
Category I:
Category II:
Category III:
Total:
Site:
IAO Information:
Name:
E-Mail Address
Phone # (Commercial) ( ) DSN:
DBA Information:
Name:
E-mail Address:
Phone # (Commercial): ( ) DSN:
System Detail
4-34 Auto o Open Finding Oracle accounts have permission to DO3686 / Oracle SYS.LINK$ table CAT 1
o Not a Finding view the table SYS.LINK$. V0002587 access (10.1 and earlier)
o Not Applicable
o Not Reviewed
4-35 Auto o Open Finding Permissions to application objects DO3689 / Oracle object permission CAT 2
o Not a Finding found granted to PUBLIC. V0002589 assignment to PUBLIC
o Not Applicable
o Not Reviewed
4-36 Auto o Open Finding Oracle predefined roles are granted to DO0170 / Oracle predefined roles CAT 2
o Not a Finding application roles, application users, or V0002514
o Not Applicable application administrators.
o Not Reviewed
4-38 Auto o Open Finding Application roles have been granted to DO0320 / Oracle PUBLIC role CAT 2
o Not a Finding PUBLIC. V0003437 privileges
o Not Applicable
o Not Reviewed
4-39 Auto o Open Finding Permissions are assigned directly to DO3709 / Oracle direct privilege CAT 2
o Not a Finding user accounts and not via roles. V0002596 assignment to accounts
o Not Applicable
o Not Reviewed
4-41 Auto o Open Finding Unlimited account lock times are not DG0133 / DBMS Account lock time CAT 2
o Not a Finding specified for locked accounts. V0015639
o Not Applicable
o Not Reviewed
7-106 Auto o Open Finding The audit table is not owned by SYS or DO0190 / Oracle audit table CAT 2
o Not a Finding SYSTEM. V0002515 ownership
o Not Applicable
o Not Reviewed
7-107 Verify o Open Finding The following application owner DO0231 / Oracle application object CAT 2
o Not a Finding accounts do not have a dedicated V0003849 owner tablespaces
o Not Applicable application tablespace:
o Not Reviewed
7-108 Verify o Open Finding Unauthorized user accounts have been DO0310 / Oracle system data and CAT 2
o Not a Finding granted access to system tables and/or V0003436 table access
o Not Applicable DBA views.
o Not Reviewed
7-110 Verify o Open Finding Accounts were found with unauthorized DO3446 / Oracle audit record CAT 2
o Not a Finding permissions on the audit table. V0002530 access
o Not Applicable
o Not Reviewed
7-111 Verify o Open Finding Application administration roles are DO0340 / Oracle Application CAT 2
o Not a Finding enabled by default. V0003438 administration roles
o Not Applicable enablement
o Not Reviewed
There may be more than one installation of the Oracle DBMS software on a single host
platform. There may be multiple Oracle Database Instances (SIDs) defined for a single
Oracle DBMS software installation.
The checks are categorized into the following two categories and four types:
Categories:
− Oracle Home Checks – These checks are applicable once per each Oracle DBMS
software installation. Oracle refers to each installation as an Oracle Home and
assigns an identifier to each. Some of these checks refer to the Oracle network
communication configuration which in some cases occur only once per database
host server.
− Oracle Database Checks – These checks are applicable once per each Oracle
Database Instance (SID). Each Oracle Database Instance (SID) must be checked,
as there are significant security configurations that can be exploited per instance.
Types:
− Manual checks – The reviewer must complete a technical procedure using
SQL*Plus or a similar SQL interface to the Oracle database or another tool to
determine the compliance status.
− Interview checks – The procedure requires a review of available documentation
and interviews of the IAO, DBA or other database points-of-contact to determine
the compliance status.
− Verify checks – If the SRR evaluation script is used, it may or may not be able to
determine a final finding result without action by the reviewer. If it is unable to
provide a final finding result, it may provide information to help complete the
manual procedures provided.
− Automated checks – If the SRR evaluation script is used, it is able to determine
the final finding result without action by the reviewer. Manual procedures are
provided for manual review of compliance if desired.
o policy/procedure
o initialization parameter
o file/dir permission
o registry permission
o windows user right
o database administration privilege
o database object privilege
o database role
o database account
o database client configuration
o database network communication
o database Operating System account privilege/configuration
o database software maintenance
o other database configuration
o audit
o privilege
o encryption
o account
o monitor / report
o manage / authorize
- STIGID
The purpose of this separation of checks by Oracle Home and Oracle Database is to
ensure that all multiple occurrences of security controls are reviewed individually and to
avoid duplication of control reviews that affect multiple other security levels. The
additional separations are meant to assist the reviewer to complete the review more
efficiently by grouping checks together that are completed using the same method or tool
such as referring to the documentation in the System Security Plan or using SQL*Plus to
review settings.
An SRR evaluation script is also available for use to complete the Oracle Database
security review. The script provides results for all checks designated as being
“automated”. It also provides results for SQL commands specified to complete a manual
review. These checks are indicated as “verify” checks. Checks for which the script
3-2 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
provides no results are marked “Interview” or “Manual”. The SRR script is run locally
from the host prompt. The script is not tested for access to remote databases.
In addition to familiarity with operating system tools and commands, the procedures also
assume a familiarity with the Structured Query Language (SQL).
DCSD-1 IA Documentation
All appointments to required IA roles (e.g., DAA and IAM/IAO) are established in
writing, to include assigned duties and appointment criteria such as training, security
clearance and IT-designation. A System Security Plan is established that describes the
technical, administrative and procedural IA program and policies that govern the DoD
information system, and identifies all IA personnel and specific IA requirements and
objectives (e.g., requirements for data handling or dissemination, system redundancy
and backup or emergency response).
A template for creating an SSP may be found on the DIACAP Knowledge Service
(https://diacap.iaportal.navy.mil/), DIACAP Resources, DIACAP Reference
Library, Sample Documents, ISP_Sample.doc (zipped) or the National Institute of
Standards and Technology (NIST), Special Publication (SP) 800-18, Guide for
Developing Security Plans for Federal Information Systems. This document may be
found at http://csrc.nist.gov/publications/PubsSPs.html. The DIACAP Knowledge
Service also provides a matrix of documentation requirements for the IA Controls to
those required under the previous DITSCAP System Security Authorization Agreement
(SSAA). The matrix may be found under IA Controls, Information on the IA Controls
Matrix of IA Controls to Documentation.
Information required and verified by the procedures in this checklist should be contained
in the SSP under the IA control referenced. However, this document concerns itself only
with the specific controls referenced in it and does not review and verify the entirety of
the SSP.
Additional information may be obtained for this IA control from the DIACAP
Knowledge Service.
The DoDD 8500.1 provides the following definition for sensitive data:
Information, the loss, misuse, or unauthorized access to or modification of, could adversely affect
the national interest or the conduct of Federal programs, or the privacy to which individuals are
entitled under Section 552a of title 5, United States Code, "The Privacy Act", but which has not been
specifically authorized under criteria established by Executive order or an Act of Congress to be kept
secret in the interest of national defense or foreign policy (Section 278g-3 of title 15, United States
Code, "The Computer Security Act of 1987"). Examples of sensitive information include, but are not
limited to information in DoD payroll, finance, logistics and personnel management systems.
Sensitive information sub-categories include, but are not limited to, the following:
For Official Use Only (FOUO) - In accordance with DoD 5400.7-R (reference (ab)), DoD
information exempted from mandatory public disclosure under the Freedom of Information Act
(FOIA) Privacy Data. Any record that is contained in a system of records as defined in the Privacy
Act of 1974 (5 U.S.C. 552a) (reference (z)) and information the disclosure of which would
constitute an unwarranted invasion of personal privacy.
health and safety of the public or the common defense and security by increasing significantly
the likelihood of the illegal production of nuclear weapons or the theft, diversion, or sabotage of
DoD SNM, equipment, or facilities.
Unclassified Technical Data - Data that is not classified but is subject to export control and is
withheld from public disclosure according to DoD Directive 5230.25.
Proprietary Information - Information that is provided by a source or sources under the condition
that it not be released to other sources.
Foreign Government Information - Information that originated from a foreign government and
that is not classified CONFIDENTIAL or higher, but must be protected in accordance with DoD
5200.1-R.
Department of State Sensitive But Unclassified (DoS SBU) - Information that originated from the
Department of State (DoS) that has been determined to be SBU under appropriate DoS
information security polices.
The SRR script also creates temporary tables in the Oracle Database. Definitions for the
tables are included in the script file “dbsrr-oracle-tables.sql”. The tables are created in the
USERS tablespace by default, however, if existing tables exist, the script will use those
tables. This allows the DBA to control which tablespace and storage is used by the SRR
script. This should be reviewed and considered as part of configuration management
especially on production systems. Please see the readme and release notes of the script
for additional information.
Only checks of type “DG” and “DO” are included in this checklist. All checks provide a
mapping to the security requirement listed in the Database STIG. Note that some CAT
findings may be higher for the DO checks than their mapped Database STIG checks due
to the potential ability to be exploited and
Each check is derived and associated with an IA Control from the DoD Instruction
8500.2. These are listed in the enclosures for the instruction and are applicable to the
DBMS based on the Mission Assurance Category (MAC) determined for the system.
Where the IA breakdown based on MAC is not listed in the table in this document, the
check requirement applies to all level systems or the IA control does not have
breakdowns. Where a check applies to only one IA control and MAC level, the level is
specified in the table.
Policy:
Each check is assigned a Gold, Platinum or All Policies (both) designation based on
implementation difficulty. Gold requirements are those whose implementation is
unlikely to interrupt system operation. Platinum requirements require consideration
that is more careful and testing prior to implementation. Please note that no changes to
the DBMS should be made without a careful review or test of potential impact. Also,
note that the Vulnerability Maintenance System (VMS) lists each “check” as being
Gold, Platinum or both. In most cases where Policy = All Policies in this document, in
VMS would be identified as both Gold and Platinum, with Platinum considerations to
be taken into account.
Check Type:
3-6 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
This indicates the method available for determining the compliance to the check. Auto
indicates that the available SRR evaluation script can be used to determine compliance.
Verify means that the SRR script provides information to assist in a manual
determination of check compliance and, in some cases, may be able to determine some
level of compliance such as applicability. Interview means that the check does not
require any technical or system hands-on actions. Rather it requires a review of
documentation and in some cases verbal confirmation by the DBA or IAO. A check
type of manual indicates the check procedure requires hands-on technical review of the
security configuration item that the script is unable to complete. In VMS, the checks
listed as (Script) are equivalent to Check Type: Auto.
Database Level:
This indicates whether the check is performed once per defined database instance
(TRUE) or once per installation of the DBMS (FALSE).
Documentable:
This field is used to indicate whether the check script result may be verified for pre-
determined compliance automatically in the Vulnerability Management System
(VMS).
VKEY:
This is the check reference number for VMS.
STIG Requirement:
This is the policy requirement as mapped from the Database STIG document. The
policy requirement is a general requirement for all databases. Some configuration
items specific to a particular DBMS product are more loosely associated with the
general statement.
Severity:
This is the severity code assignment for this check. The severity code may sometimes
differ from the severity assigned to the STIG requirement because it is has a more or
less severe implication. Severity code definitions are documented in Section 1.1 –
Overview in this document.
Check:
From SQL*Plus:
select value from v$parameter where name='os_roles';
Fix:
From SQL*Plus:
alter system set os_roles=FALSE scope=spfile;
The above SQL*Plus command will set the parameter to take effect at next
system startup.
NOTE: The location of the audit data is determined by the audit_trail parameter in
DO3413.
Check:
From SQL*Plus:
select value from v$parameter where name='audit_sys_operations';
Fix:
From SQL*Plus:
alter system set audit_sys_operations=TRUE scope=spfile;
The above SQL*Plus command will set the parameter to take effect at next
system startup.
Check:
From SQL*Plus:
select value from v$parameter where name='global_names';
Fix:
From SQL*Plus:
alter system set global_names=TRUE scope=spfile;
NOTE: This parameter, if changed, will affect all currently defined Oracle
database links.
The above SQL*Plus command will set the parameter to take effect at next
system startup.
Check:
From SQL*Plus:
select value from v$parameter where name='_trace_files_public';
Fix:
From SQL*Plus (shutdown database instance):
shutdown immediate
NOTE: [PATH] depends on the platform (Windows or UNIX). Ensure the file is
directed to a writable location. [SID] is equal to the oracle SID or database
instance ID.
Check:
From SQL*Plus:
select value from v$parameter where name='audit_trail';
Fix:
Enable database auditing.
Select the desired audit trail format (external file or internal database table).
From SQL*Plus:
alter system set audit_trail= [audit trail format] scope=spfile;
Compliant selections for [audit trail format] are (per MetaLink Note 30690.1):
Oracle 8.1.6 – 11.1 = 'true', 'os' & 'db' (true = os for backward compatibility)
Oracle 10.1 = 'db_extended'
Oracle 10.2 = 'db, extended', 'xml' & 'xml, extended'
Oracle 11.1 = 'db_extended', 'xml' & 'xml, extended'
The above SQL*Plus command will set the parameter to take effect at next
system startup.
Check:
From SQL*Plus:
select value from v$parameter where name='os_authent_prefix';
Fix:
Specify an operating system authenticated username prefix other than OPS$.
From SQL*Plus:
alter system set os_authent_prefix=[prefix value] scope=spfile;
The above SQL*Plus command will set the parameter to take effect at next
system startup.
Check:
From SQL*Plus:
select value from v$parameter where name='remote_os_authent';
Fix:
Disable remote OS authentication.
From SQL*Plus:
alter system set remote_os_authent=FALSE scope=spfile;
The above SQL*Plus command will set the parameter to take effect at next
system startup.
Check:
From SQL*Plus:
select value from v$parameter where name='remote_os_roles';
Fix:
Disable use of remote OS roles.
From SQL*Plus:
alter system set remote_os_roles=FALSE scope=spfile;
The above SQL*Plus command will set the parameter to take effect at next
system startup.
Check:
From SQL*Plus:
select value from v$parameter where name='sql92_security';
Fix:
Enable SQL92 security.
From SQL*Plus:
alter system set sql92_security=TRUE scope=spfile;
The above SQL*Plus command will set the parameter to take effect at next
system startup.
Check:
From SQL*Plus:
select value from v$parameter where name='remote_login_passwordfile';
If the value returned does not equal 'EXCLUSIVE' or 'NONE', this is a Finding.
Fix:
Disable use of the remote_login_passwordfile where remote administration is not
authorized by specifying a value of NONE. If authorized, restrict use of a
password file to exclusive use by each database by specifying a value of
EXCLUSIVE.
.
From SQL*Plus:
alter system set remote_login_passwordfile='EXCLUSIVE' scope=spfile;
OR
alter system set remote_login_passwordfile='NONE' scope=spfile;
The above SQL*Plus command will set the parameter to take effect at next
system startup.
Check:
From SQL*Plus:
select value from v$parameter where name='utl_file_dir';
Fix:
Where its use is authorized, restrict access by a database session to external host
files.
From SQL*Plus:
alter system set utl_file_dir=[authorized directory] scope=spfile;
Replace [authorized directory] with the directory path where file access and
storage is authorized
Review Oracle MetaLink Note 39037.1 if you need to define multiple authorized
directories.
The above SQL*Plus command will set the parameter to take effect at next
system startup.
Check:
From SQL*Plus:
select value from v$parameter where name='O7_dictionary_accessibility';
Fix:
Disable O7_dictionary_accessibility to restrict access to system tables to users
granted privileges to access objects owned by all users.
From SQL*Plus:
alter system set O7_dictionary_accessibility=FALSE scope=spfile;
The above SQL*Plus command will set the parameter to take effect at next
system startup.
Check:
From SQL*Plus:
select value from v$parameter where name='resource_limit';
Fix:
Enable resource limit checking on the database.
From SQL*Plus:
alter system set resource_limit=TRUE scope=both;
The above SQL*Plus command will set the parameter to take effect immediately
and at next system startup.
Check:
If the Oracle version is 10.1 or later, this check is NA.
From SQL*Plus:
select value from v$parameter where name='dblink_encrypt_login';
Fix:
Force encryption of logins used by database links to remote databases.
From SQL*Plus:
alter system set dblink_encrypt_login=TRUE scope=spfile;
The above SQL*Plus command will set the parameter to take effect at next
system startup.
Check:
If the Oracle version is not 11.1 or later, this check is NA.
From SQL*Plus:
select value from v$parameter where name='sec_case_sensitive_logon';
Fix:
Enable case sensitive passwords.
From SQL*Plus:
alter system set sec_case_sensitive_logon=TRUE scope=both;
The above SQL*Plus command will set the parameter to take effect immediately
and at next system startup.
Check:
If the Oracle version is not 11.1 or later, this check is NA.
From SQL*Plus:
select value from v$parameter where name='sec_max_failed_login_attempts';
Fix:
Limit the number of failed login attempts for the database. The number can be 3
or an IAO approved value between 1 and 10.
From SQL*Plus:
alter system set sec_max_failed_login_attempts=3 scope=both;
The above SQL*Plus command will set the parameter to take effect immediately
and at next system startup.
Check:
If the Oracle version is not 11.1 or later, this check is NA.
From SQL*Plus:
select value from v$parameter where name='sec_protocol_error_further_action';
Fix:
Set the value for the sec_protocol_error_further_action initialization parameter to
DROP or DELAY. DROP provides better protection and is recommended.
From SQL*Plus:
alter system set sec_protocol_error_further_action='drop' scope=spfile;
OR
alter system set sec_protocol_error_further_action='drop,3' scope=spfile;
NOTE: The addition of the ‘,3’ above further limits the number of ‘bad packets’
to the specified number before forcefully terminating the connection.
The above SQL*Plus command will set the parameter to take effect at next
system startup.
Check:
If the Oracle version is not 11.1 or later, this check is NA.
From SQL*Plus:
select value from v$parameter where name='sec_protocol_error_trace_action';
Fix:
Set the value for the sec_protocol_error_trace_action initialization parameter to
ALERT or LOG. TRACE may be appropriate for testing or development, but
provides more detail than may be useful. Consider using ALERT for MAC 1
systems.
From SQL*Plus:
alter system set sec_protocol_error_trace_action='ALERT' scope=spfile;
OR
alter system set sec_protocol_error_trace_action='LOG' scope=spfile;
The above SQL*Plus command will set the parameter to take effect at next
system startup.
Check:
From SQL*Plus:
select grantee||': '||granted_role
from dba_role_privs
where grantee in
(select grantee from dba_role_privs where granted_role='DBA'
and grantee not in ('SYS','SYSTEM','SYSMAN'))
order by grantee;
also:
select grantee||':'||privilege from dba_sys_privs
where grantee in
(select grantee from dba_role_privs
where granted_role='DBA')
and privilege<>'UNLIMITED TABLESPACE'
order by grantee;
Fix:
Restrict DBA roles to use for DBA functions. Revoke any privileges outside of
the DBA role and the UNLIMITED TABLESPACE privilege from custom DBA
users.
Check:
From SQL*Plus:
select username from dba_users
where (default_tablespace= 'SYSTEM' or temporary_tablespace= 'SYSTEM')
and username not in
('AURORA$JIS$UTILITY$','AURORA$ORB$UNAUTHENTICATED',
'DBSNMP','MDSYS','ORDPLUGINS','ORDSYS','OSE$HTTP$ADMIN',
'OUTLN','REPADMIN','SYS','SYSTEM','TRACESVR','MTSSYS','DIP');
Fix:
Create and dedicate tablespaces to support only one application. Do not share
tablespaces between applications. Do not grant quotas to application object
owners on tablespaces not dedicated to their associated application.
From SQL*Plus:
alter user [username] default tablespace [tablespace_name];
Check:
From SQL*Plus:
select grantee||': '||owner||'.'||table_name from dba_tab_privs
where grantable='YES'
and owner not in (select distinct owner from dba_objects)
and grantee not in
(select grantee from dba_role_privs where granted_role='DBA')
order by grantee;
Fix:
Revoke privileges granted the WITH GRANT OPTION from non-DBA and
accounts that do not own application objects. Re-grant privileges without
specifying WITH GRANT OPTION.
Check:
From SQL*Plus:
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');
Fix:
Revoke assignment of privileges with the WITH ADMIN OPTION from
unauthorized users and re-grant them without the option. Restrict use of the
WITH ADMIN OPTION to authorized administrators. Document authorized
privilege assignments with the WITH ADMIN OPTION in the System Security
Plan.
From SQL*Plus:
revoke [privilege name] from user [username];
Replace [privilege name] with the named privilege and [username] with the
named user.
Check:
From SQL*Plus:
select privilege from dba_sys_privs where grantee='PUBLIC';
Fix:
Revoke any system privileges assigned to PUBLIC:
From SQL*Plus:
revoke [system privilege] from PUBLIC;
NOTE: System privileges are not granted to PUBLIC by default and would
indicate a custom action.
Check:
From SQL*Plus:
select grantee,owner,table_name,privilege from dba_tab_privs
where privilege in ('ALTER','REFERENCES','INDEX')
and grantee not in ('DBA','SYSTEM','LBACSYS','XDBADMIN')
and table_name not in
('SDO_IDX_TAB_SEQUENCE','XDB$ACL','XDB_ADMIN')
and grantee not in
(select grantee from dba_role_privs where granted_role='DBA')
and grantee not in (select distinct owner from dba_objects);
Fix:
Revoke ALTER, REFERENCES, and INDEX privileges from application user
roles.
From SQL*Plus:
revoke [privilege] from [application user role];
UTL_FILE: allows Oracle accounts to read and write files on the host operating
system.
UTL_SMTP: allows messages to be sent from an arbitrary user.
UTL_TCP: allows arbitrary data to be sent from the database server.
UTL_HTTP: allows the database server to send and receive data via HTTP.
DBMS_RANDOM: allows encrypting of data without requiring safe management of
encryption keys.
DBMS_LOB: allows users access to files stored outside the database.
DBMS_SQL: allows users to write dynamic SQL procedures.
DBMS_SYS_SQL: allows users to execute SQL with DBA privileges.
DBMS_JOB: allows users to submit jobs to the database job queue.
DBMS_BACKUP_RESTORE: allows users to backup and restore database data.
DBMS_OBFUSCATION_TOOLKIT: allows users access to encryption and
decryption functions.
Check:
From SQL*Plus:
select table_name from dba_tab_privs
where grantee='PUBLIC'
and privilege ='EXECUTE'
and table_name in
('UTL_FILE','UTL_SMTP','UTL_TCP','UTL_HTTP','DBMS_RANDOM',
'DBMS_LOB','DBMS_SQL','DBMS_SYS_SQL','DBMS_JOB',
'DBMS_BACKUP_RESTORE','DBMS_OBFUSCATION_TOOLKIT');
Fix:
NOTE: Revoking all default installation privilege assignments from PUBLIC is
not required at this time. However, execute permissions to the specified packages
is required to be revoked from PUBLIC. Removal of these privileges from
PUBLIC may result in invalid packages in version 10.1 and later of Oracle and an
inability to execute default Oracle applications and utilities. To correct this
problem, grant execute privileges on these packages directly to the SYSMAN,
WKSYS, MDSYS and SYSTEM accounts as well as any other default Oracle
database accounts as necessary to support execution of applications/utilities
installed with an Oracle Database Server.
From SQL*Plus:
revoke execute on UTL_FILE from PUBLIC;
revoke execute on UTL_SMTP from PUBLIC;
revoke execute on UTL_TCP from PUBLIC;
revoke execute on UTL_HTTP from PUBLIC;
revoke execute on DBMS_RANDOM from PUBLIC;
revoke execute on DBMS_LOB from PUBLIC;
revoke execute on DBMS_SQL from PUBLIC;
revoke execute on DBMS_SYS_SQL from PUBLIC;
revoke execute on DBMS_JOB from PUBLIC;
revoke execute on DBMS_BACKUP_RESTORE from PUBLIC;
revoke execute on DBMS_OBFUSCATION_TOOLKIT from PUBLIC;
Check:
If the database version is 10.2 or later, this check is NA.
From SQL*Plus:
select grantee||': '||privilege from dba_tab_privs
where grantee <> 'DELETE_CATALOG_ROLE'
and table_name='LINK$'
and grantee not in
(select grantee from dba_role_privs where granted_role='DBA');
Fix:
There are no workarounds to protect against this potential vulnerability but
it is possible to reduce the potential impact by performing the steps below:
1. Drop the database link and create a link without specifying an account and
password. To drop and recreate a database link without hard coding the
password, execute the commands:
From SQL*Plus:
drop database link [link name];
create database link [link name] using [connection string];
From SQL*Plus:
revoke select on SYS.LINK$ from [account or role];
Check:
From SQL*Plus:
select owner||'.'||table_name||': '||privilege from dba_tab_privs
where grantee='PUBLIC'
and owner not in
('SYS','CTXSYS','MDSYS','ODM','OLAPSYS','MTSSYS','ORDPLUGINS',
'ORDSYS','SYSTEM','WKSYS','WMSYS','XDB','LBACSYS','PERFSTAT',
'SYSMAN','DMSYS','EXFSYS');
If any records that are not Oracle product accounts are returned, this is a Finding.
NOTE: This check may return false positives where other Oracle product
accounts are not included in the exclusion list.
Fix:
Revoke any privileges granted to PUBLIC for objects that are not owned by
Oracle product accounts.
From SQL*Plus:
revoke [privilege name] from [user name] on [object name];
From SQL*Plus:
grant [privilege name] to [user role] on [object name];
Check:
From SQL*Plus:
select grantee||': '||granted_role from dba_role_privs
where grantee not in
('ANONYMOUS','AURORA$JIS$UTILITY$',
'AURORA$ORB$UNAUTHENTICATED','CTXSYS','DBSNMP','DIP',
'DMSYS','DVF','DVSYS','EXFSYS','LBACSYS','MDDATA','MDSYS',
'MGMT_VIEW','ODM','ODM_MTR','OLAPSYS','ORDPLUGINS','ORDSYS',
'OSE$HTTP$ADMIN','OUTLN','PERFSTAT','REPADMIN','RMAN',
'SI_INFORMTN_SCHEMA','SYS','SYSMAN','SYSTEM','TRACESVR',
'TSMSYS','WK_TEST','WKPROXY','WKSYS','WKUSER','WMSYS','XDB')
and grantee not in (select role from dba_roles)
and grantee not in
(select grantee from dba_role_privs where granted_role='DBA')
and grantee not in (select distinct owner from dba_objects)
and granted_role in
('AQ_ADMINISTRATOR_ROLE','AQ_USER_ROLE',
'AUTHENTICATEDUSER','CONNECT','CTXAPP',
'DELETE_CATALOG_ROLE','EJBCLIENT','EXECUTE_CATALOG_ROLE',
'EXP_FULL_DATABASE','GATHER_SYSTEM_STATISTICS',
'GLOBAL_AQ_USER_ROLE','HS_ADMIN_ROLE',
'IMP_FULL_DATABASE','JAVADEBUGPRIV','JAVAIDPRIV',
'JAVASYSPRIV','JAVAUSERPRIV','JAVA_ADMIN','JAVA_DEPLOY',
'LOGSTDBY_ADMINISTRATOR','OEM_MONITOR','OLAP_DBA',
'RECOVERY_CATALOG_OWNER','RESOURCE',
'SALES_HISTORY_ROLE','SELECT_CATALOG_ROLE','WKUSER',
'WM_ADMIN_ROLE','XDBADMIN')
order by grantee;
Fix:
Revoke predefined roles and use custom defined roles to assign privileges. Create
custom-defined roles for each discrete application user/administrator function
required for your database and assign the minimum privileges necessary to
perform the function.
Policies CSP;2-CSP;3-CSP
IA Control: ECLP Check Database Responsibility: Documentable: False
Type: Auto level: True IAO
Reference: Database STIG 3.3.11.2
STIG Requirement: (DG0116: CAT II) The IAO will ensure database privileged role
assignments are restricted to IAO-authorized accounts.
Check:
From SQL*Plus:
select granted_role from dba_role_privs where grantee='PUBLIC';
Fix:
Revoke role grants from PUBLIC. Do not assign role privileges to PUBLIC.
From SQL*Plus:
revoke [role name] from PUBLIC;
Check:
From SQL*Plus:
select grantee||': '||privilege||': '||owner||'.'||table_name
from dba_tab_privs where grantee not in
(select role from dba_roles)
and grantee not in
('APEX_PUBLIC_USER','AURORA$JIS$UTILITY$','CTXSYS', 'DBSNMP',
'EXFSYS','FLOWS_030000','FLOWS_FILES','LBACSYS','MDSYS',
'MGMT_VIEW','ODM','OLAPSYS','ORACLE_OCM','ORDPLUGINS',
'ORDSYS','OSE$HTTP$ADMIN','OUTLN','OWBSYS','PERFSTAT',
'PUBLIC','REPADMIN','SYS','SYSMAN','SYSTEM','WKSYS','WMSYS',
'XDB')
and table_name<>'DBMS_REPCAT_INTERNAL_PACKAGE'
and table_name not like '%RP'
and grantee not in
(select grantee from dba_tab_privs
where table_name in ('DBMS_DEFER','DEFLOB'));
NOTE: This check may report false positives where other ORACLE products
have been installed. Accounts installed with other Oracle products are exempt
from this requirement.
Fix:
Revoke privileges assigned directly to database accounts and assign them to roles
based on job functions. Assign users who are assigned responsibility for the job
function to the defined role.
From SQL*Plus:
revoke [privilege] on [object name] from [user name];
grant [privilege] on [object name] to [role name];
Check:
From SQL*Plus:
select profile from dba_profiles
where resource_name='PASSWORD_LOCK_TIME'
and limit not in ('UNLIMITED',’DEFAULT’);
Fix:
Set the password_lock_time on all defined profiles to unlimited. This will require
the DBA to re-enable manually every account after the failed login limit has been
reached.
From SQL*Plus:
alter profile default limit password_lock_time unlimited;
alter profile [profile name] limit password_lock_time default;
Check:
From SQL*Plus:
select username from dba_users
where username in
('SCOTT','HR','IX','OE','PM','SH','COMPANY','MFG','FINANCE',
'ANYDATA_USER','ANYDSET_USER','ANYTYPE_USER','AQJAVA',
'AQUSER','AQXMLUSER','GPFD','GPLD','MMO2','XMLGEN1','BLAKE',
'ADAMS','CLARK','JONES')
or username like 'QS%'
or username like 'USER%'
or username like '%DEMO%'
or username like 'SERVICECONSUMER%';
NOTE: This check can report false positives. If the DBA reports that any account
names listed belong to individual users and are NOT a product of demonstration
software installation, then they can be removed from the findings list. See
MetaLink note 160861.1 for a list of Oracle database users and usages.
Fix:
For the sample applications and schemas with the Oracle database installation, use
the provided SQL scripts (if present) to remove the application objects and drop
the demo users and schemas:
From SQL*Plus:
-- Human Resources application:
@?/demo/schema/human_resources.hr_drop.sql
-- Order Entry application:
@?/demo/schema/order_entry/oe_drop.sql and oc_drop.sql
-- Product Media application:
@?/demo/schema/product_media/pm_drop.sql
-- Information Exchange application:
@?/demo/schema/information_exchange/ix_drop.sql
-- Sales History application:
@?/demo/schema/sales_history/sh_drop.sql
This finding is a Category I severity because the fully privileged Database Administrator
accounts SYS and SYSTEM have well known default passwords and these accounts
provide full access to the database.
Check:
From SQL*Plus:
select decode(type#,0,'ROLE',1,'USER') type, name,
decode(astatus,
0,'OPEN',
1,'EXPIRED',
2,'EXPIRED(GRACE)',
4,'LOCKED(TIMED)',
8,'LOCKED',
5,'EXPIRED and LOCKED(TIMED)',
6,'EXPIRED(GRACE) and LOCKED(TIMED)',
9,'EXPIRED and LOCKED',
10,'EXPIRED(GRACE) and LOCKED') account_status
from sys.user$
where password = decode(name,
'AASH','9B52488370BB3D77','ABA1','30FD307004F350DE','ABM','D0F2982F
121C7840','AD_MONITOR','54F0C83F51B03F49','ADAMS','72CDEF4A3483F
60D','ADS','D23F0F5D871EB69F','ADSEUL_US','4953B2EB6FCB4339','AHL','
7910AE63C9F7EEEE','AHM','33C2E27CF5E401A4','AK','8FCB78BBA8A5951
5','AL','384B2C568DE4C2B5','ALA1','90AAC5BD7981A3BA','ALLUSERS','42
F7CD03B7D2CA0F','ALR','BE89B24F9F8231A9','AMA1','585565C23AB68F71
','AMA2','37E458EE1688E463','AMA3','81A66D026DC5E2ED','AMA4','194CC
C94A481DCDE','AMF','EC9419F55CDC666B','AMS','BD821F59270E5F34','A
MS1','DB8573759A76394B','AMS2','EF611999C6AD1FD7','AMS3','41D1084F3
F966440','AMS4','5F5903367FFFB3A3','AMSYS','4C1EF14ECE13B5DE','AMV
','38BC87EB334A1AC4','AMW','0E123471AACA2A62','ANNE','1EEA3E6F588
599A6','ANONYMOUS','94C33111FD9C66F3','AOLDEMO','D04BBDD5E643
C436','AP','EED09A552944B6AD','APA1','D00197BF551B2A79','APA2','121C6
F5BD4674A33','APA3','5F843C0692560518','APA4','BF21227532D2794A','APP
LEAD','5331DB9C240E093B','APPLSYS','0F886772980B8C79','APPLSYS','E1
53FFF4DAE6C9F7','APPLSYSPUB','D2EEF40EE87221E','APPS','D728438E8A
5925E0','APS1','F65751C55EA079E6','APS2','5CACE7B928382C8B','APS3','C7
86695324D7FB3B','APS4','F86074C4F4F82D2C','AQDEMO','5140E342712061
DD','AQJAVA','8765D2543274B42E','AQUSER','4CF13BDAC1D7511C','AR','
BBBFE175688DED7E','ARA1','4B9F4E0667857EB8','ARA2','F4E52BFBED465
2CD','ARA3','E3D8D73AE399F7FE','ARA4','758FD31D826E9143','ARS1','4332
4-44 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
63ED08C7A4FD','ARS2','F3AF9F26D0213538','ARS3','F6755F08CC1E7831','A
RS4','452B5A381CABB241','ART','665168849666C4F3','ASF','B6FD427D0861
9EEE','ASG','1EF8D8BD87CF16BE','ASL','03B20D2C323D0BFE','ASN','1EE6
AEBD9A23D4E0','ASO','F712D80109E3C9D8','ASP','CF95D2C6C85FF513','A
ST','F13FF949563EAB3C','AUC_GUEST','8A59D349DAEC26F7','AURORA$O
RB$UNAUTHENTICATED','80C099F0EADF877E','AUTHORIA','CC78120E7
9B57093','AX','0A8303530E86FCDD','AZ','AAA18B5D51B0D5AC','B2B','CC3
87B24E013C616','BAM','031091A1D1A30061','BCA1','398A69209360BD9D','B
CA2','801D9C90EBC89371','BEN','9671866348E03616','BIC','E84CC95CBBAC
1B67','BIL','BF24BCE2409BE1F7','BIM','6026F9A8A54B9468','BIS'','7E990188
2E5F3565','BIV','2564B34BE50C2524','BIX','3DD36935EAEDE2E3','BLAKE','
9435F2E60569158E','BMEADOWS','2882BA3D3EE1F65A','BNE','080B5C7EE
819BF78','BOM','56DB3E89EAE5788E','BP01','612D669D2833FACD','BP02','F
CE0C089A3ECECEE','BP03','0723FFEEFBA61545','BP04','E5797698E0F8934E
','BP05','58FFC821F778D7E9','BP06','2F358909A4AA6059','BSC','EC481FD7D
CE6366A','BUYACCT','D6B388366ECF2F61','BUYAPPR1','CB0493169330922
8','BUYAPPR2','3F98A3ADC037F49C','BUYAPPR3','E65D8AD3ACC23DA3','
BUYER','547BDA4286A2ECAE','BUYMTCH','0DA5E3B504CC7497','CAMRO
N','4384E3F9C9C9B8F1','CANDICE','CF458B3230215199','CARL','99ECCC66
4FFDFEA2','CARLY','F7D90C099F9097F1','CARMEN','46E23E1FD86A4277','
CARRIECONYERS','9BA83B1E43A5885B','CATADMIN','AF9AB905347E004
F','CE','E7FDFE26A524FE39','CEASAR','E69833B8205D5DD7','CENTRA','63B
F5FFE5E3EA16D','CFD','667B018D4703C739','CHANDRA','184503FA7786C8
2D','CHARLEY','E500DAA705382E8D','CHRISBAKER','52AFB6B3BE485F81'
,'CHRISTIE','C08B79CCEC43E798','CINDY','3AB2C717D1BD0887','CLARK','
74DF527800B6D713','CLARK','7AAFE7D01511D73F','CLAUDE','C6082BCB
D0B69D20','CLINT','163FF8CCB7F11691','CLN','A18899D42066BFCA','CN','7
3F284637A54777D','CNCADMIN','C7C8933C678F7BF9','CONNIE','982F4C42
0DD38307','CONNOR','52875AEB74008D78','CORY','93CE4CCE632ADCD2','
CRM1','6966EA64B0DFC44E','CRM2','B041F3BEEDA87F72','CRP','F165BDE
5462AD557','CRPB733','2C9AB93FF2999125','CRPCTL','4C7A200FB33A531D
','CRPDTA','6665270166D613BC','CS','DB78866145D4E1C3','CSADMIN','9432
7195EF560924','CSAPPR1','47D841B5A01168FF','CSC','EDECA9762A8C79C
D','CSD','144441CEBAFC91CF','CSDUMMY','7A587C459B93ACE4','CSE','D8
CC61E8F42537DA','CSF','684E28B3C899D42C','CSI','71C2B12C28B79294','C
SL','C4D7FE062EFB85AB','CSM','94C24FC0BE22F77F','CSMIG','09B4BB013
FBD0D65','CSP','5746C5E077719DB4','CSR','0E0F7C1B1FE3FA32','CSS','3C6
B8C73DDC6B04F','CTXDEMO','CB6B5E9D9672FE89','CTXSYS','24ABAB8B
06281B4C','CTXSYS','71E687F036AD56E5','CTXTEST','064717C317B551B6','
CUA','CB7B2E6FFDD7976F','CUE','A219FE4CA25023AA','CUF','82959A9BD
2D51297','CUG','21FBCADAEAFCC489','CUI','AD7862E01FA80912','CUN','41
C2D31F3C85A79D','CUP','C03082CD3B13EC42','CUS','00A12CC6EBF8EDB8'
,'CZ','9B667E9C5A0D21A6','DAVIDMORGAN','B717BAB262B7A070','DBSN
MP','E066D214D5421CCC','DCM','45CCF86E1058D3A5','DD7333','44886308C
F32B5D4','DD7334','D7511E19D9BD0F90','DD810','0F9473D8D8105590','DD8
11','D8084AE609C9A2FD','DD812','AB71915CF21E849E','DD9','E81821D0307
4-45 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
0818C','DDB733','7D11619CEE99DE12','DDD','6CB03AF4F6DD133D','DEMO
8','0E7260738FDFD678','DES','ABFEC5AC2274E54D','DES2K','611E7A73EC4
B425A','DEV2000_DEMOS','18A0C8BD6B13BEE2','DEVB733','7500DF89DC
99C057','DEVUSER','C10B4A80D00CA7A5','DGRAY','5B76A1EB8F212B85','
DIP','CE4A36B8E06CA59C','DISCOVERER5','AF0EDB66D914B731','DKING',
'255C2B0E1F0912EA','DLD','4454B932A1E0E320','DMADMIN','E6681A8926
B40826','DMATS','8C692701A4531286','DMS','1351DC7ED400BD59','DMSYS
','BFBA5A553FD9E28A','DOM','51C9F2BECA78AE0E','DPOND','79D6A5296
0EEC216','DSGATEWAY','6869F3CFD027983A','DV7333','36AFA5CD674BA
841','DV7334','473B568021BDB428','DV810','52C38F48C99A0352','DV811','B6
DC5AAB55ECB66C','DV812','7359E6E060B945BA','DV9','07A1D03FD26E58
20','DVP1','0559A0D3DE0759A6','EAA','A410B2C5A0958CDF','EAM','CE8234
D92FCFB563','EC','6A066C462B62DD46','ECX','0A30645183812087','EDR','5F
EC29516474BB3A','EDWEUL_US','5922BA2E72C49787','EDWREP','79372B4
AB748501F','EGC1','D78E0F2BE306450D','EGD1','DA6D6F2089885BA6','EG
M1','FB949D5E4B5255C0','EGO','B9D919E5F5A9DA71','EGR1','BB636336AD
C5824A','END1','688499930C210B75','ENG','4553A3B443FB3207','ENI','05A92
C0958AFBCBC','ENM1','3BDABFD1246BFEA2','ENS1','F68A5D0D6D2BB25
B','ENTMGR_CUST','45812601EAA2B8BD','ENTMGR_PRO','2000268299147
0B3','ENTMGR_TRAIN','BE40A3BE306DD857','EOPP_PORTALADM','B6055
7FD8C45005A','EOPP_PORTALMGR','9BB3CF93F7DE25F1','EOPP_USER','1
3709991FC4800A1','EUL_US','28AEC22561414B29','EVM','137CEDC20DE69
F71','EXA1','091BCD95EE112EE3','EXA2','E4C0A21DBD06B890','EXA3','40D
C4FA801A73560','EXA4','953885D52BDF5C86','EXFSYS','66F4EF5650C2035
5','EXS1','C5572BAB195817F0','EXS2','8FAA3AC645793562','EXS3','E305017
4EE1844BA','EXS4','E963BFE157475F7D','FA','21A837D0AED8F8E5','FEM','
BD63D79ADF5262E7','FIA1','2EB76E07D3E094EC','FII','CF39DE29C08F71B9
','FLM','CEE2C4B59E7567A3','FNI1','308839029D04F80C','FNI2','05C69C8FE
AB4F0B9','FPA','9FD6074B9FD3754C','FPT','73E3EC9C0D1FAECF','FRM','9A
2A7E2EBE6E4F71','FTA1','65FF9AB3A49E8A13','FTE','2FB4D2C9BAE2CCC
A','FUN','8A7055CA462DB219','FV','907D70C0891A85B1','FVP1','6CC7825EA
DF994E8','GALLEN','F8E8ED9F15842428','GCA1','47DA9864E018539B','GCA
2','FD6E06F7DD50E868','GCA3','4A4B9C2E9624C410','GCA9','48A7205A4C5
2D6B5','GCMGR1','14A1C1A08EA915D6','GCMGR2','F4F11339A4221A4D','G
CMGR3','320F0D4258B9D190','GCS','7AE34CA7F597EBF7','GCS1','2AE8E84
D2400E61D','GCS2','C242D2B83162FF3D','GCS3','DCCB4B49C68D77E2','GE
ORGIAWINE','F05B1C50A1C926DE','GL','CD6E99DACE4EA3A6','GLA1','86
C88007729EB36F','GLA2','807622529F170C02','GLA3','863A20A4EFF7386B','
GLA4','DB882CF89A758377','GLS1','7485C6BD564E75D1','GLS2','319E08C55
B04C672','GLS3','A7699C43BB136229','GLS4','7C171E6980BE2DB9','GM_A
WDA','4A06A107E7A3BB10','GM_COPI','03929AE296BAAFF2','GM_DPHD','
0519252EDF68FA86','GM_MLCT','24E8B569E8D1E93E','GM_PLADMA','294
6218A27B554D8','GM_PLADMH','2F6EDE96313AF1B7','GM_PLCCA','7A992
44B545A038D','GM_PLCCH','770D9045741499E6','GM_PLCOMA','91524D7D
E2B789A8','GM_PLCOMH','FC1C6E0864BF0AF2','GM_PLCONA','1F531397
B19B1E05','GM_PLCONH','C5FE216EB8FCD023','GM_PLNSCA','DB9DD236
4-46 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
1D011A30','GM_PLNSCH','C80D557351110D51','GM_PLSCTA','3A778986229
BA20C','GM_PLSCTH','9E50865473B63347','GM_PLVET','674885FDB93D34
B9','GM_SPO','E57D4BD77DAF92F0','GM_STKH','C498A86BE2663899','GM
A','DC7948E807DFE242','GMD','E269165256F22F01','GME','B2F0E221F45A2
28F','GMF','A07F1956E3E468E1','GMI','82542940B0CF9C16','GML','5F1869A
D455BBA73','GMP','450793ACFCC7B58E','GMS','E654261035504804','GR','F5
AB0AA3197AEE42','GUEST','1C0A090E404CECD0','HCC','25A25A7FEFAC1
7B6','HHCFO','62DF37933FB35E9F','HR','4C6D73C3E8B0F0DA','HRI','49A3A
09B8FC291D0','HXC','4CEA0BF02214DA55','HXT','169018EB8E2C4A77','IA','
42C7EAFBCEEC09CC','IBA','0BD475D5BF449C63','IBC','9FB08604A30A495
1','IBE','9D41D2B3DD095227','IBP','840267B7BD30C82E','IBU','0AD9ABABC
74B3057','IBY','F483A48F6A8C51EC','ICX','7766E887AF4DCC46','IEB','A695
699F0F71C300','IEC','CA39F929AF0A2DEC','IEM','37EF7B2DD17279B5','IEO
','E93196E9196653F1','IES','30802533ADACFE14','IEU','5D0E790B9E882230','
IEX','6CC978F56D21258D','IGC','D33CEB8277F25346','IGF','1740079EFF46A
B81','IGI','8C69D50E9D92B9D0','IGS','DAF602231281B5AC','IGW','B39565F4
E3CF744B','IMC','C7D0B9CDE0B42C73','IMT','E4AAF998653C9A72','INS1','2
ADC32A0B154F897','INS2','EA372A684B790E2A','INTERNET_APPSERVER
_REGISTRY','A1F98A977FFD73CD','INV','ACEAB015589CF4BC','IP','D29012
C144B58A40','IPA','EB265A08759A15B4','IPD','066A2E3072C1F2F3','ISC','373
F527DC0CFAE98','ISTEWARD','8735CA4085DE3EEA','ITG','D90F98746B68E
6CA','JA','9AC2B58153C23F3D','JD7333','FB5B8A12AE623D52','JD7334','322
810FCE43285D9','JD9','9BFAEC92526D027B','JDE','7566DC952E73E869','JDE
DBA','B239DD5313303B1D','JE','FBB3209FD6280E69','JG','37A99698752A1C
F1','JL','489B61E488094A8D','JOHNINARI','B3AD4DA00F9120CE','JONES','B
9E99443032F059D','JTF','5C5F6FC2EBB94124','JTI','B8F03D3E72C96F7','JTM
','6D79A2259D5B4B5A','JTR','B4E2BE38B556048F','JTS','4087EE6EB7F9CD7
C','JUNK_PS','BBC38DB05D2D3A7A','JUSTOSHUM','53369CD63902FAAA','
KELLYJONES','DD4A3FF809D2A6CF','KEVINDONS','7C6D9540B45BBC39',
'KPN','DF0AED05DE318728','LADAMS','AE542B99505CDCD2','LBA','18E5E
15A436E7157','LBACSYS','AC9700FD3F1410EB','LDQUAL','1274872AB40D4
FCD','LHILL','E70CA2CA0ED555F5','LNS','F8D2BC61C10941B2','LQUINCY',
'13F9B9C1372A41B6','LSA','2D5E6036E3127B7E','MDDATA','DF02A496267
DEE66','MDSYS','72979A94BAD2AF80','MDSYS','9AAEB2214DCC9A31','ME
','E5436F7169B29E4D','MFG','FC1B0DD35E790847','MGR1','E013305AB0185
A97','MGR2','5ADE358F8ACE73E8','MGR3','05C365C883F1251A','MGR4','E2
29E942E8542565','MIKEIKEGAMI','AAF7A168C83D5C47','MJONES','EE7BB
3FEA50A21C5','MLAKE','7EC40274AC1609CA','MM1','4418294570E152E7','
MM2','C06B5B28222E1E62','MM3','A975B1BD0C093DA3','MM4','88256901E
B03A012','MM5','4CEA62CBE776DCEC','MMARTIN','D52F60115FE87AA4','
MOBILEADMIN','253922686A4A45CC','MRP','B45D4DF02D4E0C85','MSC','8
9A8C104725367B2','MSD','6A29482069E23675','MSO','3BAA3289DB35813C','
MSR','C9D53D00FE77D813','MST','A96D2408F62BE1BC','MWA','1E2F06BE2
A1D41A6','NEILKATSU','1F625BB9FEBC7617','OBJ7333','D7BDC9748AFED
B52','OBJ7334','EB6C5E9DB4643CAC','OBJB733','61737A9F7D54EF5F','OCA'
,'9BC450E4C6569492','ODM','C252E8FA117AF049','ODM_MTR','A7A32CD03
4-47 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
D3CE8D5','ODS','89804494ADFC71BC','ODSCOMMON','59BBED977430C1A
8','OE','D1A2DFC623FDA40A','OKB','A01A5F0698FC9E31','OKC','31C1DDF4
D5D63FE6','OKE','B7C1BB95646C16FE','OKI','991C817E5FD0F35A','OKL','D
E058868E3D2B966','OKO','6E204632EC7CA65D','OKR','BB0E28666845FCDC
','OKS','C2B4C76AB8257DF5','OKX','F9FDEB0DE52F5D6B','OL810','E2DA59
561CBD0296','OL811','B3E88767A01403F8','OL812','AE8C7989346785BA','O
L9','17EC83E44FB7DB5B','OLAPSYS','3FB8EF9DB538647C','ONT','9E3C815
74654100A','OPI','1BF23812A0AEEDA0','ORABAM','D0A4EA93EF21CE25','
ORABAMSAMPLES','507F11063496F222','ORABPEL','26EFDE0C9C051988','
ORAESB','CC7FCCB3A1719EDA','ORAOCA_PUBLIC','FA99021634DDC111'
,'ORASAGENT','234B6F4505AD8F25','ORASSO','F3701A008AA578CF','ORA
SSO_DS','17DC8E02BC75C141','ORASSO_PA','133F8D161296CB8F','ORASS
O_PS','63BB534256053305','ORASSO_PUBLIC','C6EED68A8F75F5D3','ORDP
LUGINS','88A2B2C183431F00','ORDSYS','7EFA02EC7EA6B86F','OSM','106A
E118841A5D8C','OTA','F5E498AC7009A217','OUTLN','4A3BA55E08595C81','
OWAPUB','6696361B64F9E0A9','OWF_MGR','3CBED37697EB01D1','OZF','97
0B962D942D0C75','OZP','B650B1BB35E86863','OZS','0DABFF67E0D33623','P
A','8CE2703752DB36D8','PABLO','5E309CB43FE2C2FF','PAIGE','02B6B704D
FDCE620','PAM','1383324A0068757C','PARRISH','79193FDACFCE46F6','PAR
SON','AE28B2BD64720CD7','PAT','DD20769D59F4F7BF','PATORILY','46B76
64BD15859F9','PATRICKSANCHEZ','47F74BD3AD4B5F0A','PATSY','4A63F
91FEC7980B7','PAUL','35EC0362643ADD3F','PAULA','BB0DC58A94C17805',
'PAXTON','4EB5D8FAD3434CCC','PCA1','8B2E303DEEEEA0C0','PCA2','7AD
6CE22462A5781','PCA3','B8194D12FD4F537D','PCA4','83AD05F1D0B0C603','
PCS1','2BE6DD3D1DEA4A16','PCS2','78117145145592B1','PCS3','F48449F028
A065B1','PCS4','E1385509C0B16BED','PD7333','5FFAD8604D9DC00F','PD733
4','CDCF262B5EE254E1','PD810','EB04A177A74C6BCB','PD811','3B3C0EFA4
F20AC37','PD812','E73A81DB32776026','PD9','CACEB3F9EA16B9B7','PDA1','
C7703B70B573D20F','PEARL','E0AFD95B9EBD0261','PEG','20577ED9A8DB8
D22','PENNY','BB6103E073D7B811','PEOPLE','613459773123B38A','PERCY','
EB9E8B33A2DDFD11','PERRY','D62B14B93EE176B6','PETE','4040619819A9
C76E','PEYTON','B7127140004677FC','PHIL','181446AE258EE2F6','PJI','5024
B1B412CD4AB9','PJM','021B05DBB892D11F','PMI','A7F7978B21A6F65E','PN
','D40D0FEF9C8DC624','PO','355CBEC355C10FEF','POA','2AB40F104D8517A
0','POLLY','ABC770C112D23DBE','POM','123CF56E05D4EF3C','PON','582090
FD3CC44DA3','PORTAL','A96255A27EC33614','PORTAL_APP','831A79AFB
0BD29EC','PORTAL_DEMO','A0A3A6A577A931A3','PORTAL_PUBLIC','70A
9169655669CE8','PORTAL30','969F9C3839672C6D','PORTAL30_DEMO','CFD
1302A7F832068','PORTAL30_PUBLIC','42068201613CA6E2','PORTAL30_SS
O','882B80B587FCDBC8','PORTAL30_SSO_PS','F2C3DC8003BC90F8','PORT
AL30_SSO_PUBLIC','98741BDA2AC7FFB2','POS','6F6675F272217CF7','PPM
1','AA4AE24987D0E84B','PPM2','4023F995FF78077C','PPM3','12F56FADDA8
7BBF9','PPM4''84E17CB7A3B0E769','PPM5','804C159C660F902C','PRISTB73
3','1D1BCF8E03151EF5','PRISTCTL','78562A983A2F78FB','PRISTDTA','3FCB
C379C8FE079C','PRODB733','9CCD49EB30CB80C4','PRODCTL','E5DE2F015
29AE93C','PRODDTA','2A97CD2281B256BA','PRODUSER','752E503EFBF2C
4-48 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
2CA','PROJMFG','34D61E5C9BC7147E','PRP','C1C4328F8862BC16','PS','0AE5
2ADF439D30BD','PS810','90C0BEC7CA10777E','PS810CTL','D32CCE5BDCD
8B9F9','PS810DTA','AC0B7353A58FC778','PS811','B5A174184403822F','PS81
1CTL','18EDE0C5CCAE4C5A','PS811DTA','7961547C7FB96920','PS812','39F0
304F007D92C8','PS812CTL','E39B1CE3456ECBE5','PS812DTA','3780281C933
FE164','PSA','FF4B266F9E61F911','PSB','28EE1E024FC55E66','PSBASS','F739
804B718D4406','PSEM','40ACD8C0F1466A57','PSFT','7B07F6F3EC08E30D','P
SFTDBA','E1ECD83073C4E134','PSP','4FE07360D435E2F0','PTADMIN','4C35
813E45705EBA','PTCNE','463AEFECBA55BEE8','PTDMO','251D71390034576
A','PTE','380FDDB696F0F266','PTESP','5553404C13601916','PTFRA','A360DA
D317F583E3','PTG','7AB0D62E485C9A3D','PTGER','C8D1296B4DF96518','PT
JPN','2159C2EAF20011BF','PTUKE,'D0EF510BCB2992A3','PTUPG','2C27080
C7CC57D06','PTWEB','8F7F509D4DC01DF6','PTWEBSERVER','3C805053600
3278B','PV','76224BCC80895D3D','PY7333','2A9C53FE066B852F','PY7334','F3
BBFAE0DDC5F7AC','PY810','95082D35E94B88C2','PY811','DC548D6438E4D
6B7','PY812','99C575A55E9FDA63','PY9','B8D4E503D0C4FCFD','QA','C7AEA
A2D59EB1EAE','QOT','B27D0E5BA4DC8DEA','QP','10A40A72991DCA15','Q
RM','098286E4200B22DE','QS','4603BCD2744BDE4F','QS_ADM','3990FB4181
62F2A0','QS_CB','870C36D8E6CD7CF5','QS_CBADM','20E788F9D4F1D92C','
QS_CS','2CA6D0FC25128CF3','QS_ES','9A5F2D9F5D1A9EF4','QS_OS','0EF59
97DC2638A61','QS_WS','0447F2F756B4F460','RENE','9AAD141AB0954CF0','
REPADMIN','915C93F34954F5F8','REPORTS','0D9D14FE6653CF69','REPOR
TS_USER','635074B4416CD3AC','RESTRICTED_US','E7E67B60CFAFBB2D','
RG','0FAA06DA0F42F21F','RHX','FFDF6A0C8C96E676','RLA','C1959B03F36
C9BB2','RLM','4B16ACDA351B557D','RM1','CD43500DAB99F447','RM2','2D
8EE7F8857D477E','RM3','1A95960A95AC2E1D','RM4','651BFD4E1DE4B040','
RM5','FDCC34D74A22517C','RMAN','E7B5D92911C831E1','ROB','94405F516
486CA24','RPARKER','CEBFE4C41BBCC306','RWA1','B07E53895E37DBBB','
SALLYH','21457C94616F5716','SAM','4B95138CB6A4DB94','SARAHMAND
Y','60BE21D8711EE7D9','SCM1','507306749131B393','SCM2','CBE8D6FAC78
21E85','SCM3','2B311B9CDC70F056','SCM4','1FDF372790D5A016','SCOTT','F
894844C34402B67','SDAVIS','A9A3B88C6A550559','SECDEMO','009BBE814
2502E10','SEDWARDS','00A2EDFD7835BC43','SELLCM','8318F67F72276445'
,'SELLER','B7F439E172D5C3D0','SELLTREAS','6EE7BA85E9F84560','SERVI
CES','B2BE254B514118A5','SETUP','9EA55682C163B9A3','SH','54B253CBBA
AA8C48','SI_INFORMTN_SCHEMA','84B8CBCA4D477FA3','SID','CFA11E6
EBA79D33E','SKAYE','ED671B63BDDB6B50','SKYTETSUKA','EB5DA777D
1F756EC','SLSAA','99064FC6A2E4BBE8','SLSMGR','0ED44093917BE294','SL
SREP','847B6AAB9471B0A5','SRABBITT','85F734E71E391DF5','SRALPHS','9
75601AA57CBD61A','SRAY','C233B26CFC5DC643','SRIVERS','95FE94ADC2
B39E08','SSA1','DEE6E1BEB962AA8B','SSA2','96CA278B20579E34','SSA3','C
3E8C3B002690CD4','SSC1','4F7AC652CC728980','SSC2','A1350B328E74AE87
','SSC3','EE3906EC2DA586D8','SSOSDK','7C48B6FF3D54D006','SSP','87470D
6CE203FB4D','SSS1','E78C515C31E83848','SUPPLIER','2B45928C2FE77279','
SVM7333','04B731B0EE953972','SVM7334','62E2A2E886945CC8','SVM810','0
A3DCD8CA3B6ABD9','SVM811','2B0CD57B1091C936','SVM812','778632974
4-49 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
E3947C9','SVM9','552A60D8F84441F1','SVMB733','DD2BFB14346146FE','SV
P1','F7BF1FFECE27A834','SY810','D56934CED7019318','SY811','2FDC83B40
1477628','SY812','812B8D7211E7DEF1','SY9','3991E64C4BC2EC5D','SYS','43
CA255A7916ECFE','SYS','5638228DAF52805F','SYS','D4C5016086B2DC6A','
SYS7333','D7CDB3124F91351E','SYS7334','06959F7C9850F1E3','SYSADMIN'
,'DC86E8DEAA619C1A','SYSB733','7A7F5C90BEC02F0E','SYSMAN','EB258
E708132DD2D','SYSTEM','4D27CA6E3E3066E6','SYSTEM','D4DF7931AB130
E37','TDEMARCO','CAB71A14FA426FAE','TDOS_ICSAP','7C0900F75172376
8','TESTCTL','205FA8DF03A1B0A6','TESTDTA','EEAF97B5F20A3FA3','TRA
1','BE8EDAE6464BA413','TRACESVR','F9DA8977092B7B81','TRBM1','B10E
D16CD76DBB60','TRCM1','530E1F53715105D0','TRDM1','FB1B8EF14CF3DE
E7','TRRM1','4F29D85290E62EBE','TWILLIAMS','6BF819CE663B8499','UDD
ISYS','BF5E56915C3E1C64','VEA','D38D161C22345902','VEH','72A90A786A
AE2914','VIDEO31','2FA72981199F9B97','VIDEO4','9E9B1524C454EEDE','VI
DEO5','748481CFF7BE98BB','VP1','3CE03CD65316DBC7','VP2','FCCEFD288
24DFEC5','VP3','DEA4D8290AA247B2','VP4','F4730B0FA4F701DC','VP5','7D
D67A696734AE29','VP6','45660DEE49534ADB','WAA1','CF013DC80A9CBEE
3','WAA2','6160E7A17091741A','WCRSYS','090263F40B744BD8','WEBDB','D
4C4DCDD41B05A5D','WEBSYS','54BA0A1CB5994D64','WENDYCHO','7E62
8CDDF051633A','WH','91792EFFCB2464F9','WIP','D326D25AE0A0355C','WI
RELESS','1495D279640E6C3A','WIRELESS','EB9615631433603E','WK_TEST'
,'29802572EB547DBF','WKPROXY','AA3CB2A4D9188DDB','WKSYS','545E1
3456B7DDEA0','WMS','D7837F182995E381','WMSYS','7C9BA362F8314299','
WPS','50D22B9D18547CF7','WSH','D4D76D217B02BD7A','WSM','750F2B109
F49CC13','XDB','88D8364765FCE6AF','XDO','E9DDE8ACFA7FE8E4','XDP','F
05E53C662835FA2','XLA','2A8ED59E27D86D41','XLE','CEEBE966CC6A3E39
','XNB','03935918FA35C993','XNC','BD8EA41168F6C664','XNI','F55561567EF
71890','XNM','92776EA17B8B5555','XNP','3D1FB783F96D1F5E','XNS','FABA
49C38150455E','XTR','A43EE9629FA90CAE','YCAMPOS','C3BBC657F099A1
0F','YSANCHEZ','E0C033C4C8CC9D84','ZFA','742E092A27DDFB77','ZPB','C
AF58375B6D06513','ZSA','AFD3BD3C7987CBB6','ZX','7B06550956254585','F
LOWS_030000','B5C7B17C2C983E8F','FLOWS_FILES','5CDD1E40E516FE6A
','PUBLIC','TSMSYS','3DF26A8B17D0F29F','ORACLE_OCM','6D17CF1EB16
11F94','OWBSYS','610A3C38F301776F','SPATIAL_CSW_ADMIN','093913703
800E437','SPATIAL_WFS_ADMIN','32FA36DC781579AA','SPATIAL_CSW_
ADMIN_USR','1B290858DD14107E','SPATIAL_WFS_ADMIN_USR','7117215
D6BEE6E82','GLOBL_USER','GLOBAL','MGMT_VIEW','17028530E6D346B4
','APEX_PUBLIC_USER','C8E264D926F001D8','XS$NULL’,’DC4FCC8CB69
A6733',name);
If any accounts listed show an account status of OPEN, this is a Finding. If all of
the accounts listed show an account status of LOCKED & EXPIRED or
LOCKED this is a Finding, but downgrade the severity Category Code to II.
Fix:
Change passwords from the default. Ensure passwords meet complexity standards
outlined in STIG Requirement DG0079.
From SQL*Plus:
alter user [username] identified by [password];
Lock and expire any accounts not required for interactive access.
From SQL*Plus:
alter user [username] account lock;
alter user [username] password expire;
NOTE: Follow Oracle documentation for changing any default passwords. Some
accounts require coordinated actions in order to maintain operational status.
Check:
From SQL*Plus (must do first SQL statement first!):
-- Check for both reuse max and reuse time not set:
select profile from DBA_PROFILES
where (resource_name='PASSWORD_REUSE_MAX'
and limit in ('UNLIMITED','NULL'))
or profile in
(select profile from DBA_PROFILES
where resource_name='PASSWORD_REUSE_TIME')
and limit in ('UNLIMITED','NULL');
-- Check for reuse max with value that is less than allowed minimum
select profile from DBA_PROFILES
where resource_name='PASSWORD_REUSE_MAX'
and limit not in ('UNLIMITED','NULL')
and limit < '10';
NOTE: If the value DEFAULT is returned, then the profile limit is set to the
corresponding value in the DEFAULT profile. If the DEFAULT profile is in
violation for this limit, then so is the profile that references it.
Fix:
Modify profiles to meet reuse number and reuse time requirements.
From SQL*Plus:
alter profile default limit
password_reuse_time 365
password_reuse_max 10;
NOTE: Password and account requirements have changed for DoD since the
STIG requirement listed in the table for this check was published.
Check:
From SQL*Plus:
select profile, limit
from dba_profiles,
(select limit as def_pwd_verify_func
from dba_profiles
where resource_name='PASSWORD_VERIFY_FUNCTION'
and profile='DEFAULT')
where resource_name='PASSWORD_VERIFY_FUNCTION'
and replace(limit,'DEFAULT',def_pwd_verify_func) in
('UNLIMITED','NULL');
Fix:
Create or uses a password verify function that enforces password complexity. See
a sample below that meets DoD requirements. Modify profiles to specify the
password verify function created.
From SQL*Plus:
Rem This script was modified from the Oracle utlpwdmg.sql default script.
Rem
-- This script sets the default password resource parameters.
-- This script needs to be run to enable the password features.
-- However, the default resource parameters can be changed based on the need.
-- A default password complexity function is also provided.
-- This function makes the minimum complexity checks like the minimum
-- length of the password, password not same as the username, etc. The user may
-- enhance this function according to the need.
-- This function must be created in SYS schema:
-- connect sys/<password> as sysdba before running the script
old_password varchar2)
RETURN boolean IS
n boolean;
m integer;
differ integer;
isdigit boolean;
numdigit integer;
ispunct boolean;
numpunct integer;
islowchar boolean;
numlowchar integer;
isupchar boolean;
numupchar integer;
digitarray varchar2(10);
punctarray varchar2(25);
lowchararray varchar2(26);
upchararray varchar2(26);
pw_change_time date;
BEGIN
digitarray:='0123456789';
lowchararray:='abcdefghijklmnopqrstuvwxyz';
upchararray:='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
punctarray:='!"#$%&()``*+,-/:;<=>?_';
isdigit:=FALSE;
numdigit:=0;
m:=length(password);
for i in 1..10 loop
for j in 1..m loop
if substr(password,j,1)=substr(digitarray,i,1) then
numdigit:=numdigit + 1;
end if;
if numdigit > 1 then
isdigit:=TRUE;
goto findlowchar;
end if;
end loop;
end loop;
if isdigit=FALSE then
raise_application_error(-20003, 'Password should contain at least two digits');
end if;
<<findlowchar>>
islowchar:=FALSE;
numlowchar:=0;
m:=length(password);
for i in 1..length(lowchararray) loop
for j in 1..m loop
if substr(password,j,1)=substr(lowchararray,i,1) then
numlowchar:=numlowchar + 1;
end if;
if numlowchar > 1 then
islowchar:=TRUE;
goto findupchar;
end if;
end loop;
end loop;
if islowchar=FALSE then
raise_application_error(-20003, 'Password should contain at least two lowercase
characters');
end if;
<<findupchar>>
4-56 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
isupchar:=FALSE;
numupchar:=0;
m:=length(password);
for i in 1..length(upchararray) loop
for j in 1..m loop
if substr(password,j,1)=substr(upchararray,i,1) then
numupchar:=numupchar + 1;
end if;
if numupchar > 1 then
isupchar:=TRUE;
goto findpunct;
end if;
end loop;
end loop;
if isupchar=FALSE then
raise_application_error(-20003, 'Password should contain at least two lowercase
characters');
end if;
<<findpunct>>
ispunct:=FALSE;
numpunct:=0;
m:=length(password);
for i in 1..length(punctarray) loop
for j in 1..m loop
if substr(password,j,1)=substr(punctarray,i,1) then
numpunct:=numpunct + 1;
end if;
if numpunct > 1 then
ispunct:=TRUE;
goto endsearch;
end if;
end loop;
end loop;
if ispunct=FALSE then
raise_application_error(-20003, 'Password should contain at least two
punctuation characters');
end if;
<<endsearch>>
-- Check if the password has been changed within the last 24 hours
RETURN(TRUE);
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20000,'verify_password_dod: Unexpected error:
'||SQLERRM,TRUE);
END;
/
Check:
From SQL*Plus:
select profile||': '||limit from dba_profiles,
(select limit as def_login_attempts
from dba_profiles
where profile='DEFAULT'
and resource_name='FAILED_LOGIN_ATTEMPTS')
where resource_name='FAILED_LOGIN_ATTEMPTS'
and ((replace(limit,'DEFAULT',def_login_attempts) in
('UNLIMITED',NULL))
or (lpad(replace(limit,'DEFAULT',def_login_attempts),40,'0') >
lpad('3',40,'0')));
Fix:
Modify profiles to meet the failed login attempt requirement limit.
From SQL*Plus:
alter profile default limit
failed_login_attempts 3;
alter profile [profile name] limit
failed_login_attempts default;
Check:
From SQL*Plus:
select count(*) from V$LOG where members >1;
Fix:
To define additional redo log file groups:
From SQL*Plus:
alter database add logfile group 3
('diska:log3.log' ,
'diskb:log3.log') size 50K;
To add additional redo log file [members] to an existing redo log file group:
From SQL*Plus:
alter database add logfile member 'diskc:log3.log'
to group 3;
Replace diska, diskb, diskc with valid, different disk drive specifications. Replace
log#.log file with valid or custom names for the log files.
Check:
From SQL*Plus:
select count(*) from all_def_audit_opts where ren='A/A';
From SQL*Plus:
select upd, del, object_type from dba_obj_audit_opts
where object_name='AUD$' and owner='SYSTEM';
If the record returned is of object type TABLE and upd(ate) and del(ete) are not =
'A/A', this is a Finding.
If the record type VIEW is returned and upd and del are = ‘A/A’, this is NOT a
Finding.
Otherwise, if the record type VIEW is returned and upd and del are NOT = 'A/A',
then the underlying table must be checked for update and delete auditing as
follows:
From SQL*Plus:
set long 1000
set wrap on
select text from dba_views where view_name='AUD$';
Review the text returned and locate the “from table_owner.table_name”. This
should be located at the end of the text returned.
Replace table_owner and table_name in the select statement below with the
values returned above.
From SQL*Plus:
select upd, del from dba_obj_audit_opts
where owner='table_owner' and object_name = 'table_name';
If the value of upd(ate) and del(ete) returned above is NOT equal to 'A/A', this is a
Finding.
Fix:
The only application objects auditing required is for use of the RENAME
privilege on database objects. Configure auditing on RENAME privilege use by
default for newly created objects.
From SQL*Plus:
audit rename on default by access;
If application objects have already been created, then the audit rename on object
statement should be issued for all application objects.
From SQL*Plus:
audit rename on [application object name] by access;
Enable auditing of access and activity on audit trail data stored in the database.
From SQL*Plus:
audit update, delete on SYSTEM.AUD$ by access;
NOTE: The audit table is by default in the SYSTEM schema, but may have been
moved to another schema.
Check:
From SQL*Plus:
select name from stmt_audit_option_map
where name not in (select audit_option from dba_stmt_audit_opts)
and name not in
('ANALYZE ANY DICTIONARY','DELETE TABLE',
'EXECUTE PROCEDURE','INSERT TABLE','LOCK TABLE','NETWORK',
'SELECT MINING MODEL','SELECT SEQUENCE',
'SELECT TABLE','UPDATE TABLE','USE EDITION');
Fix:
There are three (3) types of auditable events: 1) Use of system privileges, 2) Use
of object privileges, and 3) Issuance of statements. Activating some auditing
options sometimes activates others. For example, the use of a system privilege
requires the issuance of a system command. Auditing for use of the privilege also
audits for the statement.
From SQL*Plus:
audit all by access;
audit all privileges by access;
audit alter java class by access;
audit alter java resource by access;
audit alter java source by access;
audit alter mining model by access; -- 11.1 only
audit alter sequence by access;
audit alter table by access;
audit comment mining model by access; -- 11.1 only
audit comment table by access;
audit create java class by access;
audit create java resource by access;
audit create java source by access;
4-65 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
The following SQL statements will disable audits set by the commands above that
are not required:
If application objects have already been created, then the audit rename on object
statement should be issued for all application objects.
From SQL*Plus:
audit rename on [application object name] by access;
Check:
Review and verify the implementation of an audit trail retention policy. Verify
that audit data is maintained for a minimum of one year.
If audit data is not maintained for a minimum of one year, this is a Finding.
Fix:
Develop and implement an audit retention policy and procedure. It is
recommended that the most recent thirty days of audit logs remain available
online. After thirty days, the audit logs may be maintained offline. Online
maintenance provides for a more timely capability and inclination to investigate
suspicious activity.
Check:
If the database being reviewed is not a production database, this check is NA.
Review policy, procedures and restrictions for data imports of production data
containing sensitive information into development databases. If data imports of
production data are allowed, review procedures for protecting any sensitive data
included in production exports.
Fix:
Document policy, procedures and restrictions for production data import. Require
any users assigned privileges that allow the export of production data from the
database to acknowledge understanding of import policies, procedures and
restrictions. Restrict permissions of development personnel requiring use or
access to production data imported into development databases containing
sensitive information to authorized users. Implement policy and procedures to
modify or remove sensitive information in production exports prior to import into
development databases.
Check:
Review policy, procedures and implementation evidence to determine if periodic
reviews of user privileges by the IAO are being performed. Evidence may consist
of email or other correspondence that acknowledges receipt of periodic reports
and notification of review between the DBA and IAO or other auditors as
assigned.
Fix:
Implement policy and procedures for periodic review of database user accounts
and privilege assignments. Include methods to provide evidence of review in the
procedures to verify reviews occur in accordance with the procedures.
Check:
If the DBMS does not have Oracle Advanced Security installed or data encryption
is not required within the database, this check is NA.
If the symmetric key management procedures and configuration settings for the
DBMS are not specified in the System Security Plan, this is a Finding.
If the procedures are not followed with evidence for audit, this is a Finding.
NOTE: This check does not include a review of the key management procedures
for validity. Specific key management requirements may be covered under
separate checks.
Fix:
Symmetric and other encryption keys require the following:
- protection from unauthorized access in transit and in storage
- utilization of accepted algorithms
- generation in accordance with required standards for the key's use
- expiration date
- continuity - key backup and recovery
- key change
- archival key storage (as necessary)
Details for key management requirements are provided by FIPS key management
standards available from NIST. Oracle Advanced Security can be installed to
provide symmetric key management features if required.
Check:
If the database does not store or process sensitive data, this check is NA.
Review data access requirements for sensitive data as identified and assigned by
the Information Owner in the System Security Plan. Review the access controls
for sensitive data configured in the database.
If the configured access controls do not match those defined in the System
Security Plan, this is a Finding.
Fix:
Define, document and implement all sensitive data access controls based on job
function in the System Security Plan.
Check:
Review procedures and implementation for monitoring the DBMS for account
expiration and account inactivity. Verify implemented procedures are in place to
address expired/locked accounts not required for system/application operation are
authorized to remain and are documented.
Verify implemented procedures are in place to address accounts that are unlocked
and have been inactive in excess of 30 days are authorized to remain unlocked.
Fix:
Develop and implement procedures to monitor database accounts for inactivity
and account expiration. Investigate and re-authorize or delete [if appropriate] any
accounts that are expired or have been inactive for more than 30 days.
NOTE: Password and account requirements have changed for DoD since the
STIG requirement listed in the table for this check was published.
Check:
Review the policy and procedures for use of the Oracle default accounts including
direct use of the Oracle SYS and SYSTEM accounts.
If procedures, automated or manual, for logging default account use are not
defined or implemented, this is a Finding.
If monitoring use of default accounts does not exist or is not implemented, this is
a Finding.
Fix:
Design and implement policy and procedures for use, logging and monitoring of
Oracle default accounts. Document the policy and procedures in the System
Security Plan and ensure that all those granted access to the accounts is aware of
them.
Check:
Review the System Security Plan for requirements for configuration of auditing
changes to database data.
If the application supports its own auditing requirements and does not require
auditing using DBMS features, this check is NA.
If the application requires DBMS auditing for changes to data, review the
database audit configuration against the application requirement.
If the auditing does not comply with the requirement, this is a Finding.
Fix:
Configure database data auditing to comply with the requirements of the
application.
Check:
If the database does not store or process classified data, or user accounts are
prohibited from accessing the database interactively, this check is NA.
NOTE: Per the STIG, The definition of an Interactive Database User can be
considered an end-user who accesses the database interactively using tools like
SQL*Plus, TOAD, etc. and not through a mid-tier application. Your DAA has the
option to consider administration accounts (SYSDBA, SYSOPER, SCHEMA
accounts and accounts assigned DBA privileges) as Interactive Database User
accounts for the purposes of this check. The definition of an Interactive Database
User should be documented in the System Security Plan.
Have the DBA perform an interactive logon test (via SQL*Plus) using a non-
privileged account (and a privileged account if privileged accounts meet this
requirement) to verify display of user access and account usage. If the last
successful and number of unsuccessful attempts since the last successful attempt
are not reported, this is a Finding.
Fix:
Implement an automated method to display at interactive logon the time and date
of the last successful login and the number of failed login attempts since the last
successful login for users that access the database interactively. This may require
a custom-developed logon trigger or procedure to accomplish.
Check:
From SQL*Plus:
select username from dba_users order by username;
Review the list of database account names to determine usage of all non-standard
account names or account names that do not appear to be assigned to individuals.
For example, accounts named BATCHJOB, FMAPP, FMAPP-ADMIN do not
have the appearance of assignment to an individual interactive user. An account
name like JDOE appears to be assigned to an individual. Review the list of
account names against those listed in the System Security Plan or authorized user
list. Consult the IAO or DBA to make a final determination on whether accounts
are shared accounts or not.
If shared accounts are not documented as such and are not approved, this is a
Finding.
Fix:
Use accounts assigned to individual users where feasible. Design applications to
provide individual accountability (audit logs) for actions performed under a single
database account. Implement other DBMS automated procedures that provide
individual accountability. Where appropriate, implement manual procedures to
use manual logs and monitor entries against account usage to ensure procedures
are followed.
Check:
Review procedures for ensuring authorization of new or re-assigned DBMS user
accounts. Requests for user account access to the DBMS should include
documented approval by an authorized requestor. Procedures should also include
notification for a change in status, particularly cause for revocation of account
access, to any DBMS accounts.
Review the user accounts listed either in the script report or manually against the
authorized user list.
From SQL*Plus:
select username from dba_users order by username;
Fix:
Develop and implement procedures for authorizing creation, changes and
deletions of user accounts. Monitor user accounts to verify that they remain
authorized.
Check:
If this database is not a production database, this check is NA.
From SQL*Plus:
select granted_role from dba_role_privs where grantee=[developer account
name];
Fix:
Revoke permissions and privileges that allow changes to the production system or
production objects from developer accounts or authorize permissions and
privileges for developer accounts in the System Security Plan.
Check:
If the database is not configured for replication, this check is NA.
If any replication accounts are assigned DBA roles or roles with DBA privileges,
this is a Finding.
Fix:
Restrict privileges assigned to replication accounts to the fewest possible
privileges. Remove DBA roles from replication accounts. Create and use custom
replication accounts assigned least privileges for supporting replication
operations.
Check:
If the DBMS does not have Oracle Advanced Security installed or data encryption
is not required within the database, this check is NA.
For each asymmetric key identified as being used to encrypt sensitive data, verify
the key owner is an application object owner or other non-DBA account.
If any key owner is not the application object owner account or an account
specific to the application as documented in the System Security Plan, this is a
Finding.
If any asymmetric keys whose private key is not encrypted exist in the database,
this is a Finding.
Review the access permissions to asymmetric keys. Verify that any permission
granted is authorized in the System Security Plan for access to the key.
Examine evidence that an audit record is created whenever the asymmetric key is
accessed by other than authorized users. In particular, view evidence that access
by a DBA or other system privileged account results in the generation of an audit
record. This is required because system privileges that allow access to encryption
keys may be used to access sensitive data where the privileged user does not have
a job function need-to-know the data.
If an audit record is not generated for unauthorized access to the asymmetric key,
this is a Finding.
Fix:
Use DoD code-signing certificates to create asymmetric keys stored in the
database that are used to encrypt sensitive data stored in the database. Assign the
application object owner account as the owner of asymmetric keys used by the
application.
Create audit events for access to the key by other than the application owner
account or approved application objects.
Revoke any privileges assigned to the asymmetric key to other than the
application object owner account and authorized users.
Protect the private key by encrypting it with the database system master key
where available. Where available, store encryption keys and certificates on
hardware security modules (HSM).
Check:
If the Oracle version is not 11.1 or later, this check is NA.
From SQL*Plus:
select value from v$parameter where name='diagnostic_dest';
On UNIX Systems:
ls -ld [pathname]
Substitute [pathname] with the directory path listed from the above SQL
command.
If any groups that include members other than the Oracle process and software
owner accounts, DBAs, auditors, or backup accounts are listed, this is a Finding.
If permissions are granted to everyone, this is a Finding. If any account other than
the Oracle process and software owner accounts, Administrators, DBAs, System
group or developers authorized to write and debug applications on this database
are listed, this is a Finding.
Fix:
Alter host system permissions to the DIAGNOSTIC_DEST directory to the
Oracle process and software owner accounts, DBAs, SAs (if required) and
developers or other users that may specifically require access for debugging or
other purposes.
Authorize and document user access requirements to the directory outside of the
Oracle, DBA and SA account list.
Check:
From SQL*Plus:
select value from v$parameter where name = 'audit_trail';
select value from v$parameter where name = 'audit_file_dest';
On UNIX Systems:
ls -ld [pathname]
Substitute [pathname] with the directory path listed from the above SQL
command for audit_file_dest.
If any groups that include members other than the Oracle process and software
owner accounts, DBAs, auditors, or backup accounts are listed, this is a Finding.
Fix:
Alter host system permissions to the AUDIT_FILE_DEST directory to the Oracle
process and software owner accounts, DBAs, backup accounts, SAs (if required)
and auditors.
Authorize and document user access requirements to the directory outside of the
Oracle, DBA and SA account list in the System Security Plan.
Check:
If the Oracle version is 11.1 or later, this check is NA.
From SQL*Plus:
select value from v$parameter where name='user_dump_dest';
On UNIX systems:
ls -ld [pathname]
Substitute [pathname] with the directory path listed from the above SQL
command.
If permissions are granted to everyone, this is a Finding. If any account other than
the Oracle process and software owner accounts, Administrators, DBAs, System
group or developers authorized to write and debug applications on this database
are listed, this is a Finding.
Fix:
Alter host system permissions to the USER_DUMP_DEST directory to the Oracle
process and software owner accounts, DBAs, SAs if required, and developers or
other users that may specifically require access for debugging or other purposes.
Authorize and document user access requirements to the directory outside of the
Oracle, DBA and SA account list in the System Security Plan.
Check:
If the Oracle version is 11.1 or later, this check is NA.
From SQL*Plus:
Select value from v$parameter where name='background_dump_dest';
On UNIX Systems:
ls -ld [pathname]
Substitute [pathname] with the directory path listed from the above SQL
command.
If permissions are granted to everyone, this is a Finding. If any account other than
the Oracle process and software owner accounts, Administrators, DBAs, System
group or developers authorized to write and debug applications on this database
are listed, this is a Finding.
Fix:
Alter host system permissions to the BACKGROUND_DUMP_DEST directory
to the Oracle process and software owner accounts DBAs, SAs if required, and
developers or other users that may specifically require access for debugging or
other purposes.
Authorize and document user access requirements to the directory outside of the
Oracle, DBA and SA account list.
Check:
If the Oracle version is 11.1 or later, this check is NA.
From SQL*Plus:
select value from v$parameter where name='core_dump_dest';
On UNIX Systems:
ls -ld [pathname]
Substitute [pathname] with the directory path listed from the above SQL
command.
If permissions are granted to everyone, this is a Finding. If any account other than
the Oracle process and software owner accounts, Administrators, DBAs, System
group or developers authorized to write and debug applications on this database
are listed, this is a Finding.
Fix:
Alter host system permissions to the CORE_DUMP_DEST directory to the
Oracle process and software owner accounts, DBAs, SAs (if required) and
developers or other users that may specifically require access for debugging or
other purposes.
Authorize and document user access requirements to the directory outside of the
Oracle, DBA and SA account list in the System Security Plan.
Check:
From SQL*Plus:
select log_mode from v$database;
select value from v$parameter where name = 'log_archive_dest';
select value from v$parameter where name = 'log_archive_duplex_dest';
If the value returned in the first SQL statement is NOARCHIVELOG, this check
is NA.
On UNIX Systems:
ls -ld [pathname]
Substitute [pathname] with the directory paths listed from the above SQL
statements for log_archive_dest and log_archive_duplex_dest.
If permissions are granted to everyone, this is a Finding. If any account other than
the Oracle process and software owner accounts, Administrators, DBAs, System
group or developers authorized to write and debug applications on this database
are listed, this is a Finding.
Fix:
Specify a valid and protected directory for archive log files. Restrict access to the
Oracle process and software owner accounts, DBAs, and backup operator
accounts.
Check:
From SQL*Plus:
select file_name from dba_data_files
where tablespace_name='SYSTEM';
NOTE: Data files for a given database instance may include data files (*.dbf),
REDO log files (redo*.log) and CONTROL files (*.ctl).
Review the files in the directory shown above. Allowable files are instance
database files (*.dbf), REDO log files (redo*.log) and CONTROL files (*.ctl). If
any files other than these exist in the directory, this is a Finding.
Fix:
Create a dedicated directory or dedicated subdirectories to store database instance
files. Reconfigure the Oracle instance to point to the files in the new locations.
Where feasible, locate database instance files on a dedicated disk partition and/or
RAID device to provide additional protection.
Check:
Review file permissions defined for critical files.
Review the file permissions on the Binary initialization parameter file (the default
name is spfile[SID].ora). Binary initialization parameter files are by default
located in the $ORACLE_HOME/dbs directory (UNIX) or
%ORACLE_HOME%\database directory (Windows).
From SQL*Plus:
select value from v$parameter where name='spfile';
select member from v$logfile;
select name from v$datafile;
select name from v$controlfile;
Check directory and file permissions for the files returned by the SQL commands
above, for the files located in the $ORACLE_HOME/network/admin directory
(UNIX) or %ORACLE_HOME%\network\admin directory (Windows) and the
directory specified by the TNS_ADMIN environment variable, if defined.
On UNIX systems:
ls –ld [pathname]
If permissions are granted for world access, this is a Finding. If any groups that
include members other than the Oracle process and software owner accounts,
DBAs, auditors, or backup accounts are listed, this is a Finding.
Fix:
Set UNIX permissions on critical files to 640 or more restrictive. Check group
membership of the group assigned access permissions to the database software to
verify all members are authorized to have the assigned access.
Check:
From SQL*Plus (SPOOL output to file before executing):
select owner,object_name,created from dba_objects where owner <>'SYS'
order by created,owner,object_name;
View the list of objects retuned. If any object-creation dates do not coincide with
the software maintenance and upgrade logs or are not objects documented as
supporting dynamic object creation functions, then investigate the circumstances
under which the object was created. If the object is created using static definitions
to store temporary data or indicates that the application uses unauthorized DDL
statements, this is a Finding.
Fix:
Coordinate with the application designer to modify the application to use static
objects with temporary data rather than using temporary objects. Document
known object creation that supports dynamic object
Check:
From SQL*Plus:
select username,tablespace_name from dba_ts_quotas
where username not in (select distinct owner from dba_objects)
and username not in
(select grantee from dba_role_privs where granted_role='DBA');
Review the list of user names returned. If any belong to application users or
application administrators, this is a Finding.
Fix:
Assign tablespace quotas only to database accounts authorized to create and or
own objects in the database. Document authorized tablespace quotas for all
accounts authorized to own objects in the System Security Plan. Remove any
quotas assigned to application users, application administrators, or any other
unauthorized accounts.
From SQL*Plus:
alter user [username] quota 0 on [tablespace name];
Replace [username] with the named user and [tablespace name] with the
identified tablespace name.
Check:
From SQL*Plus:
select grantee||': '||PRIVILEGE from dba_sys_privs
where privilege<>'CREATE SESSION'
and grantee not in
('PUBLIC','AQ_ADMINISTRATOR_ROLE','AQ_USER_ROLE','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','MTSSYS',
'RECOVERY_CATALOG_OWNER','SELECT_CATALOG_ROLE',
'SNMPAGENT','SYSTEM','WKSYS','WKUSER','WMSYS',
'WM_ADMIN_ROLE','XDB','ANONYMOUS','CONNECT','DBSNMP',
'JAVADEBUGPRIV','ODM_MTR','OLAP_DBA','ORDPLUGINS',
'RESOURCE','RMAN','SYS','WKPROXY','AURORA$JIS$UTILITY$',
'AURORA$ORB$UNAUTHENTICATED','OSE$HTTP$ADMIN',
'TIMESERIES_DBA','TIMESERIES_DEVELOPER','OLAP_USER')
and grantee not in
(select grantee from dba_role_privs where granted_role='DBA')
and grantee not in
(select username from dba_users where upper(account_status) like
'%LOCKED%');
If any records are returned, perform the following instructions for this check to
determine the finding status.
Review the list of active non-DBA accounts and roles granted system privileges.
Any accounts listed as authorized for checks DO0340 (Oracle application
administration roles enablement), DO0150 (Oracle object ownership) are not a
Finding.
On a production database, confirm that any accounts listed with create user, alter
user, drop user belong to authorized application administration roles. On a
development system, ensure that system privileges assigned to developers are
justified and authorized by the IAO.
Fix:
Document and justify system privileges assigned to users/roles in the System
Security Plan and authorize with the IAO. Remove unauthorized or unjustified
system privileges from user accounts or roles.
From SQL*Plus:
revoke [privilege] from [user or role name];
Replace [privilege] with the named privilege and [user or role name] with the
identified user or role.
Check:
From SQL*Plus:
select grantee||': '||granted_role from dba_role_privs
where grantee not in
('DBA','SYS','SYSTEM','WKSYS','LBACSYS','WMSYS',
'OWBSYS','CTXSYS','SPATIAL_CSW_ADMIN_USR',
'SPATIAL_WFS_ADMIN_USR','FLOWS_030000')
and admin_option='YES'
and grantee not in (select distinct owner from dba_objects)
and grantee not in
(select grantee from dba_role_privs where granted_role='DBA')
order by grantee;
Review the System Security Plan to confirm any grantees listed are IAO-
authorized DBA accounts or application administration roles.
If any grantees listed are not authorized and documented, this is a Finding.
Fix:
Revoke assignment of roles with the WITH ADMIN OPTION from unauthorized
grantees and re-grant them without the option if required. Restrict use of the
WITH ADMIN OPTION to authorized administrators. Document authorized role
assignments with the WITH ADMIN OPTION in the System Security Plan.
From SQL*Plus:
revoke [role name] from [grantee];
grant [role name] to [grantee];
Check:
Review the list of instances and databases installed on the host system with the
DBA. Ask which databases are production databases and which are for
development.
For UNIX systems, use the ps -ef|grep pmon command to see the list of
databases; For Windows systems, review the list of services beginning with the
name OracleService to see the list of databases. Ask which databases are
production databases and which are for development. If only development or only
production databases exist on this host, this check is NA.
Otherwise, ask the DBA to confirm that policy and procedures are in place for the
IAO to review database and operating system privileges on the system to ensure
developer accounts do not have access to production DBMS systems. If none is in
place, this is a Finding.
Ask the DBA/SA if developer host accounts have been granted privileges to
production database directories, files or resources. If they have been, this is a
Finding.
From SQL*Plus:
select grantee||': '||privilege from dba_sys_privs
where (privilege like 'CREATE%' or privilege like 'ALTER%'
or privilege like 'DROP%')
and privilege<>'CREATE SESSION'
and grantee not in
('ANONYMOUS','AURORA$JIS$UTILITY$',
'AURORA$ORB$UNAUTHENTICATED','CTXSYS','DBSNMP','DIP',
'DVF','DVSYS','EXFSYS','LBACSYS','MDDATA','MDSYS','MGMT_VIEW',
'ODM','ODM_MTR','OLAPSYS','ORDPLUGINS','ORDSYS',
'OSE$HTTP$ADMIN','OUTLN','PERFSTAT','PUBLIC','REPADMIN',
'RMAN','SI_INFORMTN_SCHEMA','SYS','SYSMAN','SYSTEM',
'TRACESVR','TSMSYSWK_TEST','WKPROXY','WKSYS','WKUSER',
'WMSYS','XDB')
order by grantee;
If any accounts are listed that are not on the list of IAO approved production
DBAs, this is a Finding.
7-102 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
Fix:
Establish and implement procedures to review and maintain privileges granted to
developers on shared production and development host systems and databases.
Check:
From SQL*Plus (NOTE: The owner list below is a short list of all possible default
Oracle accounts):
select distinct owner from dba_objects
where owner not in
('ANONYMOUS','AURORA$JIS$UTILITY$',
'AURORA$ORB$UNAUTHENTICATED',
'CTXSYS','DBSNMP','DIP','DVF','DVSYS',
'EXFSYS','LBACSYS','MDDATA',
'MDSYS','MGMT_VIEW','ODM','ODM_MTR',
'OLAPSYS','ORDPLUGINS', 'ORDSYS',
'OSE$HTTP$ADMIN','OUTLN','PERFSTAT',
'PUBLIC','REPADMIN','RMAN','SI_INFORMTN_SCHEMA',
'SYS','SYSMAN','SYSTEM','TRACESVR',
'TSMSYSWK_TEST','WKPROXY','WKSYS',
'WKUSER','WMSYS','XDB')
and owner not in
(select grantee from dba_role_privs where granted_role='DBA');
If any records are returned, then confirm that any database object owner accounts
listed are application owner accounts authorized by the IAO. If any are not, this is
a Finding.
NOTE: Confirmed default Oracle accounts returned by the SQL statement above
should be considered a false positive. See Oracle MetaLink Note 160861.1 for a
current list of default accounts.
Fix:
Document all authorized application object owner accounts. Use only authorized
application object owner accounts to install and maintain application database
Check:
From SQL*Plus:
select owner from dba_tables where table_name='AUD$';
If the owner account returned is not SYS or SYSTEM, this is a Finding. If the
AUD$ tables does not exist, this is a Finding.
Fix:
Recreate the audit table while logged in as SYS or SYSTEM.
Check:
From SQL*Plus:
select distinct owner,tablespace_name
from dba_tables
where owner not in
('SYS','SYSTEM','OUTLN','OLAPSYS','CTXSYS','WKSYS','ODM',
'ODM_MTR','MDSYS','ORDSYS','WMSYS','RMAN','XDB')
and tablespace_name is not NULL
and (owner, table_name) not in
(select owner, table_name from dba_external_tables)
order by tablespace_name;
Review the list of returned table owners with the tablespace used. If any of the
owners listed are not default Oracle accounts and use the SYSTEM or any other
tablespace not dedicated for the application’s use, this is a Finding.
Look for multiple applications that may share a tablespace. If no records were
returned, ask the DBA if any applications use this database. If no applications use
the database, this is not a Finding.
If there are applications that do use the database and if the application uses the
SYS or other default account and SYSTEM tablespace to store its objects, this is a
Finding.
Fix:
Create and assign dedicated tablespaces for the storage of data by each application
using the CREATE TABLESPACE command.
Check:
From SQL*Plus:
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')
and grantee not in
(select grantee from dba_role_privs where granted_role='DBA')
order by grantee;
Fix:
Revoke unauthorized access to system tables and data.
From SQL*Plus:
revoke [object privilege] on [system object name] from [account name or role];
Check:
From SQL*Plus:
select value from v$parameter where name='audit_trail';
From SQL*Plus:
select grantee from dba_tab_privs
where table_name='AUD$'
and grantee not in ('DELETE_CATALOG_ROLE')
and grantee not in
(select grantee from dba_role_privs where granted_role='DBA')
order by grantee;
View access granted to the AUD$ table against those authorized in the System
Security Plan. If any are not authorized, this is a Finding.
Fix:
Document and authorize accounts granted access to the AUD$ table in the System
Security Plan. Revoke access permissions granted to the AUD$ table from
unauthorized users.
Check:
From SQL*Plus:
select grantee,granted_role from dba_role_privs
where default_role='YES'
and granted_role in
(select grantee from dba_sys_privs where upper(privilege) like '%USER%')
and grantee not in
('DBA','SYS','SYSTEM','CTXSYS','DBA','IMP_FULL_DATABASE',
'MDSYS','SYS','WKSYS')
and grantee not in (select distinct owner from dba_tables)
and grantee not in
(select distinct username from dba_users where upper(account_status) like
'%LOCKED%');
Review the list of accounts reported for this check and ensures that they are
authorized application administration roles. If any are not authorized application
administration roles, this is a Finding.
Fix:
For each role assignment returned, issue:
alter user [username] default role all except [role];
If the user has more than one application administration role assigned, then you
will have to remove assigned roles from default assignment and assign
individually the appropriate default roles.
Check:
From SQL*Plus:
select grantee from dba_role_privs
where granted_role='DBA'
and grantee not in
('SYS','SYSTEM','SYSMAN');
If any accounts are listed, review against the list of DBA accounts authorized by
the IAO in the System Security Plan.
If any accounts are assigned the DBA role and are not authorized by the IAO, this
is a Finding.
If any DBA roles are assigned to developer accounts and this is a production
database, this is a Finding.
Fix:
Authorize and document all DBA role authorizations in the System Security Plan.
Revoke DBA role membership from unauthorized accounts. Revoke DBA role
membership from any accounts assigned to a developer job function on a shared
production/development database.
Check:
If no DBMS accounts authenticate using passwords, this check is NA.
From SQL*Plus:
select distinct limit from dba_profiles
where resource_name='PASSWORD_VERIFY_FUNCTION'
order by limit;
Review the code for the password verify function or have the DBA demonstrate a
password change to ensure that the function requires new passwords to differ
from old passwords by more than 4 characters.
<<endsearch>>
if old_password is not null then
differ:=length(old_password) - length(password);
differ:=abs(differ);
for i in 1..m loop
if substr(password,i,1) != substr(old_password,i,1) then
differ:=differ + 1;
end if;
end loop;
Fix:
Define and apply a password_verify_function for all profiles where passwords are
used to authenticate accounts. See Fix information for DO3504 to create a
password_verify_function that meets STIG requirements.
Check:
If no DBMS accounts authenticate using passwords, this check is NA.
From SQL*Plus:
select distinct limit from dba_profiles
where resource_name='PASSWORD_VERIFY_FUNCTION'
order by limit;
Review the code for the password verify function or have the DBA demonstrate a
password change to ensure that the function prevents users from changing their
passwords within 24 hours of the last password change.
-- Check if the password has been changed within the last 24 hours
Fix:
Define and apply a password_verify_function for all profiles where passwords are
used to authenticate accounts. See Fix information for DO3504 to create a
password_verify_function that meets STIG requirements.
Check:
If no DBMS accounts authenticate using passwords (rare), this check is NA.
From SQL*Plus:
select distinct limit from dba_profiles
where resource_name= 'PASSWORD_VERIFY_FUNCTION'
order by limit;
Review the code for the password verify function or have the DBA demonstrate a
password change to ensure that the function does not accept passwords that are
the same as the username, the name of the database or instance name.
From SQL*Plus:
select distinct profile from dba_profiles
where resource_name='PASSWORD_VERIFY_FUNCTION'
and (limit is NULL or limit = NULL);
If any profiles are returned that are used by password-authenticated accounts, this
is a Finding.
From SQL*Plus:
select name from user$ where password is not NULL;
Fix:
Define and apply a password_verify_function for all profiles where passwords are
used to authenticate accounts. See Fix information for DO3504 to create a
password_verify_function that meets STIG requirements.
Check:
From SQL*Plus (NOTE: The owner list below is a short list of all possible default
Oracle accounts):
select distinct owner from dba_objects, dba_users
where owner not in
('ANONYMOUS','AURORA$JIS$UTILITY$',
'AURORA$ORB$UNAUTHENTICATED','CTXSYS','DBSNMP','DIP','DVF',
'DVSYS','EXFSYS','LBACSYS','MDDATA','MDSYS','MGMT_VIEW','ODM',
'ODM_MTR','OLAPSYS','ORDPLUGINS','ORDSYS','OSE$HTTP$ADMIN',
'OUTLN','PERFSTAT','PUBLIC','REPADMIN','RMAN',
'SI_INFORMTN_SCHEMA','SYS','SYSMAN','SYSTEM','TRACESVR',
'TSMSYSWK_TEST','WKPROXY','WKSYS','WKUSER','WMSYS','XDB')
and owner = username
and upper(account_status) not like '%LOCKED%';
From SQL*Plus:
select grantee from dba_role_privs where granted_role=’DBA’;
If any records are returned, then verify the account is an authorized application
object owner account or a default account installed to support an Oracle product.
Verify that any objects owned by custom DBA accounts are for the personal use
of that DBA. If any objects are used to support applications or any functions other
than DBA functions, this is a Finding.
Any unauthorized object owner accounts are not a finding under this check as
they are noted as findings under check DO0150.
Fix:
Disable any application object owner accounts.
From SQL*Plus:
alter user [username] account lock;
Enable application object owner accounts only for installation and maintenance.
DBA are special purpose accounts and do not require disabling although they may
own objects. For application objects that require routine maintenance, e.g. index
objects, to maintain performance, consider allowing a special purpose account to
own the index or enable the application owner account for the duration of the
routine maintenance function only.
Check:
From SQL*Plus:
select 'The number of replication objects defined is: '||
count(*) from all_tables
where table_name like 'REPCAT%';
If the count returned is 0, then Oracle Replication is not installed and this check is
NA. Otherwise:
From SQL*Plus:
select count(*) from sys.dba_repcatlog;
If the count returned is 0, then Oracle Replication is not in use and this check is
NA. If any results are returned, ask the DBA if the replication account (the default
is REPADMIN, but may be customized) is restricted to IAO-authorized personnel
only. If it is not, this is a Finding.
If there are multiple replication accounts, confirm that all are justified and
documented with the IAO. If they are not, this is a Finding.
Fix:
Change the password for default and custom replication accounts and provide the
password to IAO-authorized users only.
Check:
NOTE: The DEFAULT profile is required to have a password lifetime set not to
exceed 60 days, which is the current password lifetime limit per DoD policy.
Custom profiles for non-interactive accounts (accounts used by applications or
other systems) may have a password lifetime set to a time greater than 60 days,
but must still have a limit assigned. Limits of one year or less for non-interactive
accounts do not require IAO authorization and should be set to a lifetime as low
as administration and operation of the application will support.
From SQL*Plus:
select profile,limit
from dba_profiles,
(select limit as def_pwd_life_tm
from dba_profiles
where profile='DEFAULT'
and resource_name='PASSWORD_LIFE_TIME')
where resource_name='PASSWORD_LIFE_TIME'
and ((replace(limit,'DEFAULT',def_pwd_life_tm) in
('UNLIMITED',NULL))
or (lpad(replace(limit,'DEFAULT',def_pwd_life_tm),40,'0') >
lpad('60',40,'0')));
If the DEFAULT profile has a value greater than 60 days, this is a Finding.
If any non-default profiles have password lifetimes greater than 60 days and are
assigned to interactive accounts, this is a Finding.
If any non-default profiles have password lifetimes greater than 365 days (1 year)
and are assigned to any accounts, this is a Finding.
Verify in the System Security Plan that all accounts assigned to profiles with a
password lifetime greater than 60 days belong to non-interactive accounts.
Fix:
7-122 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
From SQL*Plus:
alter profile default limit password_life_time 60;
alter profile [profile name] limit password_life_time [60 to 365];
Replace [profile name] with any existing, non-default profile name and [60 to
365] with a value between 60 and 365 (days) inclusive.
Check:
From SQL*Plus:
select limit from DBA_PROFILES where profile=’DEFAULT’
and resource_name=’IDLE_TIME’;
If the idle time on the DEFAULT profile is greater than 15 minutes, this is a
Finding.
If any non-default profiles have an idle time setting greater than 60 minutes or are
set to an UNLIMITED value and not documented in the System Security Plan or
not authorized by the IAO, this is a Finding.
If any profiles have an idle time setting of NULL or no value, this is a Finding.
Fix:
Modify profiles to meet the idle time requirement.
From SQL*Plus:
alter profile default limit idle_time 15;
alter profile [profile name] limit idle_time [IAO-approved value];
Authorize and document any profiles that require idle times greater than 15
minutes in the System Security Plan.
Check:
From SQL*Plus:
select 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' or sysoper='TRUE');
If any accounts are listed and are not authorized by the IAO in the System
Security Plan, this is a Finding.
Fix:
If a REMOTE_LOGIN_PASSWORDFILE is in use (='EXCLUSIVE'), then list
database accounts assigned SYSDBA and SYSOPER database privileges and
review for appropriate authorization. Document authorized SYSDBA and
SYSOPER users in the System Security Plan.
From SQL*Plus:
select * from v$pwfile_users;
From SQL*Plus:
revoke sysdba from [username];
revoke sysoper from [username];
Check:
From SQL*Plus:
select db_link||': '||host from dba_db_links;
If any unauthorized database links are defined or the definitions do not match the
documentation, this is a Finding.
NOTE: Findings for production-development links under this check are assigned
to the production database only.
If any database links are defined between the production database and any test or
development databases, this is a Finding.
Fix:
Document all remote or external interfaces used by the DBMS to connect to or
allow connections from remote or external sources. Include with the
documentation as appropriate, any network ports or protocols, security accounts,
and the sensitivity of any data exchanged. Do not define or configure database
links between production databases and test or development databases.
7-127 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
Check:
If Oracle Label Security is not installed or database does not contain sensitive
data, this check is NA.
From SQL*Plus:
select * from DBA_SA_USERS;
Fix:
Document label security requirements in the System Security Plan. Configure
label security in accordance with the System Security Plan. Monitor and audit
changes to the label security configuration.
Check:
If this is not a production database, this check is NA.
From SQL*Plus:
select owner||'.'||name from dba_source
where line=1
and owner not in
('SYS', 'CTXSYS', 'MDSYS', 'ODM', 'OE', 'OLAPSYS','ORDPLUGINS',
'ORDSYS', 'OUTLN', 'PM', 'QS_ADM','RMAN', 'SYSTEM','WKSYS',
'WMSYS','XDB')
and owner not like 'OEM%'
and text not like '%wrapped%'
and type in ('PACKAGE BODY','FUNCTION','PROCEDURE');
Review the list of results with the DBA. If any results are custom or GOTS
application code, this is a Finding. If all returned results are default DBMS or
COTS application code, this is not a Finding.
Fix:
Use the Oracle WRAP utility to encode application source code stored in
application database objects (stored procedures, functions, packages).
From SQL*Plus:
set show off
set heading off
set verify off
set echo off
set term off
set pagesize 0
set feedback off
set serveroutput on size 1000000
set wrap on
set trimspool on
set linesize 512
spool [output file name = proc.sql]
7-130 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
From SQL*Plus:
@proc.plb
Check:
If the DBMS does not have Oracle Label Security installed or no sensitive data is
stored or processed in the database, this check is NA.
From SQL*Plus:
select * from dba_sa_audit_options;
If no records are returned or if output from the SQL statement above does not
show classification labels being audited as required in the System Security Plan,
this is a Finding..
Fix:
Define the policy for auditing changes to security labels defined for the data.
Document the audit requirements in the System Security Plan and configure
database auditing in accordance with the policy.
Check:
From SQL*Plus:
select instance_name from v$instance;
select version from v$instance;
If the instance name returned references the Oracle release number, this is a
Finding.
Numbers used that include version numbers by coincidence are not a Finding.
The DBA should be able to relate the significance of the presence of a digit in the
SID.
Fix:
Follow the instructions in Oracle MetaLink Note 15390.1 (and related documents)
to change the SID for the database without re-creating the database to a value that
does not identify the Oracle version.
Check:
From SQL*Plus:
select instance_name from v$instance;
Review the instance name with the DBA. Ask the DBA if the instance name was
chosen by the installer to conform to local naming conventions, etc. or if it was
determined by the installation software. If it was named by the installation
software, this is a Finding.
Fix:
Follow the instructions in Oracle MetaLink Note 15390.1 (and related documents)
to change the SID for the database without re-creating the database to a value
other than the application default.
Check:
From SQL*Plus:
select owner||': '||db_link from dba_db_links;
select count(*) from sys.dba_repcatlog;
If no records are returned from the first SQL statement, this check is NA. If the
value of the count returned is 0 for the second SQL statement, none of the
database links listed above, if any, is used for replication. Confirm that the public
and fixed user database links listed are documented in the System Security Plan,
are authorized by the IAO and used for replication or operational system
requirements. If any are not, this is a Finding.
Fix:
Document all authorized connections from the database to remote databases in the
System Security Plan. Remove all unauthorized remote database connection
definitions from the database.
From SQL*Plus:
drop database link [link name]; OR
drop public database link [link name];
Review remote database connection definitions periodically and confirm their use
is still required and authorized.
Check:
From SQL*Plus:
select name from v$controlfile;
Oracle Best Practices recommends a minimum of two distinct control files each
located on separate storage devices or on separate, archived partitions within a
RAID device. If this minimum listed above is not met, this is a Finding.
Consult with the SA or DBA to determine that the mount points or partitions
referenced in the file paths indicate separate physical or RAID disks.
Fix:
To prevent loss of service during disk failure, multiple copies of Oracle control
files should be maintained on separate disks in archived directories.
Adding or moving a control file requires careful planning and execution. Please
consult and follow the instructions for creating control files in the Oracle
Database Administrator's Guide, under Steps for Creating New Control Files.
Check:
From SQL*Plus:
select count(*) from dba_users where username='XDB';
select count(*) from v$parameter where name='dispatchers'
and value like '%XDB%';
If a value of 0 is returned for either the first or the second SQL statement above,
this is not a Finding.
If a value of 1 (or more) is returned for the second SQL statement, review the
System Security Plan to verify existence of all XML DB dispatchers is
authorized. If it is not, this is a Finding.
Fix:
If the database is authorized to support web services using XML over HTTP, then
include documentation and authorization in the System Security Plan.
If none is authorized, uninstall XML DB per Oracle MetaLink Note 243554.1 for
Oracle versions 9.2, 10.1 and 10.2 and Oracle MetaLink Note 742014.1 for
Oracle version 11.1.
Check:
Oracle provides patches in patchsets, Critical Patch Updates (CPU) as well as
providing patch set exceptions for installed DBMS products.
Oracle security patches are published quarterly in January, April, July and
October as Critical Patch Updates (CPU). CPUs may be viewed at
http://www.oracle.com/technology/deploy/security/alerts.htm. Most Oracle CPU
patches are also listed in DoD IAVM alerts.
Patch set exceptions are fixes per a particular DBMS product based on reported
bugs and do not undergo the rigorous QA and certification process that patchsets
do. These are installed as needed to correct reported or observed bugs in the
Oracle DBMS products.
This check applies to the application of the patchsets and the CPU patches.
From SQL*Plus:
select version from v$instance;
If the Oracle DBMS version is not at the listed patchset level for your
supported platform (see table below), this is a Finding.
HP-UX PA-RISC 11.1.0.7 Nov 11, 08 10.2.0.4 June 02, 08 10.1.0.5 Feb 05, 06 9.2.0.8 Aug 22, 06
(64-bit)
HP-UX Itanium 11.1.0.7 Oct 06, 08 10.2.0.4 May 02 , 08 10.1.0.5 Jun 07, 06 9.2.0.8 Oct 04 , 06
IBM RS/600(32- - - - - - - - -
bit)
IBM RS/600(64- - - - - - - 9.2.0.5 Apr 08, 04
bit)
IBM AIX Based 11.1.0.7 Oct 06, 08 10.2.0.4 May 15 , 08 10.1.0.5 Feb 05, 06 9.2.0.8 Aug 22, 06
System(5L)
IBM NUMA-Q - - - - - - - -
DYNX/ptx
IBM z/OS - - 10.2.0.3 Dec 30, 06 10.1.0.5 Mar 05, 06 9.2.0.8 Aug 22, 06
(OS/390)
IBM zSeries - - 10.2.0.3 Jun 15, 07 10.1.0.5 Aug 26, 06 9.2.0.8 Feb 26 , 08
Based Linux
IBM Power Based - - 10.2.0.3 Mar 14, 07 - - - -
Linux
Linux x86 11.1.0.7 Sep 18, 08 10.2.0.4 Feb 15 , 08 10.1.0.5 Jan 30, 06 9.2.0.8 Aug 25, 06
Linux x86-64 11.1.0.7 Sep 18, 08 10.2.0.4 Mar 18, 08 10.1.0.5 Feb 24, 06 9.2.0.8 Aug 22, 06
(AMD64/EM64T)
Linux Itanium - - 10.2.0.3 Dec 30, 06 10.1.0.5 May 01, 06 9.2.0.8 Aug 22, 06
Microsoft 11.1.0.7 Oct 09, 08 10.2.0.4 Mar 18, 08 10.1.0.5 Feb 13, 06 9.2.0.8 Aug 21, 06
Windows (32-bit)
Microsoft - 10.2.0.3 Dec 29, 06 10.1.0.5 Jan 30, 06 9.2.0.8 Aug 22, 06
Windows Itanium
(64-bit)
Microsoft 11.1.0.7 Nov 13, 08 10.2.0.4 May 16 , 08 - - - -
Windows x86-64
(AMD64/EM64T)
Microsoft - - - - - - - -
Windows 2008
Server (32-bit)
Microsoft - - - - - - - -
Windows Server
2008 (x64)
Microsoft - - - - - - - -
Windows Vista
Microsoft - - - - - - - -
Windows Vista
(x64)
Solaris Operating - - - - - - 9.2.0.8 Aug 24, 06
Env
(SPARC 32-bit)
Solaris Operating 11.1.0.7 Oct 06, 08 10.2.0.4 May 02, 08 10.1.0.5 Feb 05, 06 9.2.0.8 Aug 24, 06
Env
(SPARC 64-bit)
Solaris Operating - - 10.2.0.2 Sep 13, 06 10.1.0.5 Jun 19, 06 - -
Env (x86)
Solaris Operating - - 10.2.0.3 Aug 10, 07
Env (x86 64-bit)
Note: The table above was modified from the original found at
http://www.oracle.com/technology/support/patches.htm to include the recent
Oracle 11g patchset and remove references to Oracle 8i.
Go to the website
http://www.oracle.com/technology/deploy/security/alerts.htm. Click on the
latest Critical Patch Update link. Click on the [Database] link in the Supported
Products and Components Affected section. Enter your Oracle MetaLink
credentials. Locate the Critical Patch Update Availability table. Identify your
OS Platform and Oracle version to see if there is a CPU update release. If there
is none, this is not a Finding. If there is one, note the patch number for the steps
below.
View the installed patch numbers for the database using the Oracle opatch
utility.
On UNIX systems:
$ORACLE_HOME/OPatch/opatch lsinventory –detail | grep [PATCHNUM]
Replace [PATCHNUM] with the Patch number noted above. If the output
shows the installed patch is present, this is not a Finding. No output indicates
that the patch has not been applied and is a Finding.
Fix:
Apply all Oracle version patchsets and Critical Patch updates to the database
software where available. Follow vendor-provided patch installation instructions.
Check:
From SQL*Plus:
select banner from v$version where banner like 'Oracle%';
If the Oracle version is not in the list above or does not have extended support
where specified, this is a Finding.
Fix:
Upgrade to a supported Oracle version. Install latest patchset available. Apply all
available security patches. Use the opatch utility to confirm installed patches.
Check:
Ask the DBA to describe/demonstrate any software modification detection
procedures in place and request documents of these procedures for review. Verify
by reviewing reports for inclusion of the DBMS executable and configuration
files. If documented procedures and proof of implementation does not exist that
includes review of the database software directories and database application
directories, this is a Finding.
Fix:
Document and implement procedures to monitor changes made to the DBMS
software. Identify all database files and directories to be included in the host
system or database backups and provide these to the person responsible for
backups.
For Windows systems, you can use the dir /s > filename.txt run weekly to store
and compare file modification/creation dates and file sizes using the DOS fc
command. For UNIX systems, you can use the ls –as >filename.txt command to
store and compare (diff command) file statistics for comparison. These are not as
comprehensive as some tools available, but may be enhanced by including checks
for checksums or file hashes.
Check:
If this is not a production system, this check is NA.
Fix:
Develop and implement CM procedures. Include all configurable DBMS features
or options. Include upgrades and patch management. Assign responsibilities for
oversight and approval for all changes to the database software and configuration.
Check:
Review the database backup procedures and implementation evidence. Evidence
of implementation includes records of backup events and physical review of
backup media. Evidence should match the backup plan as documented in the
System Security Plan.
If backup procedures do not exist or are not implemented in accordance with the
procedures, this is a Finding.
If backups are not performed weekly or more often for MAC III systems, this is a
Finding.
If backups are not performed daily or more often for MAC II systems, this is a
Finding.
If backup data for MAC II systems is not secured and stored offline at an alternate
site, this is a Finding.
Fix:
Design, document and implement database backup procedures.
Include daily backup procedures and offline backup data storage at an alternate
site for MAC II systems.
Check:
Review documented backup testing and recovery verification procedures noted or
documented in the System Security Plan.
If backup testing and recovery verification are not documented or noted in the
System Security Plan, this is a Finding.
If evidence of backup testing and recovery verification does not exist, this is a
Finding.
Fix:
Design, document and implement backup testing and recovery verification
procedures for the DBMS host and all individual database instances and either
include or note the name, location, version and current revision date of any
external documentation in the System Security Plan.
Include any requirements for documenting database backup and recovery testing
and verification activities in the procedures.
Check:
Review documented software and configuration monitoring procedures and
implementation evidence to verify that monitoring of changes to database
software libraries, related applications and configuration files is being performed
weekly or more often. Verify that a list of files, directories and database
application objects (procedures, functions and triggers) being monitored is
complete.
Fix:
Develop, document and implement procedures to monitor for unauthorized
changes to DBMS software libraries, related software application libraries and
configuration files.
If a third-party automated tool is not employed, an automated job that reports file
information on the directories and files of interest and compares them to the
baseline report for the same will meet the requirement. File hashes or checksums
should be used for comparisons as file dates may be manipulated by malicious
users.
NOTE: Before running the procedure, consider spooling the results to a text file
on the host. Output may also be directed to a database table with modification to
the procedure.
From SQL*Plus:
create or replace function compute_md5 (proc_name_in in varchar2)
return varchar2
is
all_text varchar2(32767);
cur_md5 varchar2(32767);
begin
for x in (select text from user_source where name=PROC_NAME_IN) loop
cur_md5:=dbms_obfuscation_toolkit.md5(input =>
utl_raw.cast_to_raw(x.text));
all_text:=dbms_obfuscation_toolkit.md5(input => (cur_md5 || all_text));
9-148 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
end loop;
return all_text;
end;
/
show errors;
set serveroutput on size 1000000;
declare
begin
for x in (select distinct name from user_source) loop
dbms_output.put_line(chr(10));
dbms_output.put_line('Procedure: ' || x.name) ;
dbms_output.put_line('MD5: ' || compute_md5(x.name));
end loop;
end;
/
Check:
Review documented and implemented procedures contained or noted in the
System Security Plan for providing database client connection information to
users and user workstations. Oracle client connection information is stored in the
file:
$ORACLE_HOME/network/admin/tnsnames.ora (UNIX)
%ORACLE_HOME%\network\admin\tnsnames.ora (Windows)
Fix:
Develop, document and implement procedures to distribute client connection
definitions or definition files that contain only connection definitions authorized
for that user or user workstation. Include or note these procedures in the System
Security Plan.
Check:
If all database accounts are configured to authenticate using certificates or other
credentials besides passwords, this check is NA.
Fix:
Develop, document and implement procedures for assigning, distributing and
changing of temporary passwords for new database user accounts. Procedures
should include instruction that meet current DoD password length and complexity
requirements and provide a secure method to relay the temporary password to the
user. Temporary passwords should also be short-lived and require immediate
update by the user upon first use. Consider using account authentication using
certificates or other credentials in place of password authentication.
Check:
NOTE: This check applies specifically to the Oracle DBMS installation and its
associated files, scripts and environments.
Review with the DBA the list of DBMS configuration files, scripts and
applications not defined within the database that access the database included or
noted in the System Security Plan. The list should also include files or settings
used to configure the operational environment for the DBMS and for interactive
DBMS user accounts.
If any passwords are stored in clear text, this is a Finding. If a list of DBMS
configuration files, scripts, applications and environment files/settings not defined
within the database that access the database does not exist, this is a Finding.
Fix:
Develop, document and maintain a list of DBMS configuration files, scripts,
applications and environment files/settings not defined within the database that
access the database. Record whether they do or do not contain database
passwords. If passwords are stored, ensure they are encoded or encrypted and
protected by host system security. Also, consider the use of Oracle Database
Vault or making the database account authenticate externally.
Check:
Review policy and instructions included or noted in the System Security Plan
used to inform users and administrators not to enter database passwords at the
command line. Review documented and implemented procedures used to monitor
the DBMS system for such activity.
Fix:
Develop, document and implement policy and instructions to train users not to
enter database passwords on the command line. Develop, document and
implement monitoring for compliance. Alter command-line utilities to prevent or
report when a password has been entered on a command line or disable its use.
Check:
If the database being reviewed is not a production database or does not contain
sensitive data, this check is NA.
Fix:
Develop, document and implement policy and procedures that provide restrictions
for production data export. Require users and administrators assigned privileges
that allow the export of production data from a production database to
acknowledge understanding of export restrictions. Restrict permissions allowing
use or access to database export procedures or functions to authorized users.
Ensure sensitive data from production is sanitized prior to import to a
development database (See check DG0076). Grant access and need-to-know to
developers where allowed by policy.
Check:
If the database being reviewed is not a production database, this check is NA.
Fix:
Develop database or host system procedures to report audit trail data in a form
usable to detect unauthorized access to or usage of DBMS privileges, procedures
or data. You may also want to consider procuring a third-party auditing tool like
Oracle Audit Vault with support for Oracle, SQL Server, DB2 and Sybase.
NOTE: Audit data may contain sensitive information. The use of a single
repository for Audit data should be protected at the highest level based on the
sensitivity of the databases being audited.
Check:
Review documented procedures and implementation evidence of DBA role
privilege monitoring.
If procedures are not documented or noted in the System Security Plan or are not
complete, this is a Finding. If evidence of implementation for monitoring does not
exist, this is a Finding. If monitoring does not occur monthly (~30 days) or more
often, this is a Finding.
Fix:
Design, document and implement procedures for monitoring DBA role privilege
assignments. Grant the DBA role the minimum privileges required to perform
administrative functions. Establish monitoring of DBA role privileges monthly or
more often.
Check:
Review procedures and evidence of implementation for monitoring and testing
DBMS IA and vulnerability management compliance.
Fix:
Develop, document and implement procedures for periodic monitoring and testing
of the DBMS against current vulnerability management and IA configuration
requirements compliance. Perform periodic monitoring/testing to ensure
continued compliance.
Check:
If the database being reviewed is not a production database, this check is NA.
Review policy and procedures documented or noted in the System Security plan
as well as evidence of implementation for daily audit trail monitoring.
Fix:
Develop, document and implement policy and procedures to monitor audit trail
data daily.
Check:
Review documented policy and procedures included or noted in the System
Security Plan as well as evidence of implementation for annual reviews of DBMS
IA policy and procedures.
If policy and procedures do not exist, are incomplete, or are not implemented and
followed annually or more frequently, this is a Finding.
Fix:
Develop, document and implement procedures to review DBMS IA policies and
procedures.
Check:
Review policy and procedures documented or noted in the System Security Plan
and evidence of implementation for testing DBMS installations, upgrades and
patches prior to production deployment.
Fix:
Develop, document and implement procedures for testing DBMS installations,
upgrades and patches prior to deployment on production systems.
Check:
If no sensitive or classified data is stored in the database, listed in the System
Security Plan and listed in the AIS Functional Architecture documentation, this
check is NA.
Review AIS Functional Architecture documentation for the DBMS and note any
sensitive data that is identified.
Review database table column data or descriptions that indicate sensitive data. For
example, a data column labeled "SSN" could indicate social security numbers are
stored in the column. Question the IAO or DBA where any questions arise.
General categories of sensitive data requiring identification include any personal
data (health, financial, social security number and date of birth), proprietary or
financially sensitive business data or data that might be classified.
If any data is considered sensitive and is not documented in the AISFA, this is a
Finding.
Fix:
Include identification of any sensitive data in the AIS Functional Architecture and
the System Security Plan. Include data that appear to be sensitive with a
discussion as to why it is not marked as such.
Check:
Review the System Security Plan to discover the restoration priority assigned to
the DBMS. If a restoration priority is not assigned, this is a Finding.
Fix:
Review the mission criticality of the DBMS in relation to the overall mission of
the organization and assign it a restoration priority.
Check:
Review the services and processes active on the DBMS host system.
If the host system is supporting any other security or directory services that do not
use the DBMS to store information, this is a Finding.
NOTE: This does not include client security applications like firewall and
antivirus software.
Fix:
Install the DBMS software on a dedicated host.
Check:
Review the System Security Plan for the DBMS.
If a System Security Plan does not exist or does not identify or reference all
relevant security controls, this is a Finding.
Fix:
Develop, document and implement a System Security Plan for the DBMS.
Include IA documentation related to the DBMS in the System Security Plan for
the system that the DBMS supports.
Check:
If remote administrative access to the database is prohibited and is disabled (See
Check DG0093), this check is NA.
Fix:
Develop, document and implement policy and procedures to monitor remote
administrative access to the DBMS. The automated generation of a log report
with automatic dissemination to the IAO/IAM may be used. Require and store an
acknowledgement of receipt and confirmation of review for the log report.
Check:
Review evidence or operation of audit tool monitoring and alerts.
Fix:
Implement an automated tool that monitors audit logs and generates automated
alerts. Compliance may be accomplished using existing database features.
Check:
Review the System Security Plan to determine if the DBMS serves data to users
or applications outside the local enclave.
If the DBMS is not accessed outside of the local enclave, this is not a Finding.
If the DBMS serves applications available from a public network (e.g. the
Internet), then confirm that it is located in a DMZ.
If the DBMS is located inside the local enclave and is directly accessible to public
users, this is a Finding.
Fix:
Do not allow direct connections from users originating from the Internet or other
public network to the DBMS.
Include in the System Security Plan for the system whether the DBMS serves
public-facing applications or applications serving users from other untrusted
networks.
Check:
Review evidence of Oracle database and dependent application files and
directories.
Review the System Security Plan for a list of all DBMS application software
libraries to be included in software library backups.
If any software library files are not included in regular backups, this is a Finding.
Fix:
Configure backups to include all ORACLE home directories and subdirectories
and any other Oracle application and third-party database application software
libraries.
Check:
If the DBMS or DBMS host is not shared by production and development
activities, this check is NA.
Review policy and procedures documented or noted in the System Security Plan
and evidence of monitoring of developer privileges on shared development and
production DBMS and DBMS host systems.
If developer privileges are not monitored every three months or more frequently,
this is a Finding.
Fix:
Develop, document and implement procedures to monitor DBMS and DBMS host
privileges assigned to developers on shared production and development systems
to detect unauthorized assignments every three months or more often.
Check:
Review documented backup and restoration procedures to determine ownership
and access during all phases of backup and recovery. Review file protections
assigned to online backup and restoration files and tools. Review access, physical
security protections and documented procedures for offline backup and
restoration files and tools.
Fix:
Develop, document and implement protection for backup and restoration files.
Document personnel and the level of access authorized for each to backup and
restoration files and tools. In addition to physical and host system protections,
consider other methods including password protection of the files.
Check:
Review policy and procedures documented or noted in the System Security Plan
as well as evidence of implementation for monitoring changes to DBA role
assignments and procedures for notifying the IAM of the changes for review.
Fix:
Develop, document and implement procedures to monitor changes to DBA role
assignments.
Check:
Review documented and implemented procedures for controlling and granting
access of the Oracle DBMS software installation account.
On UNIX systems:
If the account is not disabled when not in use, this is a Finding.
On Windows systems:
The Oracle DBMS software is installed using an account with administrator
privileges. Ownership is assigned to the account used to install the DBMS
software. Change of ownership can be performed, but is not necessary and any
check results are not a Finding.
Fix:
Develop, document and implement procedures to restrict use of the Oracle DBMS
software installation account.
Ensure that the Oracle DBMS software installation account is locked when not in
use.
Check:
Review documented and implemented procedures for monitoring the use of the
DBMS software installation account in the System Security Plan.
If use of this account is not monitored or procedures for monitoring its use do not
exist or are incomplete, this is a Finding.
On Windows systems:
The Oracle DBMS software is installed using an account with administrator
privileges. Ownership is assigned to the account used to install the DBMS
software. If monitoring does not include all accounts with administrator
privileges on the DBMS host, this is a Finding.
Fix:
Develop, document and implement a logging procedure for use of the DBMS
software installation account that provides accountability to individuals for any
actions taken by the account.
Host system audit logs should be included in the DBMS account usage log along
with an indication of the person who accessed the account and an explanation for
the access. Ensure all accounts with administrator privileges are monitored for
DBMS host on Windows OS platforms.
Check:
Review the DBMS account usage log for use of the Oracle DBMS software
installation account. Interview personnel authorized to access the DBMS software
installation account to ask how the account is used.
On Windows systems:
The Oracle DBMS software is installed using an account with administrator
privileges. Ownership is assigned to the account used to install the DBMS
software. Except where a change in ownership is made to a dedicated account,
any check results are not a Finding.
Fix:
Develop, document, implement procedures, and train authorized users to restrict
usage of the DBMS software installation account for DBMS software installation,
upgrade and maintenance only.
Check:
If the DBMS host is not a shared production/development host, this check is NA.
Check Windows service names and UNIX process names to review identifiers as
well as environment variables used by DBAs and developers. Have the DBA
display any other system level or local environment variables that reference the
database installation directories or instances.
Fix:
Rename identifiers or configuration parameters to distinguish production
applications, databases and objects from development.
Ensure the DBMS host complies with all applicable STIG guidelines where
shared production/development usage is noted or mitigate and document any
conflicts with the DAA.
Check:
Review DBMS software baseline procedures and implementation evidence.
Review the list of files, directories and details included in the current baseline for
completeness.
Fix:
Develop, document and implement DBMS software baseline procedures that
include all DBMS software files and directories under the ORACLE_BASE and
ORACLE_HOME environment variables and any custom and platform-specific
directories. Generate a list of files, directories and details for the DBMS software
configuration baseline. Update the configuration baseline after new installations,
upgrades/updates or maintenance activities that include changes to the baseline
software.
Check:
On UNIX Systems:
ps –ef | grep tnslsnr | grep –v grep
On Windows Systems:
Launch the Services snap-in, locate the Oracle processes and look for any
TNSListener processes with STATUS = Started.
If a listener is not running on the local database host server, this check is NA.
Review the listener.ora file for each listener that accepts remote database
connections. For each of these listeners, confirm the listener configuration file
does not include the parameter and value (where the word LISTENER listed
below is replaced by the actual alias of your listener):
LOGGING_LISTENER = OFF
Fix:
Configure the listener to log connection data by including or modifying the
following parameter definition in the listener.ora file (where the word LISTENER
listed below is replaced by the actual alias of your listener) or removing the line
entirely (Oracle Listener default is to log connection data):
LOGGING_LISTENER = ON
Check:
If application access audit data is not available due to the lack of a local listener
process or alternate method of auditing database access, this check is NA (see
check DG0052).
Fix:
Document applications authorized to access the DBMS in the System Security
Plan. Design, document and implement a process to review the listener log file or
the results from any alternate methods used to support database access auditing to
detect connections from unauthorized applications. Include in this process a
method to generate and provide evidence of monitoring. This may include
automated or manual processes acknowledged by the auditor or IAO.
Check:
Review a list of Windows service or UNIX processes running on the DBMS host.
For Windows, review the Services snap-in. Investigate with the DBA/SA any
unknown services. For UNIX, issue the ps -ef command. Investigate with the
DBA/SA any unknown processes.
NOTE: Only applications that are technically required to share the same host
system may be authorized to do so. Applications that share the same host for
administrative, financial or other non-technical reasons may not be authorized and
are a Finding.
Fix:
A dedicated host system in this case refers to an instance of the operating system
at a minimum. The operating system may reside on a virtual host machine.
Check:
If the DBMS host being reviewed is not a production DBMS host, this check is
NA.
Review evidence of security hardening and auditing of the DBMS host platform,
the application(s) that store data in the database, and any other separately
configured components that access the database including web servers,
application servers, report servers, etc.
If any have not been hardened and received a security audit, this is a Finding.
Fix:
Configure all related application components and the DBMS host platform in
accordance with the applicable DoD STIG. Regularly audit the security
configuration of related applications and the host platform to confirm continued
compliance with security requirements.
Check:
Oracle audit events are logged to error logs, trace files, host system logs and may
be stored in database tables. For each Oracle database on the host, determine the
location of the database audit trail.
From SQL*Plus:
select value from v$parameter where name='audit_trail';
If the audit trail is directed to database tables (DB*), ensure the audit table data is
included in the database backups. Backups of host system log files are covered in
host system security reviews and are not covered here.
If evidence of inclusion of all audit log files in regular DBMS or host backups
does not exist, this is a Finding.
Fix:
Document and implement locations of trace, log and alert locations in the System
Security Plan. Include all trace, log and alert files in regular backups.
Check:
For UNIX Systems:
ls $ORACLE_BASE
ls $ORACLE_HOME
NOTE: Oracle DBMS data file storage may be placed on a separate, dedicated
disk partition and linked to ORACLE_BASE. Refer to check DG0112.
For Both:
If ORACLE_HOME is not on a dedicated drive or partition from the OS
software and other applications, this is a Finding.
Fix:
Install DBMS applications on partitions or directories separate from the OS
software and other applications. Recommend DBMS server software be installed
on a dedicated DBMS server host.
Check:
Ask the DBA/SA to demonstrate file ownership of the Oracle DBMS software
and files/directories.
On Windows systems:
The Oracle DBMS software is installed using an account with administrator
privileges. Ownership is assigned to the account used to install the DBMS
software. Change of ownership can be performed, but is not necessary and any
check results are not a Finding.
On UNIX systems:
cd $ORACLE_BASE;ls -lR>orafiles.txt;more orafiles.txt
Review the resulting text file and note the owner/group ownership. Also Review
Oracle DBMS files/directories outside of $ORACLE_BASE (e.g. /etc,
/var/opt/oracle, /usr/local/bin) and ensure file and group ownership is assigned to
the dedicated host OS account. If any files or directories belonging to the DBMS
software are not owned by a designated host OS account, this is a Finding.
The ownership and permissions for the following files (if present) should not be
changed:
extjob
nmb
nmo
oradism
externaljob.ora
Fix:
Assign DBMS file and directory ownership to a dedicated host OS software
installation and maintenance account. Use the software owner account to install
and maintain the DBMS software libraries and configuration files where
applicable. Document locations of Oracle DBMS files and directories in the
System Security Plan.
NOTE: The decision to encrypt data is the responsibility of the Information Owner and
should be based on other access controls employed to protect the data.
Check:
Review the System Security Plan to determine if sensitive or classified data
identified by the Information Owner requires encryption.
Consider which data files store sensitive or classified data. Not all DBMS data
files require encryption.
Fix:
Use native DBMS or native OS encryption to encrypt DBMS data files that store
sensitive or classified data as required by the Information Owner. To reduce the
impact on system performance, separate sensitive data where file encryption is
required into dedicated data files.
Check:
If the DBMS or DBMS host is not shared by production and development
activities, this check is NA.
If any developer accounts as identified in the System Security Plan have been
assigned DBA privileges, this is a Finding.
Fix:
Create separate DBMS host OS groups for developer and production DBAs. Do
not assign or remove production DBA OS group membership from accounts used
for development.
Check:
Review the System Security Plan to discover any external storage of passwords
used by applications, batch jobs or users to connect to the database.
View the sqlnet.ora file to determine if Oracle Wallets are used for authentication.
If the "WALLET_LOCATION" entry exists in the file, then view permissions on
the directory and contents. If access to this directory and these files is not
restricted to the Oracle database and listener services, DBA's, and other
authorized system and administrative accounts this is a Finding.
From SQL*Plus:
select value from v$parameter where name='remote_login_passwordfile';
If the command returns the value NONE, this is not a Finding. If it returns the
value SHARED, this is a Finding. If it returns the value EXCLUSIVE, view
access permissions to the Oracle password file. The default name for Windows is
pwd[SID].ora and is located in the ORACLE_HOME\database directory. On
UNIX hosts, the file is named orapw[SID] and stored in the
$ORACLE_HOME/dbs directory. If access to this file is not restricted to the
Oracle database, DBA's, and other authorized system and administrative accounts,
this is a Finding.
For other password or credential stores, interview the DBA to ask what
restrictions to the storage location of passwords have been assigned. If accounts
other than those that require access to the storage location have been granted
permissions, this is a Finding.
Fix:
Consider alternate methods for database connections to avoid custom storage of
local connection credentials.
Develop and document use of locally stored credentials and their authorized use
and access in the System Security Plan. Restrict access and use of the credentials
to authorized users using host file permissions and any other available method to
restrict access.
Check:
If the Oracle version is 10.1 and later, this check is NA.
Review the System Security Plan for monitoring procedures to detect and delete
the spoolmain.log file. If monitoring procedures are not documented and evidence
of implementation is not present, this is a Finding.
Fix:
Delete the spoolmain.log file after use of the DBCA utility. The DBCA utility
may automatically run during database installation. Develop, document and
implement procedures to monitor the DBMS system to detect and delete any re-
occurrence of the spoolmain.log file.
Check:
Locate the Listener and SQLNet log files. For all Oracle versions/platforms, view
the contents of the sqlnet.ora and listener.ora configuration files located in the
ORACLE_HOME/network/admin directory or the directory specified by the
TNS_ADMIN environment variable (if set) for the listener process/service
account:
Verify the directories and files specified in the following parameters of the
listener.ora exist:
NOTE: If the Oracle version is 11.1 or higher and you are using Automatic
Diagnostic Repository (ADR) logging (DIAG_ADR_ENABLED_[listener name]
= ON in listener.ora), the following parameters are NA for Oracle 11.1. Setting
DIAG_ADR_ENABLED_[listener name] = OFF in Oracle 11.1 reverts to
traditional listener tracing/logging and the following parameters are in effect. For
more information on Automatic Diagnostic Repository (ADR), refer to Oracle
MetaLink Note 454927.1.
The listener log file location may also be determined using the lsnrctl utility,
STATUS command, and viewing the value displayed for listener log file.
- For UNIX, verify that the permissions on the directory and log files are
restricted to the Oracle software owner and OS DBA and/or Listener process
group.
- For Windows, verify that the file permissions on the listener.log and sqlnet.log
files restrict access to the Oracle software owner and OS DBA and/or Listener
process group.
Fix:
Restrict access to the listener and sqlnet log files.
Restrict access to the tnslsnr service account to DBAs, SAs and auditors where
they are required by assigned responsibilities.
Check:
Determine the locations of DBMS audit, configuration, credential and other
security data. Review audit settings for these files or data objects.
If the risk for incomplete auditing of the security files is reasonable and
documented in the System Security Plan, then do not include this as a Finding.
Fix:
Determine all locations for storage of DBMS security and configuration data.
Enable auditing for access to any security data. If auditing results in an
unacceptable adverse impact on application operation, reduce the amount of
auditing to a reasonable and acceptable level. Document any incomplete audit
with acceptance of the risk of incomplete audit in the System Security Plan.
Check:
Review the membership for the Oracle DBA host system OS group.
On UNIX systems:
cat /etc/group | grep -i dba [where dba is the default group name from Oracle]
To display the group name if dba is not the default, use the command:
cat $ORACLE_HOME/rdbms/lib/config.[cs] | grep SS_DBA_GRP
On Windows Systems:
Open Computer Management, expand System Tools, expand Local Users and
Groups, select the Group folder. Double-click on the ORA_DBA group to view
group members.
Compare the list of members with the list of authorized DBA accounts
documented in the System Security Plan. If any users are assigned to the group
that are not authorized by the IAO and documented in the System Security Plan
for the system, this is a Finding.
Fix:
Document user accounts that are authorized by the IAO to be assigned DBA
privileges.
Remove any accounts assigned membership in the operating system DBA group
that has not been authorized.
Check:
For UNIX systems:
$ORACLE_HOME/OPatch/opatch lsinventory –detail | grep “Oracle Advanced
Security”
FIPS 140-2 validated cipher suites for the Oracle SSL Libraries in the order of
strongest to weakest:
SSL_RSA_WITH_AES_256_CBC_SHA
SSL_RSA_WITH_AES_128_CBC_SHA
SSL_RSA_WITH_3DES_EDE_CBC_SHA
SSL_RSA_WITH_RC4_128_SHA
SSL_RSA_WITH_RC4_128_MD5
SSL_RSA_WITH_DES_CBC_SHA
SSL_DH_anon_WITH_3DES_EDE_CBC_SHA
SSL_DH_anon_WITH_RC4_128_MD5
SSL_DH_anon_WITH_DES_CBC_SHA
Fix:
Installation of Oracle Advanced Security product (which may require additional
Oracle licensing consideration) is required to use native Oracle encryption.
Please see the Oracle Advanced Security Administration Guide for configuration
and use of encryption in the database. The OAS Administration Guide provides
references to the encryption features provided by Oracle Advanced Security.
Encryption of data stored within the database is available only in Oracle versions
11.1 and later. View Data Encryption and Integrity in the Oracle Advanced
Security Administration Guide for configuration details. All cipher suites listed
above include FIPS 140-2 validated algorithms available for data encryption.
Check:
Ask the DBA if the DBMS is accessed remotely for administration purposes. If it
is not, this check is NA. If it is, ask the DBA if the remote access to DBA
accounts is made using remote access to the DBMS host or made directly to the
database from a remote database client.
If any listeners on the DBMS host are configured to accept unencrypted traffic,
review documented policy, procedures and evidence of training DBAs not to use
the unencrypted listener for remote access to DBA accounts. If no such policy
exists or the DBAs have not been instructed not to use the unencrypted
connections, this is a Finding.
Fix:
Where remote access to DBA accounts is not allowed, establish and implement
policies and train DBAs that remote access to DBA accounts is prohibited.
Where remote access to DBA accounts is allowed, the remote connection must be
encrypted. If remote access is established via the database listener, then install a
dedicated listener configured to encrypt all traffic for use by DBAs for remote
access. This requires use of Oracle Advanced Security and Oracle Wallet
Manager. See the Oracle Advanced Security Guide, Configuring Network Data
Encryption and Integrity for Oracle Servers and Clients for details.
Configure the listener to require SSL for the DBA connections by specifying the
TCPS as the network protocol. Sample listener.ora entries:
DBALSNR =
(DESCRIPTION =
10-199 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
SSLFIPS_140=TRUE
SQLNET.SSLFIPS_140=TRUE
Monitor the listener log files for evidence of any unencrypted remote access to
DBA accounts.
Check:
If a listener is not running on the local database host server, this check is NA.
IP address restriction may be defined for the database listener, by use of the
Oracle Connection Manager, or by another network device. Identify the method
used to enforce address restriction (interview or System Security Plan review).
If enforced by the database listener, then review the SQLNET.ORA file located in
the ORACLE_HOME/network/admin directory or the directory indicated by the
TNS_ADMIN environment variable or registry setting. If the following entries do
not exist, then restriction by IP address is not configured and is a Finding.
tcp.validnode_checking=YES
tcp.invited_nodes=(IP1, IP2, IP3)
(rule=(src=[IP]/27)(dst=[IP])(srv=*)(act=accept))
NOTE: an IP address with a "/" indicates acceptance by subnet mask where the
number after the "/" is the left most number of bits in the address that must match
for the rule to apply. If this rule is database-specific, then determine if the
SERVICE_NAME parameter is set:
From SQL*PLUS:
show parameter service_name;
If SERVICE_NAME is set in the initialization file for the database instance, use
(srv=[service name]), else, use (srv=*) if not set or rule applies to all databases on
the DBMS server.
Fix:
10-201 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
Configure the database listener to restrict access by IP address. Where the number
of addresses to allow is not feasible to define for the listener, use the Oracle
Connection manager or an external device.
See the Oracle Net Reference and Oracle Net Services Administrators Guides
(release-specific) for information on configuring the listener or Connection
Manager.
Check:
Review the System Security Plan to determine if any requirements to encrypt
sensitive data are listed for network transmission of DBMS data. If no
requirements are listed, this check is NA.
If encryption requirements are listed and specify configuration at the host system
or network device level, then review evidence that the configuration meets the
specification. It may be necessary to review network device configuration
evidence or host communications configuration evidence.
If the evidence review does not meet the requirement or specification as listed in
the System Security Plan, this is a Finding.
Fix:
Configure encryption of sensitive data served by the DBMS in accordance with
the specifications provided in the System Security Plan.
Check:
Ask the DBA if the DBMS is accessed remotely for administration purposes. If it
is not, this check is NA.
If the configuration does not match the specifications in the System Security Plan,
this is a Finding.
Fix:
Disable remote administration where it is not required. Consider restricting
administrative access to local connections only. Where necessary, configure the
DBMS network communications to provide an encrypted, dedicated port for
remote administration access. Develop and provide procedures for remote
administrative access to DBAs that have been authorized for remote
administration. Verify during audit reviews that DBAs do not access the database
remotely except through the dedicated and encrypted port.
Check:
If a listener is not running on the local database host server, this check is NA.
View the "PORT=" parameter for any protocols defined. If any do not match an
entry in the following list, then confirm that it is not a default or registered port
for the service.
Fix:
Specify a default or registered port for TCP/IP protocols in the listener.ora file in
the PORT= parameter of the address specification.
Check:
Review the listener.ora file and the sqlnet.ora file.
NOTE: although the default value may provide adequate protection, assuming the
default could lead to unanticipated changes in future product updates. Specify a
value to manage the setting.
Fix:
Using a text editor or administrative tool, modify the listener.ora file to include a
limit for connection request timeouts for the listener.
Modify the sqlnet.ora file to include a limit for connection request timeouts for
the listener.
Check:
View the SQLNET.ORA file to verify if a SQLNET.EXPIRE_TIME has been set
to the value greater than 0.
Fix:
Using a text editor or administrative tool, modify the SQLNET.ORA file on the
database host server to include a limit for connection request timeouts for the
listener.
NOTE: Use the lowest number possible that does not generate so much network
traffic that performance becomes unacceptable. The lower the number, the less
likely an exhaustion of resources will occur. Set the value to the lowest number
greater than 0 that is supported by the target system environment.
Check:
If a listener is not running on the local database host server, this check is NA.
NOTE: This check needs to be done only once per host system and once per
listener. Multiple listeners may be defined on a single host system. They must all
be reviewed, but need not be reviewed once per database review. For subsequent
database home reviews on the same host system, mark this check as NA.
For Windows hosts, view all Windows services with TNSListener embedded in
the service name
- For 10.1 to 11.1 the service name format is:
Oracle[ORACLE_HOME_NAME]TNSListener
- For 9.2 and earlier the service name format is:
[ORACLE_HOME_NAME]TNSListener
For UNIX hosts, the Oracle Listener process will indicate the TNSLSNR
executable
The alias for the listener follows tnslsnr in the command output.
For Oracle versions 10.1 and later, you must be logged on the host system using
the account that owns the tnslsnr executable (UNIX). If the account is denied
local login, have the system SA assist you in this task by 'su' to the listener
account from the root account. On Windows platforms, log in using an account
with administrator privileges to complete the check.
Listener versions 10.1 and later require the use of the listener control utility to
access and configure the listener be restricted to users authenticated by the
operating system. The listener "Security" setting displayed by the LSNRCTL
STATUS command returns the current administration authentication setting. If
listener administrative access authentication is set to a value other than Local OS
authentication, this is a Finding.
10-209 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
lsnrctl
NOTE: for listeners prior to version 10.1 that are password-protected, you will
need to use the SET CURRENT_LISTENER command to access a listener with a
name other than LISTENER, followed by the SET PASSWORD command and
password entry in order to use the STATUS command. If you receive the error
"TNS-01169: The listener has not recognized the password", then the listener is
password-protected.
If error messages are displayed, then the Listener is not running, is not configured
properly, or the password must be provided. See NOTE below.
Sample output:
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=net)))
STATUS of the LISTENER
------------------------
Alias EXTOLS
Version TNSLSNR for Linux: Version 10.2.0.4.0 - Production
Start Date 10-JUN-2007 11:03:00
Uptime 40 days 3 hr. 35 min. 46 sec
Trace Level user
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/network/admin/listener.ora
Listener Log File /oracle/network/log/listener.log
Listener Trace File /oracle/network/trace/listener.trc
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=net)))
Services Summary...
Service "ORCL" has 1 instance(s).
Instance "ORCL", status UNKNOWN 1 handler(s) for this service...
The command completed successfully
--------------------------------
Repeat for each listener listed in the LISTENER.ORA file and/or each
listener_name.
View the contents of the LISTENER.ORA file. Use the MORE command to view
path/listener.ora where path/listener.ora is the value displayed from LSNRCTL
above.
NOTE: listener passwords must meet all DoD requirements for passwords
including complexity and 60-day renewal. The listener password is not an
application password and must meet interactive user password requirements.
Fix:
Configure the listener to use Local OS Authentication for Oracle versions 10.1
and higher. This setting prevents remote administration of the listener, restricts
management to the Oracle listener owner account (UNIX) and accounts with
administrator privileges (WIN).
Use the lsnrctl utility to set a password for the listener in Oracle versions that do
not support Local OS authentication. See the Oracle Security Guide and Oracle
Net Services Administrators Guides for detailed instruction on configuring a SSL
To set a password on listener versions earlier than 10.1, do the following four
steps from the LSNRCTL prompt:
LSNRCTL> set password
(enter the current password when prompted)
LSNRCTL> change_password
(enter the old and new passwords when prompted)
LSNRCTL> set password
(enter the new password when prompted)
LSNRCTL> save_config
Check:
If a listener is not running on the local database host server, this check is NA.
Use the LSNRCTL utility and issue the STATUS [listener-name] command to
locate the listener.ora file. Open the listener.ora file in a text editor or viewer.
Locate the line with ADMIN_RESTRICTIONS_[listener-name] = ON where
listener-name is the alias of the listener supplied by the DBA.
Fix:
Edit the listener.ora file and add the following line for each listener in use on the
system:
ADMIN_RESTRICTIONS_[listener-name]=ON
Check:
If a listener is not running on the local database host server, this check is NA.
Review all listener.ora files for the HOST =. Verify the HOST = value specifies
an IP address for all occurrences of the HOST = setting.
Sample:
(ADDRESS= (PROTOCOL=TCP) (HOST= [host IP address]) (PORT=1521))
Fix:
Edit the listener.ora file and replace any HOST= [hostname or domain name] to
static IP addresses for the host.
Check:
View the cman.ora file in the ORACLE_HOME/network/admin directory. If the
file does not exist, the database is not accessed via Oracle Connection Manager
and this check is NA.
If the entry and value for REMOTE_ADMIN is not listed or is not set to a value
of NO (REMOTE_ADMIN = NO), this is a Finding.
Fix:
View the cman.ora file in the ORACLE_HOME/network/admin directory of the
Connection Manager. Include the following line in the file:
REMOTE_ADMIN=NO
Check:
If the database version is earlier than 10.1, this check is NA.
SQLNET.ALLOWED_LOGON_VERSION = 10
If the parameter does not exist nor is it set to match the value shown above, this is
a Finding.
NOTE: It has been reported that the there is an Oracle bug (6051243) that
prevents connections to the DBMS using JDBC THIN drivers when this
parameter is set. The fix is available as patch 6779501.
Fix:
For Oracle database versions 10.1 and later, edit the SQLNET.ORA file to add or
edit the entry:
SQLNET.ALLOWED_LOGON_VERSION = 10
Check:
Review host system privileges assigned to the Oracle DBA group and all
individual Oracle DBA accounts.
NOTE: do not include the Oracle software installation account in any results for
this check.
If any accounts listed in the first list are also listed in the second list, this is a
Finding.
Investigate any user account group memberships other than DBA or root groups
that are returned by the following command (also as root):
Replace [dba user account] with the user account name of each DBA account.
If individual DBA accounts are assigned to groups that grant access or privileges
for purposes other than DBA responsibilities, this is a Finding.
Make a note of each user listed. For each user (click or select):
Start / Settings / Control Panel / Administrative Tools / Computer Management /
Local Users and Groups / Users / [DBA user name] / Member of
10-217 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
If DBA users belong to any groups other than DBA groups and the Windows
Users group, this is a Finding.
If any User Rights are assigned directly to the DBA group(s) or DBA user
accounts, this is a Finding.
Fix:
Revoke all host system privileges from the DBA group accounts and DBA user
accounts not required for DBMS administration.
Revoke all OS group memberships that assign excessive privileges to the DBA
group accounts and DBA user accounts.
Remove any directly applied permissions or user rights from the DBA group
accounts and DBA user accounts.
Document all DBA group accounts and individual DBA account assigned
privileges in the System Security Plan.
Check:
Review the Oracle process/owner account.
groups
If the account is assigned group membership to other than the local administrator
account and Oracle DBA groups, this is a Finding.
View user rights assigned to the service accounts. If Deny Logon Locally is not
assigned to all of the Oracle service accounts, this is a Finding.
If the service account is a domain rather than local user account, confirm with
the DBA that domain resources are required and that the account is not assigned
to any domain groups not required for Oracle operation (e.g. the domain users or
domain administrators groups). If the service account is a domain account and
the account is assigned to domain groups not required for Oracle operations, this
is a Finding.
Fix:
Remove root privileges from the Oracle software owner account on UNIX
systems.
Check:
For UNIX Systems (enter at command prompt):
ps ef | grep -i pmon | grep –v grep (all database processes)
ps ef | grep -i tns | grep –v grep (all listener processes)
ps ef | grep -i dbsnmp | grep –v grep (Oracle Intelligent Agents)
In the above samples, the occurrence of “oracle” and "oratns” indicate the user
account that owns the process
If a listener is running on the local database host and the Oracle Listener account
uses the same account as the Oracle Processes, this is a Finding. If a listener is
not running on the local database host server, this check is NA.
Fix:
Create and assign a custom account for the Oracle Listener. Create and assign a
custom account for other Oracle services (Windows) or ensure Oracle Process
Owner account is used (UNIX).
10-221 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
Check:
If the DBMS host system is not a UNIX system, this check is NA.
Log in using the Oracle software owner account and enter the command:
umask
The first number sets the mask for user/owner file permissions. The second
number sets the mask for group file permissions. The third number sets file
permission mask for other users. The list below shows the available settings:
0 = read/write/execute
1 = read/write
2 = read/execute
3 = read
4 = write/execute
5 = write
6 = execute
7 = no permissions
Setting the umask to 022 effectively sets files for user/owner to read/write, group
to read and other to read. Directories are set for user/owner to read/write/execute,
group to read/execute and other to read/execute.
Fix:
Set the umask of the Oracle software owner account to 022. Determine the shell
being used for the Oracle software owner account:
Startup files for each shell are as follows (located in users $HOME directory):
Edit the shell startup file for the account and add or modify the line:
umask 022
Log off and login, then enter the umask command to confirm the setting.
NOTE: To effect this change for all Oracle processes, a reboot of the DBMS
server may be required.
Check:
Use the Oracle Universal Installer or OPATCH utility to display the list of
installed products. Review the list of installed products with the DBA and verify
any installed products listed below are required and licensed. If any are installed
and are not required or not licensed, this is a Finding.
Data Mining
Database Workspace Manager
[Enterprise] Manager, Agent OR Intelligent Agent
iSQL*Plus
Configuration Manager
Connection Manager
interMedia
Internet Directory
LDAP
Spatial
Text
Wallet Manager
XML Development
Sample SCHEMA
HTTP Server
NOTE: This list does not take into account product dependencies that when
selected for de-install, remove required database software. A custom installation
without selection of unnecessary components is required to ensure a clean install
of only required and licensed products. The list of product dependencies may be
subject to change by Oracle and is not addressed here.
Fix:
Review the list of installed products available for the DBMS install. If any are
required and licensed for operation of applications that will be accessing the
DBMS, then include them in the application design specification and list them in
the System Security Plan. If any are not, but have been installed, then uninstall
them and remove any database SCHEMA, objects and applications that
exclusively support them.
10-225 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
Check:
NOTE: The collection does not include application or custom data within the
database. If released to unauthorized persons, system configuration data may be
used by malicious persons to gain additional unauthorized access to the database
or other systems.
On UNIX Systems:
ls $ORACLE_HOME/ccr
If the ccr directory exists, confirm if any of the Oracle databases have been
configured for OCM:
From SQL*Plus:
select username from dba_users where username='ORACLE_OCM';
If the account exists, OCM has been installed (on this database) and is a Finding.
Fix:
Remove Oracle Configuration Manager. Details for removal are provided in
Oracle MetaLink Note 369111.1 or in MetaLink Note 728989.1 for a link to the
OCM Installation and Administration Guide.
Check:
Review the Oracle instance names on the DBMS host:
On UNIX platforms:
Solaris: cat /var/opt/oracle/oratab
Other UNIX: cat /etc/oratab
On Windows platforms:
Go to Start / Administrative Tools / Services
If instance names are listed and do not clearly identify the use of the instance or
clearly differentiate individual instances, this is a Finding.
Fix:
Follow the instructions in Oracle Doc ID: 15390.1 to change the SID without re-
creating the database. Set the value so that it does not identify the Oracle version
and clearly identifies its purpose.
Check:
Review the System Security Plan and note sensitive data identified by the
Information Owner as requiring encryption using DBMS features administered by
the DBA. If no sensitive data is present or encryption of sensitive data is not
required by the Information Owner, this check is NA.
Fix:
Configure DBMS encryption features and functions as required by the System
Security Plan. Discrepancies between what features are and are not available
should be resolved with the Information Owner, Application Developer and DBA
as overseen by the IAO.
Check:
Review the System Security Plan to determine if the use of the external procedure
agent is authorized. Review the ORACLE_HOME/bin directory or search the
ORACLE_BASE path for the executable extproc (UNIX) or extproc.exe
(Windows). If external procedure agent is not authorized for use in the System
Security Plan and the executable file exists, this is a Finding.
[dll full file name] represents a full path and file name. This list of file names is
separated by ":".
Ensure that EXTPROC is not accessible from the listener. Review the
listener.ora file. If any entries reference "extproc", this is a Finding.
NOTE: Bug 7560049 may cause external procedures in 11g not to work on
certain platforms. Fix will be in Oracle 11g Release 2. If external procedures are
required and you are experiencing this bug, then follow instructions for
configuring external procedures for versions earlier than 11.1 and document as
authorized in the System Security Plan.
Review the listener.ora file. If any entries reference "extproc", then the agent is
in use. If external procedure agent is not authorized for use in the System
Security Plan and references to "extproc" exist, this is a Finding.
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
EXTLSNR =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /home/oracle/app/oracle/product/10.2.0/db_1)
(SID_NAME = ORCL)
)
)
SID_LIST_EXTLSNR =
(SID_LIST =
(SID_DESC =
(PROGRAM = extproc)
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/oracle/app/oracle/product/10.2.0/db_1)
(ENVS="EXTPROC_DLLS=ONLY:/home/app1/app1lib.so:/home/app2/app2lib.so,
LD_LIBRARY_PATH=/private/app2/lib:/private/app1,
MYPATH=/usr/fso:/usr/local/packages")
)
)
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = extproc))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PLSExtProc)
)
)
If there is not a dedicated listener in use for the external procedure agent, this is
a Finding.
Write access may be granted to a log file directory dedicated to use by this
listener (no other listener logs or other files not used by the dedicated listener).
The account requires only the user right to log in as a batch job on Windows.
NOTE: [dll full file name] represents a full path and file name. This list of file
names is separated by ":".
Fix:
If the use of external processes is required, then authorize and document the
requirement in the System Security Plan. For versions 11.1 and later, if the
external procedure agent must be accessible to the Oracle listener, then specify
this and authorize it in the System Security Plan.
If use of the Oracle External Procedure agent is not required, delete the Oracle
extproc or extproc.exe executable.
- Stop the Oracle Listener process
- Remove all references to extproc in the listener.ora and tnsnames.ora files
- Delete the extproc executable from the ORACLE_HOME/bin directory
If required:
- Restrict extproc execution to only authorized applications. Specify
EXTPROC_DLLS=ONLY:[list of authorized DLLS] in the extproc.ora (11.1
only) and the listener.ora files
- Create a separate, dedicated listener and process account for use by the
external procedure agent
- Use a minimally privileged account for extproc execution. Assign minimal
privileges and permissions to the dedicated listener Windows service account or
UNIX file owner account. The account requires:
-- Read-only access to the listener.ora file (do not grant write privileges to this
account)
-- Execute access to the ORACLE_HOME/bin directory, and any directories
that contain executables authorized for the agent to use
-- Write access may be granted to a log file directory dedicated to use by this
listener (no other listener logs or other files not used by the dedicated listener)
10-234 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
Please see the Oracle Net Services Administrators Guides, External Procedures
section for detailed configuration information.
Check:
Review the listener.ora file. If the following line is not listed in the file nor is it set
to one of the allowed values listed below, this is a Finding.
TRACE_LEVEL_[listener-name] =
Allowed Values:
user OR 4
admin OR 6
support OR 16
NOTE: The lines below are optional and may add value to auditing and
connection troubleshooting, but will generate a very large number of files. Set the
following parameters to support troubleshooting or provide enhanced auditing
provided there is a documented requirement to do so.
Review the sqlnet.ora file. Add the following lines and restart the listener:
TRACE_LEVEL_SERVER = server
TRACE_FILE_SERVER = sqlnet
TRACE_DIRECTORY_SERVER = [directory on a volume with enough free space]
LOG_FILE_SERVER = sqlnet
LOG_DIRECTORY_SERVER = [directory on a volume with enough free space]
Fix:
Enable trace file logging for the Oracle Net listener and client. Add the following
line to the listener.ora file and specify one of the allowed values listed, and then
restart the listener service/process:
TRACE_LEVEL_[listener-name] =
Allowed Values:
user OR 4 (provides minimal tracing information)
admin OR 6 (provides medial tracing information)
support OR 16 (provides maximum tracing information)
Check:
The DBMS_JOB PL/SQL package has been replaced by DBMS_SCHEDULER
in Oracle versions 10.1 and higher, though it continues to be supported for
backward compatibility.
From SQL*Plus:
select value from v$parameter where name='job_queue_processes';
select value from all_scheduler_global_attribute
where ATTRIBUTE_NAME='MAX_JOB_SLAVE_PROCESSES';
Job queue information is available from the DBA_JOBS view. The following
command lists jobs submitted to the queue. DBMS_JOB does not generate a
'history' of previous job executions.
From SQL*Plus:
select job, next_date, next_sec, failures, broken from dba_jobs;
From SQL*Plus:
select owner, job_name, state, job_class, job_type, job_action
from dba_scheduler_jobs;
From SQL*Plus:
select log_id, log_date, owner, job_name, status from dba_scheduler_job_log;
Fix:
Develop, document and implement procedures to monitor the database job queues
for unauthorized job submissions. Develop, document and implement a formal
migration plan to convert jobs using DBMS_JOB to use DBMS_SCHEDULER
instead. Set the value of the job_queue_processes parameter to a low value to
restrict concurrent DBMS_JOB executions.
For Oracle versions earlier than 10.1, use auditing to capture use of the
DBMS_JOB package in the audit trail. Review the audit trail for unauthorized use
of the DBMS_JOB package.
Check:
If no data is identified as being sensitive or classified in the System Security Plan
or if no sensitive or classified data is identified as requiring encryption by the
Information Owner in the System Security Plan, this check is NA.
Review sensitive data stored in the database as identified in the System Security
Plan using select statements. Note in the System Security Plan if the data is
encrypted by column or by transparent encryption. Transparent data encryption is
available only in Oracle versions 10.2 and later using Oracle Advanced Security.
By data columns:
By tablespace:
If columns within tables, tables and/or tablespaces listed in the System Security
Plan are required to be encrypted transparently are not listed above, this is a
Finding.
If the DBMS products are used to encrypt data, view the sensitive data fields
required to be encrypted using select statements. If any data is displayed in
human-readable format, this is a Finding.
NOTE: This check result may be marked not a Finding and the requirement of
encryption in the database waived where the database has only database
administrative accounts and application accounts that have a need-to-know to the
data. This waiver does not preclude any requirement for encryption of the
associated database data file (see DG0092).
Fix:
Identify all sensitive data and the method to be used to encrypt specified sensitive
data in the System Security Plan.
Check:
Review the System Security Plan for remote applications that access and use the
database. If none of the applications accessing the database uses a single account
for access by multiple persons or processes, this check is NA.
From SQL*Plus:
select external_name from dba_users where username='[application user
name]';
If the external_name indicates a directory name, then verify that the directory
name is authenticated using PKI. You may require the DBA or directory server
administrator to display the username definition in the directory service to you. If
the external_name does not specify a certificate or PKI-authenticated user
account, this is a Finding.
Fix:
Configure PKI authentication to help protect access to the shared account.
Please see the Oracle Security Guides and the Oracle Advanced Security Guides
for instructions on configuring PKI authentication.
Check:
From SQL*Plus:
select substr(version,1,4) from v$instance;
If the Oracle version is less than 10.2, review evidence that Oracle Extended
Support has been purchased for continued support. If Extended Support has not
been purchased or proof of Oracle Extended Support is not documented, this is a
Finding. If Extended Support will expire within 6 months, review evidence that an
upgrade to a supported version or an extension for Oracle Extended Support is in
progress. If it is not, this is a Finding.
For any version where Extended Support ends within 6 months, review evidence
than an upgrade to a supported version is in progress. If it is not, this is a Finding.
(See Oracle MetaLink Note 161818.1 for Oracle RDBMS Release support status)
Fix:
Create and implement an upgrade/migration plan for obsolete or expiring Oracle
versions. Use the table above as a guideline for Oracle version support. The cost
of the version upgrade should be budgeted including any additional testing and
development required supporting the version upgrade. A plan for testing the
version upgrade should also be scheduled. Any other steps for the version upgrade
should be included in the plan and the plan for the version upgrade should be
scheduled for completion prior to expiration of the current Oracle database server
product.
Check:
If the database is a shared development/production system, then confirm that
Oracle Application Express is authorized for development use. If it is, this check
is NA.
From SQL*Plus:
select count(*) from dba_users where username like 'FLOWS_%';
Fix:
If this is a production system, remove Application Express using the instruction
found in Oracle MetaLink Note 558340.1.
For new installations, select custom installation and de-select Application Express
from the selectable options if available.
Check:
A warning banner displayed as a function of an Operating System or application
login for applications that use the database makes this check NA for all supported
versions of Oracle.
For Oracle 11.1, view the sqlnet.ora file. If the following lines do not exist, this is
a Finding (requires application code to display the warning banner, which is not
covered in this check):
For Oracle 11.1, view the files specified. If they do not contain the following text
as written below, this is a Finding:
[A. Use this banner for desktops, laptops, and other devices accommodating
banners of 1300 characters. The banner shall be implemented as a click-through
banner at logon (to the extent permitted by the operating system), meaning it
prevents further activity on the information system unless and until the user
executes a positive action to manifest agreement by clicking on a box indicating
"OK."]
You are accessing a U.S. Government (USG) Information System (IS) that is
provided for USG-authorized use only. By using this IS (which includes any
device attached to this IS), you consent to the following conditions:
-At any time, the USG may inspect and seize data stored on this IS.
11-247 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
-Communications using, or data stored on, this IS are not private, are subject to
routine monitoring, interception, and search, and may be disclosed or used for any
USG authorized purpose.
-Notwithstanding the above, using this IS does not constitute consent to PM, LE
or CI investigative searching or monitoring of the content of privileged
communications, or work product, related to personal representation or services
by attorneys, psychotherapists, or clergy, and their assistants. Such
communications and work product are private and confidential. See User
Agreement for details.
OK
[B. For Blackberries and other PDAs/PEDs with severe character limitations:]
Fix:
For Oracle database versions 11.1 and later, add the following lines to the
sqlnet.ora file:
Replace [banner file] with the path and file name to a TEXT file containing the
banner text as shown above.
NOTE: Defining these parameters and this text makes the banner available to
applications. It is not displayed unless the application is designed to display the
text using OCI calls.
For all versions of Oracle, this requirement can be fulfilled where the database
user receives the warning message when authenticating or connecting to a front-
end system that includes or covers the Oracle DBMS. Mark this check as a
Finding if the display of a warning banner (not necessarily this specific warning
banner) cannot be confirmed.
The banner text listed in the Check section above supersedes that referenced in
the STIG requirement below.
11-248 V8R1.3 Mar 2009
UNCLASSIFIED
Oracle Database Security Checklist V8R1.3 Mar 2009 Field Security Operations
Defense Information Systems Agency
Check:
Determine if the Oracle Management Agent is enabled:
From SQL*Plus:
select username, account_status from dba_users
where lower(username)='dbsnmp';
If the DBSNMP account exists and the account_status is OPEN, then verify in the
System Security Plan that operation and use of the Oracle Enterprise Manager
Management Agent or another SNMP management program is documented and
authorized.
Fix:
Use the ORACLE_HOME/rdbms/admin/catnsnmp.sql script to remove all Oracle
SNMP management agent objects in the database. Delete the executable file
ORACLE_HOME/bin/dbsnmp or dbsnmp.exe if it exists from any Oracle Home
not authorized for SNMP management.
Uninstall any SNMP management agents that have not been authorized and
documented in the System Security Plan.
This is a new checklist based on the Database STIG V8R1. Changes to previous
STIG IDs and additions are listed below:
Added: Removed:
DG0003 DG0096 DG0166 DG0018
DG0005 DG0097 DG0167 DG0065
DG0012 DG0100 DG0172 DG0073
DG0013 DG0103 DG0175 DG0094
DG0020 DG0104 DG0176 DO0276
DG0025 DG0106 DG0179 DO0291
DG0031 DG0107 DG0186 DO0370
DG0041 DG0108 DG0187 DO0410
DG0042 DG0109 DG0194 DO3621
DG0054 DG0110 DG0195 DO3673
DG0064 DG0112 DG0198
DG0069 DG0117 DO0233
DG0071 DG0118 DO5036
DG0072 DG0127 DO6746
DG0074 DG0133 DO6747
DG0076 DG0135 DO6748
DG0083 DG0138 DO6749
DG0086 DG0140 DO6750
DG0087 DG0154 DO6751
DG0088 DG0159 DO6752
DG0089 DG0161 DO6753
DG0090 DG0165 DO6754
DG0092
Many checks that were removed were consolidated under other checks.
Asset – This is the host system for the DBMS being reviewed. It is typically defined
using the domain\computer name, the IP address and/or the MAC address.
Installation Posture – This is the DBMS instance or installation as defined in VMS for
the DBMS under review. It is defined as a VMS posture on the host asset. For Oracle
database Servers, the installation posture is referred to as an Oracle Home and the name
assigned to the Oracle Home at installation time is referred to as the Oracle Home Name.
It is recommended that the Oracle Home Name as identified on the host be used also to
identify the Oracle Home within VMS.
Database Posture – This database as defined in VMS exists within the DBMS under
review. It is defined as a VMS posture on the host asset. An Oracle database posture is a
single occurrence of an Oracle database instance associated with the Oracle Home (there
could be more than one Oracle instance per Oracle Home). VMS requires that each
database posture include a reference to a DBMS instance or installation. The Oracle
Home posture must be defined prior to the creation of the database posture.
Target – The word “target” is used within an SRR script XML import file to designate a
specific installation or database posture assigned to an asset defined in VMS. (XML
import files are not available for generic DBMS reviews.) Compliance or “Finding”
results included in the XML import file update the status of the security item within VMS
for the “target” database/installation posture. Typically, installation “targets” must
include the DBMS installation name to update the vulnerability statuses of the installation
under review. Database “targets” must include the both the installation posture identifier
as well as the database name to correctly update the vulnerability status for the database
under review.
Element - The word “element” is used within a VMS XML import file to create an
installation or database posture for the asset specified in the same import file. The DBMS
installation element must include the DBMS installation identifier. The DBMS database
element must include the database identifier and reference the DBMS installation
identifier.
Parent Identifier – In the case of DBMS postures/targets, a parent identifier exists only
for databases. The parent identifier is the DBMS installation identifier that supports the
database being identified. This indicates a “dependent relationship” of the database to the
instance.
Each DBMS to be tracked within VMS requires assignment to a host asset. The host asset
is identified by name, IP address and MAC address.
The host asset, operating system and database postures must be created before entering
SRR results into VMS.
As mentioned above under VMS terminology, each DBMS defined within VMS requires
a minimum of two posture definitions. These postures are the DBMS installation and
DBMS database postures. Two postures are necessary to provide the level of granularity
required for tracking vulnerabilities. For example, vulnerabilities defined at the
installation level (e.g., file permissions) occur only once per installation. Vulnerabilities
defined at the database level (e.g., database role membership) occur once per defined
database.
VMS requires that an identifier be defined for each of the DBMS postures. When you
create generic database postures, make sure that you assign the correct installation
identifier.
NOTE: For the import to work correctly, the Oracle Home ([SID]-dbsrr-itf-I.xml)
file must be imported before the Oracle Database file. This is required to assign the
Oracle Database to Oracle Home database postures correctly. If the Oracle Home
database posture is not created first, the database XML import file will fail.
When you are creating DBMS database postures, specify the same database identifier as
defined within the DBMS. Database postures must also include the DBMS installation
name as the “parent identifier” to identify the database as belonging to a specific
installation.
− For Reviewers:
o From the left navigation frame on VMS 6, expand Asset Finding
Maint[enance]
o From the expanded list, select Assets / Findings
o Under Navigation on the Asset and Finding Maintenance screen,
expand Visit, expand the location where the asset resides, expand
Computing, and select the asset where the DBMS is installed
3. Verify the host name (under the General tab) matches the data collected
4. Verify the IP Address (under the Asset Identification tab) matches the data collected
5. Verify the MAC Address (under the Asset Identification tab) matches the data
collected
6. Select the Asset Posture tab
7. Verify that the appropriate Operating System has been selected
8. Under Selected, expand the asset name, expand Application, expand Database,
expand Oracle, expand or select Oracle Home or Oracle Database
9. View/note any product version and identifiers (in parentheses to the right of the
version)
10. To add an Oracle Home posture to the Asset posture:
− Follow steps 6 and 7 under Available
− Expand Oracle Home Installation, select the Oracle Home version number and
click the >> button to move the selections under Selected
− When prompted for an identifier, enter the Oracle Home name
− Save the posture (until the Oracle Home postures is saved, database posture
creations assigned to this Oracle Home will fail)
11. To add an Oracle Database posture to the Asset posture:
− Follow steps 6 and 8 under Available
− Expand Oracle Database, select the Oracle Database version and click the >>
button to move the selections under Selected
− When prompted for a parent identifier, enter the Oracle Home name
− When prompted for an identifier, enter the Oracle database name; or click on
the add hyperlink icon to add the identifier, and enter the Oracle database
name
− Repeat for each database defined for the Oracle Home
− Save the posture (Click on the Save icon in the middle of the bottom of the
screen)
The SRR script for Oracle produces two XML files: one contains the security review
results for the Oracle Home ([SID]-dbsrr-itf-I.xml) and the Oracle Database ([SID]-dbsrr-
itf-D.xml). The files include data that identifies the Oracle asset and the Oracle VMS
postures if postures for the specified database or home already exist. To import an XML
file, complete the following:
NOTE: VMS 6 imports finding data for all check results. The reviewer may want to
consider completing a manual review of checks with a status of NR prior to import to
determine if some findings are Open and the finding status in the XML file marked
accordingly, i.e. <FINDING_STATUS>NR</FINDING_STATUS>, in order to preserve
the additional data provided by the script. The XML file may be edited with any text
editor. Special care should be taken when editing the XML file to prevent the
introduction of XML format errors that would prevent the script from importing
successfully.
15. Appendix D – VMS KEY and STIGID Cross Reference and Index
Below is a list of general requirements listed in the Database STIG that are not
directly addressed in this checklist. The Database STIG provides general guidance for
all database management systems and may not relate well to a single configuration or
documentation requirement for a specific product.