Skip to content

Oracle 安全相关参数

认证与授权参数

用户认证参数

参数名称默认值说明建议值
remote_login_passwordfileEXCLUSIVE远程登录密码文件EXCLUSIVE:专用,SHARED:共享,NONE:禁用,建议 EXCLUSIVE
sec_case_sensitive_logonTRUE密码大小写敏感TRUE:启用,FALSE:禁用,建议启用以提高安全性
password_reuse_timeUNLIMITED密码重用时间UNLIMITED:无限制,或指定天数,建议 30-90 天
password_reuse_maxUNLIMITED密码重用次数UNLIMITED:无限制,或指定次数,建议 5-10 次
password_life_time180密码有效期180 天,建议 90-180 天
password_grace_time7密码宽限期7 天,建议 3-7 天
password_lock_time1密码锁定时间1 天,建议 1-7 天
failed_login_attempts10登录失败尝试次数10 次,建议 3-5 次
sec_max_failed_login_attempts0最大登录失败尝试次数0:与 failed_login_attempts 相同,或指定次数

权限管理参数

参数名称默认值说明建议值
os_authent_prefixOPS$OS 认证前缀用于 OS 认证的用户名前缀,建议保留默认值
os_rolesFALSEOS 角色TRUE:允许,FALSE:禁止,建议 FALSE
remote_os_authentFALSE远程 OS 认证TRUE:允许,FALSE:禁止,建议 FALSE
remote_os_rolesFALSE远程 OS 角色TRUE:允许,FALSE:禁止,建议 FALSE
global_namesFALSE全局名称TRUE:启用,FALSE:禁用,建议 FALSE
resource_limitTRUE资源限制TRUE:启用,FALSE:禁用,建议 TRUE
audit_sys_operationsFALSE审计系统操作TRUE:启用,FALSE:禁用,建议启用以审计 SYS 用户操作
audit_trailDB审计跟踪DB:数据库,OS:操作系统,NONE:禁用,建议 DB
audit_file_dest自动审计文件目标位置根据实际路径设置,如 /audit

数据加密参数

透明数据加密 (TDE) 参数

参数名称默认值说明建议值
encryption_wallet_location加密钱包位置根据实际路径设置,如 (SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/wallet)))
encryption_master_key加密主密钥通过 ALTER SYSTEM SET ENCRYPTION KEY 命令设置
tde_configurationTDE 配置KEYSTORE_CONFIGURATION=FILE,指定密钥库类型
wallet_root钱包根目录Oracle 18c+ 建议设置,如 /wallet
tde_keystore_typeFILETDE 密钥库类型FILE:文件系统,HSM:硬件安全模块,建议 FILE
tde_keystore_credentialTDE 密钥库凭证用于自动打开密钥库

网络加密参数

参数名称默认值说明建议值
sqlnet.ora 中的 SQLNET.ENCRYPTION_SERVERACCEPTED服务器端加密设置REQUIRED:要求加密,建议启用加密
sqlnet.ora 中的 SQLNET.ENCRYPTION_TYPES_SERVER()服务器端加密算法建议设置为 (AES256, AES192, AES128)
sqlnet.ora 中的 SQLNET.CRYPTO_CHECKSUM_SERVERACCEPTED服务器端校验和设置REQUIRED:要求校验和,建议启用
sqlnet.ora 中的 SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER()服务器端校验和算法建议设置为 (SHA512, SHA384, SHA256)
sqlnet.ora 中的 SQLNET.ENCRYPTION_CLIENTACCEPTED客户端加密设置REQUIRED:要求加密,建议与服务器端一致
sqlnet.ora 中的 SQLNET.CRYPTO_CHECKSUM_CLIENTACCEPTED客户端校验和设置REQUIRED:要求校验和,建议与服务器端一致

审计参数

审计配置参数

