• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
Oracle
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
Oracle FAQ 之网络与安全篇
软件发布 Oracle FAQ 之网络与安全篇
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 认证考试 >> Oracle认证 >> Oracle指导 >> Oracle FAQ 之网络与安全篇

Oracle FAQ 之网络与安全篇

添加时间: 2008-4-27 21:04:25  作者: Oracle指导  阅读次数:20   来源: http://www.d9soft.com

       

   ORACLE 网络 与 安全  
   [Q]如何限定特定IP访问数据库 
   [A]可以利用登录触发器、cmgw或者是在$OREACLE_HOME/network/admin下新增一个protocol.ora文件(有些os可能是. protocol.ora),9i可以直接修改sqlnet.ora: 
   增加如下内容: 
   tcp.validnode_checking=yes 
   #允许访问的ip 
   tcp.inited_nodes=(ip1,ip2,……) 
   #不允许访问的ip 
   tcp.excluded_nodes=(ip1,ip2,……) 

   [Q]如何穿过防火墙连接数据库 
   [A]这个问题只会在WIN平台出现,UNIX平台会自动解决。 
   解决方法: 
   在服务器端的SQLNET.ORA应类似 
   SQLNET.AUTHENTICATION_SERVICES= (NTS) 
   NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) 
   TRACE_LEVEL_CLIENT = 16 
   注册表的HOME0加[HKEY_LOCAL_MACHINE] 
   USE_SHARED_SOCKET=TRUE 

   [Q]如何利用hostname方式连接数据库 
   host name方式只支持tcp/ip协议的小局域网 
   修改listener.ora中的如下信息 
   (SID_DESC = 
   (GLOBAL_DBNAME = ur_hostname) --你的机器名 
   (ORACLE_HOME = E:oracleora92) --oracle home 
   (SID_NAME = orcl) --sid name 
   ) 
   然后在客户端 
   的sqlnet.ora中,确保有 
   NAMES.DIRECTORY_PATH= (HOSTNAME) 
   你就可以利用数据库服务器的名称访问数据库了 

   [Q]dbms_repcat_admin能带来什么安全隐患 
   [A]如果一个用户能执行dbms_repcat_admin包,将获得极大的系统权限。 
   以下情况可能获得该包的执行权限: 
   1、在sys下grant execute on dbms_repcat_admin to public[|user_name] 
   2、用户拥有execute any procedure特权(仅限于9i以下,9i必须显示授权) 
   如果用户通过执行如下语句: 
   exec sys.dbms_repcat_admin.grant_admin_any_schema(’user_name’); 
   该用户将获得极大的系统特权 
   可以从user_sys_privs中获得详细信息 

   [Q]在不知道用户密码的时候,怎么样跳转到另外一个用户执行操作后并不影响该用户? 
   [A]我们通过如下的方法,可以安全使用该用户,然后再跳转回来,在某些时候比较有用 
   需要Alter user权限或DBA权限: 
   SQL> select password from dba_users where username=’SCOTT’; 
   PASSWORD 
   ----------------------------- 
   F894844C34402B67 
   SQL> alter user scott identified by lion; 
   User altered. 
   SQL> connect scott/lion 
   Connected. 
   REM Do whatever you like... 
   SQL> connect system/manager 
   Connected. 
   SQL> alter user scott identified by values ’F894844C34402B67’; 
   User altered. 
   SQL> connect scott/tiger 
   Connected. 

   [Q]如何加固你的数据库 
   [A]要注意以下方面 
   1. 修改sys, system的口令。 
   2. Lock,修改,删除默认用户: dbsnmp,ctxsys等。 
   3. 把REMOTE_OS_AUTHENT改成False,防止远程机器直接登陆。 
   4. 把O7_DICTIONARY_ACCESSIBILITY改成False。 

   5. 把一些权限从PUBLIC Role取消掉。 
   6.  检查 数据库的数据文件的 安全 性。不要设置成666之类的。检查其他dba 用户。 
   7. 把一些不需要的服务(比如ftp, nfs等关闭掉) 
   8. 限制数据库主机上面的用户数量。 
   9. 定期检查Metalink/OTN上面的security Alert。比如:http://otn.oracle.com/deploy/security/alerts.htm 
   10. 把你的数据库与应用放在一个单独的子网中,要不然你的用户密码很容易被sniffer去。或者采用advance security,对用户登录加密。 
   11. 限止只有某些ip才能访问你的数据库。 
   12. lsnrctl 要加密码,要不然别人很容易从外面关掉你的listener。 
   13. 如果可能,不要使用默认1521端口 

   [Q]如何检查用户是否用了默认密码 
   [A]如果使用默认密码,很可能就对你的数据库造成一定的安全隐患,那么可以使用如下的查询获得那些用户使用默认密码 
   select username "User(s) with Default Password!" 
   from dba_users 
   where password in 
   (’E066D214D5421CCC’, -- dbsnmp 
   ’24ABAB8B06281B4C’, -- ctxsys 
   ’72979A94BAD2AF80’, -- mdsys 
   ’C252E8FA117AF049’, -- odm 
   ’A7A32CD03D3CE8D5’, -- odm_mtr 
   ’88A2B2C183431F00’, -- ordplugins 
   ’7EFA02EC7EA6B86F’, -- ordsys 
   ’4A3BA55E08595C81’, -- outln 
   ’F894844C34402B67’, -- scott 
   ’3F9FBD883D787341’, -- wk_proxy 
   ’79DF7A1BD138CF11’, -- wk_sys 
   ’7C9BA362F8314299’, -- wmsys 
   ’88D8364765FCE6AF’, -- xdb 
   ’F9DA8977092B7B81’, -- tracesvr 
   ’9300C0977D7DC75E’, -- oas_public 
   ’A97282CE3D94E29E’, -- websys 
   ’AC9700FD3F1410EB’, -- lbacsys 
   ’E7B5D92911C831E1’, -- rman 
   ’AC98877DE1297365’, -- perfstat 
   ’66F4EF5650C20355’, -- exfsys 
   ’84B8CBCA4D477FA3’, -- si_informtn_schema 
   ’D4C5016086B2DC6A’, -- sys 
   ’D4DF7931AB130E37’) -- system 
   / 
