Oracle数据库系统安全配置手册.doc

上传人:美****子 文档编号:77549030 上传时间:2023-03-15 格式:DOC 页数:23 大小:72.50KB
返回 下载 相关 举报
Oracle数据库系统安全配置手册.doc_第1页
第1页 / 共23页
Oracle数据库系统安全配置手册.doc_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《Oracle数据库系统安全配置手册.doc》由会员分享,可在线阅读,更多相关《Oracle数据库系统安全配置手册.doc(23页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Oracle数据库系统安全配置本标准适用于Unix/Linux操作系统下的Oracle数据库系统,版本为8i、9i、10g。1 将Oracle用户设置为DBA组的成员查看 dba组下的成员是否有Oracle用户:cat /etc/group |grep dba 若Oracle用户不在dba组,则将其加入:usermod -G dba 用户名2 最小权限使用规则加固目的1 应该只提供最小权限给用户(包括SYSTEM和OBJECT权限)2 从PUBLIC组中撤回不必要的权限或角色。(如:UTL_SMTP、UTL_TCP、UTL_HTTP、UTL_、DBMS_SQL、DBMS_SYS_SQL、DBM

2、S_BACKUP_RESTORE)加固方法撤销不需要的权限和角色,使用SQL语句REVOKE EXECUTE ON SYS.UTL_HTTP FROM PUBLIC;REVOKE EXECUTE ON SYS.UTL_ PUBLIC;REVOKE EXECUTE ON SYS.UTL_SMTP FROM PUBLIC;REVOKE SELECT ON ALL_USERS FROM PUBLIC;验证:OEM管理器中,安全性-用户-PUBLIC-已授予的对象权限col pp format a35SELECT s.privilege| ON |s.owner|.|NVL(l.longname, s

3、.table_name) pp, s.grantable FROMsys.dba_tab_privs s, javasnm l WHERE s.table_name = l.short(+) AND s.grantee=PUBLICand s.privilege = EXECUTE and s.table_name like UTL%;3 修改所有系统账户默认口令,锁定不需要的账户加固目的为了安全考虑,应用锁定Oracle当中不需要的用户;或改变缺省用户的密码。加固方法在sqlplus中查看所有账户及其状态:select username,account_status from dba_use

4、rs;修改默认账户的口令:ALTER USER user_name IDENTIFIED BY password;锁定不需要的用户,使用SQL语句:ALTER USER user PASSWORD EXPIRE;注意锁定MGMT_VIEW、DBSNMP、SYSMAN帐号或修改密码。(如果要使用DBConsole ,MGMT_VIEW,DBSNMP 、SYSMAN不能锁定,请修改密码)DIP、EXFSYS、OUTLN、TSMSYS、WMSYS默认已锁定,请验证。4 删除多余自建账号drop user user_name cascade;5 $ORACLE_HOME/bin目录权限保护加固目的确保

5、对$ORACLE_HOME/bin目录的访问权限尽可能少加固方法运行命令:chown -R oracle:dba $ORACLE_HOME/bin (此命令在root用户下操作)验证:ls -l $ORACLE_HOME/bin 确保该目录下的文件属主为oracle用户,且其他用户没有写权限。6 监听listener作ip访问限制修改(需重启监听)$ORACLE_HOME/network/admin/sqlnet.ora :tcp.validnode_checking=yestcp.invited_nodes=(localhost, 本机ip, 应用服务器ip,管理机ip等)重启监听:lsnr

6、ctl stop;lsnrctl start。7 关闭远程操作系统认证加固目的设置正确识别客户端用户,并限制操作系统用户数量(包括管理员权限、root权限、普通用户权限等)加固方法1 使用文本方式,打开数据库配置文件init.ora;设置参数REMOTE_OS_AUTHENT值为FALSE (SAP 系统不可设置为False)2 在数据库的账户管理中删除不必要的操作系统账号设置(需重启数据库):alter system set remote_os_authent=false scope=spfile;验证:SQL show parameter remote_os_authentNAME TYP

7、E VALUE- - -remote_os_authent boolean FALSE8 修改默认的监听端口修改(需重启监听)$ORACLE_HOME/network/admin/listener.ora:(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)修改PORT的值为新的监听端口-(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 3521)确认:lsnrctl status9 监听程序的管理加固目的通过设置listener.ora文件中的参数ADMIN_RESTRIC

8、TIONS_listener_name来防止远程对监听程序的非授权管理。加固方法在$ORACLE_HOME/network/admin/listener.ora文件中,设置ADMIN_RESTRICTIONS_(listener_name)=ON。LISTENER加访问密码:(only 9i)$ORACLE_HOME/network/admin/listener.oraPASSWORDS_LISTENER =10g : (监听默认为本地操作系统帐号认证,即禁止远程管理)验证:Lsnrctl status,查看输出Security ON: Local OS Authentication10 密码

9、策略加固目的在Oracle,我们可以通过修改用户概要文件来设置密码的安全策略,可以自定义密码的复杂度。在概要文件中有以下参数是和密码安全有关心的:FAILED_LOGIN_ATTEMPTS:最大错误登录次数PASSWORD_GRACE_TIME:口令失效后锁定时间PASSWORD_LIFE_TIME:口令有效时间PASSWORD_LOCK_TIME:登录超过有效次数锁定时间PASSWORD_REUSE_MAX:口令历史记录保留次数PASSWORD_REUSE_TIME:口令历史记录保留时间PASSWORD_VERIFY_FUNCTION:口令复杂度审计函数加固方法解释:PASSWORD_LIF

10、E_TIME:口令有效时间口令使用期限(按照国网要求,三个月修改一次密码,即90天)。password_grace_time 指的是在你的密码已经过期以后, 第一次登录时间开始往后统计, 使系统可以使用的日期限度.PASSWORD_REUSE_TIME是重用密码的最小时间间隔,单位是天。可以给出整数或分数,如1/1440表示1分钟(出于效率的考虑,oracle不会每分钟都去进行检查,一般来说,有5分钟左右的误差,因此如果这个数小于1/144则没有多大的意义)。PASSWORD_REUSE_MAX是重用密码前更换密码的最小次数。ALTER PRO LIMIT FAILED_LOGIN_ATTEM

11、PTS 60;(三级系统应设置在10次以内,二级系统在20次以内)ALTER PRO LIMIT PASSWORD_LOCK_TIME 0.5;修改Oracle提供的验证函数文件$ORACLE_HOME/rdbms/admin/utlpwdmg.sql其中IF length(password) 4 一行改为 8,并将最后一段修改为ALTER PRO LIMITPASSWORD_LIFE_TIME 90FAILED_LOGIN_ATTEMPTS 20 PASSWORD_LOCK_TIME 30/1440PASSWORD_VERIFY_FUNCTION verify_function;在sqlpl

12、us中执行start $ORACLE_HOME/rdbms/admin/utlpwdmg.sql设置后,密码复杂度必须包含字母、数字、标点(密码不区分大小写),最小长度为8。最大错误登录次数为20次,账号锁定时间为30分钟验证:OEM安全性概要文件select * from dba_profiles; 创建验证函数:(建议使用sys来创建该函数,否则可能出现问题)CREATE OR REPLACE FUNCTION verify_function(username varchar2, password varchar2, old_password varchar2) RETURN boolea

13、n IS n boolean; m integer; differ integer; isdigit boolean; ischar boolean; ispunct boolean; digitarray varchar2(20); punctarray varchar2(25); chararray varchar2(52);BEGIN digitarray:= 0123456789; chararray:= abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ; punctarray:=!#$%&()*+,-/:;?_; - Check

14、 if the password is same as the username IF NLS_LOWER(password) = NLS_LOWER(username) THEN raise_application_error(-20001, Password same as or similar to user); END IF; - Check for the minimum length of the password IF length(password) 8 THEN raise_application_error(-20002, Password length less than

15、 8); END IF; - Check if the password is too simple. A dictionary of words may be - maintained and a check may be made so as not to allow the words - that are too simple for the password. IF NLS_LOWER(password) IN (welcome, database, account, user, password, oracle, computer, abcd) THEN raise_applica

16、tion_error(-20002, Password too simple); END IF; - Check if the password contains at least one letter, one digit and one - punctuation mark. - 1. Check for the digit isdigit:=FALSE; m := length(password); FOR i IN 1.10 LOOP FOR j IN 1.m LOOP IF substr(password,j,1) = substr(digitarray,i,1) THEN isdi

17、git:=TRUE; GOTO findchar; END IF; END LOOP; END LOOP; IF isdigit = FALSE THEN raise_application_error(-20003, Password should contain at least one digit, one character and one punctuation); END IF; - 2. Check for the character ischar:=FALSE; FOR i IN 1.length(chararray) LOOP FOR j IN 1.m LOOP IF sub

18、str(password,j,1) = substr(chararray,i,1) THEN ischar:=TRUE; GOTO findpunct; END IF; END LOOP; END LOOP; IF ischar = FALSE THEN raise_application_error(-20003, Password should contain at least one digit, one character and one punctuation); END IF; - 3. Check for the punctuation ispunct:=FALSE; FOR i

19、 IN 1.length(punctarray) LOOP FOR j IN 1.m LOOP IF substr(password,j,1) = substr(punctarray,i,1) THEN ispunct:=TRUE; GOTO endsearch; END IF; END LOOP; END LOOP; IF ispunct = FALSE THEN raise_application_error(-20003, Password should contain at least one digit, one character and one punctuation); END

20、 IF; - Check if the password differs from the previous password by at least - 3 letters IF old_password IS NOT NULL THEN differ := length(old_password) - length(password); IF abs(differ) 3 THEN IF length(password) length(old_password) THEN m := length(password); ELSE m := length(old_password); END I

21、F; differ := abs(differ); FOR i IN 1.m LOOP IF substr(password,i,1) != substr(old_password,i,1) THEN differ := differ + 1; END IF; END LOOP; IF differ 3 THEN raise_application_error(-20004, Password should differ by at least 3 characters); END IF; END IF; END IF; - Everything is fine; return TRUE ;

22、RETURN(TRUE);END;/11 数据库操作审计加固目的ORACLE数据库具有对其内部所有发生的活动的审计能力,审计日志一般放在sys.aud$表中,也可以写入操作系统的审计跟踪文件中。可审计的活动有三种类型:登录尝试、数据库活动和对象存取,缺省情况下,数据库不启动审计,要求管理员配置数据库后才能启动审计。加固方法使用文本方式,打开数据库配置文件init.ora,更改以下参数配置AUDIT_TRAILTrue。init.ora所在路径:$ORACLE_HOME/database/ (windows)$ORACLE_HOME/dbs/ (UnixLinux)接下来在sqlplus中执行以

23、下两条命令:alter system set audit_trail=OS scope=spfile;alter system set Audit_sys_operations=true scope=spfile;默认为false,当设置为true时,所有sys用户(包括以sysdba,sysoper身份登录的用户)的操作都会被记录验证:SQL show parameter auditNAME TYPE VALUE- - -audit_sys_operations boolean TRUEaudit_trail string OSTRANSACTION_AUDITING :the transa

24、ction layer generates a special redo record which contains session and user information.These records might be useful if using a redo log analysis tool.AUDIT_指定了当审外部审记文件目标存储路径,其缺省值是$ORACLE_HOME/rdbms/auditaudit_ string /opt/oracle/admin/cognos/adump监听器日志 错误登录/opt/oracle/product/10.2.0/db_1/network/l

25、og/listener.log12 安全补丁的更新加固目的及时更新数据库的安全补丁,减少数据库系统可能受到的攻击。加固方法查看,下载并安装相关的安全补丁。参考Oracle厂商建议,仅对已发现的特定漏洞或缺陷安装相应补丁。13 Oracle 数据字典的保护加固目的设置保护后,可防止其他用户(具有ANY system privileges)使用数据字典时,具有相同的ANY权限。加固方法使用文本方式,打开数据库配置文件init.ora;更改以下参数O7_DICTIONARY_ACCESSIBILITY。1Oracle 9i、10g:缺省值是False2Oracle 8i:缺省值是True,需要改成F

26、alse3如果用户必须需要该权限,赋予其权限SELECT ANY DICTIONARY验证:SQL show parameter O7_DICTIONARY_ACCESSIBILITYNAME TYPE VALUE- - -O7_DICTIONARY_ACCESSIBILITY boolean FALSE14 关闭Extproc功能加固目的由于extproc存在安全问题允许用户不进行身份认证就可以调用系统函数,因此,如果不需要该功能必须关闭。加固方法修改TNSNAMES.ORA和LISTENER.ORA文件,删除以下条目:l icache_extprocl PLSExtprocl Extpro

27、ctnsnames.ora :#EXTPROC_CONNECTION_DATA =# (DESCRIPTION =# (ADDRESS_LIST =# (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)# )# (CONNECT_DATA =# (SID = PLSExtProc)# (PRESENTATION = RO)# )# )listener.ora :# (SID_DESC =# (SID_NAME = PLSExtProc)# (ORACLE_HOME = /opt/oracle/product/10.2.0/db_1)# (PROGRAM =

28、extproc)# )# (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)15 DBSNMP用户的保护加固目的Oracle数据库系统如果采用典型安装后,自动创建一个叫做DBSNMP的用户,该用户允许Oracle系统的智能代理(intelligent Agent),该用户的缺省密码也是“DBSNMP”。如果忘记修改该用户的口令,任何人都可以通过该用户存取数据库系统。其他有威胁的帐号还有:CTXSYS,MDSYS,ORDPLUGINS,ORDSYS,OUTLN等。加固方法锁定该账号,或者更换密码16 SYS用户加固目的Oracle数据库系统安装后,自动创建一个

