作者: 刘志斌 原由:中计在线
戒备加密口令泄漏
1.哄骗“起码权限”准绳,只管即使限定可存取加密口令用户的人数
在数据库中反省具有存取SYS.USER$或DBA_USERS权限的用户,并从不需求的用户中发出权限。但是操纵并不复杂,这也是数据库解决义务的特点。每一厂商的软件中都完成了SQL规范之外的扩年夜,而且每一版本都有不同。限于篇幅,不行能对完整相对本文中提议的门径截止留意的注解声名,仅以此处反省权限为例展现DBA义务的巨年夜性。本文中如未声名,则默许版本为11g。哄骗于11g已往版本时,请读者确认能否需求删改。
反省权限紧张的器材是数据字典视图(也可以直接存取SYS用户的基表,但基表的定义没有宣布,官方不提供技能支撑)。视图DBA_TAB_PRIVS存放了数据库中数据器材上的授权信息。假定用户A1和A2可以存取SYS.USER$表,反省在SYS用户USER$上有存取权限的用户,可执行如下语句:
SELECT GRANTEE FROM DBA_TAB_PRIVS WHERE TABLE_NAME=‘USER$’;
我们已经晓得用户A1和A2,都可以存取SYS.USER$表,但为什么不才面盘问成就中没有泛起呢?这是由于在Oracle的权限解决中,对一个表的存取权限还可以经由历程体系权限或脚色授予,而DBA_TAB_PRIVS中仅列出了直接的器材权限的授予信息。对于SYS.USER$表而言,体系权限SELECT ANY DICTIONARY和脚色DBA都包括了这一表的存取权限。以是完好列出完整相对可存取这一表的用户应添加下面两条盘问语句的成就:
SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE PRIVILEGE=‘SELECT ANY DICTIONARY’;
SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE=‘DBA’;
经由历程下面的盘问语句,仍是会脱漏某些用户。假如把DBA脚色授权给另一脚色Admin,然后又将Admin脚色授权给另一用户NEWU,则此用户可存取SYS.USER$表,但在上述三个盘问中并没有直接列出NEWU的名字(脚色Admin会出面前目今当今第三个盘问语句的成就中)。
显然,Oracle的授权构成了一棵树,完好的信息需求一段PL/SQL按次来完成。(对于11g已往版本,还需求反省对DBA_USERS视图有存取权限的用户和脚色。SELECT_CATALOG_ROLE脚色如被授权,则可以存取所罕见据字典视图,但不能存取SYS的基表。)
2.设定对加密口令存取的审计
假如以后体系中只要SYSDBA可以存取USER$,则一个变通要领是审计SYSDBA的完整相对操纵,其中也包括对USER$的存取。设置初始化参数audit_sys_operations =TRUE,从头启动数据库后激活对SYSDBA操纵的审计。
审计文件的存放位置为:
11g版本中为:$ORACLE_BASE/admin/SID/ adump/ *.aud
11g已往版本为: $ORACLE_HOME/rdbms/audit/ *.aud。
严厉限定和监视SYSDBA用户活动的最好要领是哄骗Oracle Database Vault组件。
3.在操纵体系级限定对数据库数据文件的存取
SYSDBA用户的加密口令存放在$ORACLE_HOME/dbs下的口令文件orapw〈SID〉中。SYS.USER$表非常需求在数据文件中存放,大都为SYSTEM表空间的第一个数据文件中。别的,EXPORT文件、REDOLOG文件以及TRACE文件中都年夜约泛起加密口令。需求严厉限定上述文件的存取权限。
4.戒备搜集窃听
在建立毗邻时,客户端需求向办事器端传送用户名和口令,而且办事器端与客户端需求彼此发送这次会话哄骗的SESSION KEY。Oracle收受承受Diffie-Hellman KEY交换算法和本人开辟的O3LOGON协议完成上述义务。算法的细节非常已在互联网上被地下。建立毗邻时上述信息假如被截获,非常可以被用来破解口令。更为严峻的是,假如黑客事前已经获得加密口令,联合SESSION KEY的信息,则不需求任何破解,执行复杂回复运算就可算出口令明文。
别的,希图SID时不要哄骗如ORCL、TEST、PROD等常用名字,设定PORT号为远远大于1521的数,都可以添加黑客SID扫描的难度和时候。
5. 删除旧版的加密口令
存放在Oracle 11g数据库中的已往版本的加密口令是口令破解器材的一个打破口。在没有兼容性限定的体系中,可以思索从体系中删除旧版口令,从而添加破解难度。
详细操纵如下:
在SQLNET.ORA中添加一行:SQLNET.ALLOWED_LOGON_VERSION=11(Oracle手册中格局引见有错误,不能加括号:…=(11)),指定最低版本。
以SYSDBA登录后,执行以下语句,删除旧版口令。
update sys.user$ set password=NULL;
delete from user_history$;
commit;
设置删改后,基于OCI的器材如SQLPLUS、10gR1和10gR2版本都可以正常登录,而JDBC type-4 则只要11g版本才允许登录。
版权声明:
原创作品,允许转载,转载时请务必以超链接情势标明文章 原始原由 、作者信息和本声明。不然将清查法律责任。