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
    
  • 数据库备份

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

你可能感兴趣的:(安全加固)