【此为"一森咖记"公众号——第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
公众号:一森咖记
格言:认清大势,亦有一份小坚持
欢迎关注个人微信公众号;
长按以下二维码或公众号搜索“一森咖记”
往期精彩文章
=====================================