




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
附件四:Oracle数据库系统安全配置本标准适用于Unix/Linux操作系统下的Oracle数据库系统,版本为8i、9i、10g。1 安全补丁的更新加固目的及时更新数据库的安全补丁,减少数据库系统可能受到的攻击。加固方法查看,下载并安装相关的安全补丁。参考Oracle厂商建议,仅对已发现的特定漏洞或缺陷安装相应补丁。2 $ORACLE_HOME/bin目录权限保护加固目的确保对$ORACLE_HOME/bin目录的访问权限尽可能少加固方法运行命令:chown R oracle:dba $ORACLE_HOME/bin验证:ls l $ORACLE_HOME/bin 确保该目录下的文件属主为oracle用户,且其他用户没有写权限。3 Oracle 数据字典的保护加固目的设置保护后,可防止其他用户(具有ANY system privileges)使用数据字典时,具有相同的ANY权限。加固方法使用文本方式,打开数据库配置文件init.ora;更改以下参数O7_DICTIONARY_ACCESSIBILITY。1Oracle 9i、10g:缺省值是False2Oracle 8i:缺省值是True,需要改成False3如果用户必须需要该权限,赋予其权限SELECT ANY DICTIONARY验证:SQL show parameter O7_DICTIONARY_ACCESSIBILITYNAME TYPE VALUE- - -O7_DICTIONARY_ACCESSIBILITY boolean FALSE4 加强访问控制加固目的设置正确识别客户端用户,并限制操作系统用户数量(包括管理员权限、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 TYPE VALUE- - -remote_os_authent boolean FALSE5 监听程序的管理加固目的通过设置listener.ora文件中的参数ADMIN_RESTRICTIONS_listener_name来防止远程对监听程序的非授权管理。加固方法在listener.ora文件中,设置ADMIN_RESTRICTIONS_(listener_name)=ON。LISTENER加访问密码:(only 9i)$ORACLE_HOME/network/admin/listener.oraPASSWORDS_LISTENER =10g : (监听默认为本地操作系统帐号认证,即禁止远程管理)验证:Lsnrctl status,查看输出Security ON: Local OS Authentication6 关闭Extproc功能加固目的由于extproc存在安全问题允许用户不进行身份认证就可以调用系统函数,因此,如果不需要该功能必须关闭。加固方法修改TNSNAMES.ORA和LISTENER.ORA文件,删除以下条目:l icache_extprocl PLSExtprocl Extproctnsnames.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 = extproc)# )# (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)7 密码文件管理加固目的配置密码文件的使用方式加固方法使用文本方式,打开数据库配置文件init.ora;设置参数REMOTE_LOGIN_PASSWORD_FILE=NONE.( 只能使用OS)None: 使得oracle不使用密码文件,只能使用OS认证,不允许通过不安全网络进行远程管理。Exclusive: 可以使用唯一的密码文件,但只限一个数据库。密码文件中可以包括除了sys用户的其他用户。Shared: 可以在多个数据库上使用共享的密码文件。但是密码文件中只能包含sys用户。设置:(需重启数据库)alter system set remote_login_passwordfile=none scope=spfile;验证:SQL show parameter remote_login_passwordfileNAME TYPE VALUE- - -remote_login_passwordfile string NONE8 用户账号管理加固目的为了安全考虑,应用锁定Oracle当中不需要的用户;或改变缺省用户的密码。加固方法锁定不需要的用户,使用SQL语句:ALTER USER user PASSWORD EXPIRE;注意锁定MGMT_VIEW、DBSNMP、SYSMAN帐号或修改密码。(如果要使用DBConsole ,DBSNMP 、SYSMAN不能锁定,请修改密码)DIP、EXFSYS、OUTLN、TSMSYS、WMSYS默认已锁定,请验证。9 最小权限使用规则加固目的1 应该只提供最小权限给用户(包括SYSTEM和OBJECT权限)2 从PUBLIC组中撤回不必要的权限或角色。(如:UTL_SMTP、UTL_TCP、UTL_HTTP、UTL_FILE、DBMS_RANDON、DBMS_SQL、DBMS_SYS_SQL、DBMS_BACKUP_RESTORE)加固方法撤销不需要的权限和角色,使用SQL语句REVOKE EXECUTE ON SYS.UTL_HTTP FROM PUBLIC;REVOKE EXECUTE ON SYS.UTL_FILE FROM 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.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%;10 DBSNMP用户的保护加固目的Oracle数据库系统如果采用典型安装后,自动创建一个叫做DBSNMP的用户,该用户允许Oracle系统的智能代理(intelligent Agent),该用户的缺省密码也是“DBSNMP”。如果忘记修改该用户的口令,任何人都可以通过该用户存取数据库系统。其他有威胁的帐号还有:CTXSYS,MDSYS,ORDPLUGINS,ORDSYS,OUTLN等。加固方法锁定该账号,或者更换密码11 SYS用户加固目的Oracle数据库系统安装后,自动创建一个叫做SYS的数据库管理员用户,当该用户sysdba方式连接数据库时,便具有全部系统权限,因而对它的保护尤为重要。加固方法更换SYS用户密码,符合密码复杂度要求;新建一个DBA用户,作为日常管理使用。12 密码策略加固目的在Oracle,我们可以通过修改用户概要文件来设置密码的安全策略,可以自定义密码的复杂度。在概要文件中有以下参数是和密码安全有关心的:FAILED_LOGIN_ATTEMPTS:最大错误登录次数PASSWORD_GRACE_TIME:口令失效后锁定时间PASSWORD_LIFE_TIME:口令有效时间PASSWORD_LOCK_TIME:登录超过有效次数锁定时间PASSWORD_REUSE_MAX:口令历史记录保留次数PASSWORD_REUSE_TIME:口令历史记录保留时间PASSWORD_VERIFY_FUNCTION:口令复杂度审计函数加固方法解释:PASSWORD_LIFE_TIME:口令有效时间口令使用期限(应用系统帐号暂不修改)。password_grace_time 指的是在你的密码已经过期以后, 第一次登录时间开始往后统计, 使系统可以使用的日期限度.PASSWORD_REUSE_TIME是重用密码的最小时间间隔,单位是天。可以给出整数或分数,如1/1440表示1分钟(出于效率的考虑,oracle不会每分钟都去进行检查,一般来说,有5分钟左右的误差,因此如果这个数小于1/144则没有多大的意义)。PASSWORD_REUSE_MAX是重用密码前更换密码的最小次数。ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS 60;ALTER PROFILE default LIMIT PASSWORD_LOCK_TIME 0.5;修改Oracle提供的验证函数文件$ORACLE_HOME/rdbms/admin/utlpwdmg.sql其中IF length(password) 4 一行改为 8,并将最后一段修改为ALTER PROFILE DEFAULT LIMITFAILED_LOGIN_ATTEMPTS 60PASSWORD_LOCK_TIME 30/1440PASSWORD_VERIFY_FUNCTION verify_function;执行start utlpwdmg.sql设置后,密码复杂度必须包含字母、数字、标点(密码不区分大小写),最小长度为8。最大错误登录次数为60次,账号锁定时间为30分钟验证:OEM安全性概要文件select * from dba_profiles; 创建验证函数:CREATE OR REPLACE FUNCTION verify_function(username varchar2, password varchar2, old_password varchar2) RETURN boolean 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 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 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_application_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 isdigit:=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 substr(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 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 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 IF; 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 ; RETURN(TRUE);END;/ALTER PROFILE DEFAULT LIMITFAILED_LOGIN_ATTEMPTS 60PASSWORD_LOCK_TIME 30/1440PASSWORD_VERIFY_FUNCTION verify_function;13 数据库操作审计加固目的ORACLE数据库具有对其内部所有发生的活动的审计能力,审计日志一般放在sys.aud$表中,也可以写入操作系统的审计跟踪文件中。可审计的活动有三种类型:登录尝试、数据库活动和对象存取,缺省情况下,数据库不启动审计,要求管理员配置数据库后才能启动审计。加固方法使用文本方式,打开数据库配置文件init.ora;更改以下参数配置AUDIT_TRAILTrue。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 transaction 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_FILE_DEST指定了当审外部审记文件目标存储路径,其缺省值是$ORACLE_HOME/rdbms/audit/ipeipei/blog/item/2b3759825da6d4a20cf4d271.html/ruixj/archive/2007/04/17/1568095.aspxaudit_file_dest string /opt/oracle/admin/cognos/adump监听器日志 错误登录/opt/oracle/product/10.2.0/db_1/network/log/listener.log14 本地缓存区溢出防护加固目的oracle程序存在本地缓冲区溢出。在传递命令行参数给oracle程序时缺少充分的边界缓冲区检查,可导致以oracle进程权限在系统上执行任意代码,需要进行有效加固。加固方法以系统管理员权限登录操作系统,进入Oracle安装目录运行:chmod o-x oracle加强对Oracle文件的可执行控制验证非oracle帐号对该文件没有读取、运行权限:ll $ORACLE_HOME/bin/oracle-rwsr-s- 1 oracle dba 110758976 2008-01-23 /opt/oracle/product/10.2.0/db_1/bin/oraclechmod o-x $ORACLE_HOME/bin/oracle15 监听listener作ip访问限制修改(需重启监听)$ORACLE_HOME/network/admin/sqlnet.ora :tcp.validnode_checking=yestcp.invited_nodes=(localhost, 本机ip, 应用服务器ip,管理机ip等)注:对二层结构的应用,不需设置该选项。16 修改默认的监听端口修改(需重启监听)$ORACLE_HOME/network/admin/listener.ora:(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 1521)修改PORT的值为新的监听端口-(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 3521)确认:lsnrctl status17 日志目录SQL show parameter dumpNAME TYPE VALUE- - -background_core_dump string partialbackground_dump_dest string /opt/oracle/admin/portaldb/bdumpcore_dump_dest string /opt/oracle/admin/portaldb/cdumpmax_dump_file_size string UNLIMITEDshadow_core_dump string partialuser_dump_dest string /opt/oracle/admin/portaldb/udumpSQL show parameter auditNAME TYPE VALUE- - -audit_file_dest string /opt/oracle/admin/portaldb/adump18 启用资源限制Profile 分两部分(资源参数和密码参数),resource_limit为 TRUE 限定资源参数(resource parameters)设置有效;不管 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_SGA19 监听器跟踪级别可根据需要设定监听级别,开启跟踪会对性能有所影响。监听器跟踪级别有四个状态:OFF - 未启用跟踪功能,是默认值。USER - 用户级别,标识用户导致的错误条件。ADMIN - 数据库管理员级别,标识特定的安装问题。SUPPORT - 客户支持人员级别,跟踪文件可能会变得很大。建议在进行网络问题诊断时开启跟踪功能。 LSNRCTL set trc_directory /network/trace LSNRCTL set trc_file .trc LSNRCTL set trc_level LSNRCTL save_config20 XDB 服务Oracle XDB 是 Oracle 的 XML 数据库,Oracle XDB 数据可以通过基于 HTTP 服务的8080端口或者基于 FTP 服务的2100端口访问。XDB 的 HTTP 和 FTP 服务存在多个缓冲区溢出问题,远程攻击者可以利用这些漏洞对服务进行拒绝服务攻击,精心提交字符串数据可能以服务进程权限在系统上执行任意指令。show parameter dispatchers 如为空,表示无该服务。去掉相应的数据库的初始化参数中的如下行: dispatchers=(PROTOCOL=TCP) (SERVICE=sidXDB) 说明:sid 为数据库的实例名,再重启数据库。21 SYS.DBMS_DEFER_SYS.DELETE_TRAN 存在 SQL 注入漏洞DELETE_TRAN 对 DESTINATION 参数的处理存在问题,可能导致 SQL 注入攻击。攻击者利用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电瓶车电池安全知识培训课件
- 北京中考体育机考试题及答案
- 高炉炼铁安全知识培训课件
- Hesperidin-methylchalcone-Standard-生命科学试剂-MCE
- 1-2-Dilauroyl-sn-glycerol-Standard-生命科学试剂-MCE
- 北服广告传播考试流程及答案
- 大一宪法考试题及答案
- 级考试题及答案
- 电热毯相关知识培训内容课件
- 电源院设计知识培训课件
- 小学一年级综合实践活动教案
- 《运营管理》考试试卷及参考答案(很全很标准)
- 浪浪山开学教案1
- 柚子树栽培技术
- 2025年北京市公安机关人民警察特殊职位公务员招录考试(网络技术)历年参考题库含答案详解(5套)
- 行为面试法培训课件
- X射线电离辐射安全知识培训课件
- 医院洁净手术部建筑技术规范
- 上腔静脉综合征护理查房
- 《机械创新设计》课件-k第七章-机械结构设计与创新
- 2025年新退休返聘人员协议书
评论
0/150
提交评论