摘要
修改dba密码 1 2 SQL > ALTER USER SYSTEM IDENTIFIED BY "newpassword";SQL > ALTER USER SYS IDENTIFIED BY "newpassword";
删除无用多余的帐号 查看帐号及状态 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 SQL > select username,account_status from dba_users; USERNAME ACCOUNT_STATUS MGMT_VIEW OPEN SYS OPEN SYSTEM OPEN DBSNMP OPEN SYSMAN OPEN ABC OPEN B OPEN KOU OPEN OUTLN EXPIRED & LOCKED FLOWS_FILES EXPIRED & LOCKED MDSYS EXPIRED & LOCKED ORDSYS EXPIRED & LOCKED SQL >
说明: 如果不使用EM,可以停用MGMT_VIEW,DBSNMP,SYSMAN
帐号.
删除多余帐号,对于一些测试帐号可以删除掉。 1 2 SQL > drop user kou cascade;User dropped.
锁定多余用户 对于不明用途的帐号可以采用先锁定一段时间,再删除。
锁定多余用户 1 2 3 SQL > alter user MGMT_VIEW account lock;SQL > alter user DBSNMP account lock;SQL > alter user SYSMAN account lock;
解锁用户 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 SQL > alter user abc account unlock;User altered. SQL > select username,account_status from dba_users; USERNAME ACCOUNT_STATUS MGMT_VIEW OPEN SYS OPEN SYSTEM OPEN DBSNMP OPEN SYSMAN OPEN B OPEN ABC LOCKED OUTLN EXPIRED & LOCKED FLOWS_FILES EXPIRED & LOCKED
其它状态参数说明:
OPEN:正常的帐户;
LOCKED:表示这个帐户被锁定;
EXPIRED:表示该帐户口令到期,要求用户在下次logon的时候修改口令(系统会在该account被设置为expire后的第一次登陆是提示你修改密码);
EXPIRED(GRACE):当设置了grace以后(第一次成功登录后到口令到期后有多少天时间可改变口令,在这段时间内,帐户被提醒修改口令并可以正常登陆,account_status显示为EXPIRED(GRACE).
LOCKED(TIMED):这种状态表示失败的login次数超过了FAILED_LOGIN_ATTEMPTS,被系统自动锁定,需要注意的是,默认的DEFAULT值是10次;
EXPIRED & LOCKED:表示此账户被设置为口令到期且被锁定;
EXPIRED(GRACE) & LOCKED(TIMED):当account_stutus为EXPIRED(GRACE)的时候,用户又尝试失败的login次数超过了FAILED_LOGIN_ATTEMPTS,被系统自动锁定;
EXPIRED & LOCKED(TIMED):当设置了account expire后,用户又失败的login次数超过了;
FAILED_LOGIN_ATTEMPTS:被系统自动锁定;
EXPIRED(GRACE) & LOCKED:用户account_status为EXPIRED(GRACE)后,又被DBA 手工锁定帐户后的状态;
限制超级管理员远程登录 默认状态下系统管理员是可以远程登录的,采用如下方式验证。
1 2 3 4 5 6 7 8 9 10 11 12 $ sqlplus sys/oracle@primarydb as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Mon Nov 18 10:04:57 2019 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL>
限制超级用户远程登录 说明: 远程登录访问不登录密码文件进行验证。
1 2 3 SQL > alter system set remote_login_passwordfile= none scope = spfile;SQL > shutdown immediate;SQL > startup;
限制用户使用本地操作系统认证登录 有些安全配置要求,限制本地操作系统认证登录,配置如下。
1 2 3 $ vi /data/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora SQLNET.AUTHENTICATION_SERVICES=none
测试方式 1 2 $ sqlplus system/oracle@primarydb as sysdba $ sqlplus / as sysdba
说明: 以上两条如果都启的话,SYSDBA用户将无法登录,数据库也无法启动,如果要进行管理操作,需要变通操作。
根据帐号分配最小权限 Oracle提供三种标准的角色: connect
,resource
和dba
,限制DBA权限的用户使用.
帐号拥有的系统权限 1 2 3 4 5 SQL > select * from dba_sys_privs where grantee= 'ABC' ; GRANTEE PRIVILEGE ADM ABC UNLIMITED TABLESPACE NO
帐号拥有的角色 1 2 3 4 5 6 7 SQL > select * from dba_role_privs where grantee= 'ABC' ; GRANTEE GRANTED_ROLE ADM DEF ABC CONNECT NO YES ABC RESOURCE NO YES SQL >
帐号拥有的对象权限 1 2 3 SQL > select * from dba_tab_privs where grantee= 'ABC' ;no rows selected
参考配置操作, 对于DBA权限,需要判断是否需要DBA权限,否则都应取消dba权限,降为普通权,需要应用方DBA进行调整。
帐号密码策略配置 Oracle密码策略配置初始配置 说明:通常对管理帐号与维护帐号时行密码策略,业务帐号不做策略限制,例如应用帐号过期,会影响业务的正常使用等情况,默认使用DEFAULT策略。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 SQL > SELECT profile FROM dba_users WHERE username= 'SYS' ; PROFILE DEFAULT SQL > SELECT profile,resource_type,resource_name,limit FROM dba_profiles WHERE resource_type= 'PASSWORD' AND profile= 'DEFAULT' ; PROFILE RESOURCE RESOURCE_NAME LIMIT DEFAULT PASSWORD FAILED_LOGIN_ATTEMPTS 10 DEFAULT PASSWORD PASSWORD_LIFE_TIME UNLIMITEDDEFAULT PASSWORD PASSWORD_REUSE_TIME UNLIMITEDDEFAULT PASSWORD PASSWORD_REUSE_MAX UNLIMITEDDEFAULT PASSWORD PASSWORD_VERIFY_FUNCTION NULL DEFAULT PASSWORD PASSWORD_LOCK_TIME UNLIMITEDDEFAULT PASSWORD PASSWORD_GRACE_TIME UNLIMITED
启动密码复杂度 说明:utlpwdmg.sql
脚本中包括密码策略及帐号策略, 该脚本后面是帐号策略的配置,可以事先注释掉,后面再一一启用。
1 2 3 SQL > alter system set resource_limit = true ;SQL > @$ORACLE_HOME/ rdbms/ admin/ utlpwdmg.sqlSQL > alter profile default limit PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION;
停止密码检验函数
1 SQL > alter profile default limit password_verify_function null ;
新建system profile 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 SQL > create profile SYSTEM_PROFILE LIMITPASSWORD_LIFE_TIME 60 PASSWORD_GRACE_TIME 10 PASSWORD_REUSE_TIME 1800 PASSWORD_REUSE_MAX UNLIMITED FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 1 / 2 PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION; 相关参数说明: PASSWORD_LIFE_TIME: 口令的生存期(天) PASSWORD_GRACE_TIME: 口令失效后从第一次成功登录算起的更改口令的宽限期(天) PASSWORD_REUSE_TIME: 可以重新使用口令前的天数 PASSWORD_REUSE_MAX: 可以重新使用口令的最多次数 FAILED_LOGIN_ATTEMPTS: 允许登录失败的次数 PASSWORD_LOCK_TIME: 达到登录失败次数后,帐户锁定的天数,过了这个天数之后帐户会自动解锁 PASSWORD_VERIFY_FUNCTION: 检验口令设置的PL/ SQL 函数
修改sys、system用户profile 1 2 SQL > alter user sys profile SYSTEM_PROFILE;SQL > alter user system profile SYSTEM_PROFILE;
修改账号策略 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 SQL > ALTER PROFILE SYSTEM_PROFILE LIMITPASSWORD_LIFE_TIME 60 PASSWORD_GRACE_TIME 10 PASSWORD_REUSE_TIME 1800 PASSWORD_REUSE_MAX UNLIMITED FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1 / 1440 PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION; 相关参数说明: PASSWORD_LIFE_TIME: 口令的生存期(天) PASSWORD_GRACE_TIME: 口令失效后从第一次成功登录算起的更改口令的宽限期(天) PASSWORD_REUSE_TIME: 可以重新使用口令前的天数 PASSWORD_REUSE_MAX: 可以重新使用口令的最多次数 FAILED_LOGIN_ATTEMPTS: 允许登录失败的次数 PASSWORD_LOCK_TIME: 达到登录失败次数后,帐户锁定的天数,过了这个天数之后帐户会自动解锁 PASSWORD_VERIFY_FUNCTION: 检验口令设置的PL/ SQL 函数
查看结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 SQL > set linesize 200 ;SQL > SELECT profile,resource_type,resource_name,limit FROM dba_profiles WHERE resource_type= 'PASSWORD' AND profile= 'SYSTEM_PROFILE' ; PROFILE RESOURCE RESOURCE_NAME LIMIT DEFAULT PASSWORD FAILED_LOGIN_ATTEMPTS 3 DEFAULT PASSWORD PASSWORD_LIFE_TIME 60 DEFAULT PASSWORD PASSWORD_REUSE_TIME 1800 DEFAULT PASSWORD PASSWORD_REUSE_MAX UNLIMITEDDEFAULT PASSWORD PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTIONDEFAULT PASSWORD PASSWORD_LOCK_TIME .0006 DEFAULT PASSWORD PASSWORD_GRACE_TIME 10 7 rows selected.
取消Oracle密码复杂度检查:
1 2 SQL > ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL ;SQL > ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
恢复DEFAULT PROFILE
修改密码永不过期,因为业务用户密码过期会造成不必要的麻烦。
1 SQL > alter profile default limit password_life_time unlimited;
针对单个用户进行策略限制。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 SQL > CREATE PROFILE ABC_PROFILE LIMITPASSWORD_LIFE_TIME UNLIMITED PASSWORD_GRACE_TIME 10 PASSWORD_REUSE_TIME 1800 PASSWORD_REUSE_MAX UNLIMITED FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1 / 1440 ; SQL > alter user abc profile ABC_PROFILE;User altered.SQL > SELECT profile,resource_type,resource_name,limit FROM dba_profiles WHERE resource_type= 'PASSWORD' AND profile= 'ABC_PROFILE' ; PROFILE RESOURCE RESOURCE_NAME LIMIT ABC_PROFILE PASSWORD FAILED_LOGIN_ATTEMPTS 3 ABC_PROFILE PASSWORD PASSWORD_LIFE_TIME UNLIMITED ABC_PROFILE PASSWORD PASSWORD_REUSE_TIME 1800 ABC_PROFILE PASSWORD PASSWORD_REUSE_MAX UNLIMITED ABC_PROFILE PASSWORD PASSWORD_VERIFY_FUNCTION NULL ABC_PROFILE PASSWORD PASSWORD_LOCK_TIME .0006 ABC_PROFILE PASSWORD PASSWORD_GRACE_TIME 10
启动数据字典保护 只有SYSDBA才能访问数据字典基础表,普通用户不能查看X$开头的表。
1 2 3 4 5 6 7 8 9 10 SQL > show parameter O7_DICTIONARY_ACCESSIBILITY NAME TYPE VALUE O7_DICTIONARY_ACCESSIBILITY boolean FALSE SQL > SQL > alter system set O7_DICTIONARY_ACCESSIBILITY= TRUE scope = spfile;SQL > shutdown immediate;SQL > startup;
数据库访问控制 只有信任的IP地址才能通过监听器访问数据库,非信任的客户端会被拒绝, 本机IP地址一定要在信任之列。 通常对应用服务与数据库服务器加入信任列表。
1 2 3 4 5 6 7 $ vi $ORACLE_HOME /network/admin/sqlnet.ora tcp.validnode_checking = yes tcp.invited_nodes = (192.168.233.150,192.168.233.151) tcp.excluded_nodes = (IP1,IP2,...)
重启监听即可。
设置空闲连接时间 1 2 3 $ vi $ORACLE_HOME /network/admin/sqlnet.ora SQLNET.EXPIRE_TIME = 60
说明:客户端连接后在设置的时间内没有任何操作,客户端会自动断开。
测试一下 创建一个用户
1 SQL > create user test identified by test;
可以看到报错密码和用户名相同
再次尝试
1 SQL > create user test identified by test1;
提示:密码至少应包含一个数字,一个字符和一个标点符号
再来一次
1 SQL > create user test identified by test_1;
成功!
注意
当Oracle数据库用户的密码含特殊字符如 @ 时,直接使用正常的密码输入,由于oracle将@后的字符解析为网络服务名而导致登陆失败
1 SQL > create user test identified by "test!1";
注意创建的时候用双引号
Linux平台登录方式:’test/“test!1@#”‘@orcl
1个双引号括密码,1个单引号括用户名+密码,即: ‘用户名/“密码”‘@服务名