一、检查项名称:检查是否限制具备数据库超级管理员(SYSDBA)权限的用户远程登录
判断条件:1. 以SYSDBA用户不能远程连接到数据库。
操作:
SQL>
show parameter REMOTE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_archive_enable string true
remote_dependencies_mode string TIMESTAMP
remote_listener string ESSLN
remote_login_passwordfile string EXCLUSIVE
remote_os_authent boolean FALSE
remote_os_roles boolean FALSE
SQL>
alter sysdba set REMOTE_LOGIN_PASSWORDFILE=NONE SCOPE=SPFILE;
shutdown immediate.
startup.
在spfile中设置REMOTE_LOGIN_PASSWORDFILE=NONE来禁止SYSDBA用户从远程登陆。
select t.VALUE from v$parameter t where upper(t.NAME) like '%REMOTE_LOGIN_PASSWORDFILE%'
(1)REMOTE_LOGIN_PASSWORDFILE=none且SQLNET.AUTHENTICATION_SERVICES= none:
oracle安装用户本地sqlplus “/ as sysdba”无法登录
非oracle安装用户本机sqlplus “sys/change_on_install as sysdba”无法登录
非oracle安装用户远程sqlplus “/ as sysdba_on_install@sid as sysdba”无法登录
(2)REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNET.AUTHENTICATION_SERVICES= none:
oracle安装用户本地sqlplus “/ as sysdba”无法登录
非oracle安装用户本机sqlplus “sys/change_on_install as sysdba”能登录
非oracle安装用户远程sqlplus “/ as sysdba_on_install@sid as sysdba”能登录
(3)REMOTE_LOGIN_PASSWORDFILE=none且SQLNET.AUTHENTICATION_SERVICES= (NTS):
oracle安装用户本地sqlplus “/ as sysdba”能登录
非oracle安装用户本机sqlplus “sys/change_on_install as sysdba”无法登录
非oracle安装用户远程sqlplus “/ as sysdba_on_install@sid as sysdba”无法登录
(4)REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNET.AUTHENTICATION_SERVICES= (NTS):
oracle安装用户本地sqlplus “/ as sysdba”能登录
非oracle安装用户本机sqlplus “sys/change_on_install as sysdba”能登录
非oracle安装用户远程sqlplus “/ as sysdba_on_install@sid as sysdba”能登录
文章来自于:http://blog.163.com/ansel_zlh/blog/static/1037271720094535654606/
二、检查是否限制可以访问数据库的地址
判断条件:在非信任的客户端以数据库账户登陆被提示拒绝
vi $ORACLE_HOME/network/admin/sqlnet.ora
tcp.validnode_checking = yes
tcp.invited_nodes = (ip1,ip2…) -----允许
重启监听测试...
tcp.validnode_checking的值为yes
三、监听设置密码
[oracle@test ~]$
lsnrctl
LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 26-JUN-2011 08:24:09
Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL>
set current_listener listener_name ----设置当前监听器
Current Listener is listener_name
LSNRCTL>
start --启动过程也不需要任何密码,启动的详细信息省略
LSNRCTL>
change_password --使用change_password来设置密码
Old password: 旧密码
New password: 新密码
Reenter new password: 新密码
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))
Password changed for listener_name
The command completed successfully
LSNRCTL>
save_config --save_config失败
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))
TNS-01169: The listener has not recognized the password
LSNRCTL>
set password --输入新设定的密码验证
Password:
The command completed successfully
LSNRCTL>
save_config -->再次save_config成功
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))
Saved listener_demo92 configuration parameters.
Listener Parameter File /oracle/92/network/admin/listener.ora
Old Parameter File /oracle/92/network/admin/listener.bak
The command completed successfully
增加密码之后在listener.ora文件中新增密码选项(注:尽管使用了密码管理方式,仍然可以无需密码启动监听)
[oracle@test admin]$
more listener.ora
#----ADDED BY TNSLSNR 26-JUN-2018 15:12:48---
PASSWORDS_listener_name =
#--------------------------------------------
四、设置数据库将自动断开超过10分钟的空闲远程连接
cd $ORACLE_HOME/nework/admin
vi sqlnet.ora
在文件中新增一选项:
SQLNET.EXPIRE_TIME=10(分钟)
五、设置客户端和服务器是否使用加密,可选值
cd $ORACLE_HOME/nework/admin
vi sqlnet.ora
在文件中新增一选项:
sqlnet.encryption=requested
选项:
accepted(如果对方设置为requested或required,则使用加密服务)
rejected(不使用加密服务,即使对方设置为requested也不使用)
requested(如果对方使用加密服务,则使用加密服务)
required(使用加密服务,如果对方没有使用则无法连接)
SQLNET.ENCRYPTION_CLIENT
SQLNET.ENCRYPTION_SERVER
#设置使用的加密算法
SQLNET.ENCRYPTION_TYPES_CLIENT
SQLNET.ENCRYPTION_TYPES_SERVER
六、判断条件:连续6次用错误的密码连接用户,第7次时用户将被锁定
操作:为用户创建profile
CREATE PROFILE password_profile LIMIT
FAILED_LOGIN_ATTEMPTS 6
PASSWORD_LOCK_TIME 1/96
命令:select limit from dba_profiles t where resource_name = 'FAILED_LOGIN_ATTEMPTS',回显中default值变成6
七、修改密码有效时间为90天
SQL>alter profile default limit password_life_time 90;
验证:
select limit from dba_profiles t where resource_name = 'PASSWORD_LIFE_TIME';