身份鉴别
(一)采用用户名密码等身份认证方式
风险等级
高
评估方法
- Linux/Unix下输入sqlplus,看是否提示输入帐号密码
- windows,在cmd中输入sqlplus看是否要求帐号密码
- 使用连接软件,例如sqldeveloper/sqlplus连接数据库1521端口,输入默认帐号看是否可以登录
整改建议
建议采用用户名密码等身份认证方式
(二)配置口令复杂度策略
风险等级
高
评估方法
查看utlpwdmg.sql
cat $ORACLE_HOME/rdbms/admin/utlpwdmg.sql | grep -i "password_"
验证配置是否生效
2.1 查看的用户所对应的profile名称
select username,profile from dba_users;
2.2 查看profile下的配置(替换
DEFAULT
为检查中发现对应用户的profile名称)PASSWORD_LIFE_TIME
<= 180 (同一密码可用于身份验证的天数)📷合规select limit from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';
PASSWORD_GRACE_TIME
<= 10 (宽限期开始后发出警告并允许登录的天数)📷合规select limit from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_GRACE_TIME';
PASSWORD_REUSE_TIME
>= 1800 (密码不能重复使用的天数)📷不合规select limit from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_REUSE_TIME';
PASSWORD_REUSE_MAX
>= 5 (在重新使用当前密码之前需要更改密码的次数)📷不合规select limit from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_REUSE_MAX';
PASSWORD_VERIFY_FUNCTION
(在指定的连续登录尝试失败次数后帐户将被锁定的天数)📷不合规select limit from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_VERIFY_FUNCTION';
整改建议
更改
PASSWORD_LIFE_TIME
参数值为建议值180alter profile DEFAULT limit PASSWORD_LIFE_TIME 180;
更改
PASSWORD_GRACE_TIME
参数值为建议值10alter profile DEFAULT limit PASSWORD_GRACE_TIME 10;
更改
PASSWORD_REUSE_TIME
参数值为建议值1800alter profile DEFAULT limit PASSWORD_REUSE_TIME 1800;
更改
PASSWORD_REUSE_MAX
参数值为建议值5alter profile DEFAULT limit PASSWORD_REUSE_MAX 5;
更新
PASSWORD_VERIFY_FUNCTION
参数值为合规函数名称使用自带函数:
查看
utlpwdmg.sql
中的函数,查看是否存在length(password)>8
(如存在则记录CREATE OR REPLACE FUNCTION
中函数名称,不存在则修改为length(password)>8
)cat $ORACLE_HOME/rdbms/admin/utlpwdmg.sql | grep -i "length(password)"
更改
PASSWORD_VERIFY_FUNCTION
的值为符合的CREATE OR REPLACE FUNCTION
中函数名称alter profile DEFAULT limit PASSWORD_VERIFY_FUNCTION verify_function;
(三)登录失败限制策略
风险等级
中
评估方法
登录失败限制策略
FAILED_LOGIN_ATTEMPTS
<= 5(帐户被锁定之前尝试登录该用户帐户的失败次数)📷不合规select limit from dba_profiles where profile='DEFAULT' and resource_name='FAILED_LOGIN_ATTEMPTS';
登录失败锁定策略
PASSWORD_LOCK_TIME
>= 1(在指定的连续登录尝试失败次数后帐户将被锁定的天数)📷合规select limit from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LOCK_TIME';
登录超时退出策略
IDLE_TIME
!=UNLIMIT(会话期间允许的连续不活动时间段,以分钟为单位)📷不合规select limit from dba_profiles where profile='DEFAULT' and resource_name='IDLE_TIME';
整改建议
更改
FAILED_LOGIN_ATTEMPTS
参数值为建议值5alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS 5;
更改
PASSWORD_LOCK_TIME
参数值为建议值1alter profile DEFAULT limit PASSWORD_LOCK_TIME 1;
更改
IDLE_TIME
的值不为UNLIMITalter profile DEFAULT limit IDLE_TIME 2;
(四)采用加密的方式进行远程管理
风险等级
高
评估方法
查看initsSID.ora文件中的REMOTE_0S _AUTHENT的赋值
cat $ORACLE_HOME/network/admin/initsSID.ora
查看listene.ora文件中的”LISTENER”-“DESCRIPTION “-“ADDRESS_LIST”-“ADDRESS”- “PROTOCOL”项目的赋值是否存在TCPS
cat $ORACLE_HOME/network/admin/listener.ora
查看
REMOTE_LOGIN_PASSWORDFILE
参数值是否为EXCLUSIVE
show parameter remote_login_passwordfile;
整改建议
建议采用加密的方式进行远程管理,REMOTE_LOGIN_PASSWORDFILE
参数设置为EXCLUSIVE
方式
alter system set remote_login_passwordfile = 'EXCLUSIVE' scope = spfile;
(五)不与操作系统不共用一个管理员账号
风险等级
高
评估方法
windows中查看管理员组是否有oracle专属帐号
linux中查看oracle是否为普通帐号安装
整改建议
应为操作系统和数据库系统的不同用户分配不同的用户名\应禁止多人共用一个管理员帐号的现象。
(六)配置监听服务空闲连接超时时间
评估方法
查看
sqlnet.ora
,是否配置SQLNET.EXPIRE_TIME
参数并小于等于建议值10cat $ORACLE_HOME/network/admin/sqlnet.ora | grep -i "EXPIRE_TIME"
整改建议
数据库sqlnet.ora
文件中应配置SQLNET.EXPIRE_TIME
参数,建议值为10分钟
SQLNET.EXPIRE_TIME = 10
访问控制
(一)操作系统和数据库系统特权用户的权限分离
评估方法
查看oracel进程应不以root启动
整改建议
应在宿主操作系统中设置本地数据库专用帐号,并赋予该账户除运行各种数据库服务外的最低权限。
应实现操作系统和数据库系统特权用户的权限分离,定期检查和调整用户访问数据库的权限。
(注:此项要求仅针对非Windows系统)
(二)禁止SYS’、‘SYSTEM’以外的dba权限账号
评估方法
从结果中判断是否有多余帐号
select grantee from dba_role_privs where granted_role='dba' and grantee not in ('SYS','SYSTEM');
整改建议
应禁止SYS’,’SYSTEM’,以外的dba权限账号。应用系统账户应按照最小权限的原则,不应具有dba权限。
(三)限制默认账号的访问权限
风险等级
高
评估方法
使用sqlplus测试 sys system等重要用户是否为默认帐号。常用默认密码有oracle,system,等自行组合
整改建议
应限制默认账户的访问权限,修改SYS’,’SYSTEM‘,’SYSMAN’等账户的默认口令;
(四)删除无用帐号
风险等级
中
评估方法
禁用TEST、HR、SCOTT、OE、 PM、SH等默认用户,删除无用帐号
select username, lock_date, expiry_date from dba_users;
数据字典保护功能
show parameter O7_DICTIONARY_ACCESSIBILITY;
整改建议
建议数据库数据字典进行保护,设置DICTIONARY_ACCESSIBILIT
参数值为FALSE
访问控制功能
lsnrctl status
show parameter dispatcher;
安全审计
审计功能
show parameter audit_sys_operations;
日志级别
select value from v$parameter where name='audit_trail';
show parameter audit;
!ls 日志目录
审计记录
select * from dba_obj_audit_opts;
select * from dba_stmt_audit_opts;
select * from dba_priv_audit_opts;
入侵防范
补丁更新
$ORACLE_HOME/OPatch/opatch lsinventory
资源控制
最大连接数
评估方法
查看最大进程数(processes<=200)
show parameter processes;
查看最大会话数(sessions<=400)
show parameter sessions;
整改建议
以管理员身份登录数据库,修改进程连接数
alter system set processes=200 scope=spfile;
修改会话数
alter system set sessions=400 scope=spfile;
关闭数据库
shutdown immediate;
启动数据库
startup;
(可能需要同时修改UNIX系统参数:/etc/proc/kernel 中semmns)
限制单个用户对系统资源的最大或最小使用限度
select * from dba_profiles where resource_name='SESSIONS_PER_USER';
select * from dba_profiles where resource_name='CPU_PER_SESSION';
select * from dba_profiles where resource_name='IDLE_TIME';
archive log list;
参考文章
Oracle 10.2:CREATE PROFILEㅤALTER PROFILE
Oracle 21:Initialization Parameters - Database Reference
转载请注明来源,欢迎对文章中的引用来源进行考证,文章可能具有时效性,欢迎指出任何有错误、已失效或不够清晰的表达 ,可通过[邮件](mailto:cnlnnn@qq.com)联系垃圾堆主人