NetScaler Console 服务

与 Microsoft Sentinel 集成

您可以将 NetScaler Console 与 Microsoft Sentinel 集成,以将以下分析数据从 NetScaler Console 导出到 Microsoft Sentinel:

  • WAF 违规
  • Bot 违规
  • SSL 证书洞察
  • 网关洞察
  • NetScaler Console 审计日志

Microsoft Sentinel 提供集中式数据收集,可从各种来源(例如应用程序、服务器等)收集数据。作为管理员,您可以在 Microsoft Sentinel 中报告洞察或违规后查看数据并做出决策。

为了成功集成,请确保您拥有有效的 Azure 订阅,然后按照每个部分下的步骤操作:

配置 Log Analytics 工作区

需要一个 Log Analytics 工作区来存储和分析收集的数据。

  1. 登录到 Azure。

  2. 单击 创建资源

    资源

  3. 在搜索栏中,键入“log analytics workspace”,然后在 Log Analytics 工作区下单击 创建

    Log Analytics 工作区

  4. Log Analytics 工作区主页中,单击 创建

    工作区创建

  5. 创建 Log Analytics 工作区中:

    1. 选择活动的订阅和资源组。

      注意:

      您也可以单击 新建 以在拥有权限的情况下添加资源组。

    2. 指定一个您选择的名称。

    3. 从列表中选择您的区域。

    4. 单击 查看 + 创建

      工作区创建预最终阶段

    5. 出现验证通过消息。单击 创建 以部署工作区。

      工作区创建

    6. 您可以看到部署正在进行的消息。在看到部署完成消息后,单击 转到资源

      工作区资源

      工作区已成功创建。

创建 Microsoft Entra 应用程序

您必须创建一个与 Azure 订阅关联的 Entra 应用程序,以代表 Log Analytics 工作区进行通信。创建应用程序后,您还必须授予 Microsoft Sentinel 参与者角色权限。应用程序还提供 客户端 ID租户 ID客户端密码等详细信息。我们建议您记下这些详细信息。在 NetScaler Console 中创建订阅以完成集成过程时需要这些详细信息。

  1. 在您的 Azure 门户中,在搜索栏中键入关键字。

  2. 单击 Microsoft Entra ID

    Entra 应用程序

  3. 单击 添加 并选择 应用注册

    注册应用程序

  4. 为应用程序指定一个名称,在 支持的帐户类型下选择默认选项,然后单击 注册

    应用程序注册

  5. 注册应用程序后:

    1. 记下 客户端 ID租户 ID

      客户端和租户 ID

    2. 为您的应用程序创建秘密 ID。单击 证书和密码,然后在 客户端密码下,单击 新建客户端密码。提供描述、有效期,然后单击 添加 为您的应用程序创建秘密 ID。

      客户端密码 ID

    3. 您的应用程序的详细信息已显示。请务必在秘密创建后立即记下 下显示的 ID。如果您导航到任何其他 GUI 选项,此值将隐藏。

      值 ID

通过使用 Microsoft Entra ID 数据连接器将数据发送到 Microsoft Sentinel

Microsoft Entra ID 日志提供有关访问您的 Entra 租户的用户、应用程序和网络的全面信息。有关更多信息,请参阅通过使用 Microsoft Entra ID 数据连接器将数据发送到 Microsoft Sentinel

配置数据收集终结点

您必须创建一个数据收集终结点以获取终结点 URL。在 NetScaler Console 中创建订阅时需要此项。

  1. 在您的 Azure 门户中,在 Azure 服务下,选择 数据收集终结点 或在搜索栏中键入关键字。

    DCR 选择

  2. 数据收集终结点页面中,单击 创建

    DCR 创建

  3. 创建数据收集终结点中:

    1. 指定一个您选择的终结点名称

    2. 选择 订阅资源组区域

    3. 单击 查看 + 创建

    4. 在看到验证通过消息后,单击 创建

您必须记下终结点 URL。在 数据收集终结点主页中,选择创建的终结点,单击 JSON 视图,并记下终结点 ID。

DCR ID

创建表以导出数据

您必须创建一个表并提供 JSON 信息,用于您要从 NetScaler Console 导出到 Microsoft Sentinel 的每个洞察。您可以参考以下有关每个洞察的表要求的详细信息:

洞察 所需表总数
SSL 洞察 3
WAF 1
Bot 1
网关洞察 5

对于每个工作区,您最多可以创建 10 个表。超过 10 个表时,您必须创建另一个工作区。

  1. 在 Azure 门户中导航到您的工作区,并在 设置下单击

  2. 单击 创建 并选择 新建自定义日志(基于 DCR)

    表

  3. 创建自定义日志中:

    1. 指定表名称。表名称必须采用 console_insightname 格式。例如:console_ns_sslvserverconsole_ns_ssl_certkey。您可以参考步骤 4 获取适用于每个洞察的表名称。

    2. 提供描述以添加有关表名称的更多信息。这是可选的。

    3. 创建新的数据收集规则并添加。

    4. 从列表中选择数据收集终结点。

      表参数

    5. 单击 下一步

  4. 架构和转换选项卡中,您必须上传用于您要导出的洞察的 JSON 示例日志。您可以使用以下每个洞察的示例 JSON 并创建要上传的 JSON 文件:

    洞察 JSON 要使用的表名称
    SSL (1) {"id": "3eb05733-c326-493c-9aa0-f7db3a6b4277", "ns_ip_address": "10.106.186.141", "name": "zeta_192_168_110_250", "vsvr_ip_address": "", "vsvr_port": -1, "vsvr_type": "", "state": "", "partition_name": "", "display_name": "10.106.186.141", "poll_time": 1716539986, "managed": "f", "ssl2": "f", "ssl3": "t", "tls10": "t", "tls11": "t", "tls12": "t", "dh": "f", "ersa": "t", "sslprofile": "", "tls13": "f", "dhkeyexpsizelimit": "DISABLED", "pushenctriggertimeout": 1, "sessionticket": "", "includesubdomains": "f", "sessionticketkeyrefresh": "", "ssllogprofile": "", "serverauth": "", "ssltriggertimeout": 100, "ersacount": 0, "strictcachecks": "NO", "dhfile": "", "sessreuse": "ENABLED", "redirectportrewrite": "DISABLED", "skipclientcertpolicycheck": "", "tls13sessionticketsperauthcontext": 1, "cipherredirect": "DISABLED", "dropreqwithnohostheader": "NO", "sessionticketlifetime": -1, "maxage": 0, "pushenctrigger": "Always", "strictsigdigestcheck": "f", "sslredirect": "DISABLED", "sessionkeylifetime": -1, "alpnprotocol": "", "clientauthuseboundcachain": "", "sesstimeout": 120, "clientcert": "", "snihttphostmatch": "CERT", "preload": "NO", "prevsessionkeylifetime": -1, "sessionticketkeydata": "", "encrypttriggerpktcount": 45, "cleartextport": "", "ssliocspcheck": "", "hsts": "f", "sslinterception": "", "commonname": "", "sslireneg": "", "ocspstapling": "DISABLED", "quantumsize": 8192, "insertionencoding": "Unicode", "sslimaxsessperserver": -1, "cipherurl": "", "pushflag": 0, "zerorttearlydata": "DISABLED", "allowextendedmastersecret": "", "dhekeyexchangewithpsk": "NO", "clientauth": "DISABLED", "denysslreneg": "NONSECURE", "sendclosenotify": "YES", "dhcount": 0, "snienable": "DISABLED", "table_name": "ns_sslvserver"} console_ns_sslvserver
    SSL (2) {"id": "a6673ab2-0b59-47b9-b530-bc30fb2b937c", "ssl_certificate": "/nsconfig/ssl/ca-cert.pem", "ssl_key": "/nsconfig/ssl/ca-key.pem", "certkeypair_name": "athul-ca", "cert_format": "PEM", "days_to_expiry": 281, "ns_ip_address": "10.106.186.141", "status": "Valid", "device_name": "10.106.186.141", "file_location_path": "", "certificate_data": "", "key_data": "", "poll_time": 1717434335, "no_domain_check": "f", "version": 3, "serial_number": "7B34B6A6A1A79E0FF168242D7BCFF78F04C9EE66", "signature_algorithm": "sha256WithRSAEncryption", "issuer": "C=IN,ST=KA,L=BAN,O=CIT,OU=ADM,CN=A", "valid_from": "Mar 12 08:51:11 2024 GMT", "valid_to": "Mar 12 08:51:11 2025 GMT", "subject": "C=IN,ST=KA,L=BAN,O=CIT,OU=ADM,CN=A", "public_key_algorithm": "rsaEncryption", "public_key_size": 4096, "no_of_bound_entities": 0, "partition_name": "", "display_name": "10.106.186.141", "hostname": "athulsadc", "key_name": "", "subjaltname": "", "managed_by": "", "certificate_dn": "", "linkcertkeyname": "", "table_name": "ns_ssl_certkey"} console_ns_ssl_certkey
    SSL (3) {"id": "2baffd1a-7ed6-4035-91e8-ad3a3125bff4", "certkeypair_name": "cert1", "ns_ip_address": "10.106.186.127", "poll_time": 1715671567, "partition_name": "", "display_name": "10.106.186.127", "hostname": "", "entity_name": "secure_gateway", "entity_type": "sslvserver", "table_name": "ns_sslcertkey_binding"} console_ns_sslcertkey_binding
    WAF [{"ip_address": "10.106.185.156", "ctnsappname": "vserver_1", "severity": 2, "violation_type": 19, "violation_type_desc": "Start URL", "block_flags": 1, "transformed_flags": 0, "not_blocked_flags": 0, "country_code": "-NA-", "region_code": "-NA-", "city": "-NA-", "latitude": 200.0, "longitude": 200.0, "signature_category": "", "attack_category": 2, "attack_category_desc": "Broken Authentication and Session Management", "total_attacks": 1, "rpt_sample_time": 1704783773, "source_ip_address": 174766492, "attack_time": 1704783538, "profile_name": "appfw_cs_lb_prof", "session_id": "", "http_req_url": "https://10.106.192.54/csrf_ffc/ffc.html?field10=asfasd", "violation_name": "-NA-", "violation_value": "-NA-", "violation_location": 4, "violation_threat_index": 5, "app_threat_index": 5, "http_method": 0, "violation_action": 3, "violation_action_desc": "Blocked", "severity_type": 2, "severity_type_desc": "Medium", "iprep_score": 0, "iprep_category": 0, "counter_value": 0, "appname": "vserver_1_10.106.185.156_lb", "violation_category": 12, "violation_category_desc": "Start URL", "source_ipv6_address": "", "true_client_ip": "\\N", "backend_vserver": "", "backend_appname": "", "transactionId": "0", "table_name": "af_threat_exporter_data_l2"}] console_af_threat_exporter_data_l2
    Bot {"ip_address": "10.106.186.122", "ctnsappname": "secure_gateway", "bot_type": "2", "bot_type_desc": "Bad", "action_type": "6", "action_type_desc": "Log", "country_code": "0.0", "region_code": "0.0", "city": "0.0", "bot_severity": "0", "bot_severity_desc": "Critical", "latitude": "0", "longitude": "0", "bot_detection_mechanism": "6", "bot_detection_mechanism_desc": "BlackList", "bot_category": "0", "bot_category_desc": "Uncategorized", "source_ip_address": "174758625", "bot_signature_category": "Custom Policy Expression", "appname": "secure_gateway_10.106.186.122_lb", "backend_vserver": "", "backend_appname": "", "total_attacks": "2", "rpt_sample_time": "1718783216", "table_name": "af_bot_attack_details_l2"} console_af_bot_attack_details_l2
    Gateway Insight (1) {"adc_ip_address": "10.106.186.141", "auth_server": "", "client_ip": 174766732, "epa_method_type": 0, "error_count": 14, "error_details": "Invalid credentials passed", "error_type": 1, "gateway_name": "vpn_vserver_142_6", "req_url": "", "resource": "", "rpt_sample_time": 1713505215, "sso_method_type": 0, "sta_ip": "", "table_name": "af_vpn_error_details", "username": "John"} console_af_vpn_error_details
    Gateway Insight (2) {"adc_ip_address": "10.102.71.166", "display_name": "10.102.71.166", "gateway_name": "firsthop", "ip_address": "10.102.71.168", "rpt_sample_time": "1718812158", "state": "Up", "table_name": "ns_vpnvserver"} console_ns_vpnvserver
    Gateway Insight (3) {"adc_ip_address": "10.106.186.141", "gateway_name": "vpn_vserver_141_7", "rpt_sample_time": 1702011308, "sessions": 1, "table_name": "af_vpn_session_details", "users": 1} console_af_vpn_session_details
    Gateway Insight (4) {"active_sessions": 59, "active_users": 1, "adc_ip_address": "10.106.186.136", "gateway_name": "vpnathul2", "rpt_sample_time": 1698919848, "table_name": "af_vpn_active_session_1"} console_af_vpn_active_session_1
    Gateway Insight (5) {"adc_ip_address": "10.106.186.136", "entity_type": 3, "gateway_name": "vpnathul2", "hits": 3, "rpt_sample_time": 1698052438, "table_name": "af_vpn_error_reports"} console_af_vpn_error_reports
    Audit logs {"system_gmt_time":1721868291, "source":"X.X.X.X", "severity":"INFO", "module":"DEVICECONFIG", "event_type":"CMD_EXECUTED", "message":"Sample Mesage", "instance_ip":"X.X.X.X", "app_name":""} console_syslog_messages