29、叫做SYS的数据库管理员用户,当该用户sysdba方式连接数据库时,便具有全部系统权限,因而对它的保护尤为重要。加固方法更换SYS用户密码,符合密码复杂度要求;新建一个DBA用户,作为日常管理使用。17 本地缓存区溢出防护加固目的oracle程序存在本地缓冲区溢出。在传递命令行参数给oracle程序时缺少充分的边界缓冲区检查,可导致以oracle进程权限在系统上执行任意代码,需要进行有效加固。加固方法以系统管理员权限登录操作系统,进入Oracle安装目录运行:chmod o-x oracle加强对Oracle文件的可执行控制验证非oracle帐号对该文件没有读取、运行权限:ll $ORACLE

30、_HOME/bin/oracle-rwsr-s- 1 oracle dba 110758976 2019-01-23 /opt/oracle/product/10.2.0/db_1/bin/oraclechmod o-x $ORACLE_HOME/bin/oracle18 日志目录SQL show parameter dumpNAME TYPE VALUEbackground_core_dump string partialbackground_dump_dest string /opt/oracle/admin/portaldb/bdumpcore_dump_dest string /opt

31、/oracle/admin/portaldb/cdumpmax_dump_ string UNLIMITEDshadow_core_dump string partialuser_dump_dest string /opt/oracle/admin/portaldb/udumpSQL show parameter auditNAME TYPE VALUEaudit_ string /opt/oracle/admin/portaldb/adump19 启用资源限制Profile 分两部分(资源参数和密码参数),resource_limit为 TRUE 限定资源参数(resource parame

32、ters)设置有效;不管 resource_limit 的值为 TRUE 或 FALSE密码参数(password parameters)设置始终有效。alter system set resource_limit=true scope=both;常用资源参数(除非应用程序有明确的资源规划,一般不需修改):CPU_PER_SESSION、CPU_PER_CALL、LOGICAL_READS_PER_SESSION、LOGICAL_READS_PER_CALL、IDLE_TIME、CONNECT_TIME、PRIVATE_SGA20 监听器跟踪级别可根据需要设定监听级别,开启跟踪会对性能有所影响

