限制ip訪問(wèn)Oracle數(shù)據(jù)庫(kù)的方法步驟
一、概述
本文將給大家介紹如何限制某個(gè)ip或某個(gè)ip段才能訪問(wèn)Oracle數(shù)據(jù)庫(kù)
- 通過(guò)sqlnet.ora
- 通過(guò)/etc/hosts.deny和/etc/hosts.allow
- 通過(guò)iptables
二、正式實(shí)驗(yàn)
本次實(shí)驗(yàn)環(huán)境是Centos6.10 + Oracle 11.2.0.4單實(shí)例,數(shù)據(jù)庫(kù)服務(wù)器ip地址為192.168.31.71
1. 通過(guò)sqlnet.ora
a. 關(guān)閉數(shù)據(jù)庫(kù)服務(wù)器上的防火墻,修改sqlnet.ora文件
該文件放在$ORACLE_HOME/network/admin下,如果沒(méi)有就在該目錄下創(chuàng)建一個(gè)即可
添加以下兩行
tcp.validnode_checking = yes tcp.invited_nodes = (192.168.31.71, 192.168.31.77)
這里需要注意的是必須把本機(jī)ip地址加進(jìn)來(lái)(不能寫成localhost和127.0.0.1),否則監(jiān)聽(tīng)啟動(dòng)會(huì)報(bào)錯(cuò)
b. 重啟監(jiān)聽(tīng),讓sqlnet.ora的修改生效
lsnrctl stop lsnrctl start
設(shè)置之后就只有這兩個(gè)ip地址192.168.31.71, 192.168.31.77能訪問(wèn)數(shù)據(jù)庫(kù),其它ip地址訪問(wèn)會(huì)報(bào)ORA-12547: TNS:lost contact錯(cuò)誤
tcp.invited_nodes的意思是開(kāi)通白名單,不在白名單中的一律拒絕訪問(wèn),它也可以寫成(192.168.31.*, 192.168.31.0/24)等方式,表明這個(gè)網(wǎng)段都能訪問(wèn)
另外還有個(gè)參數(shù)tcp.excluded_nodes,表示黑名單,這里不做介紹,有興趣的可以自己去做做實(shí)驗(yàn)
2. 通過(guò)/etc/hosts.deny和/etc/hosts.allow
sqlnet.ora屬于數(shù)據(jù)庫(kù)層面的限制,但如果一個(gè)ip能夠使用root或者oracle,ssh到這臺(tái)數(shù)據(jù)庫(kù)服務(wù)器的話,那么它依然能夠訪問(wèn)數(shù)據(jù)庫(kù)。為了避免這種情況,這時(shí)就需要通過(guò)/etc/hosts.allow和/etc/hosts.deny去限制某個(gè)ip或者ip段才能ssh訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器
先刪除前面實(shí)驗(yàn)添加的sqlnet.ora,然后重啟監(jiān)聽(tīng)
lsnrctl stop lsnrctl start
a. 修改/etc/hosts.deny
在文件尾部添加一行
all:all:deny
第一個(gè)all表示禁掉所有使用tcp_wrappers庫(kù)的服務(wù),舉例來(lái)說(shuō)就是ssh,telnet等服務(wù)
第二個(gè)all表示所有網(wǎng)段
b. 修改/etc/hosts.allow
在前面一步中我禁掉所有的網(wǎng)段,所以在這一步中要開(kāi)通指定的網(wǎng)段
修改/etc/hosts.allow,在文件尾部添加
all:192.168.31.71:allow all:192.168.31.47:allow
格式與hosts.deny一樣,第一行表示把本機(jī)放開(kāi),第二行表示給.47開(kāi)通白名單
下面用我另外一臺(tái)機(jī)器(即不在allow中的)ssh或telnet連接71這個(gè)機(jī)器,就會(huì)出現(xiàn)如下報(bào)錯(cuò)
[oracle@oracle19c1 ~]$ ssh 192.168.31.71 ssh_exchange_identification: read: Connection reset by peer [oracle@oracle19c1 ~]$ telnet 192.168.31.71 22 Trying 192.168.31.71... Connected to 192.168.31.71. Escape character is '^]'. Connection closed by foreign host.
連數(shù)據(jù)庫(kù)卻不受影響,因?yàn)閿?shù)據(jù)庫(kù)服務(wù)不歸hosts.deny和hosts.allow管
[oracle@oracle19c1 ~]$ sqlplus sys/xxxxx@192.168.31.71:1521/orcltest as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Sun Aug 16 23:12:49 2020 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options
其中ip地址也可以換成以下的寫法
通配符的形式 192.168.31.*表示192.168.31這個(gè)網(wǎng)段
網(wǎng)段/掩碼 192.168.31.0/255.255.255.0也表示192.168.31這個(gè)網(wǎng)段
3. 通過(guò)iptables
sqlnet.ora能夠限制數(shù)據(jù)庫(kù)的訪問(wèn),/etc/hosts.deny和/etc/hosts.allow能夠限制ssh的訪問(wèn),那有沒(méi)有辦法既能限制數(shù)據(jù)庫(kù)的訪問(wèn),也能限制ssh的訪問(wèn)呢,答案就是linux自帶的防火墻功能了。
為了實(shí)驗(yàn),將前面做的修改全部清除。
使用root執(zhí)行以下命令
service iptables start # 打開(kāi)防火墻服務(wù) iptables -I INPUT -s 192.168.31.0/24 -p tcp --dport 1521 -j ACCEPT # 允許192.168.31網(wǎng)段的ip訪問(wèn)本機(jī)1521端口 iptables -I INPUT ! -s 192.168.31.0/24 -p tcp --dport 22 -j DROP # 拒絕非192.168.31網(wǎng)段的ip訪問(wèn)本機(jī)22端口 service iptables save # 規(guī)則保存到配置文件/etc/sysconfig/iptables中
這樣就同時(shí)限制了其它ip對(duì)服務(wù)器的ssh和數(shù)據(jù)庫(kù)訪問(wèn)
一些擴(kuò)展知識(shí):
- iptables -L -n --line-numbers # 查看當(dāng)前系統(tǒng)中的iptables
- iptables -D INPUT 2 # 刪除input鏈中編號(hào)為2的規(guī)則,編號(hào)數(shù)字可以通過(guò)上一個(gè)命令得到
三、總結(jié)
- 如果只是限制其它ip對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),使用sqlnet.ora
- 如果要限制其它ip對(duì)數(shù)據(jù)庫(kù)所在服務(wù)器上的ssh連接,使用/etc/hosts.deny和/etc/hosts.allow
- 前面兩個(gè)配合起來(lái),基本上就能保證你的數(shù)據(jù)庫(kù)安全了。但是如果你對(duì)linux的iptables很熟悉,那么直接使用iptables去限制。
- 使用/etc/hosts.deny和iptables時(shí)一定要保證自己的操作機(jī)能連到服務(wù)器,不然很容易就把自己鎖死在外面了。
到此這篇關(guān)于限制ip訪問(wèn)Oracle數(shù)據(jù)庫(kù)的文章就介紹到這了,更多相關(guān)限制ip訪問(wèn)Oracle數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
oracle調(diào)試存儲(chǔ)過(guò)程的過(guò)程詳解
這篇文章主要介紹了oracle調(diào)試存儲(chǔ)過(guò)程過(guò)程詳解,文中通過(guò)圖文展示介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Oracle SQL語(yǔ)句實(shí)現(xiàn)數(shù)字四舍五入取整
本文介紹Oracle中一些對(duì)數(shù)字的常用操作,包括向上向下去整、四舍五入、保留N位小數(shù)等操作,希望對(duì)大家有所幫助。2016-05-05
oracle設(shè)置密碼復(fù)雜度及設(shè)置超時(shí)退出的功能
我們都知道密碼策略加固的參數(shù)一般包括密碼長(zhǎng)度、復(fù)雜度檢測(cè)、最大最小使用時(shí)間、過(guò)期警報(bào)時(shí)間、最大登錄失敗次數(shù)以及鎖定時(shí)間等設(shè)置,下面這篇文章主要給大家介紹了關(guān)于oracle設(shè)置密碼復(fù)雜度及設(shè)置超時(shí)退出功能的相關(guān)資料,需要的朋友可以參考下2022-06-06
Oracle Index Partition索引分區(qū)的注意事項(xiàng)
Oracle索引分區(qū)的管理是一個(gè)復(fù)雜而重要的過(guò)程,需要數(shù)據(jù)庫(kù)管理員具備豐富的經(jīng)驗(yàn)和專業(yè)知識(shí),通過(guò)合理的索引分區(qū)策略、定期的維護(hù)和優(yōu)化以及注意事項(xiàng)的遵循,可以確保數(shù)據(jù)庫(kù)的性能和穩(wěn)定性,這篇文章主要介紹了Oracle Index Partition索引分區(qū)的管理,需要的朋友可以參考下2024-08-08
日常收集整理oracle trunc 函數(shù)處理日期格式(很實(shí)用)
關(guān)于oracle trunc函數(shù)小編日常收集整理了些,下面把oracle trunc 函數(shù)處理日期格式的相關(guān)介紹分享給大家,感興趣的朋友參考下2015-10-10
oracle數(shù)據(jù)庫(kù)id自增及生成uuid問(wèn)題
這篇文章主要介紹了oracle數(shù)據(jù)庫(kù)id自增及生成uuid問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
向Oracle數(shù)據(jù)庫(kù)的CLOB屬性插入數(shù)據(jù)報(bào)字符串過(guò)長(zhǎng)錯(cuò)誤
在項(xiàng)目中向數(shù)據(jù)庫(kù)的CLOB屬性插入一段篇文章(1000~2000)字就會(huì)報(bào)一個(gè)字符串過(guò)長(zhǎng)的錯(cuò)誤,有類似情況的朋友可以參考下2014-08-08
oracle復(fù)習(xí)筆記之PL/SQL程序所要了解的知識(shí)點(diǎn)
本文主要是前篇文章的續(xù)篇,主要來(lái)復(fù)習(xí)PL/SQL的基本語(yǔ)法、記錄類型、流程控制、游標(biāo)的使用、異常處理機(jī)制、存儲(chǔ)函數(shù)/存儲(chǔ)過(guò)程、觸發(fā)器。好記性不如爛筆頭,古人誠(chéng)不欺我~2014-08-08