上传 JSON 后,您可以查看以下详细信息:

JSON 详细信息

单击 转换编辑器,输入适用于相应洞察的以下查询,然后单击 运行 以接受从 NetScaler Console 中的轮询时间开始的数据。

  • SSL - source | extend TimeGenerated = todatetime(poll_time) | project-rename sslvserver_id = id

  • WAFBot - source | extend TimeGenerated = todatetime(rpt_sample_time)

  • 网关洞察 - source | extend TimeGenerated = todatetime(rpt_sample_time)

表运行

  1. 单击 下一步,然后单击 创建 以完成。

  2. 导航到 数据收集规则,单击您已创建的 DCR。

  3. 配置下,单击 数据源 以查看创建的表。

    表源

    DCR(数据收集规则)需要访问 监视指标发布者角色。

    1. 导航到您的 DCR,您可以从 Azure 门户中的 最近下访问。

    2. 从您的 DCR 页面单击 访问控制 (IAM),然后单击 添加角色分配

      角色分配

    3. 在搜索栏中,键入关键字“monitor”以选择 监视指标发布者,然后单击 下一步

    4. 成员选项卡中,单击 选择成员 并选择您创建的 Entra 应用程序。

    5. 单击 查看 + 分配

      您必须记下数据收集规则 ID。导航到数据收集规则页面,选择您的 DCR,然后单击 JSON 视图以记下 ID。

      DCR ID