33、。监听器跟踪级别有四个状态:OFF - 未启用跟踪功能,是默认值。USER - 用户级别,标识用户导致的错误条件。ADMIN - 数据库管理员级别,标识特定的安装问题。SUPPORT - 客户支持人员级别,跟踪文件可能会变得很大。建议在进行网络问题诊断时开启跟踪功能。 LSNRCTL set trc_directory /network/trace LSNRCTL set trc_ LSNRCTL set trc_level LSNRCTL save_config21 XDB 服务Oracle XDB 是 Oracle 的 XML 数据库,Oracle XDB 数据可以通过基于 HTTP 服务

34、的8080端口或者基于 FTP 服务的2100端口访问。XDB 的 HTTP 和 FTP 服务存在多个缓冲区溢出问题,远程攻击者可以利用这些漏洞对服务进行拒绝服务攻击,精心提交字符串数据可能以服务进程权限在系统上执行任意指令。show parameter dispatchers 如为空,表示无该服务。去掉相应的数据库的初始化参数中的如下行: dispatchers=(PROTOCOL=TCP) (SERVICE=sidXDB) 说明:sid 为数据库的实例名,再重启数据库。22 SYS.DBMS_DEFER_SYS.DELETE_TRAN 存在 SQL 注入漏洞DELETE_TRAN 对 DE

