oracle11配置安全环境

来源:互联网 发布:有什么好看的网络电影 编辑:程序博客网 时间:2024/06/15 20:27

前言:公司使用安全评估系统对Centos7上安装的oracle11进行了安全评估,下面是针对绿盟科技"远程安全评估系统"安全评估报告提出的危险项进行修复.


1.连接oracle

$ sqlplus / as sysdba
$ exit //退出

2.关闭超管远程登陆(修改remote_login_passwordfile值为none,需重启oracle)
sys@ora10g> show parameter REMOTE_LOGIN_PASSWORDFILE //查询默认值为EXCLUSIVE
sys@ora10g> alter system set remote_login_passwordfile=none scope=spfile; //修改值为none ,重启生效
sys@ora10g> shutdown immediate; //立即关机
sys@ora10g> startup; //启动
sys@ora10g> show parameter REMOTE_LOGIN_PASSWORDFILE

3.登陆记录数据库访问配置
a.创建表LOGON_TABLE
create table LOGON_TABLE(
SESSION_USER varchar2(256),
CREATE_TIME date
  );
b.创建触发器
CREATE OR REPLACE TRIGGER TRI_LOGON
AFTER LOGON ON DATABASE
BEGIN
INSERT INTO LOGON_TABLE VALUES
(SYS_CONTEXT('USERENV', 'SESSION_USER'),SYSDATE);
END;
/
//如果是on schema的话只对创建用户进行跟踪
https://www.techonthenet.com/oracle/functions/sys_context.php
c.查看登陆记录记录信息
SQL> select * from LOGON_TABLE;

删除表:drop table 表名
删除触发器:drop trigger 触发器名字;

4.指定具体机器可访问oracle
[oracle@localhost admin]$ vi ${ORACLE_HOME}/product/112010/db_1/network/admin/sqlnet.ora
在 sqlnet.ora中设置下面参数:
tcp.validnode_checking = yes
tcp.invited_nodes = (192.168.14.158,192.168.14.159)
[root@localhost admin]$lsnrctl reload  //重启监听器使设置生效,需root用户操作

5.配置oracle客户端连接自动超时
在 sqlnet.ora中设置下面参数(单位为分钟):
SQLNET.EXPIRE_TIME=15
[root@localhost admin]$lsnrctl reload  //重启监听器使设置生效,需root用户操作

6.oracle配置所有用户的密码复杂度
概念:PROFILE在Oracle数据库对数据库用户能够使用的资源做进一步的限制的一种手段,如对连接到某个用户的session或sql所能使用的CPU资源进行控制,又如控制Oracle用户的密码管理策略等等

//查看缺省profile 中 密码相关的参数配置信息
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              UNLIMITED
 DEFAULT                        PASSWORD PASSWORD_REUSE_TIME              UNLIMITED
 DEFAULT                        PASSWORD PASSWORD_REUSE_MAX              UNLIMITED
 DEFAULT                        PASSWORD PASSWORD_VERIFY_FUNCTION        NULL
 DEFAULT                        PASSWORD PASSWORD_LOCK_TIME              1
 DEFAULT                        PASSWORD PASSWORD_GRACE_TIME              7

//调用Oracle 的脚本生成密码校验函数
//具体存储位置[] cat $ORACLE_HOME/rdbms/admin/utlpwdmg.sql
SQL> @?/rdbms/admin/utlpwdmg.sql
 
//再次查看配置结果:
 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              180
 DEFAULT                        PASSWORD PASSWORD_REUSE_TIME              UNLIMITED
 DEFAULT                        PASSWORD PASSWORD_REUSE_MAX              UNLIMITED
 DEFAULT           PASSWORD PASSWORD_VERIFY_FUNCTION        VERIFY_FUNCTION_11G------新生成的函数
 DEFAULT                        PASSWORD PASSWORD_LOCK_TIME              1
 DEFAULT                        PASSWORD PASSWORD_GRACE_TIME              7
 
//如何修改profile 中配置参数:
 alter profile DEFAULT limit PASSWORD_LIFE_TIME 90; //账户口令的生存期不长于 90 天
 alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS 6; //连续6次连接不成功,该用户将被锁定
 alter profile DEFAULT limit PASSWORD_REUSE_MAX 5; //密码修改5次后才能再次被重新使用
 alter profile DEFAULT limit PASSWORD_REUSE_MAX UNLIMITED; 

//再次查看配置结果:
 SQL> SELECT profile,resource_type,resource_name,limit FROM dba_profiles WHERE resource_type='PASSWORD' AND profile='DEFAULT';

dba_profiles表中是作用于所有用户,对特定用户配置如下案例:
情景:指定zhangsan用户最多尝试3次登陆,锁定的天数为2天
//配置一个规则
>create profile zhangsan_lock limit failed_login_attempts 3 password_lock_time 2;  
//把规则赋予给用户
 >alter  user  zhangsan  profile  zhangsan_lock;  
  //解锁
>alter  user  zhangsan  account  unlock;  

6.为监听服务的启动和关闭,设置操作密码
listener的密码策略对start无效,目的是防止恶意stop
Oracle11g以后,除了启动监听的用户之外,其它用户都无法停止Listener,即使Listener有密码。

Oracle11g的Listener认证采用Security ON: Password OR Local OS Authentication
Oracle10g的Listener认证采用Security ON: Password

配置oracle11只使用Password 方式步骤如下:
a.先配置密码
[oracle@test ~]$ lsnrctl
LSNRCTL> change_password  //首次配置旧密码直接回车
LSNRCTL> save_config //save_config失败
LSNRCTL> set password       -->(认证)输入新设定的密码
LSNRCTL> save_config       -->再次save_config成功

b.关闭 LOCAL_OS_AUTHENTICATION认证
向/opt/oracle/product/112010/db_1/network/admin/listener.ora文件中添加:
LOCAL_OS_AUTHENTICATION_LISTENER=OFF

c.看状态信息执行如下
$ lsnrctl    
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.15.57)(PORT=1521)))
TNS-01169: The listener has not recognized the password
LSNRCTL> set password B1DD26FFB3CF0D25 //填写之前配置的密码
LSNRCTL> status

d.忘记密码的解决方式
1.ps -ef|grep lsn得到监听程序
2.kill -9 11571
3.修改/opt/oracle/product/112010/db_1/network/admin/listener.ora文件,注释掉一行关于密码的加密的数据.
#PASSWORDS_LISTENER = CD9A1930ADCDE17C
4.再次启动监听程序。这是发现已经不再需要密码了。
原创粉丝点击