参数名称默认值说明建议值
audit_trailDB审计跟踪DB:数据库,OS:操作系统,XML:XML 格式,DB_EXTENDED:扩展数据库,NONE:禁用,建议 DB
audit_file_dest自动审计文件目标位置根据实际路径设置,如 /audit
audit_sys_operationsFALSE审计系统操作TRUE:启用,FALSE:禁用,建议启用以审计 SYS 用户操作
audit_syslog_level审计系统日志级别local0.info,将审计记录发送到系统日志
audit_trail_dest审计跟踪目标DB,OS,同时发送到数据库和操作系统
unified_audit_sga_queue_size1048576统一审计 SGA 队列大小建议根据审计量调整
unified_audit_systemlogFALSE统一审计系统日志TRUE:启用,FALSE:禁用,将审计记录发送到系统日志

细粒度审计参数

参数名称默认值说明建议值
audit_sys_privilegeFALSE审计系统权限TRUE:启用,FALSE:禁用,建议 FALSE
audit_trail_typeDB审计跟踪类型DB:数据库,OS:操作系统,建议 DB
audit_file_mode0640审计文件模式文件权限,建议 0640
audit_file_rotate_on_size0审计文件按大小轮换0:禁用,或指定大小(字节),建议 104857600(100MB)
audit_file_rotate_age0审计文件按时间轮换0:禁用,或指定天数,建议 7

网络安全参数

监听器安全参数

参数名称默认值说明建议值
listener.ora 中的 INBOUND_CONNECT_TIMEOUT_LISTENER60监听器入站连接超时建议 30-60 秒
listener.ora 中的 VALID_NODE_CHECKING_REGISTRATION_LISTENEROFF节点验证ON:启用节点验证,建议启用以增强安全性
listener.ora 中的 SECURE_REGISTER_LISTENEROFF安全注册ON:启用,OFF:禁用,建议 ON
listener.ora 中的 PASSWORD_LISTENER监听器密码设置监听器密码以防止未授权访问
listener.ora 中的 ADMIN_RESTRICTIONS_LISTENEROFF管理员限制ON:启用,OFF:禁用,建议 ON 以限制远程管理
sqlnet.ora 中的 TCP.VALIDNODE_CHECKINGNONETCP 有效节点检查YES:启用,NO:禁用,建议 YES
sqlnet.ora 中的 TCP.INVITED_NODESTCP 允许节点(192.168.1.0/24, 10.0.0.0/8),指定允许连接的节点
sqlnet.ora 中的 TCP.EXCLUDED_NODESTCP 排除节点(192.168.1.100),指定禁止连接的节点

连接安全参数

参数名称默认值说明建议值
sqlnet.ora 中的 SQLNET.AUTHENTICATION_SERVICES(ALL)认证服务建议设置为 (BEQ, TCPS) 以启用安全认证
sqlnet.ora 中的 SQLNET.EXPIRE_TIME0连接超时时间0:禁用,或指定分钟数,建议 10-30 分钟
sqlnet.ora 中的 SQLNET.INBOUND_CONNECT_TIMEOUT60入站连接超时建议 30-60 秒
sqlnet.ora 中的 SQLNET.OUTBOUND_CONNECT_TIMEOUT60出站连接超时建议 30-60 秒
sqlnet.ora 中的 SSL_VERSION1.2SSL 版本建议 1.2 或 1.3,禁用旧版本
sqlnet.ora 中的 SSL_CIPHER_SUITESSSL 加密套件建议设置为强加密套件,如 (TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256)

安全加固参数

权限最小化参数

参数名称默认值说明建议值
remote_dependencies_modeTIMESTAMP远程依赖模式TIMESTAMP:时间戳验证,SIGNATURE:签名验证,建议 SIGNATURE
plsql_warningsDISABLE:ALLPL/SQL 警告建议设置为 ENABLE:ALL 以捕获潜在安全问题
utl_file_dirUTL_FILE 目录空:禁用,或指定目录,建议设置为具体目录而非 *
utl_http.proxy_overrideUTL_HTTP 代理覆盖根据网络环境设置
java_jit_enabledTRUEJava JIT 启用TRUE:启用,FALSE:禁用,建议 TRUE
oracle_home自动Oracle 主目录确保权限正确,建议 755
oracle_base自动Oracle 基目录确保权限正确,建议 755

