检查是否使用加密传输
注意事项及影响:
① 该项加固需要与业务确认是否有9i 客户端连接,9i 不支持
②采用规避方案如下:
10g:
sqlnet.encryption_server = requested
sqlnet.encryption_server = rejected
11g:
sqlnet.encryption_server = rejected
sqlnet.encryption_server = requested
加固完用sqlplus登陆确认是否正常
该项加固完,可能在alert文件中产生TNS-12599: TNS:cryptographic 报错,需要在sqlnet.ora 中添加DIAG_ADR_ENABLED= OFF 参数,将错误记录到sqlnet.log 中
该项整改影响客户端到数据库的连接,需要谨慎操作,修改完确认连接是否正常
序号 |
操作内容 |
操作步骤 |
责任人 |
时间 |
1 |
登陆主机 |
su - oracle |
|
|
2 |
检查监听和数据库状态 |
lsnrctl status sqlplus ‘/as sysdba’ select open_mode from v$database; |
|
|
3 |
进入oracle_home |
cd $ORACLE_HOME/network/admin |
|
|
4 |
备份sqlnet.ora |
cp sqlnet.ora sqlnet.ora_bak |
|
|
5 |
编辑sqlnet.ora |
11g增加下面的内容进行规避,不影响业务 sqlnet.encryption_server = rejected sqlnet.encryption_server = requested
非11g则增加如下两行 sqlnet.encryption_server = requested sqlnet.encryption_server = rejected
|
|
|
6 |
测试登陆 |
用sqlplus 登陆数据库测试登陆是否存在异常,如果存在异常无法登陆则回退 |
|
|
7 |
检查数据库状态 |
Select open_mode from v$database; |
|
|
8 |
检查业务连接是否正常 |
需要业务验证 |
|
|
9 |
待有业务连接时查看alert日志 |
对于11g 数据库在业务连接正常时需要检查alert 日志,是否存在TNS-12599: TNS:cryptographic 报错信息;如果存在则在sqlnet.ora中增加如下参数 DIAG_ADR_ENABLED= OFF 该错误则会记录到 $ORACLE_HOME/network/log/sqlnet.log 中,否则alert 日志将会很大 |
|
|
10 |
观察alert日志 |
记录观察alert日志是否还存在报错信息 |
|
|
Oracle 高级安全分为两部分:
1.网络传输加密(包括ssl)
2.完整性校验
一.网络传输加密:
网络传输加密即将客户端也server段之间传输的数据进行加密:Oracle提供了很多加密方法来实现这一功能,完整性校验也同样依赖这些加密算法来实现
实施:
- 首先看一下,你当前的数据库是否安装了oralce 高级安全组件,oracle是否帮你安装了相应的加密算法。
1.1先看组件
[oracle@Database1 admin]$ adapters
Installed Oracle Net transport protocols are:
IPC
BEQ
TCP/IP
SSL
RAW
SDP/IB
Installed Oracle Net naming methods are:
Local Naming (tnsnames.ora)
Oracle Directory Naming
Oracle Host Naming
Oracle Names Server Naming
Installed Oracle Advanced Security options are:
RC4 40-bit encryption
RC4 56-bit encryption
RC4 128-bit encryption
RC4 256-bit encryption
DES40 40-bit encryption
DES 56-bit encryption
3DES 112-bit encryption
3DES 168-bit encryption
AES 128-bit encryption
AES 192-bit encryption
AES 256-bit encryption
MD5 crypto-checksumming
SHA-1 crypto-checksumming
Kerberos v5 authentication
RADIUS authentication
2.网络传输安全加密的方式:
网络传输加密需要在客户端可服务端两面分别配置,如应用也要加密则需要改程序。
高级网络安全的配置文件就是本机的sqlnet.ora文件。
关于网络传输加密的配置条目大约有3行
SQLNET.ENCRYPTION_SERVER = [accepted | rejected | requested | required]
默认值:accepted
SQLNET.CRYPTO_SEED = 'qweqwe123123'
长度10-70字母和数字(9i中必填10g中可填可不填)
SQLNET.ENCRYPTION_TYPES_SERVER= (RC4_128)加密算法
默认值是all available algorithms
下面是设置对照表,off表示加密失效,on加密开启,conn fails 设置失败。
另外如果两端的配置文件中SQLNET.ENCRYPTION_TYPES_SERVER所选的加密算法 不一样也会连接失败。但是一段有加密算法一端没有也没事。
客户端存在两种模式:
1、通过oracle客户端软件连接数据库
2、通过jdbc驱动连接oracle数据库
通过oracle客户端的情况:
启用传输加密和校验的主要方法是通过服务器端和客户端的sqlnet.ora文件实现。
配置方法:
理论上需要在数据库server端和oracle客户端都修改sqlnet.ora文件,但因为client端默认传输加密级别是ACCEPTED,默认一致性校验级别是ACCEPTED,所以只需要在服务器端设置如下参数就可以打开传输加密和一致性校验功能,而不需要再对client端的sqlnet.ora进行设置(知识拓展部分介绍)。
在oracle服务器端编辑sqlnet.ora文件,添加参数:
SQLNET.ENCRYPTION_SERVER = REQUIRED ----加密级别
SQLNET.ENCRYPTION_TYPES_SERVER = RC4_256 ----加密算法
SQLNET.CRYPTO_CHECKSUM_SERVER = REQUIRED --- 一致性能校验
设置参数后对新建立的session起作用。
Client Setting |
Server Setting |
Encryption and Data Negotiation |
REJECTED |
REJECTED |
OFF |
ACCEPTED |
REJECTED |
OFF |
REQUESTED |
REJECTED |
OFF |
REQUIRED |
REJECTED |
Connection fails |
REJECTED |
ACCEPTED |
OFF |
ACCEPTED |
ACCEPTED |
OFF 不配置的情况下默认就是这种 |
REQUESTED |
ACCEPTED |
ON |
REQUIRED |
ACCEPTED |
ON |
REJECTED |
REQUESTED |
OFF |
ACCEPTED |
REQUESTED |
ON |
REQUESTED |
REQUESTED |
ON |
REQUIRED |
REQUESTED |
ON |
REJECTED |
REQUIRED |
Connection fails |
ACCEPTED |
REQUIRED |
ON 这是上面配置的方法 |
REQUESTED |
REQUIRED |
ON |
REQUIRED |
REQUIRED |
ON |