Oracle資料庫安全往往容易被SA或者DBA所忽視,實則還是需要提高警惕,一下是一些配置和參數以改進Oracle資料庫的安全性。
0. 限制sysdba角色的使用者使用遠程登入
alter system set remote_login_passwordfile=none scope=spfile;
這個參數預設值為 EXCLUSIVE ,注意,修改後只能從主機上使用OS認證的方式進行登入。
1. 使用profile進行限定資源和口令安全
如果要使用口令管理,以SYS執行 utlpwdmg.sql 指令碼。
@?/rdbms/admin/utlpwdmg.sql;
口令帳戶鎖定相關參數:
FAILED_LOGIN_ATTEMPTS 鎖允許登入失敗的次數
PASSWORD_LOCK_TIME 達到登入失敗次數後,帳戶鎖定的天數,過了這個天數之後帳戶會自動解鎖
口令失效和到期相關參數:
PASSWORD_LIFE_TIME 口令的生存期(天)
PASSWORD_GRACE_TIME 口令失效後從第一次成功登入算起的更改口令的寬限期(天)
口令記錄相關參數:
PASSWORD_REUSE_TIME 可以重新使用口令前的天數
PASSWORD_REUSE_MAX 可以重新使用口令的最多次數
口令校正相關參數: 【幫客之家 http://www.bkjia.com 】
PASSWORD_VERIFY_FUNCTION 檢驗口令設定的PL/SQL 函數
如何使用這些參數呢?一是建立新的設定檔,然後把設定檔綁定到使用者:
CREATE PROFILE profile_name LIMIT
FAILED_LOGIN_ATTEMPTS 6
PASSWORD_VERIFY_FUNCTION verify_function
PASSWORD_LOCK_TIME 1/24;
ALTER USER user_name PROFILE profile_name;
如果不需要設定檔了,刪除:
DROP PROFILE developer_prof CASCADE
二是直接修改預設的設定檔,這樣對每個使用該設定檔的使用者都是生效的:
ALTER PROFILE DEFAULT LIMIT
FAILED_LOGIN_ATTEMPTS 6
PASSWORD_VERIFY_FUNCTION verify_function
PASSWORD_LOCK_TIME 1/24;
2. 設定監聽器口令
在10g當中,監聽器的口令設定已經過時了,對監聽器的任何操作預設情況下變成了OS認證方式,也就是說對監聽啟動操作的使用者可以任意停止監聽,而非啟動使用者則無法對監聽器進行停止,但是如果你想要恢複到9i的那種需要口令操作的情況,可以如下設定:
listener.ora檔案增加如下一行參數:
LOCAL_OS_AUTHENTICATION_[listener name] = OFF
通過以下方式設定口令:
[oracle@test admin]$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 08-AUG-2012 14:42:03
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> change_password
Old password:
New password:
Reenter new password:
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.4)(PORT=1521)))
Password changed for LISTENER
The command completed successfully
LSNRCTL> save_config --奇怪的是儲存失敗,需要執行下 set password之後重新儲存即可
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.4)(PORT=1521)))
TNS-01169: The listener has not recognized the password
LSNRCTL> set password
Password:
The command completed successfully
LSNRCTL> save_config
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.4)(PORT=1521)))
Saved LISTENER configuration parameters.
Listener Parameter File /u01/oracle/10g/product/10.2.0/db_1/network/admin/listener.ora
Old Parameter File /u01/oracle/10g/product/10.2.0/db_1/network/admin/listener.bak
The command completed successfully
LSNRCTL>