近期應(yīng)客戶要求,需要對訪問生產(chǎn)環(huán)境的oracle數(shù)據(jù)庫的ip做一些限制,即:只有通過審核的ip才能訪問數(shù)據(jù)庫,其他ip一律禁止訪問數(shù)據(jù)庫。 在Oracle中可以通過sqlnet.ora文件的設(shè)置或者通過觸發(fā)器可以實現(xiàn)對特定ip的限制訪問。 1、修改sqlnet.ora文件: 步驟: a
近期應(yīng)客戶要求,需要對訪問生產(chǎn)環(huán)境的Oracle數(shù)據(jù)庫的ip做一些限制,即:只有通過審核的ip才能訪問數(shù)據(jù)庫,其他ip一律禁止訪問數(shù)據(jù)庫。
在Oracle中可以通過sqlnet.ora文件的設(shè)置或者通過觸發(fā)器可以實現(xiàn)對特定ip的限制訪問。
1、修改sqlnet.ora文件:
步驟:
a)測試在未設(shè)置前某一客戶端的登錄數(shù)據(jù)庫情況:
C:Documents and SettingsThinkPad>sqlplusapp/app@uat17
SQL*Plus: Release 9.2.0.1.0 – Production on Thu Aug 30 11:02:21 2012
Copyright (c) 1982, 2002, Oracle Corporation.? All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select name from v$database;
NAME
———
PROD
SQL>
–說明連接成功
b)通過對文件:$Oracle_HOME/network/admin/sqlnet.ora文件添加:
tcp.validnode_checking=yes
tcp.invited_nodes=(192.168.1.61)
tcp.excluded_nodes=(192.168.1.90)
說明:
第一行的含義:開啟IP限制功能;
第二行的含義:允許訪問數(shù)據(jù)庫的IP地址列表,多個IP地址使用逗號分開,此例中我們寫入數(shù)據(jù)庫服務(wù)器的IP地址;
第三行的含義:禁止訪問數(shù)據(jù)庫的IP地址列表,多個IP地址使用逗號分開,此處我們寫入欲限制的IP地址192.168.1.90。
c)重新啟服務(wù)器端listener,或者lsnrctl reload方式使剛才的修改在監(jiān)聽中生效。
[Oracle@APPDB-PROD admin]$ lsnrctl reload
LSNRCTL for Linux: Version 10.2.0.4.0 – Production on 30-AUG-2012 10:17:43
Copyright (c) 1991, 2007, Oracle.? All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
The command completed successfully
d)驗證客戶端(192.168.1.90)登錄情況:
C:Documents and SettingsThinkPad>sqlplusapp/app@uat17
SQL*Plus: Release 9.2.0.1.0 – Production on Thu Aug 30 11:12:46 2012
Copyright (c) 1982, 2002, Oracle Corporation.? All rights reserved.
ERROR:
ORA-12537: TNS:connection closed
Enter user-name:
報:ORA-12537: TNS:connection closed錯誤,說明限制成功。
注意事項:
1).上文中添加的第一項必須要寫,任何平臺都可以,但是只適用于TCP/IP協(xié)議。
2).第二行和第三行可以任意寫一行,如果tcp.invited_nodes與tcp.excluded_nodes都存在,以tcp.invited_nodes為主.
3).一定要許可或不要禁止服務(wù)器本機的IP地址,否則通過lsnrctl將不能啟動或停止監(jiān)聽,因為該過程監(jiān)聽程序會通過本機的IP訪問監(jiān)聽器,而該IP被禁止了,但是通過服務(wù)啟動或關(guān)閉則不影響,如果是rac最好將物理ip和虛擬ip都需要準(zhǔn)許訪問。
2.通過觸發(fā)器實現(xiàn):
conn /as sysdba
create or replace trigger? check_ip
after logon on app.schema
declare
ipaddr VARCHAR2(30);
begin
select sys_context(‘userenv’, ‘ip_address’) into ipaddr from dual;
if ipaddr like (‘192.168.1.90’) then
raise_application_error(‘-20001’, ‘you can not logon by app’);
end if;
end ;
/
但是這個只能是針對某一用戶做限制的。