安全补丁参数

参数名称默认值说明建议值
patch_ui_port8898补丁 UI 端口建议修改为非默认端口
opatch_lsinventoryOPatch 清单使用 opatch lsinventory 命令查看
opatch_auto自动补丁使用 opatch auto 命令应用补丁

常见问题(FAQ)

Q1: 如何启用密码大小写敏感?

A: 可以使用以下命令启用密码大小写敏感:

sql
ALTER SYSTEM SET sec_case_sensitive_logon = TRUE SCOPE=BOTH;

Q2: 如何配置透明数据加密 (TDE)?

A: 配置 TDE 的步骤如下:

  1. 设置钱包位置:

    sql
    ALTER SYSTEM SET wallet_root = '/wallet' SCOPE=SPFILE;
    ALTER SYSTEM SET tde_configuration = 'KEYSTORE_CONFIGURATION=FILE' SCOPE=SPFILE;
  2. 重启数据库后创建钱包:

    sql
    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/wallet/tde' IDENTIFIED BY "wallet_password";
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "wallet_password" CONTAINER=ALL;
    ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY "wallet_password" CONTAINER=ALL;
    ADMINISTER KEY MANAGEMENT ALTER KEYSTORE CLOSE IDENTIFIED BY "wallet_password" CONTAINER=ALL;
  3. 启用自动打开钱包:

    sql
    ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE '/wallet/tde' IDENTIFIED BY "wallet_password";

Q3: 如何配置网络加密?

A: 可以在 sqlnet.ora 文件中配置网络加密:

SQLNET.ENCRYPTION_SERVER = REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER = (AES256, AES192, AES128)
SQLNET.CRYPTO_CHECKSUM_SERVER = REQUIRED
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (SHA512, SHA384, SHA256)
SQLNET.ENCRYPTION_CLIENT = REQUIRED
SQLNET.CRYPTO_CHECKSUM_CLIENT = REQUIRED

Q4: 如何启用审计?

A: 可以使用以下命令启用审计:

sql
-- 启用数据库审计
ALTER SYSTEM SET audit_trail = DB SCOPE=SPFILE;

-- 审计系统操作
ALTER SYSTEM SET audit_sys_operations = TRUE SCOPE=SPFILE;

-- 重启数据库使配置生效
SHUTDOWN IMMEDIATE;
STARTUP;

Q5: 如何增强监听器安全?

A: 可以在 listener.ora 文件中增强监听器安全:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))
    )
  )

-- 启用入站连接超时
INBOUND_CONNECT_TIMEOUT_LISTENER = 30

-- 启用节点验证
VALID_NODE_CHECKING_REGISTRATION_LISTENER = ON

-- 启用安全注册
SECURE_REGISTER_LISTENER = ON

-- 设置监听器密码
PASSWORD_LISTENER = "listener_password"

-- 启用管理员限制
ADMIN_RESTRICTIONS_LISTENER = ON

最佳实践

  1. 启用密码策略:配置强密码策略,包括密码复杂度、有效期和登录失败限制。
  2. 启用审计:至少审计系统级操作和敏感对象访问,便于安全审计和故障排查。
  3. 启用网络加密:配置 SSL/TLS 加密数据库连接,防止数据在传输过程中被窃取。
  4. 使用最小权限原则:为用户和应用程序授予最小必要权限,避免过度授权。
  5. 定期更新补丁:及时应用 Oracle 安全补丁,修复已知漏洞。
  6. 保护密钥库:妥善保管 TDE 密钥库和密码,定期备份密钥库。
  7. 加固监听器:配置监听器安全参数,限制访问和防止未授权管理。
  8. 启用防火墙:配置数据库服务器防火墙,限制只允许必要的 IP 地址访问数据库端口。
  9. 定期安全检查:使用 Oracle 安全评估工具定期进行安全检查,发现并修复安全漏洞。
  10. 培训和文档:对 DBA 和开发人员进行安全培训,制定并遵循安全最佳实践文档。