在Linux系统上实现Oracle数据库的安全设置,可以采取以下措施:
-
数据字典保护:
- 启用数据字典保护,仅允许SYSDBA用户访问数据字典基础表。
- 设置初始化参数
O7_DICTIONARY_ACCESSIBILITY = FALSE
。
-
限制DBA组中的用户数量:
- 限制DBA组中的操作系统用户数量,通常DBA组中只有Oracle安装用户。
- 使用
userdel
命令删除多余的DBA组中的操作系统用户,DBA组中只留一个Oracle安装用户。
-
设置数据库口令复杂度:
- 对采用静态口令进行认证的数据库,设置所有开启用户的口令长度至少6位,并包括数字、小写字母、大写字母和特殊符号4类中至少2类。
- 修改相关profile,设置
PASSWORD_VERIFY_FUNCTION
,指定密码复杂度。
-
数据库用户口令生存周期:
- 对于采用静态口令认证技术的数据库,设置账户口令的生存期不长于90天。
- 修改相关profile,将
PASSWORD_LIFE_TIME
设置为小于等于90。
-
限制具有数据库超级管理员(SYSDBA)权限的用户远程登录:
- 禁止具有数据库超级管理员(SYSDBA)权限的用户从远程登录。
- 修改spfile,将
REMOTE_LOGIN_PASSWORDFILE
设置为NONE
。
-
开启数据库审计:
- 开启数据库审计功能,根据业务要求制定数据库审计策略。
- 登录数据库,执行以下命令打开数据库审计,并重启数据库。
SQL> alter system set audit_trail='DB or OS' scope=spfile;
-
设置数据库监听器密码:
- 为数据库监听器(LISTENER)的关闭和启动设置密码。
- 使用
lsnrctl
命令进行监听器密码设置。
-
配置可信IP地址访问控制:
- 通过数据库所在操作系统或防火墙限制,只有信任的IP地址才能通过监听器访问数据库。
- 编辑
$ORACLE_HOME/network/admin/sqlnet.ora
文件,添加或修改如下配置,重启数据库。tcp.validnode_checking = yes tcp.invited_nodes = (ip1,ip2…)
-
数据库连接超时:
- 在某些应用环境下可设置数据库连接超时,比如数据库将自动断开超过15分钟的空闲远程连接。
- 编辑
$ORACLE_HOME/network/admin/sqlnet.ora
文件,设置SQLNET.EXPIRE_TIME
参数。
-
网络传输数据加密:
- 使用Oracle提供的高级安全选件来加密客户端与数据库之间或中间件与数据库之间的网络传输数据。
- 编辑
$ORACLE_HOME/network/admin/sqlnet.ora
文件,设置sqlnet.encryption
参数。
-
设置连接数:
- 根据机器性能和业务需求,设置最大连接数。
- 以管理员权限登录数据库,执行下列命令修改连接数,如200,重启数据库。
SQL> alter system set processes=200 scope=spfile;
此外,还需要注意以下方面:
- 用户管理与认证:限制登录权限,禁用root登录,为SSH设置专用账号或组,严格限制SSH登录权限;密钥认证,禁用密码登录,采用公钥/私钥对进行SSH登录认证。
- 网络服务与端口:修改SSH端口,更改默认SSH端口至非常用端口;防火墙配置,仅开放必要的端口,并使用iptables或firewalld等工具进行防火墙规则设置。
- 系统与文件权限:最小化服务运行,只运行必需的服务;文件权限审查,定期检查重要文件和目录的权限设置。
- 日志审计与监控:检查系统日志,定期查看系统内部的记录文件;实时监控,配置实时监控系统日志。
- 更新与补丁:及时更新系统和应用软件,修补已知漏洞。
- 物理安全与BIOS配置:设置BIOS密码,防止未经授权的物理访问和启动顺序修改。
通过上述措施,可以显著提升Linux系统上Oracle数据库的安全性。