Oracle LiveLabs实验:DB Security - Native Network Encryption (NNE)
Posted dingdingfish
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle LiveLabs实验:DB Security - Native Network Encryption (NNE)相关的知识,希望对你有一定的参考价值。
概述
此实验申请地址在这里,时间为2小时。
实验帮助在这里。
本实验使用的数据库为19c。
简介
在此小型实验中,您将学习如何使用 Oracle 本地网络加密 (NNE - Native Network Encryption) 功能。
Lab 4: Native Network Encryption (NNE)
Introduction
本实验介绍 Oracle 本地网络加密 (NNE) 的功能。 它使用户有机会学习如何配置此功能以加密和保护运动中的数据。
Task 1: Check the current network configuration
sudo su - oracle
cd $DBSEC_LABS/nne
./nne_view_sqlnet_ora.sh
输出如下:
==============================================================================
Displays the SQLNet.ora file content...
==============================================================================
. The contents of the sqlnet.ora are:
这表示文件$ORACLE_HOME/network/admin/sqlnet.ora
最初为空。
检查网络是否已经加密:
./nne_is_sess_encrypt.sh
输出如下:
SID USERNAME AUTH_TYPE NETWORK_SERVICE_BANNER
---------- -------------------- ---------- ---------------------------------------------
707 SYSTEM DATABASE TCP/IP NT Protocol Adapter for Linux
SYSTEM DATABASE Encryption service for Linux
SYSTEM DATABASE Crypto-checksumming service for Linux
实际执行的是以下SQL:
select a.sid, a.username, b.authentication_type as auth_type, regexp_substr(b.network_service_banner,'[^:]+',1,1 ) network_service_banner
from V$SESSION a
, V$SESSION_CONNECT_INFO b
where a.sid = sys_context('userenv','sid')
and a.sid = b.sid;
当前,在NETWORK_SERVICE_BANNER列,还看不到具有Encryption service adapter
的行。说明NNE尚未启用。
V$SESSION_CONNECT_INFO 显示所有当前登录会话的网络连接信息。
Task 2: Generate and capture SQL traffic
对流量运行 tcpdump ,分析网络中传输的数据包(等待执行结束):
./nne_tcpdump_traffic.sh
此脚本首先执行tcpdump,然后运行sqlplus连接到数据库并执行SQL语句。捕获的输出存到文件tcpdump.pcap中。有很多工具可用于分析 pcap 文件。
$ wc -l tcpdump.pcap
2663 tcpdump.pcap
$ file tcpdump.pcap
tcpdump.pcap: tcpdump capture file (little-endian) - version 2.4 (Linux "cooked", capture length 1514)
接下来,我们将为 Glassfish 应用程序捕获网络流量。开始运行捕获脚本并且不要关闭它:
./nne_capt_empsearch_traffic.sh
打开浏览器,访问页面http://<YOUR_DBSEC-LAB_VM_PUBLIC_IP>:8080/hr_prod_pdb1 。
输入用户名hradmin和口令Oracle123。单击Search Employees,然后单击Search按钮。
现在回到您的终端会话以查看流量内容。可以看到很多明码,输入[Ctrl]+C以结束tcpdump程序。
Task 3: Enable the network encryption
您将使用 SQLNET.ENCRYPTION_SERVER 的 REQUESTED 值启用 SQL*Net 加密。
我们首先使用此选项,因为它仍将允许非加密连接连接数据库。 这样做通常很重要,因为其不会干扰无法在客户端和数据库之间加密的生产系统!
./nne_enable_requested.sh
它实际将sqlnet.ora修改为如下:
$ cat $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.ENCRYPTION_SERVER=REQUESTED
TLS 证书是本地网络加密(NNE)的替代方案,但需要用户管理和更多配置。
再次检测会话是否加密:
./nne_is_sess_encrypt.sh
输出如下:
. Query if there is a "Encryption service adapter" row in the query output
SID USERNAME AUTH_TYPE NETWORK_SERVICE_BANNER
---------- -------------------- ---------- ---------------------------------------------
589 SYSTEM DATABASE TCP/IP NT Protocol Adapter for Linux
SYSTEM DATABASE Encryption service for Linux
SYSTEM DATABASE AES256 Encryption service adapter for Linux
SYSTEM DATABASE Crypto-checksumming service for Linux
现在我们可以看到新增的行,其NETWORK_SERVICE_BANNER的值为AES256 Encryption service adapter for Linux。
现在,对流量重新运行 tcpdump 以分析网络上传输的数据包(等待执行结束):
./nne_tcpdump_traffic.sh
以上脚本实际使用strings命令来分析文件tcpdump.pcap。
DEMO_HR_EMPLOYEES 表数据仍然可以查询,但是当它显示在 tcpdump 中时,它们现在不可读,因为会话已加密!
在您的终端会话中捕获生成的流量,并且不要关闭它:
./nne_capt_empsearch_traffic.sh
以上脚本实际使用tcpflow来分析流量。
再次在网页中运行查询,需登出然后重新登入。
这个脚本可能有些问题,实际上egrep那句应该注释,而上面那句应该解除注释:
$ cat nne_capt_empsearch_traffic.sh
...
# sudo tcpflow -i any -c port 1521 -S enable_report=NO
sudo tcpflow -i any -C port 1521 -S enable_report=NO | egrep -i 'Oracle123|authenticate|password|hradmin|oracledemo|SELECT|FROM|WHERE|USER'
...
Task 4: (Optional) Disable the network encryption
./nne_disable.sh
此脚本的核心在于删除SQLNET.ENCRYPTION_SERVER所在行:
sed -i '/SQLNET.ENCRYPTION_SERVER/d' $ORACLE_HOME/network/admin/sqlnet.ora
Appendix: About the Product
Oracle 数据库提供本地数据网络加密和完整性,以确保动态数据在网络中传输时是安全的。
安全密码系统的目的是基于密钥将明文数据转换为难以理解的密文,这样在不知道正确密钥的情况下很难(计算上不可行)将密文转换回其对应的明文。
在对称密码系统中,相同的密钥用于加密和解密相同的数据。 Oracle 数据库提供高级加密标准 (AES) 对称密码系统,用于保护 Oracle 网络服务流量的机密性。
Oracle SQL*Net 流量可以通过以下方式加密:
- 本机网络加密(即本实验介绍的NNE)
- 基于 TLS 证书的加密
Want to Learn More?
参考文档Oracle Native Network Encryption 19c。
Acknowledgements
本实验作者为Hakim Loumi,贡献者为Rene Fontcha
以上是关于Oracle LiveLabs实验:DB Security - Native Network Encryption (NNE)的主要内容,如果未能解决你的问题,请参考以下文章
Oracle LiveLabs实验:DB Security - ASO (Data Redaction)
Oracle LiveLabs实验:DB Security - Audit Vault and DB Firewall
Oracle LiveLabs实验:DB Security - Native Network Encryption (NNE)
Oracle LiveLabs实验:DB Security - Database Vault