0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

三种方法教你限制某个IP或IP段访问Oracle数据库

如意 来源:ITPUB 作者:佚名 2020-09-03 10:16 次阅读

01概述

本文将给大家介绍如何限制某个ip或某个ip段才能访问Oracle数据库

通过sqlnet.ora

通过/etc/hosts.deny和/etc/hosts.allow

通过iptables

02正式实验

本次实验环境是Centos6.10 + Oracle 11.2.0.4单实例,数据库服务器ip地址为192.168.31.71

1. 通过sqlnet.ora

a. 关闭数据库服务器上的防火墙,修改sqlnet.ora文件该文件放在$ORACLE_HOME/network/admin下,如果没有就在该目录下创建一个即可添加以下两行

tcp.validnode_checking = yes

tcp.invited_nodes = (192.168.31.71, 192.168.31.77)

这里需要注意的是必须把本机ip地址加进来(不能写成localhost和127.0.0.1),否则监听启动会报错。

b. 重启监听,让sqlnet.ora的修改生效

lsnrctl stop

lsnrctl start

设置之后就只有这两个ip地址192.168.31.71, 192.168.31.77能访问数据库,其它ip地址访问会报ORA-12547: TNS:lost contact错误

tcp.invited_nodes的意思是开通白名单,不在白名单中的一律拒绝访问,它也可以写成(192.168.31.*, 192.168.31.0/24)等方式,表明这个网段都能访问。

另外还有个参数tcp.excluded_nodes,表示黑名单,这里不做介绍,有兴趣的可以自己去做做实验。

2. 通过/etc/hosts.deny和/etc/hosts.allow

sqlnet.ora属于数据库层面的限制,但如果一个ip能够使用root或者oracle,ssh到这台数据库服务器的话,那么它依然能够访问数据库。为了避免这种情况,这时就需要通过/etc/hosts.allow和/etc/hosts.deny去限制某个ip或者ip段才能ssh访问数据库服务器先删除前面实验添加的sqlnet.ora,然后重启监听

lsnrctl stop

lsnrctl start

a. 修改/etc/hosts.deny

在文件尾部添加一行

all:all:deny

第一个all表示禁掉所有使用tcp_wrappers库的服务,举例来说就是ssh,telnet等服务。

第二个all表示所有网段。

b. 修改/etc/hosts.allow

在前面一步中我禁掉所有的网段,所以在这一步中要开通指定的网段。

修改/etc/hosts.allow,在文件尾部添加

all:192.168.31.71:allow a

ll:192.168.31.47:allow

格式与hosts.deny一样,第一行表示把本机放开,第二行表示给.47开通白名单

下面用我另外一台机器(即不在allow中的)ssh或telnet连接71这个机器,就会出现如下报错

三种方法教你限制某个IP或IP段访问Oracle数据库

连数据库却不受影响,因为数据库服务不归hosts.deny和hosts.allow管

三种方法教你限制某个IP或IP段访问Oracle数据库

其中ip地址也可以换成以下的写法

通配符的形式 192.168.31.*表示192.168.31这个网段

网段/掩码 192.168.31.0/255.255.255.0也表示192.168.31这个网段

3. 通过iptables

sqlnet.ora能够限制数据库的访问,/etc/hosts.deny和/etc/hosts.allow能够限制ssh的访问,那有没有办法既能限制数据库的访问,也能限制ssh的访问呢,答案就是linux自带的防火墙功能了。为了实验,将前面做的修改全部清除。

使用root执行以下命令

service iptables start # 打开防火墙服务iptables -I INPUT -s 192.168.31.0/24 -p tcp --dport 1521 -j ACCEPT # 允许192.168.31网段的ip访问本机1521端口iptables -I INPUT ! -s 192.168.31.0/24 -p tcp --dport 22 -j DROP # 拒绝非192.168.31网段的ip访问本机22端口service iptables save # 规则保存到配置文件/etc/sysconfig/iptables中

这样就同时限制了其它ip对服务器的ssh和数据库访问一些扩展知识:

iptables -L -n --line-numbers # 查看当前系统中的iptablesiptables -D INPUT 2 # 删除input链中编号为2的规则,编号数字可以通过上一个命令得到

03总结

如果只是限制其它ip对数据库的访问,使用sqlnet.ora

如果要限制其它ip对数据库所在服务器上的ssh连接,使用/etc/hosts.deny和/etc/hosts.allow

前面两个配合起来,基本上就能保证你的数据库安全了。但是如果你对linux的iptables很熟悉,那么直接使用iptables去限制。

