0

Oracle合规性访问:如何拒绝非信任的账号连接库,及免密登录库设置???

一森咖记 2019-08-19
432

【此为"一森咖记"公众号——第32篇文章】


【前言】


大家都知道,数据是一个企业的“血脉”,保障数据库的数据安全性是一个系统的重中之重。那么,如何在数据库层面限制非信任的客户端账号直接访问数据库,即设置库的用户“白名单”,如何做到操作系统账号登陆数据库后不能以“sqlplus as sysdba”免密码方式直接访问数据库?

 

最近公司开始排查数据库安全基线,本文将重点梳理以下5点内容。

 

Question1:如何在数据库层面限制非信任的客户端账号登陆数据库?

Solution: sqlnet.ora文件中设置如下两个参数:

 

1.tcp.validnode_checking的值为yes

2.设置了信任的ip地址tcp.invited_nodes 

以上两者均满足则合规,否则不合规.

 

如何设置哪些IP允许访问数据库,既设置能够访问数据库的ip白名单,

具体设置步骤:

1.编辑文件$ORACLE_HOME\network\admin\sqlnet.ora中设置以下行:

    tcp.validnode_checking = yes
    tcp.invited_nodes = (ip1,ip2…) #ip1,ip2为#允许访问的IP.

     

    Question_2:如何拒绝以“sqlplus as sysdba”免密码方式直接登录数据库?

    Solution_2: sqlnet.ora文件中设置如下参数:

      SQLNET.AUTHENTICATION_SERVICES=(NONE)

       

      具体设置步骤:

      编辑文件$ORACLE_HOME/network/admin/sqlnet.ora,在文件中加入如下内容:

        SQLNET.AUTHENTICATION_SERVICES=(NONE)

        关闭操作系统认证后,用户将不能以conn as sysdba的方式登录数据库,必须使用数据库用户名和密码才能登录。

         

        Question_3:检查是否设置超时时间?

        Solution_3: $ORACLE_HOME/network/admin/sqlnet.ora文件查看是否设置参数

        SQLNET.EXPIRE_TIME.

         

        $ORACLE_HOME/network/admin/sqlnet.ora,在sqlnet.ora中设置下面参数:

          SQLNET.EXPIRE_TIME=15

           

          Question_4:检查是否使用加密传输?

          Solution_4: $ORACLE_HOME/network/admin/sqlnet.ora文件查看是否设置参数

          sqlnet.encryption

          编辑文件sqlnet.ora文件中加入如下两行:

            SQLNET.ENCRYPTION_SERVER=required
            SQLNET.ENCRYPTION_TYPES_SERVER=<encryption algorithm>(如 DES 等)

            具体见官网:

            http://www.orafaq.com/wiki/Network_Encryption。


            以下为官方介绍:

            Encryption status according to client and server parameter values is summarized in the following table (ORA-12660 is the error returned by Oracle in these cases):


            Rejected

            Accepted

            Requested

            Required

            Rejected

            OFF

            OFF

            OFF

            ORA-12660

            Accepted

            OFF

            OFF

            ON

            ON

            Requested

            OFF

            ON

            ON

            ON

            Required

            ORA-12660

            ON

            ON

            ON


            Question_5:如何监听设置密码?

            Solution_5:检查$ORACLE_HOME/network/admin/listener.ora文件中是否设置参数

            PASSWORDS_LISTENER. 

            设置了监听关闭和启动密码则合规

            (1).oracle用户登录系统。

            (2).lsnrctl。

            (3).change_password

            (4).set password

            (5).save_config.(注意10g需要listener.ora中加入LOCAL_OS_AUTHENTICATION_LISTENER = OFF)


            至此,文章结束。


            【总结】

            1. 本文简单介绍了5中很常见的安全基线的检查方式和解决方法,问题和方法都很简单,但大家可排查下,很少有库能够满足上述五点内容;

            2. 其中,如何在数据库层面限制非信任的客户端账号直接访问数据库,即设置库的用户“白名单”,如何做到操作系统账号登陆数据库后不能以“sqlplus as sysdba”免密码方式直接访问数据库,建议进行设置;

            3. 设置超时时间、是否使用加密传输、监听设置密码,这三个方面是具体生产需求而定。


            【参考】

            http://www.orafaq.com/wiki/Network_Encryption



            作者:ethan_yang

            公众号:一森咖记

            格言:认清大势,亦有一份小坚持


            欢迎关注个人微信公众号;

            长按以下二维码或公众号搜索“一森咖记”



            往期精彩文章

            =====================================

            1. 干货:RHEL7.2生产环境下双节点12c RAC搭建实操

            2. 干货:RHEL7.1环境下双节点Oracle RAC搭建实操

            3. LINUX环境:MySQL和Oracle开机自启动,咋搞?

            4. What:ASM自动脱落了

            5. 实操:12C RAC环境下的ADG同步库搭建

            6. Oracle Rac:关闭透明大页的原因及方法

            7. Oracle ADG同步技术,DBA必备的一种“后悔药”

            8. Logminer:oracle人为误操作之恢复神器

            9. “神器”:Oracle日志采集分析工具——TFA

            10. 技术八卦篇:Oracle云时代下的一个不再默认存在账号:Scott



            最后修改时间:2020-04-02 12:40:17
            「喜欢文章,快来给作者赞赏墨值吧」
            文章转载自一森咖记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论