如何限定IP訪問Oracle資料庫-轉
在Oracle中,有3種辦法可以限定特定IP訪問資料庫。第一種是利用登入觸發器,如下:
CREATE OR REPLACE TRIGGER CHK_IP_LHR
AFTER LOGON ON DATABASE
DECLARE
V_IPADDR VARCHAR2(30);
V_LOGONUSER VARCHAR2(60);
BEGIN
SELECT SYS_CONTEXT('USERENV', 'IP_ADDRESS'),
SYS_CONTEXT('USERENV', 'SESSION_USER')
INTO V_IPADDR, V_LOGONUSER
FROM DUAL;
IF V_IPADDR LIKE ('192.168.59.%') THEN
RAISE_APPLICATION_ERROR('-20001', 'User '||V_LOGONUSER||' is not allowed to connect from '||V_IPADDR);
END IF;
END;
/
|
需要注意的問題:
① 觸發的物件型別可以為DATABASE,也可以為“使用者名稱.SCHEMA”,如:
AFTER LOGON ON DATABASE
AFTER LOGON ON SCOTT.SCHEMA
|
②
當觸發的物件型別為DATABASE的時候,登入使用者不能擁有“ADMINISTER DATABASE
TRIGGER”的系統許可權;當觸發的物件型別為“使用者名稱.SCHEMA”的時候,登入使用者不能擁有“ALTER ANY
TIGGER”的系統許可權。否則,這些使用者還是會正常登入到資料庫,只是將相應的報錯資訊寫入到告警日誌中。所以,擁有IMP_FULL_DATABASE和DBA角色的使用者以及SYS和EXFSYS使用者將不能透過這種方式限制登入。
③
隱含引數“_SYSTEM_TRIG_ENABLED”的預設值是TRUE,即允許DDL和系統觸發器。當設定隱含引數“_SYSTEM_TRIG_ENABLED”為FALSE的時候,將禁用DDL和系統觸發器。所以,當該值設定為FALSE的時候將不能透過這種方式限制登入。
第二種是修改$ORACLE_HOME/network/admin/sqlnet.ora檔案,增加如下內容:
TCP.VALIDNODE_CHECKING=YES #開啟IP限制功能
TCP.INVITED_NODES=(127.0.0.1,IP1,IP2,……) #允許訪問資料庫的IP地址列表,多個IP地址使用逗號分開
TCP.EXCLUDED_NODES=(IP1,IP2,……) #禁止訪問資料庫的IP地址列表,多個IP地址使用逗號分開
|
之後重新啟動監聽器即可。這樣客戶端在登入的時候會報“ORA-12537: TNS:connection closed”的錯誤。
需要注意的問題:
① 需要設定引數TCP.VALIDNODE_CHECKING為YES才能啟用該特性。
② 一定要許可或不要禁止資料庫伺服器本機的IP地址,否則透過lsnrctl將不能啟動或停止監聽,因為該過程監聽程式會透過本機的IP訪問監聽器,而該IP被禁止了,但是透過服務啟動或關閉則不影響。
③ 當引數TCP.INVITED_NODES和TCP.EXCLUDED_NODES設定的地址相同的時候以TCP.INVITED_NODES的配置為主。
④ 修改之後,一定要重起監聽才能生效,而不需要重新啟動資料庫。
⑤ 這個方式只是適合TCP/IP協議。
⑥ 這個配置適用於Oracle 9i以上版本。在Oracle 9i之前的版本使用檔案protocol.ora。
⑦ 在伺服器上直接連線資料庫不受影響。
⑧ 這種限制方式是透過監聽器來限制的。
⑨ 這個限制只是針對IP檢測,對於使用者名稱檢測是不支援的。
第3種是修改資料庫伺服器的IPTABLES(配置檔案:/etc/sysconfig/iptables)來限制某些IP登入資料庫伺服器。如下:
iptables -A INPUT -s 192.168.59.1/32 -i eth0 -p tcp --dport 1521 -j DROP
service iptables save
|
則,192.168.59.1這臺主機將不能透過1521埠連線到資料庫伺服器了,會報“ORA-12170: TNS:Connect timeout occurred”的錯誤。
轉至http://www.itpub.net/thread-2085377-1-1.html
轉至http://www.itpub.net/thread-2085377-1-1.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29551564/viewspace-2137569/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【方法】如何限定IP訪問Oracle資料庫Oracle資料庫
- oracle 限定ip訪問Oracle
- 如何限制ip訪問Oracle資料庫Oracle資料庫
- 限定client端IP訪問oracle!clientOracle
- 限定client段ip訪問oracle!clientOracle
- Oracle資料庫限制訪問IPOracle資料庫
- 禁止某個IP訪問Oracle資料庫Oracle資料庫
- 觸發器限制指定IP訪問oracle資料庫觸發器Oracle資料庫
- 限制特定IP訪問資料庫資料庫
- 設定oracle資料庫IP訪問限制(IP白名單黑名單)Oracle資料庫
- 使用Oracle Net實現限制特定IP訪問資料庫Oracle資料庫
- Oracle資料庫訪問控制Oracle資料庫
- 資料庫限制/允許某些IP訪問資料庫
- Oracle,SqlServer,Access資料庫通用訪問類設計(轉)OracleSQLServer資料庫
- Oracle資料庫訪問效能優化Oracle資料庫優化
- 資料庫如何處理大資料訪問資料庫大資料
- 用perl訪問mysql資料庫(轉)MySql資料庫
- 遠端資料庫的訪問 (轉)資料庫
- 透過socket訪問資料庫(轉)資料庫
- JSP訪問資料庫大全(轉)JS資料庫
- MySql資料庫C++訪問(轉)MySql資料庫C++
- 使用sqlnet.ora禁止特定IP訪問資料庫SQL資料庫
- Applet直接訪問資料庫 (轉)APP資料庫
- 用JDBC訪問一個資料庫(轉)JDBC資料庫
- nginx限制ip訪問(轉)Nginx
- 【LISTENER】使用sqlnet.ora禁止特定IP訪問資料庫SQL資料庫
- Oracle透明閘道器訪問SQLServer資料庫OracleSQLServer資料庫
- Oracle透明閘道器訪問MySQL資料庫OracleMySql資料庫
- JDBC資料庫訪問JDBC資料庫
- Oracle資料鏈+同義詞+訪問遠端資料庫Oracle資料庫
- Oracle資料庫連結(DBLink)中如何訪問包含BLOB欄位的資料Oracle資料庫
- 在Linux下訪問MSSQLServer資料庫 (轉)LinuxSQLServer資料庫
- Struts HOW-TO 系列 之 資料庫訪問 (轉)資料庫
- Sqlserver限制賬戶在哪些ip下才可以訪問資料庫SQLServer資料庫
- ubuntu下python通過sqlalchemy庫訪問oracle資料庫UbuntuPythonSQLOracle資料庫
- Oracle資料庫訪問限制繞過漏洞 解決Oracle資料庫
- Windows 下JDBC 訪問Oracle11g 資料庫WindowsJDBCOracle資料庫
- 大型網站資料庫及資料訪問最佳化(轉)網站資料庫