[Q]如何修改默认的XDB监听端口 
  [A] Oracle9i默认的XML DB把HTTP的默认端口设为8080,这是一个太常用的端口了,很多别的WebServer都会使用这个端口, 
   如果我们安装了它,最好修改一下,避免冲突,如果不使用呢,就最好不要安装 
   提供三种修改的方法 
   1.dbca,选择你的数据库,然后Standard Database Features->Customize->Oracle XML DB option,进入这个画面你应该就知道怎么改了。 
   2.OEM console,在XML Database 的配置里面修改 
   3.用oracle提供的包: 
   -- 把HTTP/WEBDAV端口从8080改到8081 
   SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), 
   ’/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()’,8081)) 
   / 
   -- 把FTP端口从2100改到2111 
   SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), 
   ’/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text()’,2111)) 


   / 
   SQL> commit; 
   SQL> exec dbms_xdb.cfg_refresh; 
   --  检查 修改是否已经成功 
   SQL> select dbms_xdb.cfg_get from dual; 

   [Q]怎么捕获用户登录信息,如SID,IP地址等 
   [A]可以利用登录触发器,如 
   CREATE OR REPLACE TRIGGER tr_login_record 
   AFTER logon ON DATABASE 
   DECLARE 
   miUserSid NUMBER; 
   mtSession v$session%ROWTYPE; 
   CURSOR cSession(iiUserSid IN NUMBER) IS 
   SELECT * FROM v$session 
   WHERE sid=iiUserSid; 
   BEGIN 
   SELECT sid INTO miUserSid FROM v$mystat WHERE rownum<=1; 
   OPEN cSession(miUserSid); 
   FETCH cSession INTO mtSession; 
   --if user exists then insert data 
   IF cSession%FOUND THEN 
   INSERT INTO log$information(login_user,login_time,ip_adress,ausid,terminal, 
   osuser,machine,program,sid,serial#) 
   VALUES(ora_login_user,SYSDATE,SYS_CONTEXT (’USERENV’,’IP_ADDRESS’), 
   userenv(’SESSIONID’), 
   mtSession.Terminal,mtSession.Osuser, 
   mtSession.Machine,mtSession.Program, 
   mtSession.Sid,mtSession.Serial#); 
   ELSE 
   --if user don’t exists then return error 
   sp_write_log(’Session Information Error:’||SQLERRM); 
   CLOSE cSession; 
   raise_application_error(-20099,’Login Exception’,FALSE); 
   END IF; 
   CLOSE cSession; 
   EXCEPTION 
   WHEN OTHERS THEN 
   sp_write_log(’Login Trigger Error:’||SQLERRM); 
   END tr_login_record; 
   在以上触发器中需要注意以下几点 
   1、该用户有v_$session与v_$mystat的对象查询权限,可以在sys下对该拥护显式授权。 
   2、sp_write_log原本是一个写日志的过程,可以置换为自己的需要,如null跳过。 
   3、必须在创建该触发器之前创建一个log$information的表记录登录信息。 

   [Q]怎么捕获整个数据库的DDL语句或者是说对象结构变化与修改 
   [A]可以采用DDL触发器,如 
   CREATE OR REPLACE TRIGGER tr_trace_ddl 
   AFTER DDL ON DATABASE 
   DECLARE 
   sql_text ora_name_list_t; 
   state_sql ddl$trace.ddl_sql%TYPE; 
   BEGIN 
   FOR i IN 1..ora_sql_txt(sql_text) LOOP 
   state_sql := state_sql||sql_text(i); 
   END LOOP; 
   INSERT INTO ddl$trace(login_user,ddl_time,ip_address,audsid, 
   schema_user,schema_object,ddl_sql) 
   VALUES(ora_login_user,SYSDATE,userenv(’SESSIONID’), 
   sys_context(’USERENV’,’IP_ADDRESS’), 
   ora_dict_obj_owner,ora_dict_obj_name,state_sql); 
   EXCEPTION 
   WHEN OTHERS THEN 
   sp_write_log(’Capture DDL Excption:’||SQLERRM); 
   END tr_trace_ddl; 

   在创建以上触发器时要注意几点 
   1、必须创建一个ddl$trace的表,用来记录ddl的记录 
   2、sp_write_log原本是一个写日志的过程,可以置换为自己的需要,如null跳过。 

   [Q]怎么捕获表上的DML语句(不包括select)语句) 
   [A]可以采用dml触发器,如 
   CREATE OR REPLACE TRIGGER tr_capt_sql 
   BEFORE DELETE OR INSERT OR UPDATE 
   ON manager.test 
   DECLARE 
   sql_text ora_name_list_t; 
   state_sql capt$sql.sql_text%TYPE; 
   BEGIN 
   FOR i IN 1..ora_sql_txt(sql_text) LOOP 
   state_sql := state_sql || sql_text(i); 
   END LOOP; 
   INSERT INTO capt$sql(login_user,capt_time,ip_address,audsid,owner,table_name,sql_text) 
   VALUES(ora_login_user,sysdate,sys_context(’USERENV’,’IP_ADDRESS’), 
   userenv(’SESSIONID’),’MANAGER’,’TEST’,state_sql); 
   EXCEPTION 
   WHEN OTHERS THEN 
   sp_write_log(’Capture DML Exception:’||SQLERRM); 
   END tr_capt_sql; 
   在创建以上触发器时要注意几点 
   1、必须创建一个capt$sql的表,用来记录ddl的记录 
   2、sp_write_log原本是一个写日志的过程,可以置换为自己的需要,如null跳过。

 

上下文章:

 

上一篇文章: OCM考试心得 下一篇文章: statspack的系统参数

相关文章:

  • 卡巴斯基全功能安全软件2009白皮书
  • Linux之父:最烦安全人士大肆宣扬软件漏洞
  • 08年迄今为止10个最糟糕Web 2.0网络故障
  • 各国纷纷上马网络直播奥运 流量过大致互联网危机
  • 病毒猖獗,怎么打开电脑文件会较安全?

相关软件:

  • 网络仓鼠 V1.0 Beta 绿色版
  • 好生活网络电视 3.1.7
  • 奇虎360安全卫士 4.3.0.1002 标准版
  • 奇虎360安全卫士 4.3.0.1002 豪华版
  • 风行网络电影(Funshion) 1.2.4.28.1
  • 还原精灵安全保镖 V5.0

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

Oracle认证分类导航

  • Oracle动态
  • Oracle指导
  • Oracle题库

本类经典文章推荐

  • Oracle中关于逻辑备份与恢复
  • Oracle开发人员JAVA存储过程
  • 为数据库的表自动生成行号
  • Oracle中的OOP概念
  • 用java从oracle取数
  • 冷备份移植到另一台Solaris机器上
  • 如何将excel数据导入oracle中
  • Oracle10.2g安装记录
  • 数据库监控工具ForOraclev1.2
  • oracle双机群集系统

Oracle指导阅读排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle常用的OCI函数上
  • Oracle企业管理器(OEM 2.1)使用...
  • Tomcat+SQLServer连接池配置
  • 如何将excel数据导入oracle中
  • 如何取出某一用户的密码 再原样改...
  • 实例:Oracle导出EXCEL文件
  • 案例学习Oracle错误:ORA-00604
  • 案例学习Oracle错误:ORA-00060

Oracle认证阅读总排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle常用的OCI函数上
  • 在ORACLE的存储过程中如何做简单的...
  • Oracle企业管理器(OEM 2.1)使用...
  • Tomcat+SQLServer连接池配置
  • 如何将excel数据导入oracle中
  • AIX下自动启动Oracle数据库与监听...
  • 如何取出某一用户的密码 再原样改...
  • 实例:Oracle导出EXCEL文件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有