oracle常规的基线操作,包括public权限,监听,dba权限等

oracle设置public角色执行权限
参考配置操作:
以DBA身份登录sqlplus,执行:

select table_name from dba_tab_privs where grantee='PUBLIC' and privilege='EXECUTE' and table_name in ('UTL_FILE','UTL_TCP','UTL_HTTP','UTL_SMTP','DBMS_LOB','DBMS_SYS_SQL','DBMS_JOB'); 

如撤销不必要的public角色包执行权限,执行:

revoke execute on 程序包名称 from public;

oracle禁止具有数据库超级管理员(SYSDBA)权限的用户从远程登陆
在spfile中设置REMOTE_LOGIN_PASSWORDFILE=NONE来禁止SYSDBA用户从远程登陆:

SQL>alter system set remote_login_passwordfile=NONE scope=spfile; 
SQL>shutdown immediate; 
SQL>startup;

oracle数据库监听器(LISTENER)设置启动密码
切换到oracle的管理员,执行下列命令:

[oracle@./localhost ~]$ $ORACLE_HOME/bin/lsnrctl 
LSNRCTL> start 
LSNRCTL> change_password 
Old password:*** 
New password:*** 
Reenter new password:*** 
LSNRCTL> save_config

oracle检查是否启用数据字典保护
通过设置下面初始化参数来限制只有SYSDBA权限的用户才能访问数据字典:

SQL>alter system set O7_DICTIONARY_ACCESSIBILITY=FALSE scope=spfile; 
SQL>shutdown immediate; 
SQL>startup;

禁止除默认用户(sys、system、sysman)外其他用户有DBA角色权限
参考配置操作:
SQL>revoke dba from A;收回用户A的DBA权限
说明:
除了默认用户(sys、system和sysman),其他用户都不应赋予dba角色权限。
查看除默认用户(sys、system和sysman)外有DBA权限的用户:
SQL>select a.username from dba_users a left join dba_role_privs b on a.username = b.grantee where granted_role = ‘DBA’ and a.username not in (‘SYS’,‘SYSMAN’,‘SYSTEM’);

oracle检查是否进行SQL92安全设置
参考配置操作:
1.执行SQL命令

>SQL: alter system set sql92_security =true scope=spfile; 
2.关闭,重新启动数据库 
>SQL:shutdown; 
>SQL:startup;

oracle用静态口令进行认证的数据库,设置所有开启用户的口令长度至少6位,并包括数字、小写字母、大写字母和特殊符号4类中至少2类

以dba权限登录sqlplus,执行
第一步:查看当前开启用户及其profile

SQL>select username,profile from dba_users where account_status='OPEN'; 

第二步:创建系统默认的口令复杂度函数

SQL>@?/rdbms/admin/utlpwdmg.sql 

第三步:采用如下方法之一设置开启用户的密码复杂度
方法一:将所有开启用户的profile中的PASSWORD_VERIFY_FUNCTION设置为verify_function(oracle11g为verify_function_11G);

SQL>alter profile[第一步中的profile] limit PASSWORD_VERIFY_FUNCTION verify_function(oracle11g为verify_function_11G);

方法二:创建一个自定义profile,设置密码复杂度,并应用于开启用户

SQL>create profile [new_profile] limit 属性信息; 
SQL>alter user 用户名 profile [new_profile]; 

注:可在ORACLE_HOME/RDBMS/ADMIN/utlpwdmg.sql文件中修改函数verify_function(oracle11g为verify_function_11G),原有的代码默认是数字+大小写+符号,长度要大于等于4(verify_function)长度大于等于8(verify_function_11G)。

Oracle为系统开启账户创建profile
针对系统每个账户创建profile,如账户已有profile,可通过修改profile来控制用户属性。
1.新建profile:

SQL>create profile Profile_Name limit 
PASSWORD_LIFE_TIME 60 //账号生命周期60天 
PASSWORD_REUSE_TIME 60 //口令历史记录保留时间60天 
PASSWORD_REUSE_MAX 5 //用户不能重复使用最近5次 
PASSWORD_VERIFY_FUNCTION verify_function //用户密码复杂度 
PASSWORD_GRACE_TIME 90; //账号修改宽限天数 
ALTER USER UserName PROFILE Profile_Name; //将Profile_Name分配给用户UserName 

