设为首页 收藏本站
查看: 1270|回复: 0

[经验分享] Oracle数据库安全加固记录

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-9 09:18:39 | 显示全部楼层 |阅读模式
一个应用系统做等保,需要对数据库进行安全加固,根据流程需要先在测试环境进行测试通过后应用于生产环境,这里简单记录测试过程,审计内容是评测的重要点,但是生产环境也不便于开启,这里先简单记录之,后面再进行相关内容补充。
1. 删除无用多余的帐号1)查看帐号及状态SQL> select username,account_status from dba_users;
USERNAME                       ACCOUNT_STATUS   
------------------------------ --------------------------------   
MGMT_VIEW                      OPEN   
SYS                            OPEN   
SYSTEM                         OPEN   
DBSNMP                         OPEN   
SYSMAN                         OPEN   
ABC                            OPEN   
B                              OPEN   
KOU                            OPEN   
OUTLN                          EXPIRED & LOCKED   
FLOWS_FILES                    EXPIRED & LOCKED   
MDSYS                          EXPIRED & LOCKED   
ORDSYS                         EXPIRED & LOCKED   
SQL>
说明: 如果不使用EM,可以停用MGMT_VIEW,DBSNMP,SYSMAN帐号.
2)删除多余帐号,对于一些测试帐号可以删除掉。SQL> drop user kou cascade;   
User dropped.   
SQL>

2. 锁定多余用户,对于不明用途的帐号可以采用先锁定一段时间,再删除。(1) 锁定多余用户SQL> alter user abc account lock;   
User altered.
(2) 解锁用户SQL> alter user abc account unlock;   
User altered.
SQL> select username,account_status from dba_users;
USERNAME                       ACCOUNT_STATUS   
------------------------------ --------------------------------   
MGMT_VIEW                      OPEN   
SYS                            OPEN   
SYSTEM                         OPEN   
DBSNMP                         OPEN   
SYSMAN                         OPEN   
B                              OPEN   
ABC                            LOCKED   
OUTLN                          EXPIRED & LOCKED   
FLOWS_FILES                    EXPIRED & LOCKED
其它状态参数说明:   
OPEN:            正常的帐户   
LOCKED:          表示这个帐户被锁定;   
EXPIRED:         表示该帐户口令到期,要求用户在下次logon的时候修改口令(系统会在该account被设置为expire后的第一次登陆是提示你修改密码)   
EXPIRED(GRACE):  当设置了grace以后(第一次成功登录后到口令到期后有多少天时间可改变口令,在这段时间内,帐户被提醒修改口令并可以正常登陆,account_status显示为EXPIRED(GRACE).   
LOCKED(TIMED):   这种状态表示失败的login次数超过了FAILED_LOGIN_ATTEMPTS,被系统自动锁定,需要注意的是,在Oracle 10g中,默认的DEFAULT值是10次.   
EXPIRED & LOCKED:表示此账户被设置为口令到期且被锁定。   
EXPIRED(GRACE) & LOCKED(TIMED): 当account_stutus为EXPIRED(GRACE)的时候,用户又尝试失败的login次数超过了FAILED_LOGIN_ATTEMPTS,被系统自动锁定   
EXPIRED & LOCKED(TIMED): 当设置了account expire后,用户又失败的login次数超过了FAILED_LOGIN_ATTEMPTS,被系统自动锁定   
EXPIRED(GRACE) & LOCKED: 用户account_status为EXPIRED(GRACE)后,又被DBA 手工锁定帐户后的状态

3. 限制超级管理员远程登录1)默认状态下系统管理员是可以远程登录的,采用如下方式验证。C:\>sqlplus sys/oracle@orcl181 as sysdba;
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 12月 8 14:51:18 2014   
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
连接到:   
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production   
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
2)限制超级用户远程登录说明: 远程登录访问不登录密码文件进行验证。
SQL> alter system set remote_login_passwordfile=none scope=spfile;
SQL> shutdown immediate;   
SQL> startup;
3)限制用户使用本地操作系统认证登录有些安全配置要求,限制本地操作系统认证登录,配置如下。
$ vi /u01/app/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora   
SQLNET.AUTHENTICATION_SERVICES=none
4)测试方式sqlplus system/oracle@orcl as sysdba   
sqlplus / as sysdba
说明: 以上两条如果都启的话,SYSDBA用户将无法登录,数据库也无法启动,如果要进行管理操作,需要变通操作。

