??xml version="1.0" encoding="utf-8" standalone="yes"?> 1、如果数据库配置了自动存储管?ASM),应该先删除聚集同步服务CSSQcluster Synchronization Services).删除CSS服务的方法是在DOS命o行中执行如下命oQ?localconfig delete 监听器简?/p>
Oracle监听器是Oracle服务器Y件的一个组Ӟ它负责管理Oracle数据?/strong>和客L之间的通讯Q它在一个特定的|卡端口Q默认是TCP 1521端口Q上监听q接hQƈ连接{发给数据库,׃个二q制文gl成Qtnslsnr和lsnrctl。其中tsnlsnr是监听器本w,它运行在数据库服务器端,lsnrctl是监听器控制E序Q用于在服务器上或远E管理监听器。与监听器相关的q有两个配置文gQsqlnet.ora和listener.ora。tnslsnr启动时就会读取这两个配置文g中的信息Q如端口P数据库服务名?/p>
Oracle监听器在默认安装和配|情况下Q有许多著名的漏z和~陷Q黑客利用这些缺陷可?a target="_blank">刉?/strong>拒绝服务dQ偷H数据库q接密码Q进一步窃取机密数据。最大的风险来自监听器的配置QOracle官方提供了一些推荐的配置Q往往能够辑ֈ保护监听器的目的。本文就是想仔细列出现有的已知保护Oracle监听器的ҎQ这些方法对于黑客而言都很熟悉Q所以作为DBA也必要清楚才行?/p>
Z么要保护监听器? DBA对于Z么要保护监听器往往不太兛_Q他们认为黑客不太可能通过控制监听器进而控制整个数据库Q在Oracle 10g之前的所有版本,Oracle监听器允怓Q何一个h利用lsnrctl从远E发起对监听器的理Q但q运的是Q从Oracle 10.1开始严格限制在q程对监听器的管理了。下面列Z些对Oracle 8/9i默认安装配置时可能有效的d手段Q即使是打上最新的安全补丁Q而没有进行安全配|加固,q些d手段也仍然有效: 注意Q本文假讄听器使用的是TCP/IPQƈ且用的是本地命名管理(即tnsnames.oraQ,本文所描述的Oracle版本?i/9i/10g上做q测试,但相信对其他低版本或更高的版本也有一定的参考h倹{?/p>
怎么保护监听器? 既然监听器有q么多可供黑客利用的地方Q那有没有什么方法来保护它,办法是有的,而且q很多,ȝhQ大概有下面11U方法来保护Oracle监听器: 1?讑֤监听器密?/strong> 通过讄监听器密码可以阻止大部分的菜鸟黑客的q攻Q设|密码有两种ҎQ一U是通过lsnrctl命o来设|,另一U是直接修改listener.ora文gQ第一U方法设|的密码是经q加密后存储在listener.ora中,而第二种Ҏ是以明文的Ş式放在listener.ora中的Q所以推荐用第一U方式。具体命令如下: LSNRCTL> set current_listener <监听器名> LSNRCTL> change_password old password: <如果之前没有讄密码q接按回R> New password: <输入新密?/span>> Reenter new password: <再次输入新密?/span>> LSNRCTL> set password Password: <输入刚刚讄的新密码> LSNRCTL> save_config
讄好密码后Q打开listener.oraQ看是否有一条PASSWORDS_<监听器名>的记录,cM于PASSWORDS_LISTENER = F4BAA4A006C26134。ؓ监听器设|了密码后,必须到客L重新配置q接?/p>
2?开启监听器日志 开启监听器日志功能是ؓ了捕L听器命o和防止密码被暴力破解。开启监听器日志功能的命令ؓQ?/p>
LSNRCTL> set current_listener <监听器名> LSNRCTL> set password Password: <输入监听器密?/span>> LSNRCTL> set log_directory <oracle_home路径>/network/admin LSNRCTL> set log_file <sid名称>.log LSNRCTL> set log_status on LSNRCTL> save_config
通过q行上面的命令,监听器将会在<ORACLE_HOME>/network/admin目录下创Z?lt;sid>.log日志文gQ以后可以打开该文件查看一些常见的ORA-错误信息?/p>
3?在listener.ora中设|ADMIN_RESTRICTIONS 在listener.ora文g中设|了ADMIN_RESTRICTIONS参数后,当监听器在运行时Q不允许执行M理MQ届Ӟset命o不可用Q不论是在服务器本地q是从远E执行都不行Q这时如果要修改监听器设|就只有手工修改listener.ora文g了,通过手工修改listener.oraQ要使修改生效,只能使用lsnrctl reload命o或lsnrctl stop/start命o重新载入一ơ监听器配置信息。在listener.ora文g中手动加入下面这样一行: ADMIN_RESTRICTIONS_<监听器名> = ON 4?打上最新的监听器补?/strong> q一点就?a target="_blank">操作pȝcMQ数据库也有bugQ也有漏z,黑客会在漏洞发现W一旉扫描未打补丁的服务器Q所以作Z个称职的DBA要随时关注Oracle的CPUQ呵呵,不是处理器,是关键补丁升U的意思)Q这里要说明的是Oracle的补丁是自动累加的,像windows xp sp2的内容包括了sp1的所有内容一P所以只需要按照最新的补丁集就可以了,q有一点要注意的是在生产系l上应用M补丁前都需要先在测试环境进行测试,保证升后不影响正常业务才进行升U。最后要说明的是Q只有购COracle的正式许可才可以登陆下蝲补丁Q否则就只有从第三方地址下蝲Q其完整性就不能保证了?/p>
5?利用防火墙阻止SQL*NET 除非的确需要,否则不应该让SQL*NET通讯通过防火墙,在设计防火墙规则Ӟ应设计ؓ只允许经q认证的Web服务器和应用E序通过防火墙进行SQL*NET通信。而且攑֜防火墙DMZ区域的应用服务器使用SQL*NET通信Ӟ应只允许它与特定的数据库服务器进行通信?/p>
通常很少有应用会从Internet直接讉K数据库,因ؓq种方式的gq非常明显,通用的做法是配置应用服务器与数据库通信QInternet客户端通过览?/strong>讉K应用服务器即可,q时配置防火墙时也只需讄应用服务器和数据库服务器之间的通信规则卛_?/p>
6?保护$TNS_ADMIN目录 $TNS_ADMIN目录x们通常看到的ORACLE_HOME/network/admin目录Q它下面包含有listener.oraQtnsnames.oraQsqlnet.oraQprotocol.ora{重要配|文Ӟ前面已经提到Q监听器的密码就是保存在listener.ora中的Q如果不保护好,可能造成密码泄露Q或整个文g被修改,q个目录下的listener.oraQsqlnet.oraQprotocol.ora文g应该只开攄Oracle主̎P通常是oracle或AdministratorQ,而其他̎户不能有M权限Qtnsnames.ora文g?a target="_blank">Linux?a target="_blank">Unixpȝ上权限可以设|ؓ0644Q在windows上可以设|其他用户ؓ览Q读取权限?/p>
7?保护TNSLSNR和LSNRCTL 在Linux或Unix服务器上Q应该将q两个文件的权限设ؓ0751Q如果想更严g点,可以设ؓ0700Q这样就只有安装oracle时指定的宿主用户可以执行它们了,q两个文件位于ORACLE_HOME/bin目录下。保护这两个文g的目的是Z防止黑客直接破坏它们Q如果tnslsnr被破坏,监听器肯定不能启动,如果lsnrctl被破坏,可能植入恶意代码Q在q行lsnrctl时就会执行其它黑客行为?/p>
8?U除不用的服?/strong> 默认安装Ӟ会安装一个PL/SQL外部E序QExtProcQ条目在listener.ora中,它的名字通常是ExtProc或PLSExtProcQ但一般不会用它Q可以直接从listener.ora中将q项U除Q因为对ExtProc已经有多U攻LD了。有时可能会在多个实例之间拷贝listener.oraQ请查拷贝来的文件中是否含有不需要的服务Q确保只留下的确需要的服务目Q减监听器受攻ȝ面?/p>
9?改变默认的TNS端口?/strong> 改变监听器监听的端口号与修改ftp服务器默认的21端口Qweb服务器的80端口cMQ因为Oracle默认的监听端口是1521QOracleq正式注册了两个新的端口?483?484Q说不定哪个新版本发布后Q可能默认的端口号就会是q两个了Q其?484用于SSLcd的连接)Q几乎所有的扫描器都可以直接扫描q个端口是否打开Q如果设|ؓ一个不常用的端口号Q可能会lh一U假象,而且即扫描到端口打开Q也q要猜测该端口运行是I竟是什么服务,d隑ֺ加大了。在修改端口的时候也不要讑֜1521-1550?600-1699范围内,虽然通过修改默认端口q不什么高U防护技术,但至可以防止自动攻击,以及在端?521上的单扫描?/p>
可直接编辑listener.ora中端口号Q也可以通过netcaE序q行修改Q当然在客户端也要做对应的修Ҏ行。同时要讄初始化参数LOCAL_LISTENERQ这样在监听端口发生变化后,数据库才会自动进行监听器重新注册?/p>
10?讄节点验证 Ҏ应用E序和网l配|情况,采用节点验证对于保护监听器是一U强有力的方法,大部分Web应用E序都只需要从应用服务器访问监听器Q以及一台管理客LQ对于Oracle 8/8iQ在$ORACLE_HOME/network/admin/protocol.ora文g中添加节Ҏ查语句,对于Oracle 9i/10gQ在$ORACLE_HOME/network/admin/sqlnet.ora文g中添加节Ҏ查语句,语句的格式都一P如: tcp.validnode_checking = yes tcp.invited_nodes = ( x.x.x.x | name, x.x.x.x | name) tcp.excluded_nodes=( x.x.x.x | name, x.x.x.x | name)
注意Q这里要么用invited_nodes语句Q要么用excluded_nodesQ不能同旉使用Q也不能使用通配W,子网{,只能使用明确的ip地址或主机名。这里的x.x.x.x指的是?92.168.1.100q样的ip地址Qname是L名,如果有多个ip地址或主机名Q用逗号q行分隔?/p>
讄了节炚w证后Q监听器需要重新启动才会生效。用这U方法进行节炚w证会消耗一定的pȝ资源和网l带宽,如果要验证的地址q多Q靠手工d也很ȝQ这时可以用Oracle Connection ManagerQ如果是有许多客L通过SQL*NET讉K数据库,使用q种节点验证的方法也不可行,那会相当的慢?/p>
11?监视日志 在前面的Ҏ中开启了监听器日志功能,在生了日志信息后,要对其进行分析,常见的可在日志文件中查找是否有TNS-01169QTNS-01189QTNS-01190或TNS-12508错误Q如果有q些错误Q至可以说明要么有人攻击,要么有异常活动,q一步可以用shell基本或一些简单的理工具这些有用的日志信息定期发送给DBAQ实现实时监控效果?/p>
下面是对前面提到的几个常见错误的描述Q?/p>
结 通过上面q?1U方法对Oracle监听器进行保护后Q想要通过监听器进行破坏活动基本上很困难了,不能保证100%拦截dQ也臛_?9%的效果,另外?%可能是DBA本n犯的一些低U错误了Q如不小心将监听器密码泄露给他hQ或配|信息暴露在Internet上?/p>
PURGE recyclebin;
2、在“服务”H口中停止Oracle的所有服务?br />3、在“开?#8221;菜单中依ơ选择“E序”/“Oracle-OraDb10g_home1"/"Oracle Installation Products”/"Universal Installer"Q打开Oracle Universal Installer(OUI)H口
4、单?#8220;卸蝲产品”按钮Q打开“产品清单”H口Q选中要删除的Oracle产品Q单?#8220;删除”按钮Q打开“认删除”对话框?br />5、在“认删除”对话框中单击“?#8221;按钮Q开始删除选择的Oracle产品?br />6、删除自动存储管理(ASM),在DOS命o行中执行如下命oQoracle -delete -asmsid +asm
7、运行regedit命oQ打开注册表窗口。删除注册表中与Oracle相关的内容,具体如下Q?br /> 1、删除HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE目录?br /> 2、删除HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services中所有以oracle或OraWeb为开头的键?br /> 3、删除HKEY_LOCAL_MACHINE/SYSETM/CurrentControlSet/Services/Eventlog/application中所有以oracle开头的键?br /> 4、删除HKEY_CLASSES_ROOT目录下所有以Ora、Oracle、Orcl或EnumOra为前~的键?br /> 5、删除HKEY_CURRENT_USER/SOFTWARE/Microsoft/windows/CurrentVersion/Explorer/MenuOrder/Start Menu/Programs中所有以oracle 开头的键?br /> 6、删除HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI中除Microsoft ODBC for Oracle注册表键以外的所有含有Oracle的键?br />其中有些注册表项可能已经在卸载Oracle产品时被删除?br />8、删除环境变量中的PATHT CLASSPATH中包含Oracle的倹{?br />9、删?#8220;开?#8221;/“E序”中所有Oracle的组和图标?br />10、删除所有与Oracle相关的目录,包括Q?br /> 1、c:\Program file\Oracle目录?br /> 2、ORACLE_BASE目录?br /> 3、c:\Documents and Settings\pȝ用户名、LocalSettings\Temp目录下的临时文g?/p>
]]>
关键词:Oracle Oracle语句优化 Oracle优化规则 Table
阅读全文
]]>
oracle 10g 清空回收站命?/strong>
]]>
2、ORA-12500:TNS:监听E序无法启动专用服务器进E或ORA-12560:TNS:协议适配器错?
原因:ORACLE的数据库服务没有启动。用命令net start ORACLESERVICEORADB(ORADB为数据库名字)卛_。如果仍没有解决Q请l箋向下看?
阅读全文
]]>
一、监听器(LISTENER)
阅读全文
]]>
]]>
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:orcl
阅读全文
]]>
q个异常的出C般与数据库和你的PC的设|有?
q种异常的出现大致上有下面几U:
1。IP错误?
在设|URL旉误,例如Qjdbc:oracle:thin:@192.168.248.154:1521:test
数据库服务器不正:ping 服务器IP是否正确。不正确Q将URL更改为正?
端口号错误:一般不会错误?
2。防火墙
如果机器上安装有攄墙,可能是服务器端口号屏蔽而造成的。关闭防火墙后,试重新q接?
3。数据库监听未启?
启动Oracle的监听服?
]]>
报? 初始化错?nbsp;
SQL*NET没有完全安装
OracleHomekey:software/oracle
OracleHomedir
可通过如下Ҏ解决
具体配置Q?
在PLSQL Developer选择Tools > Preferences > options > "Oracle Home" and "OCI Library"
Oracle10g装在D:\oracle\
则:Oracle Home为C:\oracle\product\10.1.0
OCI Library为C:\oracle\product\10.1.0\Db_1\BIN\oci.dll
配置完以后重新启动PLSQL DeveloperQ会发现d界面多了一栏Connect as 的内宏V然后可以进行登录?/p>