2.修改profile:

alter profile Profile_name limit 
PASSWORD_LIFE_TIME 60 //账号生命周期60天 
PASSWORD_REUSE_TIME 60 //口令历史记录保留时间60天 
PASSWORD_REUSE_MAX 5 //用户不能重复使用最近5次 
PASSWORD_VERIFY_FUNCTION verify_function //用户密码复杂度 
PASSWORD_GRACE_TIME 90; //账号修改宽限天数

Oracle打开监听器日志
切换到oracle的管理员,执行下列命令:

$ORACLE_HOME/bin/lsnrctl 
LSNRCTL>set log_directory /network/admin 
LSNRCTL>set log_file .log 
LSNRCTL>set log_status on 
LSNRCTL>save_config

Oracle设置监听器日志文件
切换到oracle的管理员,执行下列命令:

$ORACLE_HOME/bin/lsnrctl 
LSNRCTL>set log_directory /network/admin 
LSNRCTL>set log_file .log 
LSNRCTL>set log_status on 
LSNRCTL>save_config

Oracle11g应设置最大会话数
参考配置操作:
1.以管理员身份登录数据库,修改会话数:

>SQL:alter system set sessions=标准值 scope=spfile;

2.重启数据库,启用参数:

>SQL:shutdown immediate; 
>SQL:startup; 

(可能需要同时修改UNIX系统参数:/etc/proc/kernel 中semmns)

oracle 应设置最大进程连接数
参考配置操作:
1.以管理员身份登录数据库,修改进程连接数:

>SQL:alter system set processes=225 scope=spfile; 

2.重启数据库,启用参数:

>SQL:shutdown immediate; 
>SQL:startup; 

(可能需要同时修改UNIX系统参数:/etc/proc/kernel 中semmns)

oracle应设置最大会话数
参考配置操作:
1.以管理员身份登录数据库,修改会话数:

>SQL:alter system set sessions=标准值 scope=spfile; 
2.重启数据库,启用参数: 
>SQL:shutdown immediate; 
>SQL:startup; 

(可能需要同时修改UNIX系统参数:/etc/proc/kernel 中semmns)

Oracle设置监听器日志目录
切换到oracle的管理员,执行下列命令:

$ORACLE_HOME/bin/lsnrctl 
LSNRCTL>set log_directory /network/admin 
LSNRCTL>set log_file .log 
LSNRCTL>set log_status on 
LSNRCTL>save_config

oracle开启数据库审计功能
登录数据库后执行以下语句:

SQL>alter system set audit_trail='DB或者OS' scope=spfile; 
SQL>shutdown immediate; 
SQL>startup; 

通过设置参数audit_trail = db或os来打开数据库审计,然后可使用Audit命令对相应的对象进行审计设置。audit_trail是static参数,每次修改后需要重新启动数据库才能生效。

oracle创建触发器对用户登录进行日志记录
Step1、建表LOGIN_LOG

create table LOGIN_LOG( 
    SESSION_ID NUMBER(8,0) NOT NULL, 
    LOGIN_ON_TIME DATE, 
    USER_IN_DB VARCHAR(50), 
    IP_ADDRESS VARCHAR(20) 
    ); 

Step2、建触发器LOGIN_INFO

create trigger LOGIN_INFO 
after logon on database 
begin 
insert into LOGIN_LOG(SESSION_ID,LOGIN_ON_TIME,USER_IN_DB,IP_ADDRESS) select AUDSID,sysdate,sys.login_user,SYS_CONTEXT('USERENV','IP_ADDRESS') from v$session where AUDSID=USERENV('SESSIONID'); 
end; 
/ 

注意:end后的/不能少,可重新登录数据库,查看LOGIN_LOG表的内容来检验是否创建成功。(select * from LOGIN_LOG; )

你可能感兴趣的:(网络安全)