4. 根据帐号分配最小权限Oracle提供三种标准的角色: connect,resource和DBA,限制DBA权限的用户使用.
1)帐号拥有的系统权限SQL> select * from dba_sys_privs where grantee='ABC';
GRANTEE                        PRIVILEGE                                ADM   
------------------------------ ---------------------------------------- ---   
ABC                            UNLIMITED TABLESPACE                     NO
2)帐号拥有的角色SQL> select * from dba_role_privs where grantee='ABC';
GRANTEE                        GRANTED_ROLE                   ADM DEF   
------------------------------ ------------------------------ --- ---   
ABC                            CONNECT                        NO  YES   
ABC                            RESOURCE                       NO  YES   
SQL>
3)帐号拥有的对象权限SQL> select * from dba_tab_privs where grantee='ABC';   
no rows selected
4)参考配置操作, 对于DBA权限,需要判断是否需要DBA权限,否则都应取消dba权限,降为普通权,需要应用方DBA进行调整。示例:oracle数据库表空间及权限调整示例   
http://koumm.blog.iyunv.com/703525/1314154

5. 帐号密码策略配置1)Oracle 10g密码策略配置初始配置说明:通常对管理帐号与维护帐号时行密码策略,业务帐号不做策略限制,例如应用帐号过期,会影响业务的正常使用等情况,默认使用DEFAULT策略。
SQL> SELECT profile FROM dba_users WHERE username='ABC';
PROFILE   
------------------------------   
DEFAULT
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               UNLIMITED   
DEFAULT                        PASSWORD PASSWORD_REUSE_TIME              UNLIMITED   
DEFAULT                        PASSWORD PASSWORD_REUSE_MAX               UNLIMITED   
DEFAULT                        PASSWORD PASSWORD_VERIFY_FUNCTION         NULL   
DEFAULT                        PASSWORD PASSWORD_LOCK_TIME               UNLIMITED   
DEFAULT                        PASSWORD PASSWORD_GRACE_TIME              UNLIMITED
SQL>
2) 修改并启动密码复杂度说明:utlpwdmg.sql脚本中包括密码策略及帐号策略, 该脚本后面是帐号策略的配置,可以事先注释掉,后面再一一启用。
SQL> alter system set resource_limit = true;   
SQL> @$ORACLE_HOME/rdbms/admin/utlpwdmg.sql
3) 修改账号策略SQL> ALTER PROFILE DEFAULT LIMIT   
PASSWORD_LIFE_TIME 60   
PASSWORD_GRACE_TIME 10   
PASSWORD_REUSE_TIME 1800   
PASSWORD_REUSE_MAX UNLIMITED   
FAILED_LOGIN_ATTEMPTS 3   
PASSWORD_LOCK_TIME 1/1440;   
PASSWORD_VERIFY_FUNCTION verify_function
相关参数说明:   
FAILED_LOGIN_ATTEMPTS:    允许登录失败的次数   
PASSWORD_LOCK_TIME:       达到登录失败次数后,帐户锁定的天数,过了这个天数之后帐户会自动解锁   
PASSWORD_LIFE_TIME:       口令的生存期(天)   
PASSWORD_GRACE_TIME:      口令失效后从第一次成功登录算起的更改口令的宽限期(天)   
PASSWORD_REUSE_TIME:      可以重新使用口令前的天数   
PASSWORD_REUSE_MAX:       可以重新使用口令的最多次数   
PASSWORD_VERIFY_FUNCTION: 检验口令设置的PL/SQL 函数
查看结果:
SQL> set linesize 200;   
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            3   
DEFAULT                        PASSWORD PASSWORD_LIFE_TIME               60   
DEFAULT                        PASSWORD PASSWORD_REUSE_TIME              1800   
DEFAULT                        PASSWORD PASSWORD_REUSE_MAX               UNLIMITED   
DEFAULT                        PASSWORD PASSWORD_VERIFY_FUNCTION         VERIFY_FUNCTION   
DEFAULT                        PASSWORD PASSWORD_LOCK_TIME               .0006   
DEFAULT                        PASSWORD PASSWORD_GRACE_TIME              10
7 rows selected.
SQL>
# 取消Oracle密码复杂度检查:   
SQL> alter profile default limit password_verify_function null;   
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

