目录

简介

先决条件

要求

使用的组件

配置

创建API密钥

创建事件流

MacOS/Linux

Windows 窗口版本

回复

事件流列表

MacOS/Linux

Windows 窗口版本

回复

删除事件流

MacOS/Linux

Windows 窗口版本

回复

验证

故障排除

检查AMQP服务

检查到事件流接收器的连接

检查队列中的事件

收集网络流量文件

相关信息

简介

本文档介绍如何对高级恶意软件防护安全终端私有云中的事件流进行故障排除。

先决条件

要求

思科建议您了解以下主题：

- 安全终端私有云

- API查询

使用的组件

本文档中的信息基于以下软件和硬件版本：

- 安全终端私有云v3.9.0

- cURL v7.87.0

- cURL v8.0.1

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

配置

创建API密钥

步骤1:登录私有云控制台。

第二步：导航至  Accounts > API Credentials.

第三步：点击  New API Credential.

第四步：添加  Application name 并点击  Read & Write 范围。

创建API密钥

第五步：点击  Create.

第六步：保存API凭证。

API密钥

注意：如果您离开此页面，则无法恢复API密钥。

创建事件流

这将为事件信息创建新的高级消息队列协议(AMQP)消息流。

可以为指定的事件类型和组创建事件流：

--data '{"name":"EVENT_STREAM_NAME","event_type":["EVENT_TYPE_1", "EVENT_TYPE_2"],"group_guid":["GROUP_ID_1", "GROUP_ID_2"]}'

您可以通过以下方式为所有事件类型和所有组创建事件流：

--data '{"name":"EVENT_STREAM_NAME","event_type":[],"group_guid":[]}'

MacOS/Linux

您可以使用以下功能在MacOS/Linux上创建事件流：

curl -X POST -k -H 'Accept: application/json' -H 'Content-Type: application/json' -u 'CLIENT_ID:API_KEY' -i 'https://CONSOLE_URL/v1/event_streams' --data '{"name":"EVENT_STREAM_NAME","event_type":[],"group_guid":[]}'

Windows 窗口版本

您可以使用以下功能在Windows上创建事件流：

curl -X POST -k -H "Accept: application/json" -H "Content-Type: application/json" -u "CLIENT_ID:API_KEY" -i "https://CONSOLE_URL/v1/event_streams" --data "{\"name\":\"EVENT_STREAM_NAME\",\"event_type\":[],\"group_guid\":[]}"

回复

HTTP/1.1 201 Created

(...)

"data": {

"id": 17,

"name": "EVENT_STREAM_NAME",

"amqp_credentials": {

"user_name": "17-1bfXXXXXXXXXX",

"queue_name": "event_stream_17",

"password": "3961XXXXXXXXXXXXXXXXXXXXXX814a77",

"host": "FMC_SERVICE_URL",

"port": 443,

"proto": "https"

}

}

事件流列表

这显示在私有云上创建的事件流的列表。

MacOS/Linux

您可以使用以下命令列出MacOS/Linux上的事件流：

curl -k -H 'Accept: application/json' -H 'Content-Type: application/json' -u 'CLIENT_ID:API_KEY' -i 'https://CONSOLE_URL/v1/event_streams'

Windows 窗口版本

您可以使用Windows上的Event Streams列出以下内容：

curl -k -H "Accept:application/json" -H "Content-Type:application/json" -u "CLIENT_ID:API_KEY" -i "https://CONSOLE_URL/v1/event_streams"

回复

HTTP/1.1 200 OK

(...)

"data": {

"id": 17,

"name": "EVENT_STREAM_NAME",

"amqp_credentials": {

"user_name": "17-1bfXXXXXXXXXX",

"queue_name": "event_stream_17",

"host": "FMC_SERVICE_URL",

"port": 443,

"proto": "https"

}

}

删除事件流

删除活动事件流。

MacOS/Linux

您可以使用以下方式删除MacOS/Linux上的事件流：

