目录
账号管理、认证授权 ELK-Oracle-01-01-01
ELK-Oracle-01-01-02
ELK-Oracle-01-01-03
ELK-Oracle-01-01-04
ELK-Oracle-01-01-05
ELK-Oracle-01-01-06
ELK-Oracle-01-01-07
ELK-Oracle-01-01-08
口令 ELK-Oracle-01-02-01
ELK-Oracle-01-02-02
ELK-Oracle-01-02-03
ELK-Oracle-01-02-04
ELK-Oracle-01-02-05
日志配置 ELK-Oracle-02-01-01
ELK-Oracle-02-01-02
ELK-Oracle-02-01-03
ELK-Oracle-02-01-04
通信协议 ELK-Oracle-03-01-01
ELK-Oracle-03-01-02
设备其他安全要求 ELK-Oracle-04-01-01
ELK-Oracle-04-01-02
编号 |
ELK-Oracle-01-01-01 |
名称 |
为不同的管理员分配不同的账号 |
实施目的 |
应按照用户分配账号,避免不同用户间共享账号,提高安全性。 |
问题影响 |
账号混淆,权限不明确,存在用户越权使用的可能。 |
系统当前状态 |
select * from all_users; select * from dba_users; 记录用户列表 |
实施步骤 |
1、参考配置操作 create user abc1 identified by password1; create user abc2 identified by password2; 建立role,并给role授权,把role赋给不同的用户
1、abc1和abc2是两个不同的账号名称,可根据不同用户,取不同的名称; |
回退方案 |
删除用户:例如创建了一个用户 A,要删除它可以这样做 connect sys/密码 as sysdba; drop user A cascade;//就这样用户就被删除了 |
判断依据 |
标记用户用途,定期建立用户列表,比较是否有非法用户 |
实施风险 |
高 |
重要等级 |
★★★ |
备注 |
编号 |
ELK-Oracle-01-01-02 |
名称 |
删除或锁定无效账号 |
实施目的 |
删除或锁定无效的账号,减少系统安全隐患。 |
问题影响 |
允许非法利用系统默认账号 |
系统当前状态 |
select * from all_users; select * from dba_users; 记录用户列表 |
实施步骤 |
1、参考配置操作 alter user username lock;//锁定用户 drop user username cascade;//删除用户 |
回退方案 |
删除新增加的帐户 |
判断依据 |
首先锁定不需要的用户 在经过一段时间后,确认该用户对业务确无影响的情况下,可以删除 |
实施风险 |
高 |
重要等级 |
★★★ |
备注 |
编号 |
ELK-Oracle-01-01-03 |
名称 |
限制超级管理员远程登录 |
实施目的 |
限制具备数据库超级管理员(SYSDBA)权限的用户远程登录。。 |
问题影响 |
允许数据库超级管理员远程非法登陆 |
系统当前状态 |
查看spfile,sqlnet.ora内容 |
实施步骤 |
1、参考配置操作 在spfile中设置REMOTE_LOGIN_PASSWORDFILE=NONE来禁止SYSDBA用户从远程登陆。在sqlnet.ora中设置SQLNET.AUTHENTICATION_SERVICES=NONE来禁用 SYSDBA 角色的自动登录。 |
回退方案 |
还原spfile,sqlnet.ora文件配置 |
判断依据 |
判定条件 1. 不能通过Sql*Net远程以SYSDBA用户连接到数据库。 2. 在数据库主机上以sqlplus ‘/as sysdba’连接到数据库需要输入口令。 检测操作 1. 以Oracle用户登陆到系统中。 2. 以sqlplus ‘/as sysdba’登陆到sqlplus环境中。 3. 使用show parameter命令来检查参数REMOTE_LOGIN_PASSWORDFILE是否设置为NONE。 Show parameter REMOTE_LOGIN_PASSWORDFILE 4. 检查在 $ORACLE_HOME/network/admin/sqlnet.ora文件中参数SQLNET.AUTHENTICATION_SERVICES是否被设置成NONE。 |
实施风险 |
高 |
重要等级 |
★★★ |
备注 |
编号 |
ELK-Oracle-01-01-04 |
名称 |
权限最小化 |
实施目的 |
在数据库权限配置能力内,根据用户的业务需要,配置其所需的最小权限。 |
问题影响 |
账号权限越大,对系统的威胁性越高 |
系统当前状态 |
select * from user_sys_privs; select * from user_role_privs; select * from user_tab_privs; 记录用户拥有权限 |
实施步骤 |
grant 权限 to username; revoke 权限 from username;
用第一条命令给用户赋相应的最小权限 用第二条命令收回用户多余的权限 |
回退方案 |
还原添加或删除的权限 |
判断依据 |
业务测试正常 |
实施风险 |
高 |
重要等级 |
★ |
备注 |
编号 |
ELK-Oracle-01-01-05 |
名称 |
数据库角色 |
实施目的 |
使用数据库角色(ROLE)来管理对象的权限。 |
问题影响 |
账号管理混乱 |
系统当前状态 |
select * from dba_role_privs; 记录用户拥有的role |
实施步骤 |
一.创建角色,修改角色 1.创建角色,不指定密码: create role testrole; 2.创建角色,指定密码: create role testrole identified by passwd; 3.修改角色: alter role testrole identified by passwd; 4. 给角色授予权限。 Grant select on Table_name to testrole; 把角色赋予用户:(特别说明,授予角色不是实时的。如下:) grant testrole to User_Name; 二、起用角色:给用户赋予角色,角色并不会立即起作用。 1.角色不能立即起作用。必须下次断开此次连接,下次连接才能起作用。 2.或者执行命令:有密码的角色set role testrole identified by passwd 立即生效; 3.无密码的角色:set role testrole; |
回退方案 |
删除相应的Role revoke role_name from user_name |
判断依据 |
对应用用户不要赋予DBA Role或不必要的权限 |
实施风险 |
高 |
重要等级 |
★ |
备注 |
编号 |
ELK-Oracle-01-01-06 |
名称 |
用户profile |
实施目的 |
对用户的属性进行控制,包括密码策略、资源限制等。 |
问题影响 |
账号安全性低. |
系统当前状态 |
SELECT profile FROM dba_users WHERE username=’user_name’; 记录用户赋予的profile |
实施步骤 |
可通过下面类似命令来创建profile,并把它赋予一个用户 SQL> show parameter resource_limit SQL> alter system set resource_limit=true; CREATE PROFILE profile_name LIMIT FAILED_LOGIN_ATTEMPTS 6 PASSWORD_LIFE_TIME 60 PASSWORD_REUSE_TIME 60 PASSWORD_REUSE_MAX 5 PASSWORD_VERIFY_FUNCTION verify_function PASSWORD_LOCK_TIME 1/24 PASSWORD_GRACE_TIME 90; ALTER USER user_name PROFILE profile_name; |
回退方案 |
alter user dinya profile default; 恢复默认 |
判断依据 |
1. 可通过设置profile来限制数据库账户口令的复杂程度,口令生存周期和账户的锁定方式等。 2. 可通过设置profile来限制数据库账户的CPU资源占用。 4、检测操作 1. 以DBA用户登陆到sqlplus中。 2. 查询视图dba_profiles和dba_usres来检查profile是否创建。 |
实施风险 |
高 |
重要等级 |
★ |
备注 |
编号 |
ELK-Oracle-01-01-07 |
名称 |
数据字典保护 |
实施目的 |
启用数据字典保护,只有SYSDBA用户才能访问数据字典基础表。 |
问题影响 |
数据库安全性低. |
系统当前状态 |
Show parameter O7_DICTIONARY_ACCESSIBILITY 记录当前状态 |
实施步骤 |
通过设置下面初始化参数来限制只有SYSDBA权限的用户才能访问数据字典。 alter system set O7_DICTIONARY_ACCESSIBILITY=FALSE scope=spfile; |
回退方案 |
修改O7_DICTIONARY_ACCESSIBILITY为原来属性 |
判断依据 |
以普通用户登陆到数据库,不能查看X$开头的表,比如: select * from sys. x$ksppi; 检测操作 1. 以Oracle用户登陆到系统中。 2. 以sqlplus ‘/as sysdba’登陆到sqlplus环境中。 3. 使用show parameter命令来检查参数O7_DICTIONARY_ACCESSIBILITY是否设置为FALSE。 Show parameter O7_DICTIONARY_ACCESSIBILITY |
实施风险 |
高 |
重要等级 |
★ |
备注 |
编号 |
ELK-Oracle-01-01-08 |
名称 |
检查DBA组用户 |
实施目的 |
限制在DBA组中的操作系统用户数量,通常DBA组中只有Oracle安装用户。 |
问题影响 |
影响组用户管理 |
系统当前状态 |
Cat /etc/passwd |
实施步骤 |
参考配置操作 通过/etc/passwd文件来检查是否有其它用户在DBA组中。 删除用户:#userdel username; 锁定用户: 1) 修改/etc/shadow文件,用户名后加*LK* 2) 将/etc/passwd文件中的shell域设置成/bin/false 3) #passwd -l username 只有具备超级用户权限的使用者方可使用,#passwd -l username锁定用户,用#passwd –d username解锁后原有密码失效,登录需输入新密码,修改/etc/shadow能保留原有密码。 |
回退方案 |
还原/etc/passwd文件 |
判断依据 |
判定条件 无其它用户属于DBA组。 检测操作 通过/etc/passwd文件来检查是否有其它用户在DBA组中。 |
实施风险 |
高 |
重要等级 |
★ |
备注 |
编号 |
ELK-Oracle-01-02-01 |
名称 |
缺省密码长度复杂度限制 |
实施目的 |
对于采用静态口令进行认证的数据库,口令长度至少6位,并包括数字、小写字母、大写字母和特殊符号4类中至少2类。 |
问题影响 |
增加密码被暴力破解的成功率 |
系统当前状态 |
SELECT profile FROM dba_users WHERE username=’user_name’; 记录用户赋予的profile |
实施步骤 |
1、参考配置操作 为用户建profile,调整PASSWORD_VERIFY_FUNCTION,指定密码复杂度 示例: SQL>CREATE OR REPLACE FUNCTION my_password_verify (username VARCHAR2 ,password VARCHAR2 ,old_password VARCHAR2 ) RETURN BOOLEAN IS 2 BEGIN 3 IF LENGTH(password) < 6 THEN 4 raise_application_error(-20001,''Password must be at least 6 characters long''); 5 END IF; 6 RETURN(TRUE); 7 END; SQL> create profile TEST_PROFILE limit |
回退方案 |
alter user user_name profile default; |
判断依据 |
修改密码为不符合要求的密码,将失败
alter user user_name identified by passwd;将失败 |
实施风险 |
低 |
重要等级 |
★★★ |
备注 |
编号 |
ELK-Oracle-01-02-02 |
名称 |
缺省密码生存周期限制 |
实施目的 |
对于采用静态口令认证技术的设备,帐户口令的生存期不长于90天,减少口令安全隐患。 |
问题影响 |
密码被非法利用,并且难以管理 |
系统当前状态 |
SELECT profile FROM dba_users WHERE username=’user_name’; 记录用户赋予的profile |
实施步骤 |
为用户建相关profile,指定PASSWORD_GRACE_TIME为90天
在90天内,需要修改密码 |
回退方案 |
alter user user_name profile default; |
判断依据 |
到期不修改密码,密码将会失效。连接数据库将不会成功
connect username/password报错 |
实施风险 |
低 |
重要等级 |
★★★ |
备注 |
编号 |
ELK-Oracle-01-02-03 |
名称 |
密码重复使用限制 |
实施目的 |
对于采用静态口令认证技术的设备,应配置设备,使用户不能重复使用最近5次(含5次)内已使用的口令。 |
问题影响 |
密码破解的几率增加 |
系统当前状态 |
SELECT profile FROM dba_users WHERE username=’user_name’; 记录用户赋予的profile |
实施步骤 |
为用户建profile,指定PASSWORD_REUSE_MAX为5
当前使用的密码,必需在密码修改5次后才能再次被使用 |
回退方案 |
alter user user_name profile default; |
判断依据 |
重用修改5次内的密码,将不能成功
alter user username identified by password1;如果password1在5次修改密码内被使用,该操作将不能成功 |
实施风险 |
低 |
重要等级 |
★ |
备注 |
编号 |
ELK-Oracle-01-02-04 |
名称 |
密码重试限制 |
实施目的 |
对于采用静态口令认证技术的设备,应配置当用户连续认证失败次数超过6次(不含6次),锁定该用户使用的账号。 |
问题影响 |
允许暴力破解密码 |
系统当前状态 |
SELECT profile FROM dba_users WHERE username=’user_name’; 记录用户赋予的profile |
实施步骤 |
为用户建profile,指定FAILED_LOGIN_ATTEMPTS为6
如果连续6次连接该用户不成功,用户将被锁定 |
回退方案 |
alter user user_name profile default; |
判断依据 |
连续6次用错误的密码连接用户,第7次时用户将被锁定
connect username/password,连续6次失败,用户被锁定 |
实施风险 |
中 |
重要等级 |
★ |
备注 |
编号 |
ELK-Oracle-01-02-05 |
名称 |
修改默认密码 |
实施目的 |
更改数据库默认帐号的密码。 |
问题影响 |
可能被破解密码 |
系统当前状态 |
询问管理员账号密码,并记录 |
实施步骤 |
参考配置操作 1. 可通过下面命令来更改默认用户的密码: ALTER USER user_name IDENTIFIED BY passwd; 2. 下面是默认用户密码列表: CTXSYS CTXSYS DBSNMP DBSNMP LBACSYS LBACSYSMDDATA MDDATA MDSYS MDSYS DMSYS DMSYS OLAPSYS MANAGER ORDPLUGINS ORDPLUGINS ORDSYS ORDSYS OUTLN OUTLN SI_INFORMTN_SCHEMA SI_INFORMTN_SCHEMA SYS CHANGE_ON_INSTALL SYSMAN CHANGE_ON_INSTALL SYSTEM MANAGER |
回退方案 |
ALTER USER user_name IDENTIFIED BY passwd; |
判断依据 |
判定条件 不能以用户名作为密码或使用默认密码的账户登陆到数据库。 检测操作 1. 以DBA用户登陆到sqlplus中。 2. 检查数据库默认账户是否使用了用户名作为密码或默认密码。 |
实施风险 |
中 |
重要等级 |
★ |
备注 |
编号 |
ELK-Oracle-02-01-01 |
名称 |
启用日志记录功能 |
实施目的 |
数据库应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号、登录是否成功、登录时间以及远程登录时用户使用的IP地址。 |
问题影响 |
无法对用户的登陆进行日志记录 |
系统当前状态 |
|
实施步骤 |
create table login_log -- 登入登出信息表 ( session_id int not null, -- sessionid login_on_time date, -- 登入时间 login_off_time date, -- 登出时间 user_in_db varchar2(30), -- 登入的db user machine varchar2(20), -- 机器名 ip_address varchar2(20), -- ip地址 run_program varchar2(20) -- 以何程序登入 ); create or replace trigger login_on_info -- 记录登入信息的触发器 after logon on database Begin insert into login_log(session_id,login_on_time,login_of f_time,user_in_db,machine,ip_address,run_program) select AUDSID,sysdate,null,sys.login_user,machine,SYS_CO NTEXT('USERENV','IP_ADDRESS'),program from v$session where AUDSID = USERENV('SESSIONID'); --當前SESSION END; create or replace trigger login_off_info -- 记录登出信息的触发器 before logoff on database Begin update login_log set login_off_time = sysdate where session_id = USERENV('SESSIONID'); --当前SESSION exception when others then null; END; |
回退方案 |
ALTER TRIGGER 名称 DISABLE; |
判断依据 |
判定条件 登录测试,检查相关信息是否被记录 补充说明 触发器与AUDIT会有相应资源开消,请检查系统资源是否充足。特别是RAC环境,资源消耗较大。 |
实施风险 |
低 |
重要等级 |
★★★ |
备注 |
编号 |
ELK-Oracle-02-01-02 |
名称 |
记录用户对设备的操作 |
实施目的 |
数据库应配置日志功能,记录用户对数据库的操作 |
问题影响 |
无法对用户的操作进行日志记录 |
系统当前状态 |
|
实施步骤 |
create table employees_log( who varchar2(30), action varchar2(20)); when date); create or replace trigger biud_employ_copy before insert or update or delete on employees_copy declare l_action employees_log.action%type; begin if inserting then l_action:='insert'; elsif updating then l_action:='delete'; elsif deleting then l_action:='update'; else raise_application_error(-2001,'you shoule never ever get this error.'); end if; insert into employees_log(who,action,when) values(user,l_action,sysdate); end biud_employ_copy; |
回退方案 |
ALTER TRIGGER 名称 DISABLE; |
判断依据 |
|
实施风险 |
高 |
重要等级 |
★ |
备注 |
编号 |
ELK-Oracle-02-01-03 |
名称 |
记录系统安全事件 |
实施目的 |
通过设置让系统记录安全事件,方便管理员分析 |
问题影响 |
无法记录系统的各种安全事件 |
系统当前状态 |
|
实施步骤 |
参考配置操作 create table jax_event_table(eventname varchar2(30),time date); create trigger tr_startup after startup ondatabase begin insertinto jax_event_table values(ora_sysevent,sysdate); end; create trigger tr_shutdown beforeshutdownondatabase begin insertinto jax_event_table values(ora_sysevent,sysdate); end; |
回退方案 |
ALTER TRIGGER 名称 DISABLE; |
判断依据 |
记录系统安全事件 |
实施风险 |
高 |
重要等级 |
★ |
备注 |
编号 |
ELK-Oracle-02-01-04 |
名称 |
数据库审计策略 |
实施目的 |
根据业务要求制定数据库审计策略 |
问题影响 |
日志被删除后无法恢复。 |
系统当前状态 |
show parameter audit_sys_operations; show parameter audit_trail; 查看返回值,并记录. |
实施步骤 |
1、参考配置操作 SQL> alter system set audit_sys_operations=TRUE scope=spfile; SQL> alter system set audit_trail=db scope=spfile; SQL> show parameter audit; SQL> audit all on table_name; |
回退方案 |
noaudit all on table_name; 恢复audit_sys_operations, audit_trail属性 |
判断依据 |
判定条件 对审计的对象进行一次数据库操作,检查操作是否被记录。 检测操作 1. 检查初始化参数audit_trail是否设置。 2. 检查dba_audit_trail视图中或$ORACLE_BASE/admin/adump目录下是否有数据。 补充说明 AUDIT会有相应资源开消,请检查系统资源是否充足。特别是RAC环境,资源消耗较大 |
实施风险 |
低 |
重要等级 |
★ |
备注 |
编号 |
ELK-Oracle-03-01-01 |
名称 |
信任IP连接监听器 |
实施目的 |
设置只有信任的IP地址才能通过监听器访问数据库。 |
问题影响 |
数据库不安全IP访问 |
系统当前状态 |
查看$ORACLE_HOME/network/admin/sqlnet.ora |
实施步骤 |
参考配置操作 只需在服务器上的文件$ORACLE_HOME/network/admin/sqlnet.ora中设置以下行: tcp.validnode_checking = yes tcp.invited_nodes = (ip1,ip2…) |
回退方案 |
还原$ORACLE_HOME/network/admin/sqlnet.ora文件 |
判断依据 |
判定条件 在非信任的客户端以数据库账户登陆被提示拒绝。 检测操作 检查$ORACLE_HOME/network/admin/sqlnet.ora文件中是否设置参数tcp.validnode_checking和tcp.invited_nodes。 |
实施风险 |
高 |
重要等级 |
★★ |
备注 |
编号 |
ELK-Oracle-03-01-02 |
名称 |
网络数据传输安全 |
实施目的 |
使用Oracle提供的高级安全选件来加密客户端与数据库之间或中间件与数据库之间的网络传输数据 |
问题影响 |
数据传输的不安全性增加 |
系统当前状态 |
记录检查 $ORACLE_HOME/network/admin/sqlnet.ora文件 |
实施步骤 |
参考配置操作 1. 在Oracle Net Manager中选择“Oracle Advanced Security”。 2. 然后选择Encryption。 3. 选择Client或Server选项。 4. 选择加密类型。 5. 输入加密种子(可选)。 6. 选择加密算法(可选)。 7. 保存网络配置,sqlnet.ora被更新。 |
回退方案 |
还原$ORACLE_HOME/network/admin/sqlnet.ora文件 |
判断依据 |
判定条件 通过网络层捕获的数据库传输包为加密包。 检测操作 检查$ORACLE_HOME/network/admin/sqlnet.ora文件中是否设置sqlnet.encryption等参数 |
实施风险 |
高 |
重要等级 |
★ |
备注 |
编号 |
ELK-Oracle-04-01-01 |
名称 |
监听器密码 |
实施目的 |
为数据库监听器(LISTENER)的关闭和启动设置密码。 |
问题影响 |
增加数据库安全隐患 |
系统当前状态 |
查看$ORACLE_HOME/network/admin/listener.ora文件中参数PASSWORDS_LISTENER值 |
实施步骤 |
参考配置操作 $ lsnrctl LSNRCTL> change_password Old password: New password: Reenter new password: Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(H OST=prolin1)(PORT=1521)(IP=FIRST))) Password changed for LISTENER The command completed successfully LSNRCTL> save_config |
回退方案 |
set password 取消密码 |
判断依据 |
判定条件 使用lsnrctl start或lsnrctl stop命令起停listener需要密码 检测操作 检查$ORACLE_HOME/network/admin/listener.ora文件中是否设置参数PASSWORDS_LISTENER。 |
实施风险 |
高 |
重要等级 |
★★ |
备注 |
编号 |
ELK-Oracle-04-01-02 |
名称 |
连接超时限制 |
实施目的 |
在某些应用环境下可设置数据库连接超时,比如数据库将自动断开超过10分钟的空闲远程连接。 |
问题影响 |
空闲远程连接无法断开 |
系统当前状态 |
记录检查 $ORACLE_HOME/network/admin/sqlnet.ora文件 |
实施步骤 |
参考配置操作 在sqlnet.ora中设置下面参数: SQLNET.EXPIRE_TIME=10 |
回退方案 |
还原$ORACLE_HOME/network/admin/sqlnet.ora文件 |
判断依据 |
判定条件 10分钟以上的无任何操作的空闲数据库连接被自动断开 检测操作 检查$ORACLE_HOME/network/admin/sqlnet.ora文件中是否设置参数SQLNET.EXPIRE_TIME。 |
实施风险 |
高 |
重要等级 |
★ |
备注 |