使用/etc/hosts.deny和iptables时一定要保证自己的操作机能连到服务器,不然很容易就把自己锁死在外面了。
责编AJX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IP
    IP
    +关注

    关注

    5

    文章

    1716

    浏览量

    149892
  • 数据库
    +关注

    关注

    7

    文章

    3845

    浏览量

    64633
  • Oracle
    +关注

    关注

    2

    文章

    296

    浏览量

    35204
收藏 人收藏

    评论

    相关推荐

    labview访问数据库的若干种方法

    本帖最后由 eehome 于 2013-1-5 09:44 编辑 本文分析了labview中访问数据库的几种方法的优缺点,重点讨论了应用ADO技术,labsql,labview sql
    发表于 02-24 10:14

    labview查看本机ip三种方法

    做TCP通讯的时候,有时候需要知道自己的IP虽然知道自己电脑ip可以不用这么麻烦,但是有时候就想用自己所学来获得自己所需,职业病 咳咳这里给出得到本地IP三种方法。源程序,在附件里。
    发表于 11-27 17:17

    labview如何远程访问oracle数据库

    本地访问oracle数据库已经做到了。由于不想通过labview之间的网络通信达到远程访问oracle,只想在局域网内直接去
    发表于 02-12 10:42

    labview 如何远程访问Oracle数据库

    ?它是服务器端的设置还是我电脑的设置?最后那个orcl是oracle里的一个实例,那是不是代表我要连接的数据库的名称?数据库所在的共享文件夹是不是必须填写?还望做过的朋友指导一下{:12:}
    发表于 07-15 16:24

    Labview三种方法读写SQL server数据库

    Server数据库LabVIEW通过LabSQL第数据库访问工具包,基于建立ODBC连接的方法访问
    发表于 07-28 22:06

    labview远程访问oracle数据库

    电脑系统:64位win7旗舰版;labview:32位2015版;oracle客户端:ODAC112040XCOPY_64BIT我使用这个程序访问数据库,现在数据链接测试成功,但是程序
    发表于 04-10 10:08

    C语言中使用嵌入式SQL访问Oracle数据库方法

    (Oracle Call Interface简称OCI),通过调用一系列OCI函数即可访问数据库。我在这里介绍的是前一种方法。另外,在本文中,我重点介绍的是利用C语言开发
    发表于 12-15 06:35

    Oracle数据库网络安全访问机制

    本文主要分析了Oracle 客户端通过Net8 访问数据库服务器过程,阐述了Oracle 数据库的网络访
    发表于 08-29 10:20 20次下载

    访问集成Xilinx模数转换器的三种方法介绍

    了解访问集成Xilinx模数转换器(XADC)的三种方法; 通过直接连接到PS,作为PSMicroblaze的AXI外设,作为逻辑的IP
    的头像 发表于 11-20 06:16 2699次阅读

    linux查找ip地址的三种方法

    在 Linux 系统中,经常需要查找 IP 地址以进行网络配置、故障排除安全管理。无论是查找本地主机的 IP 地址还是查找其他设备的 IP 地址,本文将介绍
    发表于 08-02 09:53 666次阅读
    linux查找<b class='flag-5'>ip</b>地址的<b class='flag-5'>三种方法</b>

    oracle数据库如何连接

    所述,我们将介绍几种常见的数据库连接方法。 一、使用SQL*Plus连接Oracle数据库 SQL*Plus是Oracle提供的一个基于文本
    的头像 发表于 08-28 17:09 1.1w次阅读

    oracle三种连接方式 oracle数据库怎么连接呢?oracle连接失败怎么办?

    oracle三种连接方式 oracle数据库怎么连接呢?oracle连接失败怎么办? Oracle
    的头像 发表于 10-25 15:02 5812次阅读

    oracle数据库的使用方法

    Oracle数据库是一关系型数据库管理系统,它由Oracle公司开发和维护。它提供了安全、可靠和高性能的
    的头像 发表于 12-06 10:10 1285次阅读

    Oracle数据恢复—Oracle数据库delete删除的数据恢复方法

    删除Oracle数据库数据一般有以下2方式:delete、droptruncate。下面针对这2
    的头像 发表于 09-11 11:45 425次阅读

    适用于Oracle的Python连接器:可访问托管以及非托管的数据库

    适用于 Oracle 的 Python 连接器 适用于 Oracle 的 Python 连接器是一可靠的连接解决方案,用于从 Python 应用程序访问
    的头像 发表于 01-14 10:30 101次阅读