概述
此实验关于Oracle AVDF(Audit Vault and DB Firewall)。
此实验申请地址在这里,时间为150分钟。
实验帮助在这里。
本实验使用的AVDF版本为Oracle AVDF 20.5。
环境生成后,记录3个主机的信息:
Instances :
129.146.77.47 DBSEC-AVS (Audit Vault Server)
129.146.45.178 DBSEC-DBF (DB Firewall Server)
129.146.97.17 DBSEC-LAB (审计目标)
Remote Desktop : http://129.146.97.17:6080/vnc.html?password=AWXYHOTZ4K&resize=scale&quality=9&autoconnect=true
Audit Vault Server支持用户AVADMIN和AVAUDITOR两个用户,口令均为T06tron.
为了节省时间,可以同时用2个用户登录,保持页面打开。
Introduction
本研讨会介绍了 Oracle Audit Vault and DB Firewall (AVDF) 的各种特性和功能。 它让用户有机会学习如何配置这些设备,以便审计、监控和保护对敏感数据的访问。
本实验的目标为:
- 将 Audit Vault 服务器连接到 Oracle 数据库
- 为此数据库配置审计并探索审计和报告能力
- 配置和管理防火墙监控
- 针对预期的 SQL 流量训练 DB Firewall 并查看对 Web 应用程序的影响
Task 1: Audit Vault - Run the Deploy Agent
实例DBSEC-LAB为数据库所在主机,登录此主机:
sudo su - oracle
cd $DBSEC_LABS/avdf/avs
./avs_deploy_avcli.sh
./avs_register_host.sh
部分输出如下,记录ACTIVATION_KEY: DBSECLAB::UZMQ-GM80-R#HY-OK0R-ENC2
AVCLI>
---------------------------------------------------------------------------------------------------
| HOST | IP | VERSION | ACTIVATION_KEY | STATUS | AGENT_LOCATION |
===================================================================================================
| dbseclab | 10.0.0.150 | | DBSECLAB::UZMQ-GM80-R
-----------------------------------------------------------------------------------------------------
部署和激活AV代理:
./avs_deploy_agent.sh
./avs_activate_agent.sh
确认代理处于运行状态:
$ ./avs_show_host.sh
==============================================================================
Verify that the host has been properly registered and activated with Audit Vault...
==============================================================================
------- View the info script -------
connect AVADMIN/T06tron.
list host;
------------------------------------
. Run the avcli utility to show the host registered
AVCLI : Release 20.5.0.0.0 - Production on Tue May 10 11:22:11 UTC 2022
Copyright (c) 1996, 2019 Oracle. All Rights Reserved.
AVCLI> Connected.
AVCLI> AVCLI>
--------------------------------------------------------------------------------------------------------
| HOST | IP | VERSION | ACTIVATION_KEY | STATUS | AGENT_LOCATION |
========================================================================================================
| dbseclab | 10.0.0.150 | 20.5.0.0.0 | DBSECLAB::UZMQ-GM80-R
--------------------------------------------------------------------------------------------------------
1 row(s) selected.
The command completed successfully.
AVCLI>
如果状态不是RUNNING,则运行以下:
$AV_HOME/bin/agentctl start
Task 2: Audit Vault - Register a Pluggable Database as Target
./avs_register_pdb.sh
输出如下:
==============================================================================
Register the pluggable database pdb1 as an AV Target...
==============================================================================
------ View the registration script ------
connect AVADMIN/T06tron.
LIST SECURED TARGET;
REGISTER SECURED TARGET pdb1 OF SECURED TARGET TYPE "Oracle Database" AT jdbc:oracle:thin:@//10.0.0.150:1521/pdb1 AUTHENTICATED BY avaudituser;
LIST SECURED TARGET;
------------------------------------------
. Run the avcli utility to register the pluggable database
AVCLI : Release 20.5.0.0.0 - Production on Tue May 10 11:24:28 UTC 2022
Copyright (c) 1996, 2019 Oracle. All Rights Reserved.
AVCLI> Connected.
AVCLI> AVCLI>
0 row(s) selected.
The command completed successfully.
AVCLI> Enter password:
The command completed successfully.
AVCLI>
-------------------------------------------------------------------------------------
| NAME | DESCRIPTION | LOCATION | SECUREDTARGETTYPE |
=====================================================================================
| pdb1 | | jdbc:oracle:thin:@//10.0.0.150:1521/pdb1 | Oracle Database |
-------------------------------------------------------------------------------------
1 row(s) selected.
The command completed successfully.
AVCLI>
说明:
- 您也可以从 Audit Vault Web 控制台执行此注册
- 此脚本将使用已创建并授予适当权限的数据库用户 AVAUDITUSER 来执行数据库审计收集和清理,并且对多个字典表具有 SELECT 访问权限
Task 3: Audit Vault - Register an Audit Trail
首先,使用 avcli 实用程序为可插拔数据库 pdb1 注册Unified Audit Trail以收集审计数据。
./avs_register_audit_trail.sh
输出如下:
$ ./avs_register_audit_trail.sh
==============================================================================
Register the Unified Audit Trail for the pluggable database pdb1...
==============================================================================
------ View the registration script ------
connect AVADMIN/T06tron.
LIST TRAIL FOR SECURED TARGET pdb1;
START COLLECTION FOR SECURED TARGET pdb1 USING HOST dbseclab FROM TABLE UNIFIED_AUDIT_TRAIL;
LIST TRAIL FOR SECURED TARGET pdb1;
------------------------------------------
. Run the avcli utility to register the UNIFIED_AUDIT_TRAIL to collect audit data
AVCLI : Release 20.5.0.0.0 - Production on Tue May 10 11:29:03 UTC 2022
Copyright (c) 1996, 2019 Oracle. All Rights Reserved.
AVCLI> Connected.
AVCLI> AVCLI>
0 row(s) selected.
The command completed successfully.
AVCLI> AVCLI>
Request submitted successfully. Audit trail is now eligible for auto-start.
AVCLI> AVCLI>
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| AUDIT_TRAIL_TYPE | HOST | LOCATION | STATUS | REQUEST_STATUS | AUTO_START_STATUS | AUTOSTART_ATTEMPTS | LAST_START_TIME | ERROR_MESSAGE |
===========================================================================================================================================================================
| TABLE | dbseclab | UNIFIED_AUDIT_TRAIL | STOPPED | START REQUESTED | ENABLED | 0 | 2022-05-10 11:29:05.335479 GMT | |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 row(s) selected.
The command completed successfully.
AVCLI>
执行完成后,AUTO_START_STATUS需为ENABLED。
接下来,列出可插入数据库 pdb1 的Audit Trail:
$ ./avs_list_audit_trails.sh
==============================================================================
List the Audit Trails for the pluggable database pdb1...
==============================================================================
---------- View the list script ----------
connect AVADMIN/T06tron.
LIST TRAIL FOR SECURED TARGET pdb1;
------------------------------------------
. Run the avcli utility to verify the UNIFIED_AUDIT_TRAIL is running (or idle)
AVCLI : Release 20.5.0.0.0 - Production on Tue May 10 11:31:57 UTC 2022
Copyright (c) 1996, 2019 Oracle. All Rights Reserved.
AVCLI> Connected.
AVCLI> AVCLI>
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| AUDIT_TRAIL_TYPE | HOST | LOCATION | STATUS | REQUEST_STATUS | AUTO_START_STATUS | AUTOSTART_ATTEMPTS | LAST_START_TIME | ERROR_MESSAGE |
=========================================================================================================================================================================
| TABLE | dbseclab | UNIFIED_AUDIT_TRAIL | IDLE | | ENABLED | 0 | 2022-05-10 11:29:05.335479 GMT | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 row(s) selected.
The command completed successfully.
AVCLI>
注意:
- 您应该会看到为Unified Audit Trail返回的一行
- STATUS 列应该显示 COLLECTING 或 IDLE,否则请再次运行脚本
使用 Audit Vault Web Console (地址为https://AVS-VM_@IP-Public)查看通过All Activity Report收集的审核数据。 登录用户名为AVAUDITOR ,口令为T06tron. 。
单击Reports选项卡;在Activity Reports下面的Summary部分,单击All Activity以加载报告。
您应该会看到如下所示的报告: 选择列头可以实现过滤: 这只是一个小示例,用于验证是否正在收集审计数据并且在 Audit Vault 中可见。
此时运行./avs_list_audit_trails.sh ,输出的STATUS仍为IDLE。
Task 4: Audit Vault - Manage Unified Audit Settings
仍然在Audit Vault的Web界面中。单击Targets选项卡,单击目标 pdb1,在 Audit Policy 下执行以下操作: 在Policies选修卡,Audit Policies页面,单击pdb1。由于我们的版本大于12c,因此选择Unified Auditing。 在Core Policies中的选择保持与下图一致(默认就是一致的),最后单击Provision Unified Policy。 在Settings选项卡中的Jobs页面,确认任务Unified Audit Policy的状态为Completed Successfully … 查看PDB1中所有的审计策略(包含未启用的):
$ ./avs_query_all_unified_policies.sh
==============================================================================
List all of the Unified Audit Policies in the pluggable database pdb1...
This includes enabled and disabled policies!
==============================================================================
. List all the Unified Audit policies
POLICY_NAME
APP_USER_NOT_APP_SERVER
EMPSEARCH_SELECT_USAGE_BY_PETE
ORA_ACCOUNT_MGMT
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_CRITICAL_DB_ACTIVITY
ORA_ADS$_DB_SCHEMA_CHANGES
ORA_ADS$_LOGON_EVENTS
ORA_ADS$_LOGON_FAILURES
ORA_ADS$_SYS_TOP_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_CRITICAL_DB_ACTIVITY
ORA_AV$_DB_SCHEMA_CHANGES
ORA_AV$_SYS_TOP_ACTIVITY
ORA_CIS_RECOMMENDATIONS
ORA_DATABASE_PARAMETER
ORA_DV_AUDPOL
ORA_DV_AUDPOL2
ORA_LOGON_FAILURES
ORA_RAS_POLICY_MGMT
ORA_RAS_SESSION_MGMT
ORA_SECURECONFIG
PRIVILEGED_ACTIONS
22 rows selected.
查看PDB1中所有启用的审计策略,之所以条目更多是因为POLICY_NAME有重复,可以针对不同的对象:
$ ./avs_query_enabled_unified_policies.sh
==============================================================================
List the ENABLED Unified Audit Policies in the pluggable database pdb1...
==============================================================================
. List the enabled Unified Audit policies
POLICY_NAME ENABLED_OPTION ENTITY_NAME ENTITY_TYPE SUCCESS FAILURE
PRIVILEGED_ACTIONS BY GRANTED ROLE DBA ROLE YES YES
ORA_SECURECONFIG BY USER ALL USERS USER YES YES
ORA_RAS_SESSION_MGMT BY USER ALL USERS USER YES YES
ORA_RAS_POLICY_MGMT BY USER ALL USERS USER YES YES
ORA_LOGON_FAILURES BY USER ALL USERS USER YES YES
ORA_DV_AUDPOL2 BY USER ALL USERS USER YES YES
ORA_DV_AUDPOL BY USER ALL USERS USER YES YES
ORA_DATABASE_PARAMETER BY USER ALL USERS USER YES YES
ORA_CIS_RECOMMENDATIONS BY USER ALL USERS USER YES YES
ORA_AV$_SYS_TOP_ACTIVITY BY USER SYS USER YES YES
ORA_AV$_DB_SCHEMA_CHANGES BY USER ALL USERS USER YES YES
ORA_AV$_CRITICAL_DB_ACTIVITY BY USER ALL USERS USER YES YES
ORA_AV$_ADMIN_USER_ACTIVITY BY GRANTED ROLE DATAPUMP_IMP_FULL_DATABASE ROLE YES YES
ORA_AV$_ADMIN_USER_ACTIVITY BY GRANTED ROLE DATAPUMP_EXP_FULL_DATABASE ROLE YES YES
ORA_AV$_ADMIN_USER_ACTIVITY BY GRANTED ROLE IMP_FULL_DATABASE ROLE YES YES
ORA_AV$_ADMIN_USER_ACTIVITY BY GRANTED ROLE DBA ROLE YES YES
ORA_AV$_ADMIN_USER_ACTIVITY BY USER SYSRAC USER YES YES
ORA_AV$_ADMIN_USER_ACTIVITY BY USER SYSKM USER YES YES
ORA_AV$_ADMIN_USER_ACTIVITY BY USER SYSDG USER YES YES
ORA_AV$_ADMIN_USER_ACTIVITY BY USER SYSBACKUP USER YES YES
ORA_AV$_ADMIN_USER_ACTIVITY BY USER PUBLIC USER YES YES
ORA_AV$_ADMIN_USER_ACTIVITY BY GRANTED ROLE EXP_FULL_DATABASE ROLE YES YES
ORA_ADS$_SYS_TOP_ACTIVITY BY USER SYS USER YES YES
ORA_ADS$_LOGON_FAILURES BY USER ALL USERS USER NO YES
ORA_ADS$_LOGON_EVENTS BY USER ALL USERS USER YES YES
ORA_ADS$_DB_SCHEMA_CHANGES BY USER ALL USERS USER YES YES
ORA_ADS$_CRITICAL_DB_ACTIVITY BY USER ALL USERS USER YES YES
ORA_ADS$_ADMIN_USER_ACTIVITY BY USER SYSBACKUP USER YES YES
ORA_ADS$_ADMIN_USER_ACTIVITY BY GRANTED ROLE DBA ROLE YES YES
ORA_ADS$_ADMIN_USER_ACTIVITY BY USER PUBLIC USER YES YES
ORA_ADS$_ADMIN_USER_ACTIVITY BY USER SYSDG USER YES YES
ORA_ADS$_ADMIN_USER_ACTIVITY BY GRANTED ROLE DATAPUMP_IMP_FULL_DATABASE ROLE YES YES
ORA_ADS$_ADMIN_USER_ACTIVITY BY GRANTED ROLE DATAPUMP_EXP_FULL_DATABASE ROLE YES YES
ORA_ADS$_ADMIN_USER_ACTIVITY BY USER SYSKM USER YES YES
ORA_ADS$_ADMIN_USER_ACTIVITY BY USER SYSRAC USER YES YES
ORA_ADS$_ADMIN_USER_ACTIVITY BY GRANTED ROLE EXP_FULL_DATABASE ROLE YES YES
ORA_ADS$_ADMIN_USER_ACTIVITY BY GRANTED ROLE IMP_FULL_DATABASE ROLE YES YES
ORA_ACCOUNT_MGMT BY USER ALL USERS USER YES YES
EMPSEARCH_SELECT_USAGE_BY_PETE BY USER ALL USERS USER YES YES
APP_USER_NOT_APP_SERVER BY USER ALL USERS USER YES YES
40 rows selected.
Task 5: Audit Vault - Retrieve User Entitlements
仍然在Audit Vault Web Console中。Targets选项卡,单击目标pdb1,设置User Entitlements下的选项如下图,最后单击Save。
然后,在Reports选项卡,向下滑动并展开Entitlement Reports部分。Entitlement是权利的意思。 按下图设定选项,然后单击Go生成报告:
Task 6: Audit Vault - Access Rights and User Activity on Sensitive Data
在本实验中,您将使用数据库安全评估工具 (DBSAT) 收集作业的结果来识别可插入数据库 pdb1 中的敏感数据。 请从此处下载。然后上传到AVDF Console。
本实验需要用AVADMIN登录Console。
在Targets标签页,单击目标pdb1。在右侧单击Sensitive Objects。然后如下操作: 退出并用 AVAUDITOR登录。在Reports选项卡下,Compliance Reports页面。如下操作: 即将目标pdb1与Data Private Report (GDPR) Group关联。
然后单击Sensitive Data报告。在这里您可以看到Schema、对象、对象类型以及列名和敏感类型的数据隐私报告: 您还可以查看其他有关敏感数据的其他合规性报告:
Task 7: Audit Vault - Tracking Data Changes (Auditing “Before-After” Values)
关于 Oracle Audit Vault 事务日志审计跟踪收集
REDO LOG 文件也称为 TRANSACTION LOG,是 Oracle 数据库用来维护数据库中发生的所有事务的日志的文件。 本章包含有关设置初始化参数以使用事务日志审计跟踪类型从 Oracle 数据库目标的REDO LOG中收集审计数据的建议。
这些日志文件允许 Oracle 数据库在发生故障时恢复对数据库所做的更改。 例如,如果用户更新包含员工相关数据的表中的薪水值,则会生成 REDO 记录。 它包含此更改之前的值(旧值)和新更改的值。 REDO 记录用于在崩溃或硬件故障时保证 ACID(原子性、一致性、隔离性和持久性)属性。 在数据库崩溃的情况下,系统会对数据文件的所有更改执行重做(重新处理),从而将数据库数据恢复到写入最后一个重做记录时的状态。
REDO 日志记录包含每个 DML(数据操作语言)和 DDL(数据定义语言)操作的 Before 和 After 值。 Oracle AVDF 提供了使用事务日志收集器监视来自重做日志的更改值的能力。
事务日志收集器利用 Oracle GoldenGate 的集成提取流程将 REDO 日志数据从数据库移动到 XML 文件。 提取过程配置为针对源数据库运行,或者配置为在下游挖掘数据库上运行(仅限 Oracle)。 它捕获对已配置对象执行的 DML 和 DDL 操作。 从事务日志中捕获的操作被传输到 GoldenGate XML 跟踪文件。 Oracle AVDF 的事务日志收集器,从生成的 XML 文件中收集事务日志记录。 这些日志被转发到 Audit Vault 服务器,以在“数据修改前后值”报告中显示更改前后的值。 DDL 更改在所有活动报告中可用。 DML 更改在“数据修改前后值”报告中可用。
初始配置
我们需要做的第一件事是设置数据库为 Golden Gate 做好准备。在容器数据库 cdb1 中创建 Golden Gate 数据库管理用户 C##AVGGADMIN。
$ ./avs_create_oggadmin_db_user.sh
实际脚本为:
$ cat ./avs_create_oggadmin_db_user.sh
echo
echo "=============================================================================="
echo " Create the Golden Gate DB Admin user '${DBUSR_OGGADMIN}' in ${ORACLE_SID}..."
echo "=============================================================================="
sqlplus -s / as sysdba <<EOF
prompt
prompt . Create the user
create user ${DBUSR_OGGADMIN} identified by ${DBUSR_PWD} container=all;
prompt
prompt . Grant the appropriate privileges
-- ----------------------------------------------
grant connect to ${DBUSR_OGGADMIN} container=all;
grant create session, resource, create view, create table to ${DBUSR_OGGADMIN} container=all;
grant alter any table to ${DBUSR_OGGADMIN} container=all;
grant alter system to ${DBUSR_OGGADMIN} container=all;
grant dba to ${DBUSR_OGGADMIN} container=all;
grant unlimited tablespace to ${DBUSR_OGGADMIN} container=all;
grant create any materialized view to ${DBUSR_OGGADMIN} container=all;
BEGIN
dbms_goldengate_auth.grant_admin_privilege('${DBUSR_OGGADMIN}','*',TRUE,TRUE,NULL,NULL,NULL,'ALL');
END;
/
exit;
EOF
echo
接下来,我们必须将数据库配置为具有适当的 SGA_TARGET 和 STREAMS_POOL_SIZE 值,启用 ENABLE_GOLDENGATE_REPLICATION 初始化参数和 Forcing Logging 用于redo的搜集。
./avs_configure_db_for_ogg.sh
实际脚本为:
$ cat ./avs_configure_db_for_ogg.sh
echo
echo "=============================================================================="
echo " Configure the database to be ready for Golden Gate..."
echo "=============================================================================="
sqlplus -s / as sysdba <<EOF
prompt
prompt . Alter SYSTEM parameters
alter system set sga_target=3500M scope=spfile;
alter system set streams_pool_size=1250M scope=spfile;
alter system set enable_goldengate_replication=true scope=spfile;
prompt
prompt . Enable ARCHIVELOG mode
shutdown immediate
startup mount
alter database archivelog;
alter database open;
alter pluggable database all open;
select name,log_mode from v\$database;
prompt
prompt . Enable Force Logging mode
alter database force logging;
alter database add supplemental log data;
select force_logging, supplemental_log_data_min from v\$database;
prompt
prompt . Show parameter Compatible
show parameter compatible;
exit;
EOF
echo
最后,在我们继续配置 GoldenGate Extract 之前验证与 cdb1 容器数据库的连接:
$ ./avs_test_dbuser_connectivity.sh
==============================================================================
Test the connectivity as Golden Gate Admin user 'c##avggadmin' to cdb1...
==============================================================================
. The connection string looks like this:
sqlplus c
Connection is established successfully!
CON_NAME
------------------------------
CDB$ROOT
USER is "C##AVGGADMIN"
配置 GoldenGate 数据抽取
本实验中,Oracle GoldenGate 软件已安装并预配置,但请确保 Golden Gate 管理服务已启动并运行:
$ ./avs_start_ogg.sh
==============================================================================
Start Oracle Golden Gate Services...
==============================================================================
. Start Oracle Golden Gate
Starting Service Manager process...
Service Manager process started (PID: 552)
. Login to the GoldenGate Administration Server at http://158.101.4.150:50002
登录 GoldenGate Web Console。
- 地址:上一个命令的输出,注意是http而非https
- 用户名:oggadmin
- 口令:Oracle123
按下图,创建一个新的Credential: 注意:User ID为c##avggadmin@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.0.0.150)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=cdb1))) 。口令为Oracle123
单击Action下的按钮验证连接,如果您的连接成功,您现在应该会看到一个检查点、一个事务信息和一个心跳部分: 回到主菜单,创建一个Integrated Extract: 按下图输入信息: 在注册信息中输入PDB1,然后点击下一步: 填入以下参数信息
extract pdb1
useridalias cdb1 domain cdb1
OUTPUTFORMAT XML _AUDIT_VAULT
exttrail p1
SOURCECATALOG pdb1
DDL INCLUDE ALL
TABLE employeesearch_prod.*;
如下图。最后单击Create and Run: 配置后,状态如下:
配置新的Audit Trail
AVADMIN用户登录Audit Vault Console。
在Targets选项卡,单击目标pdb1,单击Modify为目标加一个属性。
- Name: av.collector.TimeZoneOffset
- Value: 0:00
在Audit Data Collection部分,单击Add。按下图输入新的Audit Trail的属性后(Trail Location为/u01/app/oracle/product/ogg/var/lib/data ),单击Save: 新的 Audit Trail 可能会显示 STOPPED,但如果您刷新页面,它应该切换到 COLLECTING 或 IDLE。注意,当 Audit Trail 和 Unified Audit Trail 都没有启动时,不要进行下一步!(第二次实验时,出现了1个STOPPED状态,过一会刷新就自己好了)
生成更改并查看 Audit Vault 报告
在终端上,使用 2 个不同的特权用户生成数据和对象更改。
$ ./avs_generate_employeesearch_prod_changes.sh
==============================================================================
Generate some workload on EMPLOYEESEARCH_PROD for GoldenGate to extract...
==============================================================================
. Run some queries as employeesearch_prod
USER is "EMPLOYEESEARCH_PROD"
COUNT(*)
----------
1000
FIRSTNAME LASTNAME SALARY
------------------------- ----------------------------------- ----------
Lisa Alexander 9759.05
1 row updated.
FIRSTNAME LASTNAME SALARY
------------------------- ----------------------------------- ----------
Lisa Alexander 11613.27
Table created.
COUNT(*)
----------
1000
Table dropped.
. Run some queries as dba_debra
USER is "DBA_DEBRA"
FIRSTNAME LASTNAME SALARY
------------------------- ----------------------------------- ----------
Evil Rich 3871
1 row updated.
FIRSTNAME LASTNAME SALARY
------------------------- ----------------------------------- ----------
Evil Rich 3871
以用户AVAUDITOR登录Audit Vault Console。
进入Reports选项卡,在Data Access & Modification部分,单击Data Modification Before-After Values。
在报告中就可以看到修改前后的变化。
Task 8: Audit Vault - Create Alert Policies
AVAUDITOR登录Audit Vault Console。
进入Policies选项卡。左侧Alert Policies页面,单击Create,创建一个新的Alert,输入信息如下,最后单击Save: 实际上,这个Alert已经创建好了,我们看下属性就行。
在终端上创建用户以触发Alert:
$ ./avs_create_users.sh
==============================================================================
Created users on pdb1 for testing the Audit Vault alert policy...
==============================================================================
. Create user "new_user_fred" as sys
USER is "SYS"
User created.
. Create user "new_user_ted" as system
USER is "SYSTEM"
User created.
. Create user "new_user_ned" as dba_debra
USER is "DBA_DEBRA"
User created.
进入Audit Vault Console的Alerts选项卡,可以看到Alert被记录了: 单击alert ID可以看到详情:
删除用户,以清理环境:
$ ./avs_drop_users.sh
==============================================================================
Drop users created on pdb1 for testing the Audit Vault alert policy...
==============================================================================
. Drop users
User dropped.
User dropped.
User dropped.
Task 9: DB Firewall - Add the DB Firewall Monitoring
AVADMIN登录Audit Vault Console。单击Database Firewalls选项卡。单击Database Firewall的名称dbf。
单击Configuration下面的Network Settings。单击eth0。添加Proxy port,如以下界面,然后保存: 现在,我们的网络配置应如下图:
现在,使用我们刚刚创建的代理端口为 pdb1 启用数据库防火墙监控。
在Targets选项卡下,单击pdb1。在Database Firewall Monitoring部分,单击Add。如下图,填充信息,最后单击Save。 接下来,确认与数据库与DB Firewall之间的连通性。
cd $DBSEC_LABS/avdf/dbf
$ ./dbf_sqlplus_without_dbfw.sh
==============================================================================
Verify connectivity to pdb1 without the Database Firewall...
==============================================================================
. Connect directly to the pluggable database without the DB Firewall
$ sqlplus -s system/Oracle123@pdb1
CON_NAME
------------------------------
PDB1
USER is "SYSTEM"
. Which IP address we are connecting from
IP_ADDRESS
------------------------------
10.0.0.150
$ ./dbf_sqlplus_with_dbfw.sh
==============================================================================
Verify connectivity to pdb1 with the Database Firewall...
==============================================================================
. Connect to the pluggable database through the DB Firewall (proxy)
$ sqlplus -s system/Oracle123@pdb1.proxy
CON_NAME
------------------------------
PDB1
USER is "SYSTEM"
. Which IP address we are connecting from
IP_ADDRESS
------------------------------
10.0.0.152
Task 10: DB Firewall - Configure and Verify the Glassfish App to Use the DB Firewall
用以下信息登录应用:
- URL: http://<YOUR_DBSEC-LAB_VM_PUBLIC_IP>:8080/hr_prod_pdb1
- 用户名:hradmin
- Oracle123
单击右上角的Welcome HR Administrator。可以看到是直接连到数据库的: 配置应用通过防火墙连接到数据库:
$ ./dbf_start_proxy_glassfish.sh
==============================================================================
Migrate the Glassfish App connection string to proxy through the DB Firewall...
==============================================================================
==============================================================================
Stop Glassfish App...
==============================================================================
Waiting for the domain to stop .
Command stop-domain executed successfully.
. Copy the config file to change the connection string to proxy through the DB Firewall
==============================================================================
Start Glassfish App...
==============================================================================
Waiting for domain1 to start .....
Successfully started the domain : domain1
domain Location: /u01/app/glassfish/glassfish4/glassfish/domains/domain1
Log File: /u01/app/glassfish/glassfish4/glassfish/domains/domain1/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.
. You can login to the apps using the appropriate URL:
http://129.146.97.17:8080/hr_dev_pdb1
http://129.146.97.17:8080/hr_dev_pdb2
http://129.146.97.17:8080/hr_prod_pdb1
http://129.146.97.17:8080/hr_prod_pdb2
. The Glassfish App is now running with the following configuration
---------------------------------------------
oJDBCDriver = oracle.jdbc.OracleDriver
oJDBCURL = jdbc:oracle:thin:@//dbf:15223/pdb1
oJDBCUser = EMPLOYEESEARCH_PROD
oJDBCPassword = Oracle123
---------------------------------------------
应用重新登录,此时地址变成数据库防火墙的地址了:
Task 11: DB Firewall - Train the DB Firewall for Expected SQL Traffic
AVADMIN登录AVDF控制台。在Database Firewalls选项卡,单击dbf。
在Configuration下面, 单击System Services。选择Date and Time标签页。确保NTP设置如下:
退出并以AVAUDITOR重新登录控制台。单击Targets选项卡,单击pdb1。在Database Firewall Monitoring下,单击Edit以更改Database Firewall Policy。 说明:
- Log unique策略使您能够记录语句以进行离线分析,其中包括每个不同的 SQL 流量来源。 请注意,如果您应用此策略,即使它存储的语句少于您选择log all 语句的情况,它仍然可以为记录的数据使用大量存储空间。
- Log unique策略记录 SQL 流量,专门用于开发新策略。 记录的数据使分析器能够了解客户端应用程序如何使用数据库,并能够快速开发反映数据库及其客户端应用程序实际使用情况的策略。
重新登录应用,并产生一些负载:
- URL: http://<YOUR_DBSEC-LAB_VM_PUBLIC_IP>:8080/hr_prod_pdb1
- 用户名:hradmin
- Oracle123
单击Search Employees,HR ID 输入164,然后单击Search。 清除HR ID,重新单击Search,以看到更多数据。 输入以下条件,再次搜索: 单击Full Name下的链接以看到更多信息。
现在,在AVDF Console中的Reports选项卡中查看信息。向下滑动到Database Firewall Reports。单击Monitored Activity。然后就可以看到监控的信息: 单击左侧的图标,可以看到详情,包括SQL语句。 注意:
- 这些信息告诉我们很多关于我们的数据库防火墙策略以及我们为什么要捕获这个特定查询的信息
- 如果您的报告显示大量未知活动,您可能启用了本机网络加密
可以添加SQL命令到视图中: 查看以下的SQL: 说明:
- 这是“My HR App”用来验证 hradmin 和 Oracle123 密码的身份验证 SQL。 请记住,应用程序是针对表而不是数据库进行身份验证的,因此将捕获此类查询
- 请注意数据库防火墙如何删除包含用户名和密码的绑定值。 这是为了尽量减少 Audit Vault 和 Database Firewall 中敏感数据的收集
Task 12: DB Firewall - Build and Test the DB Firewall Allow-List Policy
应用数据库防火墙策略前确保可以看到表EMPLOYEESEARCH_PROD所有的数据:
$ ./dbf_query_fw_policy.sh
==============================================================================
Demonstrate connectivity through the DB Firewall and the ability to query
the EMPLOYEESEARCH_PROD tables...
==============================================================================
. Connect to the pluggable database through the DB Firewall (proxy)
$ sqlplus -s system/Oracle123@pdb1.proxy
USER is "EMPLOYEESEARCH_PROD"
. Query EMPLOYEESEARCH_PROD.DEMO_HR_EMPLOYEES
USERID FIRSTNAME LASTNAME EMPTYPE POSITION CITY SSN SIN NINO
---------- ---------- ---------- --------- ---------------- ----------- ----------- ----------- -------------
73 Craig Hunt Part-Time Administrator Costa Mesa 102-20-4997
74 Fred Stewart Part-Time Project Manager Paris MN 33 14 95 E
75 Julie Reed Full-time Clerk New York 412-62-2417
76 Ruby James Full-time End-User Paris 537-78-8902
77 Alice Harper Part-Time District Manager Toronto 170-042-126
78 Marilyn Lee Part-Time District Manager Sunnyvale 553-51-1031
79 Laura Ryan Full-time Project Manager London 568-10-8709
80 William Elliott Full-time District Manager Sunnyvale 787-89-2282
81 Martha Carpenter Full-time Administrator Berlin FZ 84 80 43 S
9 rows selected.
用AVAUDITOR登录AVDF Console。在Policies选项卡下的Database Firewall Policies 子菜单。创建策略HR Policy(其实已经创建好了): 通过单击Sets/Profiles下的Add SQL Cluster Set为此策略创建上下文。单击Add创建名为HR SQL Cluster的SQL Cluster Sets。 实际已经创建好了,此SQL Cluster Sets 排除(阻塞)了以下SQL:
select userid, firstname, lastname, emptype, position, city, ssn, sin, nino from employeesearch_prod.demo_hr_employees where rownum < 00
回到上一层菜单,在SQL Statement部分添加运行的SQL,就是刚刚建立的SQL Cluster Sets 。 接下来,添加我们信任的数据库用户通过数据库防火墙连接到数据库。
注意:
- 我们将为我们的 DB Admin (SYSTEM) 和 HR App 的所有者 (EMPLOYEESEARCH_PROD) 创建一个数据库用户集
- 只有这 2 个数据库用户才能运行 HR SQL 集群
最后,选择默认选项卡以指定如果您不在先前定义的上下文中,数据库防火墙策略必须为您做什么(这里我们将阻止所有“黑名单”查询,我们将返回空白结果)。 现在,你的HR Policy如下,单击Save。 创建后,策略会自动发布,但现在您必须部署它。 在Targets选项卡下,单击pdb1。在Database Firewall Monitoring部分,修改Database Firewall Policy为HR Policy。
Task 13: DB Firewall - Block a SQL Injection Attack
Task 14: DB Firewall - Detect Data Exfiltration Attempts
Task 15: DB Firewall - (Optional) Restore the Glassfish App Configuration to Use Direct Mode
Task 16: Advanced Labs - (Optional) PostgreSQL Audit Collection
本实验的目的是将审计日志记录从 PostgreSQL 数据库(配置了 pgaudit)收集到 Oracle Audit Vault and Database Firewall。
确保 pgaudit 已安装扩展:
- PostgreSQL 审计扩展(或 pgaudit)通过 PostgreSQL 提供的标准日志记录工具提供详细的会话和/或对象审计日志记录
- 如果未启用此扩展,审计收集将不完整,并且报告中会遗漏操作详细信息
确保在 postgresql.conf 文件中将 LOG_DESTINATION 参数设置为 CSVLOG:
- AVDF PostgreSQL 审计收集器将只能处理 CSV 文件
参数 LOGGING_COLLECTOR 需要设置为 ON
AVDF 代理操作系统用户需要对 LOG_DIRECTORY 参数指定的目录和生成的 CSV 文件具有读取权限才能读取它们
cd $DBSEC_LABS/avdf/adv
sudo -u postgres ./adv_pgsql_init.sh
AVADMIN登录AVDF Console。在Targets选项卡,点击Register。按如下两个界面设置后保存。 在Audit Data Collection部分,单击Add。 刷新页面,直到状态从STOPPED变为IDLE。
产生一些Postgres的活动:
./adv_pgsql_generate_traffic.sh
用AVAUDITOR登录AVDF Console。
在Reports选项卡,单击All Activity报告。就可以看到PostgreSQL相关活动报告。 点击左侧的图标可以查看详情: 用AVADMIN登录AVDF Console。在Targets选项卡,Audit Trails子菜单,选择PostgreSQL,单击Stop。
选择"PostgreSQL" Audit Trail,单击Delete。
在Targets子菜单,选择PostgreSQL目标,然后删除。
最后执行清理:
sudo -u postgres ./adv_pgsql_cleanup.sh
Task 17: Advanced Labs - (Optional) Linux Audit Collection
设置审计集合以使用 oinstall 操作系统组写入数据:
./adv_linux_setup_auditing.sh
仍保持AVADMIN登录,在Targets选项卡,单击Register,单击Add添加目标:
在Linux上产生一些负载:
./adv_linux_generate_traffic.sh
AVAUDITOR登录控制台,在Reports选项卡,单击All Activity报告。就可以看到Linux相关活动报告。 重新用AVADMIN登录,和上一个例子一样,执行操作删除此对象。此略。
最后执行清理:
./adv_linux_reset_auditing.sh
Task 18: Advanced Labs - (Optional) LDAP/Active Directory Configuration
Task 19: (Optional) Reset the AVDF Lab Config
Appendix: About the Product
概述 Oracle Audit Vault and Database Firewall (AVDF) 是一个完整的数据库活动监控 (DAM) 解决方案,它将本机审计数据与基于网络的 SQL 流量捕获相结合。
AVDF 包括企业质量审计数据仓库、基于主机的审计数据收集代理、强大的报告和分析工具、警报框架、审计仪表板和多级数据库防火墙。数据库防火墙使用复杂的语法分析引擎在 SQL 语句到达数据库之前对其进行检查,并高精度地确定是允许、记录、警告、替换还是阻止传入的 SQL。
AVDF 随附用于 Oracle 数据库、Oracle MySQL、Microsoft SQL Server、PostgreSQL、IBM Db2(在 LUW 上)、SAP Sybase、Oracle Key Vault、Microsoft Active Directory、Linux、Windows、AIX、Solaris 和 HPUX 的收集器。 Quick-JSON 收集器简化了从 MongoDB 等数据库中提取审计数据的过程。除了提供的收集器之外,AVDF 的可扩展框架允许从 JDBC 可访问的数据库和 REST、JSON 或 XML 源进行简单的基于配置的审计收集,从而使从大多数其他系统的收集变得容易。功能齐全的 Java SDK 允许为不使用标准技术记录其审计跟踪的应用程序或数据库创建收集器。 使用 Audit Vault 和数据库防火墙的好处
-
软件设备 Oracle Audit Vault 和 Database Firewall 打包为“软件设备”,包含在裸硬件(或本例中为虚拟环境)上安装产品所需的一切。 -
细粒度、可定制的报告和警报 数十种开箱即用的合规性报告为 GDPR、PCI、GLBA、HIPAA、IRS 1075、SOX 和 UK DPA 等法规提供了简单、可安排的定制报告。报告汇总来自受监控系统的网络事件和审计数据。摘要报告、趋势图和异常报告可用于快速查看用户活动的特征并帮助识别异常事件。可以轻松过滤报告数据,从而快速分析特定系统或事件。安全管理人员可以针对可能表明试图获得未经授权的访问和/或滥用系统特权的活动定义基于阈值的警报条件。细粒度的授权使安全管理人员能够将审计员和其他用户限制为来自特定来源的信息,从而允许为整个企业部署单个存储库。 -
部署灵活性和可扩展性 可以通过对某些数据库进行在线监控和阻止以及仅对其他数据库进行监控来自定义安全控制。 多级数据库防火墙可以作为数据库代理服务器在线部署,或者在网络嗅探模式下进行带外部署,或者使用基于主机的代理将网络活动中继回防火墙进行分析和记录。 作为可部署在 Linux 兼容硬件上的预配置软件设备交付,单个 Audit Vault 服务器可以整合来自数千个数据库的审核数据和防火墙事件。 Audit Vault 服务器和数据库防火墙都可以配置为高可用性模式以实现容错。
Oracle Audit Vault and Database Firewall 20c 通过一个仪表板同时支持云和本地数据库,让客户能够深入了解其数据库上的活动。
Want to Learn More?
技术文档:Oracle Audit Vault & Database Firewall 20c
视频:
Acknowledgements
本实验的作者是Hakim Loumi,数据库安全PM。贡献者为Angeline Dhanarani, Nazia Zaidi, Rene Fontcha。
|