与 Microsoft Sentinel 集成
您可以将 NetScaler Console 与 Microsoft Sentinel 集成,以将以下分析数据从 NetScaler Console 导出到 Microsoft Sentinel:
- WAF 违规
- Bot 违规
- SSL 证书洞察
- 网关洞察
- NetScaler Console 审计日志
Microsoft Sentinel 提供集中式数据收集,可从各种来源(例如应用程序、服务器等)收集数据。作为管理员,您可以在 Microsoft Sentinel 中报告洞察或违规后查看数据并做出决策。
为了成功集成,请确保您拥有有效的 Azure 订阅,然后按照每个部分下的步骤操作:
配置 Log Analytics 工作区
需要一个 Log Analytics 工作区来存储和分析收集的数据。
-
登录到 Azure。
-
单击 创建资源。
-
在搜索栏中,键入“log analytics workspace”,然后在 Log Analytics 工作区下单击 创建。
-
在 Log Analytics 工作区主页中,单击 创建。
-
在 创建 Log Analytics 工作区中:
- 选择活动的订阅和资源组。
注意:
您也可以单击 新建 以在拥有权限的情况下添加资源组。
-
指定一个您选择的名称。
-
从列表中选择您的区域。
-
单击 查看 + 创建。
-
出现验证通过消息。单击 创建 以部署工作区。
-
您可以看到部署正在进行的消息。在看到部署完成消息后,单击 转到资源。
工作区已成功创建。
- 选择活动的订阅和资源组。
创建 Microsoft Entra 应用程序
您必须创建一个与 Azure 订阅关联的 Entra 应用程序,以代表 Log Analytics 工作区进行通信。创建应用程序后,您还必须授予 Microsoft Sentinel 参与者角色权限。应用程序还提供 客户端 ID、租户 ID 和 客户端密码等详细信息。我们建议您记下这些详细信息。在 NetScaler Console 中创建订阅以完成集成过程时需要这些详细信息。
-
在您的 Azure 门户中,在搜索栏中键入关键字。
-
单击 Microsoft Entra ID。
-
单击 添加 并选择 应用注册。
-
为应用程序指定一个名称,在 支持的帐户类型下选择默认选项,然后单击 注册。
-
注册应用程序后:
-
记下 客户端 ID 和 租户 ID。
-
为您的应用程序创建秘密 ID。单击 证书和密码,然后在 客户端密码下,单击 新建客户端密码。提供描述、有效期,然后单击 添加 为您的应用程序创建秘密 ID。
-
您的应用程序的详细信息已显示。请务必在秘密创建后立即记下 值下显示的 ID。如果您导航到任何其他 GUI 选项,此值将隐藏。
-
通过使用 Microsoft Entra ID 数据连接器将数据发送到 Microsoft Sentinel
Microsoft Entra ID 日志提供有关访问您的 Entra 租户的用户、应用程序和网络的全面信息。有关更多信息,请参阅通过使用 Microsoft Entra ID 数据连接器将数据发送到 Microsoft Sentinel。
配置数据收集终结点
您必须创建一个数据收集终结点以获取终结点 URL。在 NetScaler Console 中创建订阅时需要此项。
-
在您的 Azure 门户中,在 Azure 服务下,选择 数据收集终结点 或在搜索栏中键入关键字。
-
在 数据收集终结点页面中,单击 创建。
-
在 创建数据收集终结点中:
-
指定一个您选择的终结点名称
-
选择 订阅、资源组 和 区域。
-
单击 查看 + 创建。
-
在看到验证通过消息后,单击 创建。
-
您必须记下终结点 URL。在 数据收集终结点主页中,选择创建的终结点,单击 JSON 视图,并记下终结点 ID。
创建表以导出数据
您必须创建一个表并提供 JSON 信息,用于您要从 NetScaler Console 导出到 Microsoft Sentinel 的每个洞察。您可以参考以下有关每个洞察的表要求的详细信息:
洞察 | 所需表总数 |
---|---|
SSL 洞察 | 3 |
WAF | 1 |
Bot | 1 |
网关洞察 | 5 |
对于每个工作区,您最多可以创建 10 个表。超过 10 个表时,您必须创建另一个工作区。
-
在 Azure 门户中导航到您的工作区,并在 设置下单击 表。
-
单击 创建 并选择 新建自定义日志(基于 DCR)
-
在 创建自定义日志中:
-
指定表名称。表名称必须采用 console_insightname 格式。例如:console_ns_sslvserver、console_ns_ssl_certkey。您可以参考步骤 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 后,您可以查看以下详细信息:
单击 转换编辑器,输入适用于相应洞察的以下查询,然后单击 运行 以接受从 NetScaler Console 中的轮询时间开始的数据。
-
SSL -
source | extend TimeGenerated = todatetime(poll_time) | project-rename sslvserver_id = id
-
WAF 和 Bot -
source | extend TimeGenerated = todatetime(rpt_sample_time)
-
网关洞察 -
source | extend TimeGenerated = todatetime(rpt_sample_time)
-
单击 下一步,然后单击 创建 以完成。
-
导航到 数据收集规则,单击您已创建的 DCR。
-
在 配置下,单击 数据源 以查看创建的表。
DCR(数据收集规则)需要访问 监视指标发布者角色。
-
导航到您的 DCR,您可以从 Azure 门户中的 最近下访问。
-
从您的 DCR 页面单击 访问控制 (IAM),然后单击 添加角色分配。
-
在搜索栏中,键入关键字“monitor”以选择 监视指标发布者,然后单击 下一步。
-
在 成员选项卡中,单击 选择成员 并选择您创建的 Entra 应用程序。
-
单击 查看 + 分配。
您必须记下数据收集规则 ID。导航到数据收集规则页面,选择您的 DCR,然后单击 JSON 视图以记下 ID。
-
在 NetScaler Console 中创建订阅
您现在已准备就绪。最后一步是通过创建订阅并添加所需详细信息来配置 NetScaler Console。要在 NetScaler Console 中创建订阅,您需要您已记下的以下详细信息:
- 终结点 URL
- 数据收集规则 ID
- 租户 ID
- 客户端 ID
- 客户端密码
-
登录到 NetScaler Console。
-
导航到 设置 > 可观察性集成。
-
在 集成页面中,单击 添加。
-
在 创建订阅页面中,指定以下详细信息:
-
在“订阅名称”字段中指定一个您选择的名称。
-
选择 NetScaler Console 作为 源,然后单击 下一步。
-
选择 Microsoft Sentinel,然后单击 配置。在 配置终结点页面中,输入所有详细信息,然后单击 提交。
-
单击 下一步。
-
-
单击 添加洞察,并在 选择功能选项卡中,根据您在 Microsoft Azure 中添加的表,选择您要导出的功能,然后单击 添加选定项,然后单击 下一步。
-
在 选择实例选项卡中,您可以选择 选择所有实例 或 自定义选择,然后单击 下一步。
-
选择所有实例 - 将数据从所有 NetScaler 实例导出到 Microsoft Sentinel。
-
自定义选择 - 使您能够从列表中选择 NetScaler 实例。如果您从列表中选择特定实例,则数据仅从选定的 NetScaler 实例导出到 Microsoft Sentinel。
-
-
单击 提交。
在 Microsoft Azure 中查看日志
配置所有内容后,我们建议您等待 30 分钟,以在 Microsoft Azure 中查看详细信息。
-
在您的 Azure 门户中,导航到您的 Log Analytics 工作区。
-
单击 日志,提供表名称,然后单击 运行 以查看结果。