curl -X DELETE -k -H 'Accept: application/json' -H 'Content-Type: application/json' -u 'CLIENT_ID:API_KEY' -i 'https://CONSOLE_URL/v1/event_streams/EVENT_STREAM_ID'

Windows 窗口版本

您可以使用以下方法删除Windows上的事件流：

curl -X DELETE -k -H "Accept:application/json" -H "Content-Type:application/json" -u "CLIENT_ID:API_KEY" -i "https://CONSOLE_URL/v1/event_streams/EVENT_STREAM_ID"

回复

HTTP/1.1 200 OK

(...)

"data": {}

验证

步骤1:将Python脚本复制到您的设备并将其另存为  EventStream.py.

import pika

import ssl

user_name = "USERNAME"

queue_name = "QUEUE_NAME"

password = "PASSWORD"

host = "FMC_SERVICE_URL"

port = 443

proto = "https"

def callback(channel, method, properties, body):

print(body)

amqp_url = f"amqps://{user_name}:{password}@{host}:{port}"

context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)

amqp_ssl = pika.SSLOptions(context)

params = pika.URLParameters(amqp_url)

params.ssl_options = amqp_ssl

connection = pika.BlockingConnection(params)

channel = connection.channel()

channel.basic_consume(

queue_name,

callback,

auto_ack = False

)

channel.start_consuming()

第二步：在终端中执行它作为  python3 EventStream.py.

第三步：触发添加到Event Stream队列中的任何事件。

第四步：检查终端中是否显示事件。

故障排除

要执行这些命令，必须通过SSH登录到私有云。

检查AMQP服务

验证服务是否已启用：

[root@fireamp rabbitmq]# amp-ctl service status rabbitmq

running enabled rabbitmq

验证服务是否正在运行：

[root@fireamp ~]# svstat /service/rabbitmq

/service/rabbitmq: up (pid 25504) 7402137 seconds

检查到事件流接收器的连接

执行命令：

tail /data/log/rabbitmq/rabbit@fireamp.log

已建立连接：

=INFO REPORT==== 19-Apr-2023::08:40:12 ===

accepting AMQP connection <0.17588.27> (127.0.0.1:32946 -> 127.0.0.1:5672)

连接已关闭：

=WARNING REPORT==== 19-Apr-2023::08:41:52 ===

closing AMQP connection <0.17588.27> (127.0.0.1:32946 -> 127.0.0.1:5672):

connection_closed_abruptly

检查队列中的事件

建立连接后，队列中的事件已准备就绪，可以按此事件流发送到接收方。在本示例中，事件流ID 23有14个事件。

[root@fireamp rabbitmq]# rabbitmqctl list_queues

Listing queues ...

1acb0eb6-39f7-4b11-bd9b-fc4dd0e3bd77_60b15rn8mpftaico6or6l8zxavl1usm 26

1acb0eb6-39f7-4b11-bd9b-fc4dd0e3bd77_61984nlu8p11eeopmgmtcjra1v8gf5p 26

1acb0eb6-39f7-4b11-bd9b-fc4dd0e3bd77_iesRAgVo0h287mO_DetOx9PdDu8MxkS6kL4oSTeBm9s 26

event_decoration 0

event_log_store 0

event_stream_23 14

event_streams_api 0

events_delayed 0

events_retry 0

mongo_event_consumer 0

out_events_q1 0

tevent_listener 0

收集网络流量文件

为了验证来自私有云的事件流流量，您可以使用 tcpdump 工具：

步骤1:通过SSH连接到私有云。

第二步：执行命令：

tcpdump -vvv -i eth1 host <Event_Stream_Receiver_IP> -w file.pcap

第三步：停止捕获  Ctrl+C (Windows)或  Command-C (Mac)。

第四步：提取  pcap 文件。

相关信息

- 配置面向终端的AMP事件流功能

- 技术支持和文档 - Cisco Systems