切換用戶
# su ?- oracle
啟動監(jiān)聽器
$ lsnrctl ?start
停止監(jiān)聽器
$ lsnrctl stop
查看監(jiān)聽
$ lsnrctl status
oracle數(shù)據(jù)庫的安全包含兩部分:
1.一部分是os的安全
2.網(wǎng)絡(luò)的安全
3.oracle軟件本身的安全
OS的安全依賴相應(yīng)的操作系統(tǒng)及管理員的技術(shù)水平奏寨,我們這里只談?wù)刼racle的安全起意。
我了解的oracle軟件的安全包含:
1.更改oracle的默認監(jiān)聽端口號
2.給監(jiān)聽器加密碼
3.oracle控制ip的連接
下面將針對這三個方面測試學習:
oracle默認監(jiān)聽端口更改
1. 更改oracle的默認監(jiān)聽端口號
修改端口號的整體步驟:
1.1 。 查看當前監(jiān)聽的狀態(tài)
1.2 病瞳。 停止監(jiān)聽
1.3 揽咕。 修改監(jiān)聽文件的端口號
1.4 。 修改初始化參數(shù)local_listener
1.5 .??重啟監(jiān)聽器
1.6 套菜。 修改完畢亲善,使用新端口登錄測試
1.1 。 查看當前監(jiān)聽的狀態(tài)
C:/Documents and Settings/skate_db>lsnrctl status
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 19-7月 -2008 12:11:19
Copyright (c) 1991, 2005, Oracle.??All rights reserved.
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
LISTENER 的 STATUS
------------------------
別名??????????????????????LISTENER
版本??????????????????????TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
啟動日期??????????????????19-7月 -2008 11:47:59
正常運行時間??????????????0 天 0 小時 23 分 19 秒
跟蹤級別??????????????????off
安全性????????????????????ON: Password or Local OS Authentication
SNMP??????????????????????OFF
監(jiān)聽程序參數(shù)文件??????????E:/oracle/product/10.2.0/db_3/network/admin/listener.ora
監(jiān)聽程序日志文件??????????E:/oracle/product/10.2.0/db_3/network/log/listener.log
監(jiān)聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC1ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=skate)(PORT=1522)))
服務(wù)摘要..
服務(wù) "PLSExtProc" 包含 1 個例程逗柴。
例程 "PLSExtProc", 狀態(tài) UNKNOWN, 包含此服務(wù)的 1 個處理程序...
服務(wù) "orcl" 包含 1 個例程蛹头。
例程 "orcl", 狀態(tài) READY, 包含此服務(wù)的 1 個處理程序...
服務(wù) "orclXDB" 包含 1 個例程。
例程 "orcl", 狀態(tài) READY, 包含此服務(wù)的 1 個處理程序...
服務(wù) "orcl_XPT" 包含 1 個例程戏溺。
例程 "orcl", 狀態(tài) READY, 包含此服務(wù)的 1 個處理程序...
命令執(zhí)行成功
1.2 渣蜗。 停止監(jiān)聽
C:/Documents and Settings/skate_db>lsnrctl stop
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 19-7月 -2008 13:1
6:15
Copyright (c) 1991, 2005, Oracle.??All rights reserved.
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
命令執(zhí)行成功
1.3 。 修改監(jiān)聽文件的端口號旷祸,用于網(wǎng)絡(luò)連接
把端口號修改為1523
# listener.ora?Network Configuration File:E:/oracle/product/10.2.0/db_3/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = E:/oracle/product/10.2.0/db_3)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = skate)(PORT = 1523))
)
)
#----ADDED BY TNSLSNR 12-7月 -2008 13:26:50---
PASSWORDS_LISTENER = 3650F1EB3C37ABD9
#---------------------------------------------
1.4 耕拷。 修改初始化參數(shù)local_listener??,用于本地連接
C:/Documents and Settings/skate_db>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 7月 19 13:24:02 2008
Copyright (c) 1982, 2005, Oracle.??All rights reserved.
連接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL>show parameter local_listener
NAME?????????????????????????????????TYPE????????VALUE
------------------------------------ ----------- ------------------------------
local_listener???????????????????????string??????(address=(protocol=tcp)(host=s
kate)(port=1522))
SQL> alter system set local_listener="(address=(protocol=tcp)(host=skate)(port=1
523))";
系統(tǒng)已更改肋僧。
1.5 .??重啟監(jiān)聽器
C:/Documents and Settings/skate_db>lsnrctl start
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 19-7月 -2008 13:2
7:44
Copyright (c) 1991, 2005, Oracle.??All rights reserved.
啟動tnslsnr: 請稍候...
TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
系統(tǒng)參數(shù)文件為E:/oracle/product/10.2.0/db_3/network/admin/listener.ora
寫入E:/oracle/product/10.2.0/db_3/network/log/listener.log的日志信息
監(jiān)聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC1ipc)))
監(jiān)聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=skate)(PORT=1523)))
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
LISTENER 的 STATUS
------------------------
別名??????????????????????LISTENER
版本??????????????????????TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
啟動日期??????????????????19-7月 -2008 13:27:47
正常運行時間??????????????0 天 0 小時 0 分 3 秒
跟蹤級別??????????????????off
安全性????????????????????ON: Password or Local OS Authentication
SNMP??????????????????????OFF
監(jiān)聽程序參數(shù)文件??????????E:/oracle/product/10.2.0/db_3/network/admin/listener.o
ra
監(jiān)聽程序日志文件??????????E:/oracle/product/10.2.0/db_3/network/log/listener.log
監(jiān)聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC1ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=skate)(PORT=1523)))
服務(wù)摘要..
服務(wù) "PLSExtProc" 包含 1 個例程斑胜。
例程 "PLSExtProc", 狀態(tài) UNKNOWN, 包含此服務(wù)的 1 個處理程序...
命令執(zhí)行成功
1.6 控淡。 修改完畢嫌吠,使用新端口登錄測試
1.6.1。 檢查監(jiān)聽端口是否改變
C:/Documents and Settings/skate_db>netstat -an | find "1523"
TCP????0.0.0.0:1523???????????0.0.0.0:0??????????????LISTENING
TCP????192.168.0.103:1523?????192.168.0.103:2389?????ESTABLISHED
TCP????192.168.0.103:2389?????192.168.0.103:1523?????ESTABLISHED
1.6.2掺炭。 查看監(jiān)聽器的狀態(tài)
C:/Documents and Settings/skate_db>lsnrctl status
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 19-7月 -2008 13:2
8:56
Copyright (c) 1991, 2005, Oracle.??All rights reserved.
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
LISTENER 的 STATUS
------------------------
別名??????????????????????LISTENER
版本??????????????????????TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
啟動日期??????????????????19-7月 -2008 13:27:47
正常運行時間??????????????0 天 0 小時 1 分 10 秒
跟蹤級別??????????????????off
安全性????????????????????ON: Password or Local OS Authentication
SNMP??????????????????????OFF
監(jiān)聽程序參數(shù)文件??????????E:/oracle/product/10.2.0/db_3/network/admin/listener.o
ra
監(jiān)聽程序日志文件??????????E:/oracle/product/10.2.0/db_3/network/log/listener.log
監(jiān)聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC1ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=skate)(PORT=1523)))
服務(wù)摘要..
服務(wù) "PLSExtProc" 包含 1 個例程辫诅。
例程 "PLSExtProc", 狀態(tài) UNKNOWN, 包含此服務(wù)的 1 個處理程序...
服務(wù) "orcl" 包含 1 個例程。
例程 "orcl", 狀態(tài) READY, 包含此服務(wù)的 1 個處理程序...
服務(wù) "orclXDB" 包含 1 個例程涧狮。
例程 "orcl", 狀態(tài) READY, 包含此服務(wù)的 1 個處理程序...
服務(wù) "orcl_XPT" 包含 1 個例程炕矮。
例程 "orcl", 狀態(tài) READY, 包含此服務(wù)的 1 個處理程序...
命令執(zhí)行成功
1.6.3 。使用新端口號(1523)登錄測試一下
C:/Documents and Settings/skate_db>sqlplus
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 7月 19 13:32:15 2008
Copyright (c) 1982, 2005, Oracle.??All rights reserved.
請輸入用戶名:sys/"oracle"@skate:1523/orclas sysdba
連接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL>
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE????10.2.0.1.0??????Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> select open_mode from v$database;
OPEN_MODE
----------
READ WRITE
注意:當修改了oracle默認監(jiān)聽端口后者冤,用tnsping會出錯的肤视,因為這個時候,oracle會讀tnsnames涉枫。ora這個文件邢滑,而這個文件的端口號沒有更改,只要更改下這里對應(yīng)的端口號就ok愿汰。
C:/Documents and Settings/skate_db>tnsping orcl
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 19-7月 -
2008 17:11:05
Copyright (c) 1997, 2005, Oracle.??All rights reserved.
已使用的參數(shù)文件:
E:/oracle/product/10.2.0/db_3/network/admin/sqlnet.ora
已使用 TNSNAMES 適配器來解析別名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = skate)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
TNS-12541: TNS: 無監(jiān)聽程序
在這里可以看到困后,oracle仍然用端口1521乐纸,我們更改下tnsnames.ora的端口號,就ok了摇予!
# tnsnames.ora Network Configuration File: E:/oracle/product/10.2.0/db_3/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = skate)(PORT = 1523))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =orcl)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
重啟監(jiān)聽器汽绢,再tnsping
C:/Documents and Settings/skate_db>lsnrstl stop
C:/Documents and Settings/skate_db>lsnrstl start
C:/Documents and Settings/skate_db>tnsping orcl
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 19-7月 -
2008 17:22:00
Copyright (c) 1997, 2005, Oracle.??All rights reserved.
已使用的參數(shù)文件:
E:/oracle/product/10.2.0/db_3/network/admin/sqlnet.ora
已使用 TNSNAMES 適配器來解析別名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = skate)(P
ORT = 1523)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
OK (50 毫秒)
我們可以看到:oracle默認監(jiān)聽端口更改為1523!
oracle控制ip的連接
2 .oracle控制ip的連接(我們也可以用數(shù)據(jù)庫觸發(fā)器記錄用戶的登錄情況侧戴,但是不能記錄dba權(quán)限的用戶)
單純的設(shè)定允許的IP 和 禁止的IP宁昭,在oracle9i以前有文檔說增加或修改protocol.ora文件,在9i及以后版本中真正起作用的是sqlnet.ora文件救鲤,我們修改sqlnet.ora其實是最好最快的方法久窟。
sqlnet.ora文件的功能:
1. Specify the client domain to append to unqualified names
2. Prioritize naming methods
3. Enable logging and tracing features
4. Route connections through specific processes
5. Configure parameters for external naming
6. Configure Oracle Advanced Security
7. Use protocol-specific parameters to restrict access to the database
我在這里用的就是第7個功能
在sqlnet.ora中增加如下部分
-----------------------------
tcp.validnode_checking=yes
#允許訪問的IP
tcp.invited_nodes=(ip1,ip2……)
#禁止訪問的IP
tcp.excluded_nodes=(ip1,ip2……)
例如:
#sqlnet.ora Network Configuration File: E:/oracle/product/10.2.0/db_3/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
#skate modify
tcp.validnode_checking=yes
tcp.invited_nodes=(192.168.0.103)
tcp.excluded_nodes=(192.168.0.10)
然后重新啟動監(jiān)聽器
C:/Documents and Settings/skate_db>lsnrstl stop
C:/Documents and Settings/skate_db>lsnrstl start
需要注意的問題:
1、 需要設(shè)置參數(shù)為YES,這樣才能激活本缠。
2斥扛、 建議設(shè)置允許訪問的IP,因為IP地址有可能被隨意修改丹锹,就不能起到保護自己的目的稀颁。
3、 TCP當參數(shù)TCP.INVITED_NODES和TCP.EXCLUDED_NODES設(shè)置的地址相同的時候?qū)⒏采wTCP.EXCLUDED_NODES設(shè)置楣黍。
4匾灶、 需要重啟監(jiān)聽器才能生效。
5租漂、 這個方式只是適合TCP協(xié)議阶女。
6、 這個配置適用于9i以上版本哩治。在9i之前的版本使用文件protocol.ora秃踩。
7、 在服務(wù)器上直接連接數(shù)據(jù)庫不受影響业筏。
8憔杨、 這種限制方式事通過監(jiān)聽器來限制的。
9蒜胖、 這個限制只是針對IP檢測消别,對于用戶名檢測事不支持的。