NetScaler 控制台服务

与 Microsoft Sentinel 集成

您可以将 NetScaler 控制台与 Microsoft Sentinel 集成,将以下分析从 NetScaler 控制台导出到 Microsoft Sentinel:

  • WAF 违规行为
  • 机器人违规行为
  • SSL 证书见解
  • Gateway Insight

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

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

配置日志分析工作区

需要日志分析工作区来存储和分析收集的数据。

  1. 登录到 Azure。

  2. 单击 创建资源

    资源

  3. 在搜索栏中,键入日志分析工作区,然后单击“日志分析工作区”下的“创建”。

    日志分析工作区

  4. 日志分析工作区主页上,单击“创建”。

    创建工作区

  5. 创建日志分析工作区中:

    1. 选择有效的订阅和资源组。

      注意:

      如果您有权限,也可以单击“新建”来添加资源组。

    2. 指定您选择的名称。

    3. 从列表中选择您所在的地区。

    4. 单击“查看 + 创建”。

      最后阶段之前的工作区创建

    5. 将显示验证通过消息。单击“创建”以部署工作区。

      创建工作区

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

      工作区资源

      工作区已成功创建。

创建 Microsoft Entra 应用程序

必须创建与 Azure 订阅关联的 Entra 应用程序,才能代表日志分析工作区进行通信。创建应用程序后,还必须授予 Microsoft Sentinel 贡献者角色的权限。该应用程序还提供客户端 ID租户 ID客户端密钥等详细信息。我们建议您记下这些细节。当您在 NetScaler 控制台中创建订阅以完成集成过程时,需要提供这些详细信息。

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

  2. 单击“Microsoft Entra ID”。

    Entra 应用程序

  3. 单击“添加”,然后选择“应用程序注册”。

    注册应用程序

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

    应用程序注册

  5. 注册应用程序后:

    1. 记下客户端 ID租户 ID

      客户和租户 ID

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

      客户端密钥 ID

    3. 将显示您的应用程序的详细信息。确保在创建密钥后立即记下“”下显示的 ID。如果您导航到任何其他 GUI 选项,该值将被隐藏。

      值 ID

为 Entra 应用程序分配权限

您必须为应用程序分配 Microsoft Sentinel 贡献者角色。要授予权限,请:

  1. 在 Azure 门户中导航到 Microsoft Entra ID。

  2. 单击“应用程序注册 ”,然后选择您的应用程序。

    应用程序选择

  3. 单击“访问控制 (IAM)”,然后单击“添加角色分配”。

    应用程序角色分配

  4. 在搜索栏中,键入关键字 sentinel,选择 Microsoft Sentinel 贡献者,然后单击“下一步”。

  5. 在“成员”选项卡中,单击“选择成员”,然后选择您创建的 Entra 应用程序。

  6. 单击 Review + assign(检查 + 分配)。

配置数据收集端点

必须创建数据收集端点才能获取端点 URL。当您在 NetScaler 控制台中创建订阅时,这是必需的。

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

    DCR 选择

  2. 在“数据收集端点”页面中单击“创建”。

    创建 DCR

  3. 创建数据收集端点中:

    1. 指定您选择的端点名称

    2. 选择订阅、资源组区域

    3. 单击“查看 + 创建”。

    4. 看到验证通过的消息后,单击“创建”。

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

DCR ID

创建表以导出数据

对于要从 NetScaler 控制台导出到 Microsoft Sentinel 的每项见解,您必须创建一个表并提供 JSON 信息。您可以参考以下有关每项见解的表格要求的详细信息:

见解 所需的桌子总数
SSL 见解 3
WAF 1
机器人 1
Gateway Insight 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
    机器人 {"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

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

    JSON 详情

    单击“转换编辑器”,输入以下适用于相应见解的查询,然后单击“运行”,在 NetScaler 控制台中接受从轮询开始的数据。

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

    • WAF机器人 - source | extend TimeGenerated = todatetime(rpt_sample_time)

    • Gateway Insight - source | extend TimeGenerated = todatetime(rpt_sample_time)

      表格运行

  5. 单击“下一步”,然后单击“创建”以完成。

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

  7. 在“配置”下,单击“数据源”以查看创建的表。

    表格来源

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

    1. 在“最近”下导航到可以从 Azure 门户访问的 DCR。

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

      角色分配

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

    4. 在“成员”选项卡中,单击“选择成员”,然后选择您创建的 Entra 应用程序。

    5. 单击 Review + assign(检查 + 分配)。

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

      DCR ID

在 NetScaler 控制台中创建订阅

您现在一切都准备好了。最后一步是通过创建订阅并添加所需的详细信息来配置 NetScaler 控制台。要在 NetScaler 控制台中创建订阅,您需要记下以下细节:

  • 端点 URL
  • 数据收集规则 ID
  • 租户 ID
  • 客户端 ID
  • 客户端密钥
  1. 登录到 NetScaler 控制台。

  2. 导航到“设置”>“可观测性集成”。

  3. 在“集成”页面中,单击“添加”。

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

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

    2. 选择 NetScaler 控制台作为,然后单击“下一步”。

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

    4. 单击下一步

  5. 单击“添加见解”,在“选择功能”选项卡中,根据您在 Microsoft Azure 中添加的表,选择要导出的功能,然后单击“添加选定功能”,然后单击“下一步”。

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

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

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

  7. 单击 Submit(提交)。

在 Microsoft Azure 中查看日志

配置完所有内容后,我们建议您等到 30 分钟才能在 Microsoft Azure 中查看细节。

  1. 在您的 Azure 门户中,导航到您的日志分析工作区

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

    查看日志

与 Microsoft Sentinel 集成