35、STINATION 参数的处理存在问题,可能导致 SQL 注入攻击。攻击者利用该漏洞可以提升权限,还可以以系统管理员权限执行 SQL 命令。查看哪些用户有执行权限:col pp format a35SELECT s.privilege| ON |s.owner|.|NVL(l.longname, s.table_name) pp, s.grantable, s.grantee FROMsys.dba_tab_privs s, javasnm l WHERE s.table_name = l.short(+)and s.privilege = EXECUTE and s.table_name l

36、ike DBMS_DEFER_SYS%;回收权限:REVOKE EXECUTE ON SYS. DBMS_DEFER_SYS FROM DBA;REVOKE EXECUTE ON SYS. DBMS_DEFER_SYS FROM WMSYS;23 DBMS_AQELM 缓冲区溢出漏洞由于没有对其传入参数进行缓冲区边界检查,当传入超长字符串时,就会引起缓冲区溢出。攻击者利用此漏洞可以在服务器上执行任意代码。默认情况下,属于 AQ_ADMINISTRATOR_ROLE 角色的用户才有 DBMS_AQELM 包的执行权限。SELECT s.privilege| ON |s.owner|.|NVL(l

37、.longname, s.table_name) pp, s.grantable, s.grantee FROMsys.dba_tab_privs s, javasnm l WHERE s.table_name = l.short(+)and s.privilege = EXECUTE and s.table_name like DBMS_AQELM%;回收权限:REVOKE EXECUTE ON SYS. DBMS_AQELM FROM AQ_ADMINISTRATOR_ROLE;REVOKE EXECUTE ON SYS. DBMS_AQELM FROM EXECUTE_CATALOG_R

38、OLE;REVOKE EXECUTE ON SYS. DBMS_AQELM FROM SYSTEM;24 UTL_TCP 、DBMS_RANDOM 包utl_tcp 包允许 Oracle 用户通过 TCP 建立连接,从而从网络上得到可执行文件。这个包的使用权限应该受到限制。DBMS_RANDOM包可被用来加密存储的数据。通常,大多数用户不应该具有加密数据的权限,因为如果没有安全的生成、保存和管理密钥的话被加密的数据将不可恢复。revoke EXECUTE on sys.utl_tcp from PUBLIC;revoke EXECUTE on sys.dbms_random from PUBLIC; 第 23 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 文案大全

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com