Oracle10g数据库基线检查策略
1、删除与工作无关账号
参考配置
应删除或锁定与设备运行、维护等工作无关的账号。(默认检查SYS,SYSTEM)
(1)锁定账号,以管理员登录数据库,执行下述命令:
SQL>alter user username account lock;
SQL>drop user username cascade;
补充说明
需要锁定的账号:CTXSYS、DBSNMP、LBACSYS、MDDATA、MDSYS、DMSYS、OLAPSYS、ORDPLUGINS、ORDSYS、OUTLN、SI_INFORMTN_SCHEMA、SYSMAN
2、静态口令生存期检查
参考配置
基线描述
对于采用静态口令认证技术的设备,帐户口令的生存期不长于设定天数(默认90天)。
(1)查找用户对应profile名称,执行如下命令查询:
SQL> select username,profile from dba_users;
USERNAME PROFILE
------------------------------ ------------------------------
OLAPSYS DEFAULT
SI_INFORMTN_SCHEMA DEFAULT
ORDPLUGINS DEFAULT
TSMSYS DEFAULT
XDB DEFAULT
WMSYS DEFAULT
SCOTT DEFAULT
DMSYS DEFAULT
DIP DEFAULT
OUTLN DEFAULT
EXFSYS DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
ANONYMOUS DEFAULT
CTXSYS DEFAULT
ORDSYS DEFAULT
MDSYS DEFAULT
MDDATA DEFAULT
SYSTEM DEFAULT
SYS DEFAULT
MGMT_VIEW DEFAULT
SYSMAN DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
DBSNMP MONITORING_PROFILE
AUDITUSER DEFAULT
22 rows selected.
(2)根据查找到的用户对应的profile名称,修改此profile的PASSWORD_GRACE_TIME值为90,默认为“DEFAULT”(根据具体情况可能为其他名称)。以默认profile为例执行如下修改:
SQL>alter profile DEFAULT limit PASSWORD_GRACE_TIME 90;
SQL>commit;
3、禁止具备数据库超级管理员(SYSDBA)权限的用户远程登录
1、参考配置
(1)限制具备数据库超级管理员(SYSDBA)权限的用户远程登录,使用sysdba用户登录数据库,执行如下命令:
SQL> alter system set remote_login_passwordfile=none scope=spfile;
SQL> shutdown immediate;
SQL> startup;
2、补充操作说明
(1)系统参数remote_login_passwordfile说明:
a.不使用密码文件登录;不允许远程用户用sys登录系统;可以在线修改sys的密码;
remote_login_passwordfile=none
b.只允许一个数据库使用该密码文件;允许远程登录;允许非sys用户以sysdba身份管理数据库;可以在线修改sys的密码;
remote_login_passwordfile=exclusive
c.允许远程登录;只能用sys进行sysdba管理;可以在线修改sys的密码;
remote_login_passwordfile=shared
4、检查更改数据库默认帐号的密码
1、参考配置操作
(1) 可通过下面命令来更改默认用户的密码:
ALTER USER username IDENTIFIED BY password;
(2) 下面是默认用户列表:
ANONYMOUS
CTXSYS
DBSNMP
DIP
DMSYS
EXFSYS
HR
LBACSYS
MDDATA
MDSYS
MGMT_VIEW
ODM
ODM_MTR
OE
OLAPSYS
ORDPLUGINS
ORDSYS
OUTLN
PM
QS
QS_ADM
QS_CB
QS_CBADM
QS_CS
QS_ES
QS_OS
QS_WS
RMAN
SCOTT
SH
SI_INFORMTN_SCHEMA
SYS
SYSMAN
SYSTEM
TSMSYS
WK_TEST
WKPROXY
WKSYS
WMSYS
XDB
5、检查Oracle数据库会话空闲断开时间
1、参考配置
(1)在服务器上的文件$ORACLE_HOME/network/admin/sqlnet.ora中设置以下行:
SQLNET.EXPIRE_TIME=15
默认时间单位为分钟
注:数据库应自动断开超过%s[]分钟的空闲远程连接,当前系统设置超时时间为%c[sqlnet_expire_time_rally]分钟。(0:表示当前系统未设置超时时间)
6、限制DBA组中的用户数量
参考配置
(1)通过/etc/group文件来检查是否有其它用户在DBA组中
(2)把username从dba组中删除
#gpasswd -t username dba #将用户从DBA组中删除
(3)变更组用户
#usermod –G group username #将用户username分配到group组中
注:限制在DBA组中的操作系统用户数量,通常DBA组中只有Oracle安装用户。
7、安装了最新的安全补丁
参考配置
(1)以管理员登录数据库,执行下述命令查看版本号:
select * from v$version;
(2)请联系厂家购买或申请最新oracle补丁。
注:在保证业务及网络安全的前提下,经过兼容性测试后
8、检查配置当用户连续认证失败次数超过规定次数时,锁定该用户使用的账号
参考配置
(1)查找用户对应profile名称,执行如下命令查询:
SQL> select username,profile from dba_users;
USERNAME PROFILE
------------------------------ ------------------------------
OLAPSYS DEFAULT
SI_INFORMTN_SCHEMA DEFAULT
ORDPLUGINS DEFAULT
TSMSYS DEFAULT
XDB DEFAULT
WMSYS DEFAULT
SCOTT DEFAULT
DMSYS DEFAULT
DIP DEFAULT
OUTLN DEFAULT
EXFSYS DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
ANONYMOUS DEFAULT
CTXSYS DEFAULT
ORDSYS DEFAULT
MDSYS DEFAULT
MDDATA DEFAULT
SYSTEM DEFAULT
SYS DEFAULT
MGMT_VIEW DEFAULT
SYSMAN DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
DBSNMP MONITORING_PROFILE
AUDITUSER DEFAULT
22 rows selected.
(2)根据查找到的用户对应的profile名称,修改此profile的FAILED_LOGIN_ATTEMPTS值为5,默认为“DEFAULT”(根据具体情况可能为其他名称)。以默认profile为例执行如下修改:
SQL>alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS 5;
SQL>commit;
FAILED_LOGIN_ATTEMPTS的值需配置不大于基线配置值
9、检查数据库口令被修改后原口令可以使用的间隔时间不少于规定天数
参考配置
(1)查找用户对应profile名称,执行如下命令查询:
SQL> select username,profile from dba_users;
USERNAME PROFILE
------------------------------ ------------------------------
OLAPSYS DEFAULT
SI_INFORMTN_SCHEMA DEFAULT
ORDPLUGINS DEFAULT
TSMSYS DEFAULT
XDB DEFAULT
WMSYS DEFAULT
SCOTT DEFAULT
DMSYS DEFAULT
DIP DEFAULT
OUTLN DEFAULT
EXFSYS DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
ANONYMOUS DEFAULT
CTXSYS DEFAULT
ORDSYS DEFAULT
MDSYS DEFAULT
MDDATA DEFAULT
SYSTEM DEFAULT
SYS DEFAULT
MGMT_VIEW DEFAULT
SYSMAN DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
DBSNMP MONITORING_PROFILE
AUDITUSER DEFAULT
22 rows selected.
(2)根据查找到的用户对应的profile名称,修改此profile的PASSWORD_REUSE_TIME值为180,默认为“DEFAULT”(根据具体情况可能为其他名称)。以默认profile为例执行如下修改:
SQL>alter profile DEFAULT limit PASSWORD_REUSE_TIME 180;
SQL>commit;
PASSWORD_REUSE_TIME的值需配置不小于基线配置值
10、检查静态口令进行认证的数据库口令复杂度
1、 参考配置操作
(1)修改用户对应profile的密码复杂度函数,请将"PROFILE_NAME"修改为实际用户所使用的profile
SQL>ALTER PROFILE PROFILE_NAME LIMIT
PASSWORD_VERIFY_FUNCTION verify_function;
2、 补充操作说明
(1)如上述解决方案执行出现如下报错信息
ORA-07443: function VERIFY_FUNCTION not found
请参考$ORACLE_HOME/rdbms/admin/utlpwdmg.sql内容,创建VERIFY_FUNCTION函数,注意修改限制密码长度,例如修改部分内容
-- Check for the minimum length of the password
IF length(password) < 4 THEN
raise_application_error(-20002, 'Password length less than 4');
END IF;
请将这2处数字4改为8,即限制密码长度必须为8位以上,或改为符合要求的密码长度。
(2)可根据实际情况为用户建profile,调整PASSWORD_VERIFY_FUNCTION,指定密码复杂度
SQL>CREATE PROFILE "TEST_PROFILE"
LIMIT PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION;
SQL>ALTER USER "USER_NAME" PROFILE "TEST_PROFILE";
(3)“TEST_PROFILE”请改为实际的profile值,“USER_NAME”请改为实际username
11、检查数据库账户口令到达终止时间后的宽限天数
参考配置
(1)查找用户对应profile名称,执行如下命令查询:
SQL> select username,profile from dba_users;
USERNAME PROFILE
------------------------------ ------------------------------
OLAPSYS DEFAULT
SI_INFORMTN_SCHEMA DEFAULT
ORDPLUGINS DEFAULT
TSMSYS DEFAULT
XDB DEFAULT
WMSYS DEFAULT
SCOTT DEFAULT
DMSYS DEFAULT
DIP DEFAULT
OUTLN DEFAULT
EXFSYS DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
ANONYMOUS DEFAULT
CTXSYS DEFAULT
ORDSYS DEFAULT
MDSYS DEFAULT
MDDATA DEFAULT
SYSTEM DEFAULT
SYS DEFAULT
MGMT_VIEW DEFAULT
SYSMAN DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
DBSNMP MONITORING_PROFILE
AUDITUSER DEFAULT
22 rows selected.
(2)根据查找到的用户对应的profile名称,修改此profile的PASSWORD_GRACE_TIME值为7,默认为“DEFAULT”(根据具体情况可能为其他名称)。以默认profile为例执行如下修改:
SQL>alter profile DEFAULT limit PASSWORD_GRACE_TIME 7;
SQL>commit;
PASSWORD_GRACE_TIME的值需配置不小大于基线配置值,且不可为0
12、通过数据库所在操作系统或防火墙限制,只有信任的IP地址才能通过监听器访问数据库
1、参考配置
(1)在服务器上的文件$ORACLE_HOME/network/admin/sqlnet.ora中设置以下行:
tcp.validnode_checking = yes
tcp.invited_nodes = (ip1,ip2…)
请将ip1,ip2改为实际的信任IP地址
13、检查数据库登录超过有效次数后的锁定时间不小于规定天数
参考配置
(1)查找用户对应profile名称,执行如下命令查询:
SQL> select username,profile from dba_users;
USERNAME PROFILE
------------------------------ ------------------------------
OLAPSYS DEFAULT
SI_INFORMTN_SCHEMA DEFAULT
ORDPLUGINS DEFAULT
TSMSYS DEFAULT
XDB DEFAULT
WMSYS DEFAULT
SCOTT DEFAULT
DMSYS DEFAULT
DIP DEFAULT
OUTLN DEFAULT
EXFSYS DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
ANONYMOUS DEFAULT
CTXSYS DEFAULT
ORDSYS DEFAULT
MDSYS DEFAULT
MDDATA DEFAULT
SYSTEM DEFAULT
SYS DEFAULT
MGMT_VIEW DEFAULT
SYSMAN DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
DBSNMP MONITORING_PROFILE
AUDITUSER DEFAULT
22 rows selected.
(2)根据查找到的用户对应的profile名称,修改此profile的PASSWORD_LOCK_TIME值为1,默认为“DEFAULT”(根据具体情况可能为其他名称)。以默认profile为例执行如下修改:
SQL>alter profile DEFAULT limit PASSWORD_LOCK_TIME 1;
SQL>commit;
PASSWORD_LOCK_TIME的值需配置不小于基线配置值
14、检查数据库设置密码锁定时间
参考配置
(1)查找用户对应profile名称,执行如下命令查询:
SQL> select username,profile from dba_users;
USERNAME PROFILE
------------------------------ ------------------------------
OLAPSYS DEFAULT
SI_INFORMTN_SCHEMA DEFAULT
ORDPLUGINS DEFAULT
TSMSYS DEFAULT
XDB DEFAULT
WMSYS DEFAULT
SCOTT DEFAULT
DMSYS DEFAULT
DIP DEFAULT
OUTLN DEFAULT
EXFSYS DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
ANONYMOUS DEFAULT
CTXSYS DEFAULT
ORDSYS DEFAULT
MDSYS DEFAULT
MDDATA DEFAULT
SYSTEM DEFAULT
SYS DEFAULT
MGMT_VIEW DEFAULT
SYSMAN DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
DBSNMP MONITORING_PROFILE
AUDITUSER DEFAULT
22 rows selected.
(2)根据查找到的用户对应的profile名称,修改此profile的PASSWORD_LOCK_TIME值为3,默认为“DEFAULT”(根据具体情况可能为其他名称)。以默认profile为例执行如下修改:
SQL>alter profile DEFAULT limit PASSWORD_LOCK_TIME 3;
SQL>commit;
PASSWORD_LOCK_TIME的值表示锁定天数
15、静态口令不能连续重复使用
参考配置
(1)查找用户对应profile名称,执行如下命令查询:
SQL> select username,profile from dba_users;
USERNAME PROFILE
------------------------------ ------------------------------
OLAPSYS DEFAULT
SI_INFORMTN_SCHEMA DEFAULT
ORDPLUGINS DEFAULT
TSMSYS DEFAULT
XDB DEFAULT
WMSYS DEFAULT
SCOTT DEFAULT
DMSYS DEFAULT
DIP DEFAULT
OUTLN DEFAULT
EXFSYS DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
ANONYMOUS DEFAULT
CTXSYS DEFAULT
ORDSYS DEFAULT
MDSYS DEFAULT
MDDATA DEFAULT
SYSTEM DEFAULT
SYS DEFAULT
MGMT_VIEW DEFAULT
SYSMAN DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
DBSNMP MONITORING_PROFILE
AUDITUSER DEFAULT
22 rows selected.
(2)根据查找到的用户对应的profile名称,修改此profile的PASSWORD_REUSE_MAX值为5,默认为“DEFAULT”(根据具体情况可能为其他名称)。以默认profile为例执行如下修改:
SQL>alter profile DEFAULT limit PASSWORD_REUSE_MAX 5;
SQL>commit;
16、设置监听器的关闭和启动密码
参考配置
描述
为数据库监听器(LISTENER)的关闭和启动设置密码。
(1)通过下面命令设置密码:
$lsnrctl
LSNRCTL> change_password #默认密码为空
LSNRCTL> save_config
17、数据交叉访问安全检查
参考配置
描述
使用Oracle提供的虚拟私有数据库(VPD)和标签安全(OLS)来保护不同用户之间的数据交叉访问。
(1)在表上构建 VPD可以使用Oracle所提供的PL/SQL包DBMS_RLS控制整个VPD基础架构,具体设置方法较复杂,建议参考Oracle文档进行配置。
(2)Oracle标签安全(OLS)是在相关表上通过添加一个标签列来实现复杂的数据安全控制,具体细节请参考Oracle文档。
18、设置最大最小连接数
参考配置
(1)以管理员登录数据库,执行下列命令修改:
修改连接数,如修改到2000
alter system set processes=2000 scope=spfile;
重启数据库,启用参数
shutdown immediate;
startup;
最后更新于
这有帮助吗?