还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
Oracle数据库网络与平安FAQ精粹数据库电脑资料[Q]如何限定特定IP访问数据库[A]可以利用触发器、cmgw或者是在$OREACLEHOME/work/admin下新增一个protocol.ora文件有些os可能是.protocol.ora,9i可以直接修改sql.ora:增加如下内容:tcp.validnodechecking=yes#允许访问的iptcp.inited[A]可以利用触发器、cmgw或者是在$OREACLEHOME/work/admin下新增一个protocol.ora文件有些os可能是.protocol.ora,9i可以直接修改sql.ora:增加如下内容:#允许访问的iptcp.initednodes=ip1ip2……#不允许访问的iptcp.excludednodes=ip1ip2……解决方法:在效劳器端的SQLNET.ORA应类似NAMES.DIRECTORYPATH=TNSNAMESONAMESHOSTNAMETRACELEVELCLIENT=16表的HOME0加[HKEYLOCALMACHINE]USESHAREDSOCKET=TRUEhostname方式只支持tcp/ip协议的小局域网修改listener.ora中的如下信息GLOBALDBNAME=urhostname--你的机器名ORACLEHOME=E:\oracle\ora92--oraclehomeSIDNAME=orcl--sidname然后在客户端的sql.ora中,确保有NAMES.DIRECTORYPATH=HOSTNAME你就可以利用数据库效劳器的名称访问数据库了[A]以下情况可能获得该包的执行权限:
1、在sys下
2、用户拥有executeanyprocedure特权仅限于9i以下,9i必须显示受权假如用户通过执行如下语句:该用户将获得极大的系统特权可以从usersysprivs中获得详细信息[A]我们通过如下的方法,可以平安使用该用户,然后再跳转回来,在某些时候比拟有用需要Alteruser权限或DBA权限:PASSWORD-----------------------------F894844C34402B67SQLalteruserscottidentifiedbylion;Useraltered.SQLconnectscott/lionConnected.REMDowhateveryoulike...SQLconnectsystem/managerConnected.SQLalteruserscottidentifiedbyvaluesF894844C34402B67;Useraltered.SQLconnectscott/tigerConnected[A]要注意以下方面
1.修改syssystem的口令
2.Lock,修改,删除默认用户:dbsnmpctxsys等
3.把REMOTEOSAUTHENT改成False,防止远程机器直接登陆
5.把一些权限从PUBLICRole取消掉
6.检查数据库的数据文件的平安性不要设置成666之类的检查其他dba用户
7.把一些不需要的效劳比方ftpnfs等关闭掉
8.限制数据库主机上面的用户数量
9.定期检查Metalink/OTN上面的securityAlert比方:otn.oracle./deploy/security/alerts.htm
10.把你的数据库与应用放在一个单独的子网中,要不然你的用户密码很容易被sniffer去或者采用advancesecurity,对用户加密
11.限止只有某些ip才能访问你的数据库
12.lsnrctl要加密码,要不然别人很容易从外面关掉你的listener
13.假如可能,不要使用默认1521端口[A]假如使用默认密码,很可能就对你的数据库造成一定的平安隐患,那么可以使用如下的查询获得那些用户使用默认密码fromdbauserswherepasswordinE066D214D5421CCC--dbsnmp24ABAB8B06281B4C--ctxsys72979A94BAD2AF80--mdsysC252E8FA117AF049--odmA7A32CD03D3CE8D5--odmmtr88A2B2C183431F00--ordplugins7EFA02EC7EA6B86F--ordsys4A3BA55E08595C81--outlnF894844C34402B67--scott3F9FBD883D787341--wkproxy79DF7A1BD138CF11--wksys7C9BA362F8314299--wmsys88D8364765FCE6AF--xdbF9DA8977092B7B81--tracesvr9300C0977D7DC75E--oaspublicA97282CE3D94E29E--websysAC9700FD3F1410EB--lbacsysE7B5D92911C831E1--rmanAC98877DE1297365--perfstat66F4EF5650C20355--exfsys84B8CBCA4D477FA3--siinformtnschemaD4C5016086B2DC6A--sysD4DF7931AB130E37--system/[A]Oracle9i默认的XMLDB把的默认端口设为8080,这是一个太常用的端口了,很多别的WebServer都会使用这个端口,假如我们安装了它,最好修改一下,防止冲突,假如不使用呢,就最好不要安装提供三种修改的方法
1.dbca,选择你的数据库,然后StandardDatabaseFeatures-Customize-OracleXMLDBoption,进入这个画面你应该就知道怎么改了
2.OEMconsole,在XMLDatabase的配置里面修改
3.用oracle提供的包:--把/WEBDAV端口从8080改到8081/xdbconfig/sysconfig/protocolconfig/config/-port/text8081/--把FTP端口从2100改到2111SQLcalldbmsxdb.cfgupdateupdateXMLdbmsxdb.cfgget/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text2111/SQLmit;SQLexecdbmsxdb.cfgrefresh;--检查修改是否已经成功SQLselectdbmsxdb.cfggetfromdual;[A]可以利用触发器,如AFTERlogonONDATABASEDECLAREmiUserSidNUMBER;mtSessionv$session%ROWTYPE;CURSORcSessioniiUserSidINNUMBERISSELECT*FROMv$sessionWHEREsid=iiUserSid;BEGINSELECTsidINTOmiUserSidFROMv$mystatWHERErownum=1;OPENcSessionmiUserSid;FETCHcSessionINTOmtSession;--ifuserexiststheninsertdataIFcSession%FOUNDTHENINSERTINTOlog$informationloginuserlogintimeipadressausidterminalosusermachineprogramsidserial#VALUESoraloginuserSYSDATESYSCONTEXTUSERENVIPADDRESSuserenvSESSIONIDmtSession.TerminalmtSession.OsusermtSession.MachinemtSession.ProgrammtSession.SidmtSession.Serial#;ELSE--ifuserdontexiststhenreturnerrorspwritelogSessionInformationError:||SQLERRM;CLOSEcSession;raiseapplicationerror-xx9LoginExceptionFALSE;ENDIF;CLOSEcSession;EXCEPTIONWHENOTHERSTHENspwritelogLoginTriggerError:||SQLERRM;ENDtrloginrecord;在以上触发器中需要注意以下几点
1、该用户有v$session与v$mystat的对象查询权限,可以在sys下对该拥护显式受权,
2、spwritelog本来是一个写日志的过程,可以置换为自己的需要,如null跳过
3、必须在创立该触发器之前创立一个log$information的表记录信息[A]可以采用DDL触发器,如AFTERDDLONDATABASEDECLAREsqltextoranamelistt;statesqlddl$trace.ddlsql%TYPE;BEGINFORiIN
1..orasqltxtsqltextLOOPstatesql:=statesql||sqltexti;ENDLOOP;INSERTINTOddl$traceloginuserddltimeipaddressaudsidschemauserschemaobjectddlsqlVALUESoraloginuserSYSDATEuserenvSESSIONIDsyscontextUSERENVIPADDRESSoradictobjowneroradictobjnamestatesql;EXCEPTIONWHENOTHERSTHENspwritelogCaptureDDLExcption:||SQLERRM;ENDtrtraceddl;在创立以上触发器时要注意几点
1、必须创立一个ddl$trace的表,用来记录ddl的记录
2、spwritelog本来是一个写日志的过程,可以置换为自己的需要,如null跳过[A]可以采用dml触发器,如BEFOREDELETEORINSERTORUPDATEONmanager.testDECLAREsqltextoranamelistt;statesqlcapt$sql.sqltext%TYPE;BEGINFORiIN
1..orasqltxtsqltextLOOPstatesql:=statesql||sqltexti;ENDLOOP;INSERTINTOcapt$sqlloginusercapttimeipaddressaudsidownertablenamesqltextVALUESoraloginusersysdatesyscontextUSERENVIPADDRESSuserenvSESSIONIDMANAGERTESTstatesql;EXCEPTIONWHENOTHERSTHENspwritelogCaptureDMLException:||SQLERRM;ENDtrcaptsql;在创立以上触发器时要注意几点
1、必须创立一个capt$sql的表,用来记录ddl的记录
2、spwritelog本来是一个写日志的过程,可以置换为自己的需要,如null跳过DATE=$date+%y%m%d或者DATE=$date+%Y%m%d--date1daysago#获取昨天或多天前的日期Windows上,使用%date:~410%,其中4是开场字符,10是提取长度,表示从date生成的日期中,提取从4开场长度是10的串你可以改成其它你需要的数字,如:Echo%date:~410%假如想得到更准确的时间,win上面还可以使用time[A]用类似如下的方法测试写才能iostat-xnp2显示Busy程度[A]可以防止中间人的进攻方式
1、ssh-keygen或ssh-keygen-dssh
2.x生成钥匙
2、然后拷贝公匙到你想的效劳器,改名为authorizedkeys,假如是
3.0以下版本,需要改为authorizedkeys
23、还可以利用config文件进一步简化操作如HostName机器名或IPUser用户名有了这个配置文件,你就可以利用sshbj来访问指定的机器了,也就可以利用scp与sftp来传送文件了[A]可以把FTP写到shell脚本中,如模板内容仅供参考 。