1、connect sys/密码 as sysdba;drop user A cascade;/就这样用户就被删除了判断依据标记用户用途,定期建立用户列表,比较是否有非法用户实施风险高重要等级备注1.1.2 SHG-Oracle-01-01-02SHG-Oracle-01-01-02删除或锁定无效账号删除或锁定无效的账号,减少系统安全隐患。允许非法利用系统默认账号alter user username lock;/锁定用户drop user username cascade;/删除用户删除新增加的帐户首先锁定不需要的用户在经过一段时间后,确认该用户对业务确无影响的情况下,可以删除1.1.3 SHG
2、-Oracle-01-01-03SHG-Oracle-01-01-03限制超级管理员远程登录限制具备数据库超级管理员(SYSDBA)权限的用户远程登录。允许数据库超级管理员远程非法登陆查看spfile,sqlnet.ora内容在spfile中设置REMOTE_LOGIN_PASSWORDFILE=NONE来禁止SYSDBA用户从远程登陆。在sqlnet.ora中设置SQLNET.AUTHENTICATION_SERVICES=NONE来禁用 SYSDBA 角色的自动登录。还原spfile,sqlnet.ora文件配置判定条件1. 不能通过Sql*Net远程以SYSDBA用户连接到数据库。2.
3、在数据库主机上以sqlplus /as sysdba连接到数据库需要输入口令。检测操作1. 以Oracle用户登陆到系统中。2. 以sqlplus /as sysdba登陆到sqlplus环境中。3. 使用show parameter命令来检查参数REMOTE_LOGIN_PASSWORDFILE是否设置为NONE。Show parameter REMOTE_LOGIN_PASSWORDFILE4. 检查在$ORACLE_HOME/network/admin/sqlnet.ora文件中参数SQLNET.AUTHENTICATION_SERVICES是否被设置成NONE。1.1.4 SHG-Or
4、acle-01-01-04SHG-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;用第一条命令给用户赋相应的最小权限用第二条命令收回用户多余的权限还原添加或删除的权限业务测试正常1.1.5 SHG-Oracle-01-01-05SHG
5、-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;把角色赋予用户:(特别说明,授予
6、角色不是实时的。如下:)grant testrole to User_Name;二、起用角色:给用户赋予角色,角色并不会立即起作用。1角色不能立即起作用。必须下次断开此次连接,下次连接才能起作用。2.或者执行命令:有密码的角色set role testrole identified by passwd 立即生效;3无密码的角色:set role testrole;删除相应的Rolerevoke role_name user_name对应用用户不要赋予DBA Role或不必要的权限1.1.6 SHG-Oracle-01-01-06SHG-Oracle-01-01-06用户profile对用户的属
7、性进行控制,包括密码策略、资源限制等。账号安全性低. SELECT profile FROM dba_users WHERE username=user_name;记录用户赋予的profile可通过下面类似命令来创建profile,并把它赋予一个用户SQL show parameter resource_limit alter system set resource_limit=true;CREATE PROFILE profile_name LIMIT FAILED_LOGIN_ATTEMPTS 6 PASSWORD_LIFE_TIME 60 PASSWORD_REUSE_TIME 60 P
8、ASSWORD_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. 查询视图
9、dba_profiles和dba_usres来检查profile是否创建。1.1.7 SHG-Oracle-01-01-07SHG-Oracle-01-01-07数据字典保护启用数据字典保护,只有SYSDBA用户才能访问数据字典基础表。数据库安全性低.Show parameter O7_DICTIONARY_ACCESSIBILITY记录当前状态通过设置下面初始化参数来限制只有SYSDBA权限的用户才能访问数据字典。alter system set O7_DICTIONARY_ACCESSIBILITY=FALSE scope=spfile;修改O7_DICTIONARY_ACCESSIBIL
10、ITY为原来属性以普通用户登陆到数据库,不能查看X$开头的表,比如:select * from sys. x$ksppi;3. 使用show parameter命令来检查参数O7_DICTIONARY_ACCESSIBILITY是否设置为FALSE。Show parameter O7_DICTIONARY_ACCESSIBILITY1.1.8 SHG-Oracle-01-01-08SHG-Oracle-01-01-08检查DBA组用户限制在DBA组中的操作系统用户数量,通常DBA组中只有Oracle安装用户。影响组用户管理Cat /etc/passwd参考配置操作通过/etc/passwd文件
11、来检查是否有其它用户在DBA组中。#userdel username;锁定用户:1) 修改/etc/shadow文件,用户名后加*LK*2) 将/etc/passwd文件中的shell域设置成/bin/false3) #passwd -l username只有具备超级用户权限的使用者方可使用,#passwd -l username锁定用户,用#passwd d username解锁后原有密码失效,登录需输入新密码,修改/etc/shadow能保留原有密码。还原/etc/passwd文件无其它用户属于DBA组。1.2口令1.2.1 SHG-Oracle-01-02-01SHG-Oracle-01
12、-02-01缺省密码长度复杂度限制对于采用静态口令进行认证的数据库,口令长度至少6位,并包括数字、小写字母、大写字母和特殊符号4类中至少2类。增加密码被暴力破解的成功率为用户建profile,调整PASSWORD_VERIFY_FUNCTION,指定密码复杂度示例: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 r
13、aise_application_error(-20001,Password must be at least 6 characters long); 5 END IF; 6 RETURN(TRUE); 7 END; create profile TEST_PROFILE limit 2 password_verify_function MY_PASSWORD_VERIFY;alter user user_name profile default;1、判定条件修改密码为不符合要求的密码,将失败2、检测操作alter user user_name identified by passwd;将失败
14、低1.2.2 SHG-Oracle-01-02-02SHG-Oracle-01-02-02缺省密码生存周期限制对于采用静态口令认证技术的设备,帐户口令的生存期不长于90天,减少口令安全隐患。密码被非法利用,并且难以管理为用户建相关profile,指定PASSWORD_GRACE_TIME为90天在90天内,需要修改密码3、判定条件到期不修改密码,密码将会失效。连接数据库将不会成功connect username/password报错1.2.3 SHG-Oracle-01-02-03SHG-Oracle-01-02-03密码重复使用限制对于采用静态口令认证技术的设备,应配置设备,使用户不能重复使
15、用最近5次(含5次)内已使用的口令。密码破解的几率增加为用户建profile,指定PASSWORD_REUSE_MAX为当前使用的密码,必需在密码修改次后才能再次被使用重用修改次内的密码,将不能成功alter user username identified by password1;如果password1在次修改密码内被使用,该操作将不能成功1.2.4 SHG-Oracle-01-02-04SHG-Oracle-01-02-04密码重试限制对于采用静态口令认证技术的设备,应配置当用户连续认证失败次数超过6次(不含6次),锁定该用户使用的账号。允许暴力破解密码为用户建profile,指定FAI
16、LED_LOGIN_ATTEMPTS为如果连续次连接该用户不成功,用户将被锁定连续次用错误的密码连接用户,第次时用户将被锁定connect username/password,连续次失败,用户被锁定中1.2.5 SHG-Oracle-01-02-05SHG-Oracle-01-02-05修改默认密码更改数据库默认帐号的密码。可能被破解密码询问管理员账号密码,并记录1. 可通过下面命令来更改默认用户的密码:ALTER USER user_name IDENTIFIED BY passwd;2. 下面是默认用户密码列表:CTXSYS CTXSYSDBSNMP DBSNMPLBACSYS LBACS
17、YSMDDATA MDDATAMDSYS MDSYSDMSYS DMSYSOLAPSYS MANAGERORDPLUGINS ORDPLUGINSORDSYS ORDSYSOUTLN OUTLNSI_INFORMTN_SCHEMA SI_INFORMTN_SCHEMASYS CHANGE_ON_INSTALLSYSMAN CHANGE_ON_INSTALLSYSTEM MANAGER不能以用户名作为密码或使用默认密码的账户登陆到数据库。2. 检查数据库默认账户是否使用了用户名作为密码或默认密码。2日志配置2.1.1 SHG-Oracle-02-01-01SHG-Oracle-02-01-01启
18、用日志记录功能数据库应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号、登录是否成功、登录时间以及远程登录时用户使用的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
19、), - 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_off_time,user_in_db,machine,ip_address,run_program)select AUDSID,sysdate,null,sys.login_user,machine,SYS_CONTEXT(USERENV,I
20、P_ADDRESS),program from v$session where AUDSID = USERENV(SESSIONID -當前SESSIONEND;create or replace trigger login_off_info - 记录登出信息的触发器before logoff on database Begin update login_log set login_off_time = sysdate where session_id = USERENV( -当前SESSION exception when others then null;ALTER TRIGGER 名称
21、DISABLE;drop trigger 名称;登录测试,检查相关信息是否被记录补充说明触发器与AUDIT会有相应资源开消,请检查系统资源是否充足。特别是RAC环境,资源消耗较大。2.1.2 SHG-Oracle-02-01-02SHG-Oracle-02-01-02记录用户对设备的操作数据库应配置日志功能,记录用户对数据库的操作 无法对用户的操作进行日志记录create table employees_log( who varchar2(30), action varchar2(20); when date);create or replace trigger biud_employ_cop
22、y 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 delete elsif deleting then 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;2.1.3 SHG-Oracle-02-01-03SHG-Oracle-02-01-03记录系统安全事件通过设置让系统记录安全事件,方便管理员分析无法记录系统的各种安
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1