在 NetScaler Console 中创建订阅

您现在已准备就绪。最后一步是通过创建订阅并添加所需详细信息来配置 NetScaler Console。要在 NetScaler Console 中创建订阅,您需要您已记下的以下详细信息:

  • 终结点 URL
  • 数据收集规则 ID
  • 租户 ID
  • 客户端 ID
  • 客户端密码
  1. 登录到 NetScaler Console。

  2. 导航到 设置 > 可观察性集成

  3. 集成页面中,单击 添加

  4. 创建订阅页面中,指定以下详细信息:

    1. 在“订阅名称”字段中指定一个您选择的名称。

    2. 选择 NetScaler Console 作为 ,然后单击 下一步

    3. 选择 Microsoft Sentinel,然后单击 配置。在 配置终结点页面中,输入所有详细信息,然后单击 提交

    4. 单击 下一步

  5. 单击 添加洞察,并在 选择功能选项卡中,根据您在 Microsoft Azure 中添加的表,选择您要导出的功能,然后单击 添加选定项,然后单击 下一步

  6. 选择实例选项卡中,您可以选择 选择所有实例自定义选择,然后单击 下一步

    • 选择所有实例 - 将数据从所有 NetScaler 实例导出到 Microsoft Sentinel。

    • 自定义选择 - 使您能够从列表中选择 NetScaler 实例。如果您从列表中选择特定实例,则数据仅从选定的 NetScaler 实例导出到 Microsoft Sentinel。

  7. 单击 提交

在 Microsoft Azure 中查看日志

配置所有内容后,我们建议您等待 30 分钟,以在 Microsoft Azure 中查看详细信息。

  1. 在您的 Azure 门户中,导航到您的 Log Analytics 工作区

  2. 单击 日志,提供表名称,然后单击 运行 以查看结果。

    查看日志

与 Microsoft Sentinel 集成