外观
Oracle 安全相关参数
认证与授权参数
用户认证参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
remote_login_passwordfile | EXCLUSIVE | 远程登录密码文件 | EXCLUSIVE:专用,SHARED:共享,NONE:禁用,建议 EXCLUSIVE |
sec_case_sensitive_logon | TRUE | 密码大小写敏感 | TRUE:启用,FALSE:禁用,建议启用以提高安全性 |
password_reuse_time | UNLIMITED | 密码重用时间 | UNLIMITED:无限制,或指定天数,建议 30-90 天 |
password_reuse_max | UNLIMITED | 密码重用次数 | UNLIMITED:无限制,或指定次数,建议 5-10 次 |
password_life_time | 180 | 密码有效期 | 180 天,建议 90-180 天 |
password_grace_time | 7 | 密码宽限期 | 7 天,建议 3-7 天 |
password_lock_time | 1 | 密码锁定时间 | 1 天,建议 1-7 天 |
failed_login_attempts | 10 | 登录失败尝试次数 | 10 次,建议 3-5 次 |
sec_max_failed_login_attempts | 0 | 最大登录失败尝试次数 | 0:与 failed_login_attempts 相同,或指定次数 |
权限管理参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
os_authent_prefix | OPS$ | OS 认证前缀 | 用于 OS 认证的用户名前缀,建议保留默认值 |
os_roles | FALSE | OS 角色 | TRUE:允许,FALSE:禁止,建议 FALSE |
remote_os_authent | FALSE | 远程 OS 认证 | TRUE:允许,FALSE:禁止,建议 FALSE |
remote_os_roles | FALSE | 远程 OS 角色 | TRUE:允许,FALSE:禁止,建议 FALSE |
global_names | FALSE | 全局名称 | TRUE:启用,FALSE:禁用,建议 FALSE |
resource_limit | TRUE | 资源限制 | TRUE:启用,FALSE:禁用,建议 TRUE |
audit_sys_operations | FALSE | 审计系统操作 | TRUE:启用,FALSE:禁用,建议启用以审计 SYS 用户操作 |
audit_trail | DB | 审计跟踪 | 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_configuration | 空 | TDE 配置 | 如 KEYSTORE_CONFIGURATION=FILE,指定密钥库类型 |
wallet_root | 空 | 钱包根目录 | Oracle 18c+ 建议设置,如 /wallet |
tde_keystore_type | FILE | TDE 密钥库类型 | FILE:文件系统,HSM:硬件安全模块,建议 FILE |
tde_keystore_credential | 空 | TDE 密钥库凭证 | 用于自动打开密钥库 |
网络加密参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
sqlnet.ora 中的 SQLNET.ENCRYPTION_SERVER | ACCEPTED | 服务器端加密设置 | REQUIRED:要求加密,建议启用加密 |
sqlnet.ora 中的 SQLNET.ENCRYPTION_TYPES_SERVER | () | 服务器端加密算法 | 建议设置为 (AES256, AES192, AES128) |
sqlnet.ora 中的 SQLNET.CRYPTO_CHECKSUM_SERVER | ACCEPTED | 服务器端校验和设置 | REQUIRED:要求校验和,建议启用 |
sqlnet.ora 中的 SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER | () | 服务器端校验和算法 | 建议设置为 (SHA512, SHA384, SHA256) |
sqlnet.ora 中的 SQLNET.ENCRYPTION_CLIENT | ACCEPTED | 客户端加密设置 | REQUIRED:要求加密,建议与服务器端一致 |
sqlnet.ora 中的 SQLNET.CRYPTO_CHECKSUM_CLIENT | ACCEPTED | 客户端校验和设置 | REQUIRED:要求校验和,建议与服务器端一致 |
审计参数
审计配置参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
audit_trail | DB | 审计跟踪 | DB:数据库,OS:操作系统,XML:XML 格式,DB_EXTENDED:扩展数据库,NONE:禁用,建议 DB |
audit_file_dest | 自动 | 审计文件目标位置 | 根据实际路径设置,如 /audit |
audit_sys_operations | FALSE | 审计系统操作 | TRUE:启用,FALSE:禁用,建议启用以审计 SYS 用户操作 |
audit_syslog_level | 空 | 审计系统日志级别 | 如 local0.info,将审计记录发送到系统日志 |
audit_trail_dest | 空 | 审计跟踪目标 | 如 DB,OS,同时发送到数据库和操作系统 |
unified_audit_sga_queue_size | 1048576 | 统一审计 SGA 队列大小 | 建议根据审计量调整 |
unified_audit_systemlog | FALSE | 统一审计系统日志 | TRUE:启用,FALSE:禁用,将审计记录发送到系统日志 |
细粒度审计参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
audit_sys_privilege | FALSE | 审计系统权限 | TRUE:启用,FALSE:禁用,建议 FALSE |
audit_trail_type | DB | 审计跟踪类型 | DB:数据库,OS:操作系统,建议 DB |
audit_file_mode | 0640 | 审计文件模式 | 文件权限,建议 0640 |
audit_file_rotate_on_size | 0 | 审计文件按大小轮换 | 0:禁用,或指定大小(字节),建议 104857600(100MB) |
audit_file_rotate_age | 0 | 审计文件按时间轮换 | 0:禁用,或指定天数,建议 7 |
网络安全参数
监听器安全参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
listener.ora 中的 INBOUND_CONNECT_TIMEOUT_LISTENER | 60 | 监听器入站连接超时 | 建议 30-60 秒 |
listener.ora 中的 VALID_NODE_CHECKING_REGISTRATION_LISTENER | OFF | 节点验证 | ON:启用节点验证,建议启用以增强安全性 |
listener.ora 中的 SECURE_REGISTER_LISTENER | OFF | 安全注册 | ON:启用,OFF:禁用,建议 ON |
listener.ora 中的 PASSWORD_LISTENER | 空 | 监听器密码 | 设置监听器密码以防止未授权访问 |
listener.ora 中的 ADMIN_RESTRICTIONS_LISTENER | OFF | 管理员限制 | ON:启用,OFF:禁用,建议 ON 以限制远程管理 |
sqlnet.ora 中的 TCP.VALIDNODE_CHECKING | NONE | TCP 有效节点检查 | YES:启用,NO:禁用,建议 YES |
sqlnet.ora 中的 TCP.INVITED_NODES | 空 | TCP 允许节点 | 如 (192.168.1.0/24, 10.0.0.0/8),指定允许连接的节点 |
sqlnet.ora 中的 TCP.EXCLUDED_NODES | 空 | TCP 排除节点 | 如 (192.168.1.100),指定禁止连接的节点 |
连接安全参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
sqlnet.ora 中的 SQLNET.AUTHENTICATION_SERVICES | (ALL) | 认证服务 | 建议设置为 (BEQ, TCPS) 以启用安全认证 |
sqlnet.ora 中的 SQLNET.EXPIRE_TIME | 0 | 连接超时时间 | 0:禁用,或指定分钟数,建议 10-30 分钟 |
sqlnet.ora 中的 SQLNET.INBOUND_CONNECT_TIMEOUT | 60 | 入站连接超时 | 建议 30-60 秒 |
sqlnet.ora 中的 SQLNET.OUTBOUND_CONNECT_TIMEOUT | 60 | 出站连接超时 | 建议 30-60 秒 |
sqlnet.ora 中的 SSL_VERSION | 1.2 | SSL 版本 | 建议 1.2 或 1.3,禁用旧版本 |
sqlnet.ora 中的 SSL_CIPHER_SUITES | 空 | SSL 加密套件 | 建议设置为强加密套件,如 (TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256) |
安全加固参数
权限最小化参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
remote_dependencies_mode | TIMESTAMP | 远程依赖模式 | TIMESTAMP:时间戳验证,SIGNATURE:签名验证,建议 SIGNATURE |
plsql_warnings | DISABLE:ALL | PL/SQL 警告 | 建议设置为 ENABLE:ALL 以捕获潜在安全问题 |
utl_file_dir | 空 | UTL_FILE 目录 | 空:禁用,或指定目录,建议设置为具体目录而非 * |
utl_http.proxy_override | 空 | UTL_HTTP 代理覆盖 | 根据网络环境设置 |
java_jit_enabled | TRUE | Java JIT 启用 | TRUE:启用,FALSE:禁用,建议 TRUE |
oracle_home | 自动 | Oracle 主目录 | 确保权限正确,建议 755 |
oracle_base | 自动 | Oracle 基目录 | 确保权限正确,建议 755 |
安全补丁参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
patch_ui_port | 8898 | 补丁 UI 端口 | 建议修改为非默认端口 |
opatch_lsinventory | 空 | OPatch 清单 | 使用 opatch lsinventory 命令查看 |
opatch_auto | 空 | 自动补丁 | 使用 opatch auto 命令应用补丁 |
常见问题(FAQ)
Q1: 如何启用密码大小写敏感?
A: 可以使用以下命令启用密码大小写敏感:
sql
ALTER SYSTEM SET sec_case_sensitive_logon = TRUE SCOPE=BOTH;Q2: 如何配置透明数据加密 (TDE)?
A: 配置 TDE 的步骤如下:
设置钱包位置:
sqlALTER SYSTEM SET wallet_root = '/wallet' SCOPE=SPFILE; ALTER SYSTEM SET tde_configuration = 'KEYSTORE_CONFIGURATION=FILE' SCOPE=SPFILE;重启数据库后创建钱包:
sqlADMINISTER 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;启用自动打开钱包:
sqlADMINISTER 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 = REQUIREDQ4: 如何启用审计?
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最佳实践
- 启用密码策略:配置强密码策略,包括密码复杂度、有效期和登录失败限制。
- 启用审计:至少审计系统级操作和敏感对象访问,便于安全审计和故障排查。
- 启用网络加密:配置 SSL/TLS 加密数据库连接,防止数据在传输过程中被窃取。
- 使用最小权限原则:为用户和应用程序授予最小必要权限,避免过度授权。
- 定期更新补丁:及时应用 Oracle 安全补丁,修复已知漏洞。
- 保护密钥库:妥善保管 TDE 密钥库和密码,定期备份密钥库。
- 加固监听器:配置监听器安全参数,限制访问和防止未授权管理。
- 启用防火墙:配置数据库服务器防火墙,限制只允许必要的 IP 地址访问数据库端口。
- 定期安全检查:使用 Oracle 安全评估工具定期进行安全检查,发现并修复安全漏洞。
- 培训和文档:对 DBA 和开发人员进行安全培训,制定并遵循安全最佳实践文档。
