处理Oracle数据库服务安全漏洞的几种方法
1、Ultra Search组件未明的漏洞
1.1、Ultra Search组件一般用于构建搜索引擎功能,如内网网站无需使用,请直接卸载ultra search组件,运行sql文件remove,
$ORACLE_HOME/ultrasearch/admin/wk0deinst.sql;
1.2、如仍需使用该组件,建议升级Oracle版本;
2、如无法升级,请限制IP访问来源:
2.1、通过SQLNET.ORA文件配置IP地址白名单,黑名单;
oracle配置访问白名单教程
出于提高数据安全性等目地,我们可能想要对oracle的访问进行限制,允许一些IP连接数据库或拒绝一些IP访问数据库。
当然使用iptables也能达到限制的目地,但是从监听端口变更限制仍可生效、只针对oracle自己不和其他端口的限制相混杂和不需要root账号这几方面来说,通过配置sqlnet.ora文件来进行访问限制可能是一种更好的选择。
2.1.1.配置sqlnet.ora文件
进入$TNS_ADMIN(一般对应的真实路径形如
/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin)
Windows server 平台下可以直接如下图方式找到
查看是否存在sqlnet.ora文件及是否已配置tcp.validnode_checking、tcp.invited_nodes、tcp.excluded_nodes项。
如果文件存在且已有这几项,则在此基础上修改这几项;如果文件存在但这几项不存在,则在最后追加;如果文件不存在则直接新建。
oracle默认是没有的,我们以没有为例新建该文件,并写入以下内容:
tcp.validnode_checking=yes
tcp.invited_nodes=(192.168.220.128,127.0.0.1)
tcp.excluded_nodes=(192.168.220.1)
如果想设置一个网段,可以试试使用%或?。如上面的192.168.220.128,可以写192.168.220.%或192.168.220.?
tcp.invited_nodes和tcp.excluded_nodes其实可以只配置一项,当只配tcp.invited_nodes时就是白名单,在此项列表中的所有IP允许访问数据库,所有不在此项列表中的所有IP拒绝访问数据库;
当只配置tcp.excluded_nodes时,在此项列表中的所有IP拒绝访问数据库,所有不在此项列表中的所有IP允许访问数据库。
2.1.2.重新加载使配置生效
如果之前不存在sqlnet.ora则需要重启监听
在CMD命令窗口下直接执行以下命令
lsnrctl stop
lsnrctl start
如果之前存在sqlnet.ora则只需要重新加载配置即可
lsnrctl reload
关于重启和reload的区别,应该是监听完全停上和不完全停止的区别;使用stop/start当前所有已连接的会话会强制断开,reload不会断开已有会话。
如果服务器多,都要进行同一操作,把重启做成bat文件,双击即可
2.2、 通过触发器TRIGGER设置,IP地址和用户禁止登陆。
create or replace trigger logon_ip_control
after logon on database
declare
ip STRING(30);
user STRING(30);
begin
SELECT SYS_CONTEXT('USERENV','SESSION_USER') into user from dual;
SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') into ip from dual;
if user='EPAY_USER'
THEN
IF ip not in ('192.168.219.20','192.168.219.22')
THEN raise_application_error(-20001,'User '||user||' is not allowed to connect from '||ip);
END IF;
END IF;
end;
知识点笔记
请关注微信公众号:qghktit
参考来源
黑白名单
https://www.cnblogs.com/lsdb/p/7729434.html
触发器
https://blog.csdn.net/dbanote/article/details/9231863