首页 » 数据库 » Oracle » Oracle数据库安全基线

Oracle数据库安全基线

 
文章目录

具体安全配置

账户和密码

禁止帐户共用

使用命令:
sqlplus /nolog;
connect /as sysdba;#登录到 sqlplus环境中
执行命令:select username from dba_users where ACCOUNT_STATUS='OPEN';查看数据库已启用的帐号。
确保系统中不存在账户共用的情况。

限制DBA组中用户

以root用户登录到操作系统,在命令行下输入cat /etc/group,确保DBA组是否只有Oracle帐户。
若Oracle用户不在DBA组使用下列命令加入:
usermod -G dba用户名

帐户锁定

1)查看数据库帐户;
SQL>select username,ACCOUNT_STATUS from dba_users;
2)除了SYS/SYSMAN/SYSTEM和业务帐户处于OPEN状态外,其他帐户均已锁定或删除。

口令锁定策略

以DBA权限帐户登录到sqlplus中,执行SQL语句:
select LIMIT from dba_profiles where RESOURCE_NAME='FAILED_LOGIN_ATTEMPTS'AND PROFILE ='DEFAULT';
查看failed_login_attempts的值应小于或等于5。

口令过期警告天数

数据库发出警告到登录失效前的宽限天数:
以DBA权限帐户登录到sqlplus中,执行SQL语句:
select LIMIT from dba_profiles where RESOURCE_NAME='PASSWORD_GRACE_TIME'AND PROFILE ='DEFAULT';
查看password_grace_time的值应大于或等于7。

口令有效期

以DBA权限帐户登录到sqlplus中,执行语句:
select LIMIT from dba_profiles where RESOURCE_NAME='PASSWORD_LIFE_TIME' AND PROFILE ='DEFAULT';
查看password_life_time的值应小于或等于90。

账户锁定时间

账户登录超过有效次数锁定时间:
以DBA权限帐户登录到sqlplus中,执行SQL语句:
select LIMIT from dba_profiles where RESOURCE_NAME='PASSWORD_LOCK_TIME' AND PROFILE ='DEFAULT';
查看password_lock_time的值应大于或等于1/48(30分钟)。

口令重用次数

以DBA权限帐户登录到sqlplus中,执行SQL语句:select LIMIT from dba_profiles where RESOURCE_NAME='PASSWORD_REUSE_MAX' AND PROFILE ='DEFAULT';
查看PASSWORD_REUSE_MAX的值应为5或更大。

口令复杂度验证

以DBA权限帐户登录到sqlplus中,
执行SQL语句:select LIMIT from dba_profiles where RESOURCE_NAME='PASSWORD_VERIFY_FUNCTION'AND PROFILE='DEFAULT';
password_verify_function设置为verify_function。

确保默认帐户、密码无法登录

1)以DBA权限帐户登录到sqlplus中,命令如下:$sqlplus /nolog ; 2)检查以数据库默认帐户、密码是否能登录数据库,命令如下: SQL>connect system/manager;
SQL>connect sys/change_on_install;
SQL>connectsysman/oem_temp;
SQL>connectdbsnmp/dbsnmp;

口令加密

使用命令:sqlplus /nolog; connect /as sysdba;登录到 sqlplus环境中,执行命令:select username from dba_users where ACCOUNT_STATUS='OPEN';查看数据库已启用的帐号。
确保系统中不存在账户共用的情况。

DBSNMP默认账户

在安装oracle时,如果用缺省安装,oracle会自动创建DBSNMP用户,该用户的默认密码和用户名相同,出于安全考虑,;另外,也可以把该用户drop掉,删除方法执行:$ORACLE_HOME/rdbms/admin/catnsnmp.sql

重建方法执行:$ORACLE_HOME/rdbms/admin/catsnmp.sql

其他有威胁的账号号还有:CTXSYS,MDSYS,ORDPLUGINS,ORDSYS,OUTLN

权限分配
访问IP限制

设置$ORACLE_HOME/network/admin/sqlnet.ora文件中的参数:
tcp.validnode_checking=yes#对连接节点进行检查
tcp.excluded_nodes={list of IP address}
tcp.invited_nodes={list of IP address#确保已设置只允许信任的IP地址通过监听器访问数据库。
重启监听:
lsnrctl stop;
lsnrctl start

关闭Extproc功能

Extproc允许用户不进行身份认证就调用系统函数,存在安全风险。
检查LISTENER.ORA文件,删除以下内容:icache_extproc、PLSExtproc、Extproc。

限制特权账户远程登录

1)以DBA权限帐户登录到sqlplus中。
2)使用show parameter命令来检查参数:
REMOTE_LOGIN_PASSWORDFILE设置为NONE,特权用户无法远程登录到数据库。

账户最小权限分配

1)以DBA权限帐户登录到数据库执行以下命令:
SQL>select * from dba_role_privs;

SQL>select * from dba_sys_privs;
SQL>select grantee from dba_role_privs where granted_role='DBA';
2)普通帐户具有连接数据库以及对所管理的对象增添删改等操作权限,不应具有dba权限。

检查目录权限

检查$ORACLE_HOME/bin目录的权限是755,或者尽可能少的权限

检查DBA权限

对于SELECT_CATALOG_ROLE
EXECUTE_CATALOG_ROLE
DELETE_CATALOG_ROLE
DBA_ (all), 只赋予DBAs(dba_role_privs)

检查SYSDBA和SYSOPER的权限

设置listener.ora文件中的参数:
tcp.validnode_checking=yes
tcp.invited_nodes=(localhost,本机ip,应用服务器ip,管理机ip等)
重启监听:
lsnrctl stop;
lsnrctl start

数据文件权限

确保对$ORACLE_HOME/bin目录的访问权限尽可能少
ls -l $ORACLE_HOME/bin
确保该目录下的文件属主为oracle用户,且其他用户没有写权限。

连接数设置

1)以管理员身份登录数据库,命令如下:
$sqlplus /nolog ;
SQL>connect /as sysdba;
2)查看数据库最大进程数,命令如下:
SQL>Select value from v$parameter where name= 'processes';
3)查看oracle数据库进程数:
ps -ef |grep ora;
系统参数processes的值大于当前oracle数据库进程数。

审计与备份
监听程序管理

设置listener.ora文件中的参数:
ADMIN_RESTRICTIONS_listener_name=ON

数据库操作审计

检查系统参数audit_trail 的值是否设置为DB/TRUE、OS、DB_EXTENDED来打开数据库审计;
使用以下命令查看:
SQL>show Parameter audit

数据库备份

数据库定期备份,至少每周一次完全备份。
定期进行数据库备份与恢复有效性测试。

原文链接:Oracle数据库安全基线,转载请注明来源!

2