4) 可以针对单个用户进行策略限制。SQL> CREATE PROFILE ABC_PROFILE LIMIT   
PASSWORD_LIFE_TIME UNLIMITED   
PASSWORD_GRACE_TIME 10   
PASSWORD_REUSE_TIME 1800   
PASSWORD_REUSE_MAX UNLIMITED   
FAILED_LOGIN_ATTEMPTS 3   
PASSWORD_LOCK_TIME 1/1440;
SQL> alter user abc profile ABC_PROFILE;   
User altered.
SQL>   
SQL> SELECT profile,resource_type,resource_name,limit FROM dba_profiles WHERE resource_type='PASSWORD' AND profile='ABC_PROFILE';
PROFILE                        RESOURCE RESOURCE_NAME                    LIMIT   
------------------------------ -------- -------------------------------- ----------------------------------------   
ABC_PROFILE                    PASSWORD FAILED_LOGIN_ATTEMPTS            3   
ABC_PROFILE                    PASSWORD PASSWORD_LIFE_TIME               UNLIMITED   
ABC_PROFILE                    PASSWORD PASSWORD_REUSE_TIME              1800   
ABC_PROFILE                    PASSWORD PASSWORD_REUSE_MAX               UNLIMITED   
ABC_PROFILE                    PASSWORD PASSWORD_VERIFY_FUNCTION         NULL   
ABC_PROFILE                    PASSWORD PASSWORD_LOCK_TIME               .0006   
ABC_PROFILE                    PASSWORD PASSWORD_GRACE_TIME              10

6. 启动数据字典保护只有SYSDBA才能访问数据字典基础表,普通用户不能查看X$开头的表。
SQL> show parameter O7_DICTIONARY_ACCESSIBILITY
NAME                                 TYPE        VALUE   
------------------------------------ ----------- ------------------------------   
O7_DICTIONARY_ACCESSIBILITY          boolean     FALSE   
SQL>
SQL> alter system set O7_DICTIONARY_ACCESSIBILITY= TRUE scope = spfile;   
SQL> shutdown immediate;   
SQL> startup;

7. 数据库访问控制只有信任的IP地址才能通过监听器访问数据库,非信任的客户端会被拒绝, 本机IP地址一定要在信任之列。   
通常对应用服务与数据库服务器加入信任列表。
$ vi $ORACLE_HOME/network/admin/sqlnet.ora   
tcp.validnode_checking = yes     
tcp.invited_nodes = (192.168.233.150,192.168.233.151)
#除以下IP地址之外都允许访问。   
tcp.excluded_nodes = (IP1,IP2,...)
重启监听即可。

8. 设置空闲连接时间$ vi $ORACLE_HOME/network/admin/sqlnet.ora   
SQLNET.EXPIRE_TIME = 60
说明:客户端连接后在设置的时间内没有任何操作,客户端会自动断开。

9. 操作系统层面限制DBA用户组的用户数量

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-37650-1-1.html 上篇帖子: Oracle中的同义词 下篇帖子: Oracle Rac ——Cache Fusion 数据库安全 Oracle 记录 加固
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表